@sapui5/sap.fe.macros 1.139.0 → 1.141.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Chart.js +53 -2
- package/src/sap/fe/macros/Chart.tsx +55 -0
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +230 -0
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +218 -0
- package/src/sap/fe/macros/CommonHelper.js +59 -15
- package/src/sap/fe/macros/CommonHelper.ts +65 -14
- package/src/sap/fe/macros/ConditionalSwitch.js +174 -0
- package/src/sap/fe/macros/ConditionalSwitch.tsx +141 -0
- package/src/sap/fe/macros/ConditionalSwitchProperty.js +78 -0
- package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +62 -0
- package/src/sap/fe/macros/Field.js +78 -64
- package/src/sap/fe/macros/Field.ts +97 -68
- package/src/sap/fe/macros/FooterContent.js +5 -2
- package/src/sap/fe/macros/FooterContent.tsx +4 -1
- package/src/sap/fe/macros/MacroAPI.js +9 -4
- package/src/sap/fe/macros/MacroAPI.ts +9 -4
- package/src/sap/fe/macros/MessageButton.js +1 -2
- package/src/sap/fe/macros/MessageButton.tsx +0 -1
- package/src/sap/fe/macros/MultiValueField.js +10 -7
- package/src/sap/fe/macros/MultiValueField.tsx +7 -3
- package/src/sap/fe/macros/Page.js +5 -7
- package/src/sap/fe/macros/Page.tsx +4 -6
- package/src/sap/fe/macros/Paginator.js +9 -4
- package/src/sap/fe/macros/Paginator.tsx +12 -3
- package/src/sap/fe/macros/RichTextEditor.js +3 -2
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -1
- package/src/sap/fe/macros/Share.js +14 -2
- package/src/sap/fe/macros/Share.tsx +13 -0
- package/src/sap/fe/macros/Status.js +251 -0
- package/src/sap/fe/macros/Status.tsx +212 -0
- package/src/sap/fe/macros/ValueHelp.js +4 -28
- package/src/sap/fe/macros/ValueHelp.tsx +2 -42
- package/src/sap/fe/macros/ai/EasyFillDialog.js +11 -17
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +11 -16
- package/src/sap/fe/macros/ai/EasyFilterBar.js +246 -97
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +302 -106
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +76 -33
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +89 -40
- package/src/sap/fe/macros/ai/SummarizationButton.js +2 -2
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +1 -1
- package/src/sap/fe/macros/chart/Chart.js +2 -2
- package/src/sap/fe/macros/chart/Chart.tsx +1 -1
- package/src/sap/fe/macros/chart/ChartHelper.js +1 -2
- package/src/sap/fe/macros/chart/ChartHelper.ts +0 -1
- package/src/sap/fe/macros/chart/ChartRuntime.js +1 -2
- package/src/sap/fe/macros/chart/ChartRuntime.ts +0 -1
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +5 -5
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +5 -5
- package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.js +9 -2
- package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.tsx +8 -0
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +4 -2
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +3 -1
- package/src/sap/fe/macros/controls/FilterBar.js +14 -5
- package/src/sap/fe/macros/controls/FilterBar.ts +3 -0
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +2 -2
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -2
- package/src/sap/fe/macros/controls/RadioButtons.js +61 -38
- package/src/sap/fe/macros/controls/RadioButtons.tsx +39 -18
- package/src/sap/fe/macros/controls/Section.js +4 -3
- package/src/sap/fe/macros/controls/Section.ts +3 -2
- package/src/sap/fe/macros/controls/section/SubSection.js +63 -8
- package/src/sap/fe/macros/controls/section/SubSection.ts +67 -1
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +43 -4
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -1
- package/src/sap/fe/macros/designtime/Designtime.helper.js +28 -1
- package/src/sap/fe/macros/designtime/Designtime.helper.ts +27 -0
- package/src/sap/fe/macros/field/Field.js +2 -2
- package/src/sap/fe/macros/field/Field.tsx +1 -1
- package/src/sap/fe/macros/field/FieldBaseDelegate.js +13 -7
- package/src/sap/fe/macros/field/FieldBaseDelegate.ts +12 -8
- package/src/sap/fe/macros/field/FieldFormatOptions.js +25 -2
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +13 -0
- package/src/sap/fe/macros/field/FieldHelper.js +2 -2
- package/src/sap/fe/macros/field/FieldHelper.ts +1 -4
- package/src/sap/fe/macros/field/FieldRuntime.js +1 -2
- package/src/sap/fe/macros/field/FieldRuntime.ts +0 -1
- package/src/sap/fe/macros/field/FieldTemplating.js +3 -3
- package/src/sap/fe/macros/field/FieldTemplating.ts +4 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +233 -5
- package/src/sap/fe/macros/filter/FilterUtils.ts +291 -7
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +5 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +4 -2
- package/src/sap/fe/macros/filterBar/FilterBar.js +2 -2
- package/src/sap/fe/macros/filterBar/FilterBar.tsx +1 -1
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +63 -27
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +49 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +5 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +7 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +6 -1
- package/src/sap/fe/macros/form/Form.block.js +7 -8
- package/src/sap/fe/macros/form/Form.block.ts +4 -6
- package/src/sap/fe/macros/form/Form.js +1 -4
- package/src/sap/fe/macros/form/Form.tsx +0 -3
- package/src/sap/fe/macros/form/FormContainer.block.js +555 -5
- package/src/sap/fe/macros/form/FormContainer.block.ts +665 -7
- package/src/sap/fe/macros/form/FormContainer.fragment.xml +1 -0
- package/src/sap/fe/macros/form/FormDelegate.js +24 -8
- package/src/sap/fe/macros/form/FormDelegate.ts +29 -7
- package/src/sap/fe/macros/form/FormHelper.js +1 -2
- package/src/sap/fe/macros/form/FormHelper.ts +0 -1
- package/src/sap/fe/macros/fpm/CustomFragment.block.js +1 -2
- package/src/sap/fe/macros/fpm/CustomFragment.block.ts +0 -1
- package/src/sap/fe/macros/internal/ActionCommand.block.js +1 -2
- package/src/sap/fe/macros/internal/ActionCommand.block.ts +0 -1
- package/src/sap/fe/macros/internal/DataPoint.js +3 -2
- package/src/sap/fe/macros/internal/DataPoint.tsx +10 -1
- package/src/sap/fe/macros/internal/FilterField.block.js +19 -5
- package/src/sap/fe/macros/internal/FilterField.block.ts +16 -4
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +9 -3
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +10 -2
- package/src/sap/fe/macros/internal/field/EditStyle.js +21 -4
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +18 -4
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +3 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +5 -1
- package/src/sap/fe/macros/internal/filterField/FilterFieldTemplate.fragment.xml +1 -0
- package/src/sap/fe/macros/internal/helpers/ActionHelper.js +36 -5
- package/src/sap/fe/macros/internal/helpers/ActionHelper.ts +34 -4
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +46 -8
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +60 -6
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +38 -2
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +37 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -1
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +10 -3
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +13 -2
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.js +2 -1
- package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.ts +1 -0
- package/src/sap/fe/macros/messagebundle.properties +24 -4
- package/src/sap/fe/macros/messagebundle_ar.properties +8 -2
- package/src/sap/fe/macros/messagebundle_bg.properties +8 -2
- package/src/sap/fe/macros/messagebundle_ca.properties +11 -5
- package/src/sap/fe/macros/messagebundle_cnr.properties +8 -2
- package/src/sap/fe/macros/messagebundle_cs.properties +7 -1
- package/src/sap/fe/macros/messagebundle_cy.properties +9 -3
- package/src/sap/fe/macros/messagebundle_da.properties +8 -2
- package/src/sap/fe/macros/messagebundle_de.properties +13 -7
- package/src/sap/fe/macros/messagebundle_el.properties +7 -1
- package/src/sap/fe/macros/messagebundle_en.properties +11 -5
- package/src/sap/fe/macros/messagebundle_en_GB.properties +9 -3
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +11 -5
- package/src/sap/fe/macros/messagebundle_es.properties +10 -4
- package/src/sap/fe/macros/messagebundle_es_MX.properties +11 -5
- package/src/sap/fe/macros/messagebundle_et.properties +9 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +7 -1
- package/src/sap/fe/macros/messagebundle_fr.properties +9 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +8 -2
- package/src/sap/fe/macros/messagebundle_hi.properties +8 -2
- package/src/sap/fe/macros/messagebundle_hr.properties +8 -2
- package/src/sap/fe/macros/messagebundle_hu.properties +7 -1
- package/src/sap/fe/macros/messagebundle_id.properties +15 -9
- package/src/sap/fe/macros/messagebundle_it.properties +7 -1
- package/src/sap/fe/macros/messagebundle_iw.properties +8 -2
- package/src/sap/fe/macros/messagebundle_ja.properties +13 -7
- package/src/sap/fe/macros/messagebundle_kk.properties +11 -5
- package/src/sap/fe/macros/messagebundle_ko.properties +8 -2
- package/src/sap/fe/macros/messagebundle_lt.properties +9 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +8 -2
- package/src/sap/fe/macros/messagebundle_mk.properties +8 -2
- package/src/sap/fe/macros/messagebundle_ms.properties +7 -1
- package/src/sap/fe/macros/messagebundle_nl.properties +7 -1
- package/src/sap/fe/macros/messagebundle_no.properties +7 -1
- package/src/sap/fe/macros/messagebundle_pl.properties +8 -2
- package/src/sap/fe/macros/messagebundle_pt.properties +7 -1
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +7 -1
- package/src/sap/fe/macros/messagebundle_ro.properties +8 -2
- package/src/sap/fe/macros/messagebundle_ru.properties +10 -4
- package/src/sap/fe/macros/messagebundle_sh.properties +8 -2
- package/src/sap/fe/macros/messagebundle_sk.properties +7 -1
- package/src/sap/fe/macros/messagebundle_sl.properties +7 -1
- package/src/sap/fe/macros/messagebundle_sr.properties +8 -2
- package/src/sap/fe/macros/messagebundle_sv.properties +7 -1
- package/src/sap/fe/macros/messagebundle_th.properties +8 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +7 -1
- package/src/sap/fe/macros/messagebundle_uk.properties +10 -4
- package/src/sap/fe/macros/messagebundle_vi.properties +10 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +7 -1
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +8 -2
- package/src/sap/fe/macros/messages/MessageButton.js +39 -18
- package/src/sap/fe/macros/messages/MessageButton.ts +42 -19
- package/src/sap/fe/macros/messages/MessagePopover.js +4 -2
- package/src/sap/fe/macros/messages/MessagePopover.ts +6 -4
- package/src/sap/fe/macros/microchart/MicroChart.js +2 -2
- package/src/sap/fe/macros/microchart/MicroChart.tsx +1 -1
- package/src/sap/fe/macros/microchart/MicroChartContainer.js +1 -2
- package/src/sap/fe/macros/microchart/MicroChartContainer.ts +1 -2
- package/src/sap/fe/macros/microchart/MicroChartHelper.js +2 -3
- package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +1 -2
- package/src/sap/fe/macros/share/ShareAPI.js +4 -29
- package/src/sap/fe/macros/share/ShareAPI.ts +1 -32
- package/src/sap/fe/macros/situations/SituationsPopover.js +3 -1
- package/src/sap/fe/macros/situations/SituationsPopover.ts +2 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +4 -8
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +5 -8
- package/src/sap/fe/macros/table/BasicSearch.js +1 -1
- package/src/sap/fe/macros/table/BasicSearch.ts +2 -1
- package/src/sap/fe/macros/table/Column.js +14 -2
- package/src/sap/fe/macros/table/Column.ts +7 -0
- package/src/sap/fe/macros/table/ColumnExportSettings.js +83 -15
- package/src/sap/fe/macros/table/ColumnExportSettings.ts +44 -0
- package/src/sap/fe/macros/table/ColumnOverride.js +14 -2
- package/src/sap/fe/macros/table/ColumnOverride.ts +7 -0
- package/src/sap/fe/macros/table/MdcTableTemplate.js +7 -5
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +21 -11
- package/src/sap/fe/macros/table/QuickFilterSelector.js +12 -3
- package/src/sap/fe/macros/table/QuickFilterSelector.tsx +15 -2
- package/src/sap/fe/macros/table/Table.block.js +188 -147
- package/src/sap/fe/macros/table/Table.block.tsx +41 -11
- package/src/sap/fe/macros/table/Table.js +16 -10
- package/src/sap/fe/macros/table/Table.tsx +16 -10
- package/src/sap/fe/macros/table/TableAPI.js +224 -184
- package/src/sap/fe/macros/table/TableAPI.ts +63 -19
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -6
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +5 -4
- package/src/sap/fe/macros/table/TableHelper.js +2 -3
- package/src/sap/fe/macros/table/TableHelper.ts +1 -2
- package/src/sap/fe/macros/table/TableRuntime.js +24 -5
- package/src/sap/fe/macros/table/TableRuntime.ts +31 -3
- package/src/sap/fe/macros/table/TreeTable.js +16 -10
- package/src/sap/fe/macros/table/TreeTable.tsx +16 -10
- package/src/sap/fe/macros/table/Utils.js +8 -3
- package/src/sap/fe/macros/table/Utils.ts +12 -3
- package/src/sap/fe/macros/table/delegates/ALPTableDelegate.js +1 -2
- package/src/sap/fe/macros/table/delegates/ALPTableDelegate.ts +0 -1
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +69 -34
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +75 -33
- package/src/sap/fe/macros/table/delegates/TreeTableDelegate.js +1 -2
- package/src/sap/fe/macros/table/delegates/TreeTableDelegate.ts +0 -1
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +14 -12
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +11 -10
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +34 -4
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +45 -2
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +55 -12
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +71 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +53 -2
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +55 -0
- package/src/sap/fe/macros/table/mixin/TableExport.js +22 -3
- package/src/sap/fe/macros/table/mixin/TableExport.ts +25 -4
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +5 -1
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +7 -0
- package/src/sap/fe/macros/table/mixin/TableSharing.js +4 -2
- package/src/sap/fe/macros/table/mixin/TableSharing.ts +10 -1
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +36 -10
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +44 -9
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +5 -4
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +3 -2
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +2 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +1 -2
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBlockSupport", "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/converters/controls/Common/DataVisualization", "sap/fe/core/converters/controls/Common/table/StandardActions", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/macros/MacroAPI", "sap/fe/macros/table/MdcTableTemplate", "sap/fe/macros/table/TableAPI", "sap/fe/macros/table/TableCreationOptions", "sap/m/FlexItemData", "../TSXUtils", "./TableEventHandlerProvider", "sap/fe/base/jsx-runtime/jsx"], function (Log, BuildingBlockSupport, BuildingBlockTemplatingBase, ManifestSettings, MetaModelConverter, DataVisualization, StandardActions, StableIdHelper, TypeGuards, DataModelPathHelper, MacroAPI, MdcTableTemplate, TableAPI, TableCreationOptions, FlexItemData, TSXUtils, TableEventHandlerProvider, _jsx) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _dec39, _dec40, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _dec47, _dec48, _dec49, _dec50, _dec51, _dec52, _dec53, _dec54, _dec55, _dec56, _dec57, _dec58, _dec59, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31, _descriptor32, _descriptor33, _descriptor34, _descriptor35, _descriptor36, _descriptor37, _descriptor38, _descriptor39, _descriptor40, _descriptor41, _descriptor42, _descriptor43, _descriptor44, _descriptor45, _descriptor46, _descriptor47, _descriptor48, _descriptor49, _descriptor50, _descriptor51, _descriptor52, _descriptor53, _descriptor54, _descriptor55, _descriptor56, _descriptor57, _descriptor58, _TableBlock;
|
|
8
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _dec39, _dec40, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _dec47, _dec48, _dec49, _dec50, _dec51, _dec52, _dec53, _dec54, _dec55, _dec56, _dec57, _dec58, _dec59, _dec60, _dec61, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31, _descriptor32, _descriptor33, _descriptor34, _descriptor35, _descriptor36, _descriptor37, _descriptor38, _descriptor39, _descriptor40, _descriptor41, _descriptor42, _descriptor43, _descriptor44, _descriptor45, _descriptor46, _descriptor47, _descriptor48, _descriptor49, _descriptor50, _descriptor51, _descriptor52, _descriptor53, _descriptor54, _descriptor55, _descriptor56, _descriptor57, _descriptor58, _descriptor59, _descriptor60, _TableBlock;
|
|
9
9
|
var _exports = {};
|
|
10
10
|
var createCustomData = TSXUtils.createCustomData;
|
|
11
11
|
var getMDCTableTemplate = MdcTableTemplate.getMDCTableTemplate;
|
|
@@ -200,6 +200,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
200
200
|
// positionPlacement is kept for backwards compatibility
|
|
201
201
|
anchor: safeGetAttribute(childColumn, "anchor") || safeGetAttribute(childColumn, "positionAnchor"),
|
|
202
202
|
// positionAnchor is kept for backwards compatibility
|
|
203
|
+
disableExport: childColumn.getAttribute("disableExport") ? childColumn.getAttribute("disableExport") === "true" : undefined,
|
|
203
204
|
exportSettings: parseExportSettings(childColumn)
|
|
204
205
|
};
|
|
205
206
|
}
|
|
@@ -208,7 +209,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
208
209
|
* Parses the custom columns from the XML node.
|
|
209
210
|
* @param childColumn
|
|
210
211
|
* @param aggregationObject
|
|
211
|
-
* @returns
|
|
212
|
+
* @returns The column properties for the given node
|
|
212
213
|
*/
|
|
213
214
|
function setCustomColumnProperties(childColumn, aggregationObject) {
|
|
214
215
|
aggregationObject.key = aggregationObject.key.replace("InlineXML_", "");
|
|
@@ -239,7 +240,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
239
240
|
wrap: exportSettings.wrap === "true",
|
|
240
241
|
type: exportSettings.type,
|
|
241
242
|
property: exportSettings.property?.split(","),
|
|
242
|
-
width: exportSettings.width
|
|
243
|
+
width: exportSettings.width,
|
|
244
|
+
textAlign: exportSettings.textAlign,
|
|
245
|
+
label: exportSettings.label,
|
|
246
|
+
trueValue: exportSettings.trueValue,
|
|
247
|
+
falseValue: exportSettings.falseValue,
|
|
248
|
+
valueMap: exportSettings.valueMap
|
|
243
249
|
};
|
|
244
250
|
};
|
|
245
251
|
const getColumnTemplate = element => {
|
|
@@ -337,117 +343,123 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
337
343
|
type: "boolean",
|
|
338
344
|
isPublic: true
|
|
339
345
|
}), _dec10 = blockAttribute({
|
|
340
|
-
type: "
|
|
346
|
+
type: "string",
|
|
341
347
|
isPublic: true
|
|
342
348
|
}), _dec11 = blockAttribute({
|
|
343
|
-
type: "
|
|
349
|
+
type: "string",
|
|
344
350
|
isPublic: true
|
|
345
351
|
}), _dec12 = blockAttribute({
|
|
346
352
|
type: "int",
|
|
347
353
|
isPublic: true
|
|
348
354
|
}), _dec13 = blockAttribute({
|
|
349
|
-
type: "
|
|
355
|
+
type: "int",
|
|
350
356
|
isPublic: true
|
|
351
357
|
}), _dec14 = blockAttribute({
|
|
352
|
-
type: "
|
|
358
|
+
type: "int",
|
|
353
359
|
isPublic: true
|
|
354
360
|
}), _dec15 = blockAttribute({
|
|
361
|
+
type: "boolean",
|
|
362
|
+
isPublic: true
|
|
363
|
+
}), _dec16 = blockAttribute({
|
|
364
|
+
type: "boolean",
|
|
365
|
+
isPublic: true
|
|
366
|
+
}), _dec17 = blockAttribute({
|
|
355
367
|
type: "string",
|
|
356
368
|
allowedValues: ["Auto", "Fixed", "Interactive"],
|
|
357
369
|
isPublic: true
|
|
358
|
-
}),
|
|
370
|
+
}), _dec18 = blockAttribute({
|
|
359
371
|
type: "int",
|
|
360
372
|
isPublic: true
|
|
361
|
-
}),
|
|
373
|
+
}), _dec19 = blockAttribute({
|
|
362
374
|
type: "boolean",
|
|
363
375
|
isPublic: true
|
|
364
|
-
}),
|
|
376
|
+
}), _dec20 = blockAttribute({
|
|
365
377
|
type: "boolean",
|
|
366
378
|
isPublic: true
|
|
367
|
-
}),
|
|
379
|
+
}), _dec21 = blockAttribute({
|
|
368
380
|
type: "int",
|
|
369
381
|
isPublic: true
|
|
370
|
-
}),
|
|
382
|
+
}), _dec22 = blockAttribute({
|
|
371
383
|
type: "int",
|
|
372
384
|
isPublic: true
|
|
373
|
-
}),
|
|
385
|
+
}), _dec23 = blockAttribute({
|
|
374
386
|
type: "string",
|
|
375
387
|
allowedValues: ["Block", "GridLarge", "GridSmall"],
|
|
376
388
|
isPublic: true
|
|
377
|
-
}),
|
|
389
|
+
}), _dec24 = blockAttribute({
|
|
378
390
|
type: "string",
|
|
379
391
|
isPublic: true,
|
|
380
392
|
isAssociation: true
|
|
381
|
-
}),
|
|
393
|
+
}), _dec25 = blockAttribute({
|
|
382
394
|
type: "string",
|
|
383
395
|
isPublic: true
|
|
384
|
-
}),
|
|
396
|
+
}), _dec26 = blockAttribute({
|
|
385
397
|
type: "sap.ui.core.TitleLevel",
|
|
386
398
|
isPublic: true
|
|
387
|
-
}),
|
|
399
|
+
}), _dec27 = blockAttribute({
|
|
388
400
|
type: "boolean",
|
|
389
401
|
isPublic: true
|
|
390
|
-
}),
|
|
402
|
+
}), _dec28 = blockAttribute({
|
|
391
403
|
type: "string",
|
|
392
404
|
isPublic: true
|
|
393
|
-
}),
|
|
405
|
+
}), _dec29 = blockAttribute({
|
|
394
406
|
type: "string",
|
|
395
407
|
isPublic: true
|
|
396
|
-
}),
|
|
408
|
+
}), _dec30 = blockAttribute({
|
|
397
409
|
type: "sap.ui.model.Context",
|
|
398
410
|
underlyingType: "string",
|
|
399
411
|
expectedTypes: ["EntitySet", "EntityType", "Singleton", "NavigationProperty"],
|
|
400
412
|
expectedAnnotations: ["com.sap.vocabularies.UI.v1.SelectionVariant"],
|
|
401
413
|
isPublic: true
|
|
402
|
-
}),
|
|
414
|
+
}), _dec31 = blockAttribute({
|
|
403
415
|
type: "boolean",
|
|
404
416
|
isPublic: true
|
|
405
|
-
}),
|
|
417
|
+
}), _dec32 = blockAttribute({
|
|
406
418
|
type: "string",
|
|
407
419
|
isPublic: true
|
|
408
|
-
}),
|
|
420
|
+
}), _dec33 = blockAttribute({
|
|
409
421
|
type: "boolean",
|
|
410
422
|
isPublic: true
|
|
411
|
-
}),
|
|
423
|
+
}), _dec34 = blockAttribute({
|
|
412
424
|
type: "string",
|
|
413
425
|
isPublic: true,
|
|
414
426
|
allowedValues: ["GridTable", "ResponsiveTable", "AnalyticalTable"]
|
|
415
|
-
}),
|
|
427
|
+
}), _dec35 = blockAttribute({
|
|
416
428
|
type: "boolean",
|
|
417
429
|
isPublic: true
|
|
418
|
-
}),
|
|
430
|
+
}), _dec36 = blockAttribute({
|
|
419
431
|
type: "string",
|
|
420
432
|
isPublic: true,
|
|
421
433
|
allowedValues: ["None", "Single", "Multi", "Auto", "ForceMulti", "ForceSingle"]
|
|
422
|
-
}),
|
|
434
|
+
}), _dec37 = blockAttribute({
|
|
423
435
|
type: "string",
|
|
424
436
|
isPublic: true,
|
|
425
437
|
allowedValues: ["Control"]
|
|
426
|
-
}),
|
|
438
|
+
}), _dec38 = blockAttribute({
|
|
427
439
|
type: "string",
|
|
428
440
|
isPublic: true
|
|
429
|
-
}),
|
|
441
|
+
}), _dec39 = blockAttribute({
|
|
430
442
|
type: "string",
|
|
431
443
|
isPublic: true,
|
|
432
444
|
allowedValues: ["illustratedMessage-Auto", "illustratedMessage-Base", "illustratedMessage-Medium", "illustratedMessage-Dot", "illustratedMessage-ExtraSmall", "illustratedMessage-Scene", "illustratedMessage-Large", "illustratedMessage-Spot", "illustratedMessage-Small", "text"]
|
|
433
|
-
}),
|
|
445
|
+
}), _dec40 = blockAttribute({
|
|
434
446
|
type: "sap.ui.core.TitleLevel"
|
|
435
|
-
}),
|
|
447
|
+
}), _dec41 = blockAttribute({
|
|
436
448
|
type: "boolean",
|
|
437
449
|
isPublic: true
|
|
438
|
-
}), _dec40 = blockAttribute({
|
|
439
|
-
type: "string"
|
|
440
|
-
}), _dec41 = blockAttribute({
|
|
441
|
-
type: "boolean"
|
|
442
450
|
}), _dec42 = blockAttribute({
|
|
443
|
-
type: "boolean"
|
|
444
|
-
}), _dec43 = blockAttribute({
|
|
445
451
|
type: "string"
|
|
452
|
+
}), _dec43 = blockAttribute({
|
|
453
|
+
type: "boolean"
|
|
446
454
|
}), _dec44 = blockAttribute({
|
|
447
455
|
type: "boolean"
|
|
448
456
|
}), _dec45 = blockAttribute({
|
|
449
|
-
type: "
|
|
457
|
+
type: "string"
|
|
450
458
|
}), _dec46 = blockAttribute({
|
|
459
|
+
type: "boolean"
|
|
460
|
+
}), _dec47 = blockAttribute({
|
|
461
|
+
type: "boolean"
|
|
462
|
+
}), _dec48 = blockAttribute({
|
|
451
463
|
type: "object",
|
|
452
464
|
underlyingType: "sap.fe.macros.table.TableCreationOptions",
|
|
453
465
|
isPublic: true,
|
|
@@ -457,7 +469,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
457
469
|
}
|
|
458
470
|
return creationOptionsInput;
|
|
459
471
|
}
|
|
460
|
-
}),
|
|
472
|
+
}), _dec49 = blockAttribute({
|
|
461
473
|
type: "object",
|
|
462
474
|
underlyingType: "sap.fe.macros.table.AnalyticalConfiguration",
|
|
463
475
|
isPublic: true,
|
|
@@ -467,20 +479,20 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
467
479
|
}
|
|
468
480
|
return analyticalConfiguration;
|
|
469
481
|
}
|
|
470
|
-
}),
|
|
482
|
+
}), _dec50 = blockAggregation({
|
|
471
483
|
type: "sap.fe.macros.table.Action",
|
|
472
484
|
altTypes: ["sap.fe.macros.table.ActionGroup", "sap.fe.macros.table.ActionOverride", "sap.fe.macros.table.ActionGroupOverride"],
|
|
473
485
|
isPublic: true,
|
|
474
486
|
hasVirtualNode: true,
|
|
475
487
|
multiple: true,
|
|
476
488
|
processAggregations: setCustomActionGroupProperties
|
|
477
|
-
}),
|
|
489
|
+
}), _dec51 = blockAggregation({
|
|
478
490
|
type: "sap.fe.macros.table.MassEdit",
|
|
479
491
|
isPublic: true,
|
|
480
492
|
multiple: false,
|
|
481
493
|
skipKey: true,
|
|
482
494
|
processAggregations: setCustomMassEditProperties
|
|
483
|
-
}),
|
|
495
|
+
}), _dec52 = blockAggregation({
|
|
484
496
|
type: "sap.fe.macros.table.Column",
|
|
485
497
|
altTypes: ["sap.fe.macros.table.ColumnOverride"],
|
|
486
498
|
isPublic: true,
|
|
@@ -488,13 +500,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
488
500
|
hasVirtualNode: true,
|
|
489
501
|
isDefault: true,
|
|
490
502
|
processAggregations: setCustomColumnProperties
|
|
491
|
-
}),
|
|
503
|
+
}), _dec53 = blockAggregation({
|
|
492
504
|
type: "sap.fe.macros.table.QuickVariantSelection",
|
|
493
505
|
isPublic: true,
|
|
494
506
|
skipKey: true,
|
|
495
507
|
multiple: false,
|
|
496
508
|
processAggregations: setQuickVariantSelection
|
|
497
|
-
}),
|
|
509
|
+
}), _dec54 = blockEvent(), _dec55 = blockEvent(), _dec56 = blockEvent(), _dec57 = blockEvent(), _dec58 = blockEvent(), _dec59 = blockEvent(), _dec60 = blockEvent(), _dec61 = blockAttribute({
|
|
498
510
|
type: "boolean",
|
|
499
511
|
isPublic: true
|
|
500
512
|
}), _dec(_class = (_class2 = (_TableBlock = /*#__PURE__*/function (_BuildingBlockTemplat) {
|
|
@@ -545,36 +557,48 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
545
557
|
* @public
|
|
546
558
|
*/
|
|
547
559
|
_initializerDefineProperty(_this, "enableExport", _descriptor8, _this);
|
|
560
|
+
/**
|
|
561
|
+
* Configures the file name of exported table.
|
|
562
|
+
* It's limited to 31 characters. If the name is longer, it will be truncated.
|
|
563
|
+
* @public
|
|
564
|
+
*/
|
|
565
|
+
_initializerDefineProperty(_this, "exportFileName", _descriptor9, _this);
|
|
566
|
+
/**
|
|
567
|
+
* Configures the sheet name of exported table.
|
|
568
|
+
* It's limited to 31 characters. If the name is longer, it will be truncated.
|
|
569
|
+
* @public
|
|
570
|
+
*/
|
|
571
|
+
_initializerDefineProperty(_this, "exportSheetName", _descriptor10, _this);
|
|
548
572
|
/**
|
|
549
573
|
* Maximum allowed number of records to be exported in one request.
|
|
550
574
|
* @public
|
|
551
575
|
*/
|
|
552
|
-
_initializerDefineProperty(_this, "exportRequestSize",
|
|
576
|
+
_initializerDefineProperty(_this, "exportRequestSize", _descriptor11, _this);
|
|
553
577
|
/**
|
|
554
578
|
* Defines the maximum number of rows that can be selected at once in the table.
|
|
555
579
|
* This property does not apply to responsive tables.
|
|
556
580
|
* @public
|
|
557
581
|
*/
|
|
558
|
-
_initializerDefineProperty(_this, "selectionLimit",
|
|
582
|
+
_initializerDefineProperty(_this, "selectionLimit", _descriptor12, _this);
|
|
559
583
|
/**
|
|
560
584
|
* Number of columns that are fixed on the left. Only columns which are not fixed can be scrolled horizontally.
|
|
561
585
|
*
|
|
562
586
|
* This property is not relevant for responsive tables
|
|
563
587
|
* @public
|
|
564
588
|
*/
|
|
565
|
-
_initializerDefineProperty(_this, "frozenColumnCount",
|
|
589
|
+
_initializerDefineProperty(_this, "frozenColumnCount", _descriptor13, _this);
|
|
566
590
|
/**
|
|
567
591
|
* Determines whether the number of fixed columns can be configured in the Column Settings dialog.
|
|
568
592
|
*
|
|
569
593
|
* This property doesn't apply for responsive tables
|
|
570
594
|
* @public
|
|
571
595
|
*/
|
|
572
|
-
_initializerDefineProperty(_this, "disableColumnFreeze",
|
|
596
|
+
_initializerDefineProperty(_this, "disableColumnFreeze", _descriptor14, _this);
|
|
573
597
|
/**
|
|
574
598
|
* Indicates if the column header should be a part of the width calculation.
|
|
575
599
|
* @public
|
|
576
600
|
*/
|
|
577
|
-
_initializerDefineProperty(_this, "widthIncludingColumnHeader",
|
|
601
|
+
_initializerDefineProperty(_this, "widthIncludingColumnHeader", _descriptor15, _this);
|
|
578
602
|
/**
|
|
579
603
|
* Defines how the table handles the visible rows. Does not apply to Responsive tables.
|
|
580
604
|
*
|
|
@@ -584,32 +608,32 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
584
608
|
* - If set to `Interactive` the table can have as many rows as defined in the rowCount property. This number of rows can be modified by dragging the resizer available in this mode.<br/>
|
|
585
609
|
* @public
|
|
586
610
|
*/
|
|
587
|
-
_initializerDefineProperty(_this, "rowCountMode",
|
|
611
|
+
_initializerDefineProperty(_this, "rowCountMode", _descriptor16, _this);
|
|
588
612
|
/**
|
|
589
613
|
* Number of rows to be displayed in the table. Does not apply to responsive tables.
|
|
590
614
|
* @public
|
|
591
615
|
*/
|
|
592
|
-
_initializerDefineProperty(_this, "rowCount",
|
|
616
|
+
_initializerDefineProperty(_this, "rowCount", _descriptor17, _this);
|
|
593
617
|
/**
|
|
594
618
|
* Controls if the paste functionality of the table is enabled or not.
|
|
595
619
|
* @public
|
|
596
620
|
*/
|
|
597
|
-
_initializerDefineProperty(_this, "enablePaste",
|
|
621
|
+
_initializerDefineProperty(_this, "enablePaste", _descriptor18, _this);
|
|
598
622
|
/**
|
|
599
623
|
* Controls if the copy functionality of the table is disabled or not.
|
|
600
624
|
* @public
|
|
601
625
|
*/
|
|
602
|
-
_initializerDefineProperty(_this, "disableCopyToClipboard",
|
|
626
|
+
_initializerDefineProperty(_this, "disableCopyToClipboard", _descriptor19, _this);
|
|
603
627
|
/**
|
|
604
628
|
* Defines how many additional data records are requested from the back-end system when the user scrolls vertically in the table.
|
|
605
629
|
* @public
|
|
606
630
|
*/
|
|
607
|
-
_initializerDefineProperty(_this, "scrollThreshold",
|
|
631
|
+
_initializerDefineProperty(_this, "scrollThreshold", _descriptor20, _this);
|
|
608
632
|
/**
|
|
609
633
|
* Defines the number of records to be initially requested from the back end.
|
|
610
634
|
* @public
|
|
611
635
|
*/
|
|
612
|
-
_initializerDefineProperty(_this, "threshold",
|
|
636
|
+
_initializerDefineProperty(_this, "threshold", _descriptor21, _this);
|
|
613
637
|
/**
|
|
614
638
|
* Defines the layout options of the table popins. Only applies to responsive tables.
|
|
615
639
|
*
|
|
@@ -619,37 +643,37 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
619
643
|
* - `GridSmall`: Sets a grid layout for rendering the table popins. The grid width for each table popin is small, so this layout allows more content to be rendered in a single popin row.<br/>
|
|
620
644
|
* @public
|
|
621
645
|
*/
|
|
622
|
-
_initializerDefineProperty(_this, "popinLayout",
|
|
646
|
+
_initializerDefineProperty(_this, "popinLayout", _descriptor22, _this);
|
|
623
647
|
/**
|
|
624
648
|
* ID of the FilterBar building block associated with the table.
|
|
625
649
|
* @public
|
|
626
650
|
*/
|
|
627
|
-
_initializerDefineProperty(_this, "filterBar",
|
|
651
|
+
_initializerDefineProperty(_this, "filterBar", _descriptor23, _this);
|
|
628
652
|
/**
|
|
629
653
|
* Specifies the header text that is shown in the table.
|
|
630
654
|
* @public
|
|
631
655
|
*/
|
|
632
|
-
_initializerDefineProperty(_this, "header",
|
|
656
|
+
_initializerDefineProperty(_this, "header", _descriptor24, _this);
|
|
633
657
|
/**
|
|
634
658
|
* Defines the "aria-level" of the table header
|
|
635
659
|
*/
|
|
636
|
-
_initializerDefineProperty(_this, "headerLevel",
|
|
660
|
+
_initializerDefineProperty(_this, "headerLevel", _descriptor25, _this);
|
|
637
661
|
/**
|
|
638
662
|
* Controls if the header text should be shown or not.
|
|
639
663
|
* @public
|
|
640
664
|
*/
|
|
641
|
-
_initializerDefineProperty(_this, "headerVisible",
|
|
642
|
-
_initializerDefineProperty(_this, "id",
|
|
643
|
-
_initializerDefineProperty(_this, "contentId",
|
|
665
|
+
_initializerDefineProperty(_this, "headerVisible", _descriptor26, _this);
|
|
666
|
+
_initializerDefineProperty(_this, "id", _descriptor27, _this);
|
|
667
|
+
_initializerDefineProperty(_this, "contentId", _descriptor28, _this);
|
|
644
668
|
/**
|
|
645
669
|
* Additionnal SelectionVariant to be applied on the table content.
|
|
646
670
|
*/
|
|
647
|
-
_initializerDefineProperty(_this, "associatedSelectionVariantPath",
|
|
671
|
+
_initializerDefineProperty(_this, "associatedSelectionVariantPath", _descriptor29, _this);
|
|
648
672
|
/**
|
|
649
673
|
* Defines whether to display the search action.
|
|
650
674
|
* @public
|
|
651
675
|
*/
|
|
652
|
-
_initializerDefineProperty(_this, "isSearchable",
|
|
676
|
+
_initializerDefineProperty(_this, "isSearchable", _descriptor30, _this);
|
|
653
677
|
/**
|
|
654
678
|
* Controls which options should be enabled for the table personalization dialog.
|
|
655
679
|
*
|
|
@@ -666,25 +690,25 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
666
690
|
* The Group option is only applicable to analytical tables and responsive tables.<br/>
|
|
667
691
|
* @public
|
|
668
692
|
*/
|
|
669
|
-
_initializerDefineProperty(_this, "personalization",
|
|
693
|
+
_initializerDefineProperty(_this, "personalization", _descriptor31, _this);
|
|
670
694
|
/**
|
|
671
695
|
* An expression that allows you to control the 'read-only' state of the table.
|
|
672
696
|
*
|
|
673
697
|
* If you do not set any expression, SAP Fiori elements hooks into the standard lifecycle to determine the current state.
|
|
674
698
|
* @public
|
|
675
699
|
*/
|
|
676
|
-
_initializerDefineProperty(_this, "readOnly",
|
|
700
|
+
_initializerDefineProperty(_this, "readOnly", _descriptor32, _this);
|
|
677
701
|
/**
|
|
678
702
|
* Defines the type of table that will be used by the building block to render the data.
|
|
679
703
|
*
|
|
680
704
|
* Allowed values are `GridTable`, `ResponsiveTable` and `AnalyticalTable`.
|
|
681
705
|
* @public
|
|
682
706
|
*/
|
|
683
|
-
_initializerDefineProperty(_this, "type",
|
|
707
|
+
_initializerDefineProperty(_this, "type", _descriptor33, _this);
|
|
684
708
|
/**
|
|
685
709
|
* Specifies whether the table is displayed with condensed layout (true/false). The default setting is `false`.
|
|
686
710
|
*/
|
|
687
|
-
_initializerDefineProperty(_this, "useCondensedLayout",
|
|
711
|
+
_initializerDefineProperty(_this, "useCondensedLayout", _descriptor34, _this);
|
|
688
712
|
/**
|
|
689
713
|
* Defines the selection mode to be used by the table.
|
|
690
714
|
*
|
|
@@ -693,7 +717,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
693
717
|
* If set to 'ForceSingle' or 'ForceMulti' your choice will be respected but this might not respect the Fiori guidelines.
|
|
694
718
|
* @public
|
|
695
719
|
*/
|
|
696
|
-
_initializerDefineProperty(_this, "selectionMode",
|
|
720
|
+
_initializerDefineProperty(_this, "selectionMode", _descriptor35, _this);
|
|
697
721
|
/**
|
|
698
722
|
* Controls the kind of variant management that should be enabled for the table.
|
|
699
723
|
*
|
|
@@ -702,7 +726,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
702
726
|
* If not set with any value, control level variant management is not available for this table.
|
|
703
727
|
* @public
|
|
704
728
|
*/
|
|
705
|
-
_initializerDefineProperty(_this, "variantManagement",
|
|
729
|
+
_initializerDefineProperty(_this, "variantManagement", _descriptor36, _this);
|
|
706
730
|
/**
|
|
707
731
|
* Comma-separated value of fields that must be ignored in the OData metadata by the Table building block.<br>
|
|
708
732
|
* The table building block is not going to create built-in columns or offer table personalization for comma-separated value of fields that are provided in the ignoredfields.<br>
|
|
@@ -710,97 +734,98 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
710
734
|
* @since 1.124.0
|
|
711
735
|
* @public
|
|
712
736
|
*/
|
|
713
|
-
_initializerDefineProperty(_this, "ignoredFields",
|
|
737
|
+
_initializerDefineProperty(_this, "ignoredFields", _descriptor37, _this);
|
|
714
738
|
/**
|
|
715
739
|
* Changes the size of the IllustratedMessage in the table, or removes it completely.
|
|
716
740
|
* Allowed values are `illustratedMessage-Auto`, `illustratedMessage-Base`, `illustratedMessage-Dialog`, `illustratedMessage-Dot`, `illustratedMessage-Scene`, `illustratedMessage-Spot` or `text`.
|
|
717
741
|
* @since 1.129.0
|
|
718
742
|
* @public
|
|
719
743
|
*/
|
|
720
|
-
_initializerDefineProperty(_this, "modeForNoDataMessage",
|
|
744
|
+
_initializerDefineProperty(_this, "modeForNoDataMessage", _descriptor38, _this);
|
|
721
745
|
/**
|
|
722
746
|
* Defines the header style of the table header
|
|
723
747
|
*/
|
|
724
|
-
_initializerDefineProperty(_this, "headerStyle",
|
|
748
|
+
_initializerDefineProperty(_this, "headerStyle", _descriptor39, _this);
|
|
725
749
|
/**
|
|
726
750
|
* Specifies if the column width is automatically calculated.
|
|
727
751
|
* @public
|
|
728
752
|
*/
|
|
729
|
-
_initializerDefineProperty(_this, "enableAutoColumnWidth",
|
|
730
|
-
_initializerDefineProperty(_this, "fieldMode",
|
|
731
|
-
_initializerDefineProperty(_this, "isAlp",
|
|
753
|
+
_initializerDefineProperty(_this, "enableAutoColumnWidth", _descriptor40, _this);
|
|
754
|
+
_initializerDefineProperty(_this, "fieldMode", _descriptor41, _this);
|
|
755
|
+
_initializerDefineProperty(_this, "isAlp", _descriptor42, _this);
|
|
732
756
|
/**
|
|
733
757
|
* True if the table is in a ListReport multi view
|
|
734
758
|
*/
|
|
735
|
-
_initializerDefineProperty(_this, "inMultiView",
|
|
736
|
-
_initializerDefineProperty(_this, "tabTitle",
|
|
737
|
-
_initializerDefineProperty(_this, "visible",
|
|
738
|
-
_initializerDefineProperty(_this, "displaySegmentedButton",
|
|
759
|
+
_initializerDefineProperty(_this, "inMultiView", _descriptor43, _this);
|
|
760
|
+
_initializerDefineProperty(_this, "tabTitle", _descriptor44, _this);
|
|
761
|
+
_initializerDefineProperty(_this, "visible", _descriptor45, _this);
|
|
762
|
+
_initializerDefineProperty(_this, "displaySegmentedButton", _descriptor46, _this);
|
|
739
763
|
/**
|
|
740
764
|
* A set of options that can be configured.
|
|
741
765
|
* @public
|
|
742
766
|
*/
|
|
743
|
-
_initializerDefineProperty(_this, "creationMode",
|
|
767
|
+
_initializerDefineProperty(_this, "creationMode", _descriptor47, _this);
|
|
744
768
|
/**
|
|
745
769
|
* A set of options that can be configured to control the aggregation behavior
|
|
746
770
|
* @private
|
|
747
771
|
*/
|
|
748
|
-
_initializerDefineProperty(_this, "analyticalConfiguration",
|
|
772
|
+
_initializerDefineProperty(_this, "analyticalConfiguration", _descriptor48, _this);
|
|
749
773
|
/**
|
|
750
774
|
* Aggregate actions of the table.
|
|
751
775
|
* @public
|
|
752
776
|
*/
|
|
753
|
-
_initializerDefineProperty(_this, "actions",
|
|
777
|
+
_initializerDefineProperty(_this, "actions", _descriptor49, _this);
|
|
754
778
|
/**
|
|
755
779
|
* Aggregate mass edit of the table.
|
|
756
780
|
* @public
|
|
757
781
|
*/
|
|
758
|
-
_initializerDefineProperty(_this, "massEdit",
|
|
782
|
+
_initializerDefineProperty(_this, "massEdit", _descriptor50, _this);
|
|
759
783
|
/**
|
|
760
784
|
* Aggregate columns of the table.
|
|
761
785
|
* @public
|
|
762
786
|
*/
|
|
763
|
-
_initializerDefineProperty(_this, "columns",
|
|
787
|
+
_initializerDefineProperty(_this, "columns", _descriptor51, _this);
|
|
764
788
|
/**
|
|
765
789
|
* Aggregate quickVariantSelection of the table.
|
|
766
790
|
* @public
|
|
767
791
|
*/
|
|
768
|
-
_initializerDefineProperty(_this, "quickVariantSelection",
|
|
792
|
+
_initializerDefineProperty(_this, "quickVariantSelection", _descriptor52, _this);
|
|
769
793
|
/**
|
|
770
794
|
* Before a table rebind, an event is triggered that contains information about the binding.
|
|
771
795
|
*
|
|
772
796
|
* The event contains a parameter, `collectionBindingInfo`, which is an instance of `CollectionBindingInfoAPI`.
|
|
797
|
+
* It can also contain an optional parameter, `quickFilterKey`, which indicates what is the quick filter key (if any) being processed for the table.
|
|
773
798
|
* This allows you to manipulate the table's list binding.
|
|
774
799
|
* You can use this event to attach event handlers to the table's list binding.
|
|
775
800
|
* You can use this event to add selects, and add or read the sorters and filters.
|
|
776
801
|
* @public
|
|
777
802
|
*/
|
|
778
|
-
_initializerDefineProperty(_this, "beforeRebindTable",
|
|
803
|
+
_initializerDefineProperty(_this, "beforeRebindTable", _descriptor53, _this);
|
|
779
804
|
/**
|
|
780
805
|
* An event is triggered when the user chooses a row; the event contains information about which row is chosen.
|
|
781
806
|
*
|
|
782
807
|
* You can set this in order to handle the navigation manually.
|
|
783
808
|
* @public
|
|
784
809
|
*/
|
|
785
|
-
_initializerDefineProperty(_this, "rowPress",
|
|
810
|
+
_initializerDefineProperty(_this, "rowPress", _descriptor54, _this);
|
|
786
811
|
/**
|
|
787
812
|
* Event handler to react to the change event of the table's list binding.
|
|
788
813
|
*
|
|
789
814
|
* Internal only
|
|
790
815
|
*/
|
|
791
|
-
_initializerDefineProperty(_this, "listBindingChange",
|
|
816
|
+
_initializerDefineProperty(_this, "listBindingChange", _descriptor55, _this);
|
|
792
817
|
/**
|
|
793
818
|
* Event handler called when the user chooses an option of the segmented button in the ALP View
|
|
794
819
|
*/
|
|
795
|
-
_initializerDefineProperty(_this, "segmentedButtonPress",
|
|
796
|
-
_initializerDefineProperty(_this, "variantSaved",
|
|
820
|
+
_initializerDefineProperty(_this, "segmentedButtonPress", _descriptor56, _this);
|
|
821
|
+
_initializerDefineProperty(_this, "variantSaved", _descriptor57, _this);
|
|
797
822
|
/**
|
|
798
823
|
* An event triggered when the selection in the table changes.
|
|
799
824
|
* @public
|
|
800
825
|
*/
|
|
801
|
-
_initializerDefineProperty(_this, "selectionChange",
|
|
802
|
-
_initializerDefineProperty(_this, "variantSelected",
|
|
803
|
-
_initializerDefineProperty(_this, "initialLoad",
|
|
826
|
+
_initializerDefineProperty(_this, "selectionChange", _descriptor58, _this);
|
|
827
|
+
_initializerDefineProperty(_this, "variantSelected", _descriptor59, _this);
|
|
828
|
+
_initializerDefineProperty(_this, "initialLoad", _descriptor60, _this);
|
|
804
829
|
const contextObjectPath = getInvolvedDataModelObjects(_this.metaPath, _this.contextPath);
|
|
805
830
|
_this.contextObjectPath = contextObjectPath;
|
|
806
831
|
_this.tableDefinition = TableBlock.createTableDefinition(_this, templateProcessorSettings);
|
|
@@ -880,6 +905,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
880
905
|
_proto.getTableSettings = function getTableSettings() {
|
|
881
906
|
const tableSettings = {};
|
|
882
907
|
TableBlock.addSetting(tableSettings, "enableExport", this.enableExport);
|
|
908
|
+
TableBlock.addSetting(tableSettings, "exportFileName", this.exportFileName);
|
|
909
|
+
TableBlock.addSetting(tableSettings, "exportSheetName", this.exportSheetName);
|
|
883
910
|
TableBlock.addSetting(tableSettings, "readOnly", this.readOnly);
|
|
884
911
|
TableBlock.addSetting(tableSettings, "ignoredFields", this.ignoredFields);
|
|
885
912
|
TableBlock.addSetting(tableSettings, "selectionLimit", this.selectionLimit);
|
|
@@ -1066,7 +1093,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
1066
1093
|
template: column.template,
|
|
1067
1094
|
availability: column.availability,
|
|
1068
1095
|
required: column.required,
|
|
1069
|
-
type: "Slot"
|
|
1096
|
+
type: "Slot",
|
|
1097
|
+
disableExport: column.disableExport
|
|
1070
1098
|
};
|
|
1071
1099
|
} else {
|
|
1072
1100
|
customColumnDefinition = {
|
|
@@ -1076,7 +1104,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
1076
1104
|
horizontalAlign: column.horizontalAlign,
|
|
1077
1105
|
widthIncludingColumnHeader: column.widthIncludingColumnHeader,
|
|
1078
1106
|
exportSettings: column.exportSettings,
|
|
1079
|
-
availability: column.availability
|
|
1107
|
+
availability: column.availability,
|
|
1108
|
+
disableExport: column.disableExport
|
|
1080
1109
|
};
|
|
1081
1110
|
}
|
|
1082
1111
|
|
|
@@ -1166,6 +1195,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
1166
1195
|
useBasicSearch: this.useBasicSearch,
|
|
1167
1196
|
enableFullScreen: this.enableFullScreen,
|
|
1168
1197
|
enableExport: this.enableExport,
|
|
1198
|
+
exportFileName: this.exportFileName,
|
|
1199
|
+
exportSheetName: this.exportSheetName,
|
|
1169
1200
|
frozenColumnCount: this.frozenColumnCount,
|
|
1170
1201
|
disableColumnFreeze: this.disableColumnFreeze,
|
|
1171
1202
|
enablePaste: this.enablePaste,
|
|
@@ -1252,264 +1283,274 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
1252
1283
|
enumerable: true,
|
|
1253
1284
|
writable: true,
|
|
1254
1285
|
initializer: null
|
|
1255
|
-
}), _descriptor9 = _applyDecoratedDescriptor(_class2.prototype, "
|
|
1286
|
+
}), _descriptor9 = _applyDecoratedDescriptor(_class2.prototype, "exportFileName", [_dec10], {
|
|
1287
|
+
configurable: true,
|
|
1288
|
+
enumerable: true,
|
|
1289
|
+
writable: true,
|
|
1290
|
+
initializer: null
|
|
1291
|
+
}), _descriptor10 = _applyDecoratedDescriptor(_class2.prototype, "exportSheetName", [_dec11], {
|
|
1292
|
+
configurable: true,
|
|
1293
|
+
enumerable: true,
|
|
1294
|
+
writable: true,
|
|
1295
|
+
initializer: null
|
|
1296
|
+
}), _descriptor11 = _applyDecoratedDescriptor(_class2.prototype, "exportRequestSize", [_dec12], {
|
|
1256
1297
|
configurable: true,
|
|
1257
1298
|
enumerable: true,
|
|
1258
1299
|
writable: true,
|
|
1259
1300
|
initializer: null
|
|
1260
|
-
}),
|
|
1301
|
+
}), _descriptor12 = _applyDecoratedDescriptor(_class2.prototype, "selectionLimit", [_dec13], {
|
|
1261
1302
|
configurable: true,
|
|
1262
1303
|
enumerable: true,
|
|
1263
1304
|
writable: true,
|
|
1264
1305
|
initializer: null
|
|
1265
|
-
}),
|
|
1306
|
+
}), _descriptor13 = _applyDecoratedDescriptor(_class2.prototype, "frozenColumnCount", [_dec14], {
|
|
1266
1307
|
configurable: true,
|
|
1267
1308
|
enumerable: true,
|
|
1268
1309
|
writable: true,
|
|
1269
1310
|
initializer: null
|
|
1270
|
-
}),
|
|
1311
|
+
}), _descriptor14 = _applyDecoratedDescriptor(_class2.prototype, "disableColumnFreeze", [_dec15], {
|
|
1271
1312
|
configurable: true,
|
|
1272
1313
|
enumerable: true,
|
|
1273
1314
|
writable: true,
|
|
1274
1315
|
initializer: null
|
|
1275
|
-
}),
|
|
1316
|
+
}), _descriptor15 = _applyDecoratedDescriptor(_class2.prototype, "widthIncludingColumnHeader", [_dec16], {
|
|
1276
1317
|
configurable: true,
|
|
1277
1318
|
enumerable: true,
|
|
1278
1319
|
writable: true,
|
|
1279
1320
|
initializer: null
|
|
1280
|
-
}),
|
|
1321
|
+
}), _descriptor16 = _applyDecoratedDescriptor(_class2.prototype, "rowCountMode", [_dec17], {
|
|
1281
1322
|
configurable: true,
|
|
1282
1323
|
enumerable: true,
|
|
1283
1324
|
writable: true,
|
|
1284
1325
|
initializer: null
|
|
1285
|
-
}),
|
|
1326
|
+
}), _descriptor17 = _applyDecoratedDescriptor(_class2.prototype, "rowCount", [_dec18], {
|
|
1286
1327
|
configurable: true,
|
|
1287
1328
|
enumerable: true,
|
|
1288
1329
|
writable: true,
|
|
1289
1330
|
initializer: null
|
|
1290
|
-
}),
|
|
1331
|
+
}), _descriptor18 = _applyDecoratedDescriptor(_class2.prototype, "enablePaste", [_dec19], {
|
|
1291
1332
|
configurable: true,
|
|
1292
1333
|
enumerable: true,
|
|
1293
1334
|
writable: true,
|
|
1294
1335
|
initializer: null
|
|
1295
|
-
}),
|
|
1336
|
+
}), _descriptor19 = _applyDecoratedDescriptor(_class2.prototype, "disableCopyToClipboard", [_dec20], {
|
|
1296
1337
|
configurable: true,
|
|
1297
1338
|
enumerable: true,
|
|
1298
1339
|
writable: true,
|
|
1299
1340
|
initializer: null
|
|
1300
|
-
}),
|
|
1341
|
+
}), _descriptor20 = _applyDecoratedDescriptor(_class2.prototype, "scrollThreshold", [_dec21], {
|
|
1301
1342
|
configurable: true,
|
|
1302
1343
|
enumerable: true,
|
|
1303
1344
|
writable: true,
|
|
1304
1345
|
initializer: null
|
|
1305
|
-
}),
|
|
1346
|
+
}), _descriptor21 = _applyDecoratedDescriptor(_class2.prototype, "threshold", [_dec22], {
|
|
1306
1347
|
configurable: true,
|
|
1307
1348
|
enumerable: true,
|
|
1308
1349
|
writable: true,
|
|
1309
1350
|
initializer: null
|
|
1310
|
-
}),
|
|
1351
|
+
}), _descriptor22 = _applyDecoratedDescriptor(_class2.prototype, "popinLayout", [_dec23], {
|
|
1311
1352
|
configurable: true,
|
|
1312
1353
|
enumerable: true,
|
|
1313
1354
|
writable: true,
|
|
1314
1355
|
initializer: null
|
|
1315
|
-
}),
|
|
1356
|
+
}), _descriptor23 = _applyDecoratedDescriptor(_class2.prototype, "filterBar", [_dec24], {
|
|
1316
1357
|
configurable: true,
|
|
1317
1358
|
enumerable: true,
|
|
1318
1359
|
writable: true,
|
|
1319
1360
|
initializer: null
|
|
1320
|
-
}),
|
|
1361
|
+
}), _descriptor24 = _applyDecoratedDescriptor(_class2.prototype, "header", [_dec25], {
|
|
1321
1362
|
configurable: true,
|
|
1322
1363
|
enumerable: true,
|
|
1323
1364
|
writable: true,
|
|
1324
1365
|
initializer: null
|
|
1325
|
-
}),
|
|
1366
|
+
}), _descriptor25 = _applyDecoratedDescriptor(_class2.prototype, "headerLevel", [_dec26], {
|
|
1326
1367
|
configurable: true,
|
|
1327
1368
|
enumerable: true,
|
|
1328
1369
|
writable: true,
|
|
1329
1370
|
initializer: null
|
|
1330
|
-
}),
|
|
1371
|
+
}), _descriptor26 = _applyDecoratedDescriptor(_class2.prototype, "headerVisible", [_dec27], {
|
|
1331
1372
|
configurable: true,
|
|
1332
1373
|
enumerable: true,
|
|
1333
1374
|
writable: true,
|
|
1334
1375
|
initializer: null
|
|
1335
|
-
}),
|
|
1376
|
+
}), _descriptor27 = _applyDecoratedDescriptor(_class2.prototype, "id", [_dec28], {
|
|
1336
1377
|
configurable: true,
|
|
1337
1378
|
enumerable: true,
|
|
1338
1379
|
writable: true,
|
|
1339
1380
|
initializer: null
|
|
1340
|
-
}),
|
|
1381
|
+
}), _descriptor28 = _applyDecoratedDescriptor(_class2.prototype, "contentId", [_dec29], {
|
|
1341
1382
|
configurable: true,
|
|
1342
1383
|
enumerable: true,
|
|
1343
1384
|
writable: true,
|
|
1344
1385
|
initializer: null
|
|
1345
|
-
}),
|
|
1386
|
+
}), _descriptor29 = _applyDecoratedDescriptor(_class2.prototype, "associatedSelectionVariantPath", [_dec30], {
|
|
1346
1387
|
configurable: true,
|
|
1347
1388
|
enumerable: true,
|
|
1348
1389
|
writable: true,
|
|
1349
1390
|
initializer: null
|
|
1350
|
-
}),
|
|
1391
|
+
}), _descriptor30 = _applyDecoratedDescriptor(_class2.prototype, "isSearchable", [_dec31], {
|
|
1351
1392
|
configurable: true,
|
|
1352
1393
|
enumerable: true,
|
|
1353
1394
|
writable: true,
|
|
1354
1395
|
initializer: null
|
|
1355
|
-
}),
|
|
1396
|
+
}), _descriptor31 = _applyDecoratedDescriptor(_class2.prototype, "personalization", [_dec32], {
|
|
1356
1397
|
configurable: true,
|
|
1357
1398
|
enumerable: true,
|
|
1358
1399
|
writable: true,
|
|
1359
1400
|
initializer: null
|
|
1360
|
-
}),
|
|
1401
|
+
}), _descriptor32 = _applyDecoratedDescriptor(_class2.prototype, "readOnly", [_dec33], {
|
|
1361
1402
|
configurable: true,
|
|
1362
1403
|
enumerable: true,
|
|
1363
1404
|
writable: true,
|
|
1364
1405
|
initializer: null
|
|
1365
|
-
}),
|
|
1406
|
+
}), _descriptor33 = _applyDecoratedDescriptor(_class2.prototype, "type", [_dec34], {
|
|
1366
1407
|
configurable: true,
|
|
1367
1408
|
enumerable: true,
|
|
1368
1409
|
writable: true,
|
|
1369
1410
|
initializer: null
|
|
1370
|
-
}),
|
|
1411
|
+
}), _descriptor34 = _applyDecoratedDescriptor(_class2.prototype, "useCondensedLayout", [_dec35], {
|
|
1371
1412
|
configurable: true,
|
|
1372
1413
|
enumerable: true,
|
|
1373
1414
|
writable: true,
|
|
1374
1415
|
initializer: null
|
|
1375
|
-
}),
|
|
1416
|
+
}), _descriptor35 = _applyDecoratedDescriptor(_class2.prototype, "selectionMode", [_dec36], {
|
|
1376
1417
|
configurable: true,
|
|
1377
1418
|
enumerable: true,
|
|
1378
1419
|
writable: true,
|
|
1379
1420
|
initializer: null
|
|
1380
|
-
}),
|
|
1421
|
+
}), _descriptor36 = _applyDecoratedDescriptor(_class2.prototype, "variantManagement", [_dec37], {
|
|
1381
1422
|
configurable: true,
|
|
1382
1423
|
enumerable: true,
|
|
1383
1424
|
writable: true,
|
|
1384
1425
|
initializer: null
|
|
1385
|
-
}),
|
|
1426
|
+
}), _descriptor37 = _applyDecoratedDescriptor(_class2.prototype, "ignoredFields", [_dec38], {
|
|
1386
1427
|
configurable: true,
|
|
1387
1428
|
enumerable: true,
|
|
1388
1429
|
writable: true,
|
|
1389
1430
|
initializer: null
|
|
1390
|
-
}),
|
|
1431
|
+
}), _descriptor38 = _applyDecoratedDescriptor(_class2.prototype, "modeForNoDataMessage", [_dec39], {
|
|
1391
1432
|
configurable: true,
|
|
1392
1433
|
enumerable: true,
|
|
1393
1434
|
writable: true,
|
|
1394
1435
|
initializer: null
|
|
1395
|
-
}),
|
|
1436
|
+
}), _descriptor39 = _applyDecoratedDescriptor(_class2.prototype, "headerStyle", [_dec40], {
|
|
1396
1437
|
configurable: true,
|
|
1397
1438
|
enumerable: true,
|
|
1398
1439
|
writable: true,
|
|
1399
1440
|
initializer: null
|
|
1400
|
-
}),
|
|
1441
|
+
}), _descriptor40 = _applyDecoratedDescriptor(_class2.prototype, "enableAutoColumnWidth", [_dec41], {
|
|
1401
1442
|
configurable: true,
|
|
1402
1443
|
enumerable: true,
|
|
1403
1444
|
writable: true,
|
|
1404
1445
|
initializer: function () {
|
|
1405
1446
|
return true;
|
|
1406
1447
|
}
|
|
1407
|
-
}),
|
|
1448
|
+
}), _descriptor41 = _applyDecoratedDescriptor(_class2.prototype, "fieldMode", [_dec42], {
|
|
1408
1449
|
configurable: true,
|
|
1409
1450
|
enumerable: true,
|
|
1410
1451
|
writable: true,
|
|
1411
1452
|
initializer: function () {
|
|
1412
1453
|
return "";
|
|
1413
1454
|
}
|
|
1414
|
-
}),
|
|
1455
|
+
}), _descriptor42 = _applyDecoratedDescriptor(_class2.prototype, "isAlp", [_dec43], {
|
|
1415
1456
|
configurable: true,
|
|
1416
1457
|
enumerable: true,
|
|
1417
1458
|
writable: true,
|
|
1418
1459
|
initializer: function () {
|
|
1419
1460
|
return false;
|
|
1420
1461
|
}
|
|
1421
|
-
}),
|
|
1462
|
+
}), _descriptor43 = _applyDecoratedDescriptor(_class2.prototype, "inMultiView", [_dec44], {
|
|
1422
1463
|
configurable: true,
|
|
1423
1464
|
enumerable: true,
|
|
1424
1465
|
writable: true,
|
|
1425
1466
|
initializer: null
|
|
1426
|
-
}),
|
|
1467
|
+
}), _descriptor44 = _applyDecoratedDescriptor(_class2.prototype, "tabTitle", [_dec45], {
|
|
1427
1468
|
configurable: true,
|
|
1428
1469
|
enumerable: true,
|
|
1429
1470
|
writable: true,
|
|
1430
1471
|
initializer: function () {
|
|
1431
1472
|
return "";
|
|
1432
1473
|
}
|
|
1433
|
-
}),
|
|
1474
|
+
}), _descriptor45 = _applyDecoratedDescriptor(_class2.prototype, "visible", [_dec46], {
|
|
1434
1475
|
configurable: true,
|
|
1435
1476
|
enumerable: true,
|
|
1436
1477
|
writable: true,
|
|
1437
1478
|
initializer: null
|
|
1438
|
-
}),
|
|
1479
|
+
}), _descriptor46 = _applyDecoratedDescriptor(_class2.prototype, "displaySegmentedButton", [_dec47], {
|
|
1439
1480
|
configurable: true,
|
|
1440
1481
|
enumerable: true,
|
|
1441
1482
|
writable: true,
|
|
1442
1483
|
initializer: null
|
|
1443
|
-
}),
|
|
1484
|
+
}), _descriptor47 = _applyDecoratedDescriptor(_class2.prototype, "creationMode", [_dec48], {
|
|
1444
1485
|
configurable: true,
|
|
1445
1486
|
enumerable: true,
|
|
1446
1487
|
writable: true,
|
|
1447
1488
|
initializer: function () {
|
|
1448
1489
|
return {};
|
|
1449
1490
|
}
|
|
1450
|
-
}),
|
|
1491
|
+
}), _descriptor48 = _applyDecoratedDescriptor(_class2.prototype, "analyticalConfiguration", [_dec49], {
|
|
1451
1492
|
configurable: true,
|
|
1452
1493
|
enumerable: true,
|
|
1453
1494
|
writable: true,
|
|
1454
1495
|
initializer: function () {
|
|
1455
1496
|
return {};
|
|
1456
1497
|
}
|
|
1457
|
-
}),
|
|
1498
|
+
}), _descriptor49 = _applyDecoratedDescriptor(_class2.prototype, "actions", [_dec50], {
|
|
1458
1499
|
configurable: true,
|
|
1459
1500
|
enumerable: true,
|
|
1460
1501
|
writable: true,
|
|
1461
1502
|
initializer: null
|
|
1462
|
-
}),
|
|
1503
|
+
}), _descriptor50 = _applyDecoratedDescriptor(_class2.prototype, "massEdit", [_dec51], {
|
|
1463
1504
|
configurable: true,
|
|
1464
1505
|
enumerable: true,
|
|
1465
1506
|
writable: true,
|
|
1466
1507
|
initializer: null
|
|
1467
|
-
}),
|
|
1508
|
+
}), _descriptor51 = _applyDecoratedDescriptor(_class2.prototype, "columns", [_dec52], {
|
|
1468
1509
|
configurable: true,
|
|
1469
1510
|
enumerable: true,
|
|
1470
1511
|
writable: true,
|
|
1471
1512
|
initializer: null
|
|
1472
|
-
}),
|
|
1513
|
+
}), _descriptor52 = _applyDecoratedDescriptor(_class2.prototype, "quickVariantSelection", [_dec53], {
|
|
1473
1514
|
configurable: true,
|
|
1474
1515
|
enumerable: true,
|
|
1475
1516
|
writable: true,
|
|
1476
1517
|
initializer: null
|
|
1477
|
-
}),
|
|
1518
|
+
}), _descriptor53 = _applyDecoratedDescriptor(_class2.prototype, "beforeRebindTable", [_dec54], {
|
|
1478
1519
|
configurable: true,
|
|
1479
1520
|
enumerable: true,
|
|
1480
1521
|
writable: true,
|
|
1481
1522
|
initializer: null
|
|
1482
|
-
}),
|
|
1523
|
+
}), _descriptor54 = _applyDecoratedDescriptor(_class2.prototype, "rowPress", [_dec55], {
|
|
1483
1524
|
configurable: true,
|
|
1484
1525
|
enumerable: true,
|
|
1485
1526
|
writable: true,
|
|
1486
1527
|
initializer: null
|
|
1487
|
-
}),
|
|
1528
|
+
}), _descriptor55 = _applyDecoratedDescriptor(_class2.prototype, "listBindingChange", [_dec56], {
|
|
1488
1529
|
configurable: true,
|
|
1489
1530
|
enumerable: true,
|
|
1490
1531
|
writable: true,
|
|
1491
1532
|
initializer: null
|
|
1492
|
-
}),
|
|
1533
|
+
}), _descriptor56 = _applyDecoratedDescriptor(_class2.prototype, "segmentedButtonPress", [_dec57], {
|
|
1493
1534
|
configurable: true,
|
|
1494
1535
|
enumerable: true,
|
|
1495
1536
|
writable: true,
|
|
1496
1537
|
initializer: null
|
|
1497
|
-
}),
|
|
1538
|
+
}), _descriptor57 = _applyDecoratedDescriptor(_class2.prototype, "variantSaved", [_dec58], {
|
|
1498
1539
|
configurable: true,
|
|
1499
1540
|
enumerable: true,
|
|
1500
1541
|
writable: true,
|
|
1501
1542
|
initializer: null
|
|
1502
|
-
}),
|
|
1543
|
+
}), _descriptor58 = _applyDecoratedDescriptor(_class2.prototype, "selectionChange", [_dec59], {
|
|
1503
1544
|
configurable: true,
|
|
1504
1545
|
enumerable: true,
|
|
1505
1546
|
writable: true,
|
|
1506
1547
|
initializer: null
|
|
1507
|
-
}),
|
|
1548
|
+
}), _descriptor59 = _applyDecoratedDescriptor(_class2.prototype, "variantSelected", [_dec60], {
|
|
1508
1549
|
configurable: true,
|
|
1509
1550
|
enumerable: true,
|
|
1510
1551
|
writable: true,
|
|
1511
1552
|
initializer: null
|
|
1512
|
-
}),
|
|
1553
|
+
}), _descriptor60 = _applyDecoratedDescriptor(_class2.prototype, "initialLoad", [_dec61], {
|
|
1513
1554
|
configurable: true,
|
|
1514
1555
|
enumerable: true,
|
|
1515
1556
|
writable: true,
|
|
@@ -1518,4 +1559,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
1518
1559
|
_exports = TableBlock;
|
|
1519
1560
|
return _exports;
|
|
1520
1561
|
}, false);
|
|
1521
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzYWZlR2V0QXR0cmlidXRlIiwibm9kZSIsIm5hbWUiLCJnZXRBdHRyaWJ1dGUiLCJ1bmRlZmluZWQiLCJnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUiLCJlbmFibGVtZW50QXR0ciIsInJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInBhcnNlQWN0aW9uRnJvbUVsZW1lbnQiLCJhY3Rpb25Ob2RlIiwiY29tbW9uUHJvcGVydGllcyIsImdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMiLCJsb2NhbE5hbWUiLCJ0ZXh0IiwicHJlc3MiLCJyZXF1aXJlc1NlbGVjdGlvbiIsImVuYWJsZUF1dG9TY3JvbGwiLCJuYXZpZ2F0ZVRvSW5zdGFuY2UiLCJkZWZhdWx0VmFsdWVzRnVuY3Rpb24iLCJhY3Rpb24iLCJyZXBsYWNlIiwiZW5hYmxlZCIsInZpc2libGUiLCJjb21tYW5kIiwiZW5hYmxlT25TZWxlY3QiLCJwbGFjZW1lbnQiLCJhbmNob3IiLCJfdHlwZSIsIk51bWJlciIsInBhcnNlSW50Iiwic2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25PYmplY3QiLCJpbmNsdWRlcyIsImdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMiLCJkZWZhdWx0QWN0aW9uIiwic2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzIiwiZWxlbWVudCIsImN1c3RvbUNvbnRlbnQiLCJjaGlsZHJlbiIsIm91dGVySFRNTCIsInZpc2libGVGaWVsZHMiLCJzcGxpdCIsImlnbm9yZWRGaWVsZHMiLCJvcGVyYXRpb25Hcm91cGluZ01vZGUiLCJzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJxdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJwYXRocyIsInNob3dDb3VudHMiLCJhY3Rpb25zSW5NZW51IiwiQXJyYXkiLCJwcm90b3R5cGUiLCJzbGljZSIsImFwcGx5IiwibWFwIiwic3ViQWN0aW9uIiwic2V0QXR0cmlidXRlIiwiYWN0aW9ucyIsImdldENvbW1vbkN1c3RvbUNvbHVtbnNQcm9wZXJ0aWVzIiwiY2hpbGRDb2x1bW4iLCJ3aWR0aCIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwiaW1wb3J0YW5jZSIsImhvcml6b250YWxBbGlnbiIsImF2YWlsYWJpbGl0eSIsImV4cG9ydFNldHRpbmdzIiwicGFyc2VFeHBvcnRTZXR0aW5ncyIsInNldEN1c3RvbUNvbHVtblByb3BlcnRpZXMiLCJoZWFkZXIiLCJ0b29sdGlwIiwidGVtcGxhdGUiLCJnZXRDb2x1bW5UZW1wbGF0ZSIsInByb3BlcnRpZXMiLCJyZXF1aXJlZCIsInBhcnNlU2ltcGxlQWdncmVnYXRpb24iLCJ3cmFwIiwidHlwZSIsInByb3BlcnR5IiwiYWdncmVnYXRpb24iLCJnZXRBZ2dyZWdhdGlvbiIsImkiLCJsZW5ndGgiLCJjaGlsZCIsIml0ZW0iLCJub2RlTmFtZSIsImVuZHNXaXRoIiwiYWdncmVnYXRpb25OYW1lIiwicmVzdWx0IiwiZ2V0QXR0cmlidXRlTmFtZXMiLCJ2YWx1ZSIsIlRhYmxlQmxvY2siLCJfZGVjIiwiZGVmaW5lQnVpbGRpbmdCbG9jayIsIm5hbWVzcGFjZSIsInB1YmxpY05hbWVzcGFjZSIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJibG9ja0F0dHJpYnV0ZSIsInVuZGVybHlpbmdUeXBlIiwiZXhwZWN0ZWRUeXBlcyIsImV4cGVjdGVkQW5ub3RhdGlvbnMiLCJpc1B1YmxpYyIsIl9kZWMzIiwiYmluZGFibGUiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzE2IiwiX2RlYzE3IiwiX2RlYzE4IiwiX2RlYzE5IiwiX2RlYzIwIiwiX2RlYzIxIiwiX2RlYzIyIiwiaXNBc3NvY2lhdGlvbiIsIl9kZWMyMyIsIl9kZWMyNCIsIl9kZWMyNSIsIl9kZWMyNiIsIl9kZWMyNyIsIl9kZWMyOCIsIl9kZWMyOSIsIl9kZWMzMCIsIl9kZWMzMSIsIl9kZWMzMiIsIl9kZWMzMyIsIl9kZWMzNCIsIl9kZWMzNSIsIl9kZWMzNiIsIl9kZWMzNyIsIl9kZWMzOCIsIl9kZWMzOSIsIl9kZWM0MCIsIl9kZWM0MSIsIl9kZWM0MiIsIl9kZWM0MyIsIl9kZWM0NCIsIl9kZWM0NSIsIl9kZWM0NiIsInZhbGlkYXRlIiwiY3JlYXRpb25PcHRpb25zSW5wdXQiLCJFcnJvciIsIl9kZWM0NyIsImFuYWx5dGljYWxDb25maWd1cmF0aW9uIiwiYWdncmVnYXRpb25PbkxlYWZMZXZlbCIsIl9kZWM0OCIsImJsb2NrQWdncmVnYXRpb24iLCJhbHRUeXBlcyIsImhhc1ZpcnR1YWxOb2RlIiwibXVsdGlwbGUiLCJwcm9jZXNzQWdncmVnYXRpb25zIiwiX2RlYzQ5Iiwic2tpcEtleSIsIl9kZWM1MCIsImlzRGVmYXVsdCIsIl9kZWM1MSIsIl9kZWM1MiIsImJsb2NrRXZlbnQiLCJfZGVjNTMiLCJfZGVjNTQiLCJfZGVjNTUiLCJfZGVjNTYiLCJfZGVjNTciLCJfZGVjNTgiLCJfZGVjNTkiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX1RhYmxlQmxvY2siLCJfQnVpbGRpbmdCbG9ja1RlbXBsYXQiLCJwcm9wcyIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwidGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwiX2Rlc2NyaXB0b3IxMSIsIl9kZXNjcmlwdG9yMTIiLCJfZGVzY3JpcHRvcjEzIiwiX2Rlc2NyaXB0b3IxNCIsIl9kZXNjcmlwdG9yMTUiLCJfZGVzY3JpcHRvcjE2IiwiX2Rlc2NyaXB0b3IxNyIsIl9kZXNjcmlwdG9yMTgiLCJfZGVzY3JpcHRvcjE5IiwiX2Rlc2NyaXB0b3IyMCIsIl9kZXNjcmlwdG9yMjEiLCJfZGVzY3JpcHRvcjIyIiwiX2Rlc2NyaXB0b3IyMyIsIl9kZXNjcmlwdG9yMjQiLCJfZGVzY3JpcHRvcjI1IiwiX2Rlc2NyaXB0b3IyNiIsIl9kZXNjcmlwdG9yMjciLCJfZGVzY3JpcHRvcjI4IiwiX2Rlc2NyaXB0b3IyOSIsIl9kZXNjcmlwdG9yMzAiLCJfZGVzY3JpcHRvcjMxIiwiX2Rlc2NyaXB0b3IzMiIsIl9kZXNjcmlwdG9yMzMiLCJfZGVzY3JpcHRvcjM0IiwiX2Rlc2NyaXB0b3IzNSIsIl9kZXNjcmlwdG9yMzYiLCJfZGVzY3JpcHRvcjM3IiwiX2Rlc2NyaXB0b3IzOCIsIl9kZXNjcmlwdG9yMzkiLCJfZGVzY3JpcHRvcjQwIiwiX2Rlc2NyaXB0b3I0MSIsIl9kZXNjcmlwdG9yNDIiLCJfZGVzY3JpcHRvcjQzIiwiX2Rlc2NyaXB0b3I0NCIsIl9kZXNjcmlwdG9yNDUiLCJfZGVzY3JpcHRvcjQ2IiwiX2Rlc2NyaXB0b3I0NyIsIl9kZXNjcmlwdG9yNDgiLCJfZGVzY3JpcHRvcjQ5IiwiX2Rlc2NyaXB0b3I1MCIsIl9kZXNjcmlwdG9yNTEiLCJfZGVzY3JpcHRvcjUyIiwiX2Rlc2NyaXB0b3I1MyIsIl9kZXNjcmlwdG9yNTQiLCJfZGVzY3JpcHRvcjU1IiwiX2Rlc2NyaXB0b3I1NiIsIl9kZXNjcmlwdG9yNTciLCJfZGVzY3JpcHRvcjU4IiwiY29udGV4dE9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwidGFibGVEZWZpbml0aW9uIiwiY3JlYXRlVGFibGVEZWZpbml0aW9uIiwidGFibGVEZWZpbml0aW9uQ29udGV4dCIsIk1hY3JvQVBJIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJjb252ZXJ0ZWRNZXRhZGF0YSIsImNvbnZlcnRlZFR5cGVzIiwibWV0YU1vZGVsIiwibW9kZWxzIiwiY29sbGVjdGlvbkVudGl0eSIsInJlc29sdmVQYXRoIiwiYW5ub3RhdGlvbiIsImNvbGxlY3Rpb24iLCJ0YXJnZXQiLCJhcHBDb21wb25lbnQiLCJzZXRVcElkIiwiY3JlYXRpb25Nb2RlIiwiY3JlYXRlIiwibW9kZSIsImNyZWF0ZUF0RW5kIiwiYXBwZW5kIiwicmVhZE9ubHkiLCJkaXNwbGF5TW9kZSIsImNvbnRyb2wiLCJUYWJsZUFQSSIsInVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5IiwidXNlQmFzaWNTZWFyY2giLCJmaWx0ZXJCYXIiLCJnZW5lcmF0ZSIsImNvbnRlbnRJZCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJnZXRWaXN1YWxpemF0aW9uUGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiTG9nIiwiZXJyb3IiLCJpc0Fubm90YXRpb25PZlRlcm0iLCJ0YXJnZXRPYmplY3QiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwidmlzdWFsaXphdGlvbnMiLCJnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uIiwidGVybSIsImxpbmVJdGVtVml6IiwiZmluZCIsInZpeiIsInZpc3VhbGl6YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsIl9wcm90byIsImdldFRhYmxlU2V0dGluZ3MiLCJ0YWJsZVNldHRpbmdzIiwiYWRkU2V0dGluZyIsImVuYWJsZUV4cG9ydCIsInNlbGVjdGlvbkxpbWl0IiwiY29uZGVuc2VkVGFibGVMYXlvdXQiLCJleHBvcnRSZXF1ZXN0U2l6ZSIsImZyb3plbkNvbHVtbkNvdW50IiwiZGlzYWJsZUNvbHVtbkZyZWV6ZSIsInJvd0NvdW50TW9kZSIsInJvd0NvdW50IiwiZW5hYmxlRnVsbFNjcmVlbiIsImVuYWJsZVNlbGVjdEFsbCIsImVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyIsImVuYWJsZVBhc3RlIiwiZGlzYWJsZUNvcHlUb0NsaXBib2FyZCIsInNjcm9sbFRocmVzaG9sZCIsInRocmVzaG9sZCIsInBvcGluTGF5b3V0Iiwic2VsZWN0aW9uTW9kZSIsInF1aWNrRmlsdGVycyIsInBhdGgiLCJjcmVhdGlvbkZpZWxkcyIsImlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUiLCJvdXRib3VuZCIsImVudHJpZXMiLCJtYXNzRWRpdCIsImVuYWJsZU1hc3NFZGl0IiwiY29uZmlndXJhdGlvbiIsImpvaW4iLCJ0YWJsZSIsImluaXRpYWxDb252ZXJ0ZXJDb250ZXh0IiwiZ2V0Q29udmVydGVyQ29udGV4dCIsImdldFBhdGgiLCJ2aXN1YWxpemF0aW9uUGF0aCIsImV4dHJhTWFuaWZlc3RTZXR0aW5ncyIsImNyZWF0ZUFjdGlvbnNGcm9tTWFuaWZlc3QiLCJjb2x1bW5zIiwiY3JlYXRlQ29sdW1uc0Zvck1hbmlmZXN0IiwiZXh0cmFQYXJhbXMiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudCIsImFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCIsInN2T2JqZWN0UGF0aCIsInZpc3VhbGl6YXRpb25EZWZpbml0aW9uIiwiZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uIiwiaW5NdWx0aVZpZXciLCJnZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZ2V0RW50aXR5VHlwZSIsImlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQiLCJ1c2VDb25kZW5zZWRMYXlvdXQiLCJpc01hY3JvT3JNdWx0aXBsZVZpZXciLCJWaXN1YWxpemF0aW9uVHlwZSIsIlRhYmxlIiwiYWN0aW9uc1NldHRpbmdzIiwiYWRkQWN0aW9uVG9FeHRyYU1hbmlmZXN0IiwicG9zaXRpb24iLCJpc0FJT3BlcmF0aW9uIiwicHJpb3JpdHkiLCJncm91cCIsIl9fbm9XcmFwIiwiYWZ0ZXJFeGVjdXRpb24iLCJ2YWx1ZXMiLCJtZW51IiwiaXNCbG9ja0NvbHVtbiIsImJsb2NrIiwiY29sdW1uU2V0dGluZ3MiLCJjb2x1bW4iLCJjdXN0b21Db2x1bW5EZWZpbml0aW9uIiwiaWQiLCJfYXBpSWQiLCJnZXRDb250ZW50SWQiLCJhcGlJZCIsIl9nZXRFbnRpdHlUeXBlIiwiZW50aXR5VHlwZSIsInRhcmdldFR5cGUiLCJnZXRFbXB0eVJvd3NFbmFibGVkIiwiQ3JlYXRpb25Nb2RlIiwiSW5saW5lQ3JlYXRpb25Sb3dzIiwiYSIsIlN0YW5kYXJkQWN0aW9uS2V5cyIsIkNyZWF0ZSIsImdldFRlbXBsYXRlIiwidGFibGVQcm9wcyIsIm92ZXJyaWRlUm93UHJlc3MiLCJyb3dQcmVzcyIsImhhbmRsZXJQcm92aWRlciIsIlRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIiLCJnZXRNb2RlbCIsIl9qc3giLCJUYWJsZUNyZWF0aW9uT3B0aW9ucyIsImJpbmRpbmciLCJoZWFkZXJMZXZlbCIsImhlYWRlclN0eWxlIiwiaGVhZGVyVmlzaWJsZSIsInRhYlRpdGxlIiwiaXNTZWFyY2hhYmxlIiwiYnVzeSIsImluaXRpYWxMb2FkIiwiaXNBbHAiLCJmaWVsZE1vZGUiLCJwZXJzb25hbGl6YXRpb24iLCJ2YXJpYW50U2F2ZWQiLCJ2YXJpYW50U2VsZWN0ZWQiLCJzZWdtZW50ZWRCdXR0b25QcmVzcyIsInZhcmlhbnRNYW5hZ2VtZW50IiwiZW50aXR5VHlwZUZ1bGx5UXVhbGlmaWVkTmFtZSIsInNlbGVjdGlvbkNoYW5nZSIsImxpc3RCaW5kaW5nQ2hhbmdlIiwiZW1wdHlSb3dzRW5hYmxlZCIsImVuYWJsZUF1dG9Db2x1bW5XaWR0aCIsImJlZm9yZVJlYmluZFRhYmxlIiwibW9kZUZvck5vRGF0YU1lc3NhZ2UiLCJkaXNwbGF5U2VnbWVudGVkQnV0dG9uIiwiY3VzdG9tRGF0YSIsImNyZWF0ZUN1c3RvbURhdGEiLCJsYXlvdXREYXRhIiwiRmxleEl0ZW1EYXRhIiwibWF4V2lkdGgiLCJjb250ZW50IiwiZ2V0TURDVGFibGVUZW1wbGF0ZSIsIkJ1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVGFibGUuYmxvY2sudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29udmVydGVkTWV0YWRhdGEsIEVudGl0eVNldCwgRW50aXR5VHlwZSwgTmF2aWdhdGlvblByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdExpbmVJdGVtLFxuXHRQcmVzZW50YXRpb25WYXJpYW50LFxuXHRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50LFxuXHRTZWxlY3Rpb25WYXJpYW50LFxuXHRTZWxlY3Rpb25WYXJpYW50VHlwZVxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UZXJtcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHsgdHlwZSBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHtcblx0YmxvY2tBZ2dyZWdhdGlvbixcblx0YmxvY2tBdHRyaWJ1dGUsXG5cdGJsb2NrRXZlbnQsXG5cdGRlZmluZUJ1aWxkaW5nQmxvY2tcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2VcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUge1xuXHRBdmFpbGFiaWxpdHlUeXBlLFxuXHRDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4sXG5cdEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbkZvck92ZXJyaWRlLFxuXHRIb3Jpem9udGFsQWxpZ24sXG5cdEltcG9ydGFuY2UsXG5cdE1hbmlmZXN0QWN0aW9uLFxuXHRUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBDcmVhdGlvbk1vZGUsIFZpc3VhbGl6YXRpb25UeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IENoYXJ0VmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyBWaXN1YWxpemF0aW9uQW5kUGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHtcblx0Z2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uLFxuXHRnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDcmVhdGVCZWhhdmlvciwgVGFibGVUeXBlLCBUYWJsZVZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCB7IFN0YW5kYXJkQWN0aW9uS2V5cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi90YWJsZS9TdGFuZGFyZEFjdGlvbnNcIjtcbmltcG9ydCB7IHR5cGUgUGxhY2VtZW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbk9mVGVybSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEFjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0FjdGlvbkdyb3VwXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW4gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQ29sdW1uXCI7XG5pbXBvcnQgdHlwZSB7IFRhYmxlQmxvY2tQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvTWRjVGFibGVUZW1wbGF0ZVwiO1xuaW1wb3J0IHsgZ2V0TURDVGFibGVUZW1wbGF0ZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL01kY1RhYmxlVGVtcGxhdGVcIjtcbmltcG9ydCBUYWJsZUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUFQSVwiO1xuaW1wb3J0IFRhYmxlQ3JlYXRpb25PcHRpb25zIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQ3JlYXRpb25PcHRpb25zXCI7XG5pbXBvcnQgRmxleEl0ZW1EYXRhIGZyb20gXCJzYXAvbS9GbGV4SXRlbURhdGFcIjtcbmltcG9ydCB0eXBlIHsgT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHkgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IHsgdHlwZSBUaXRsZUxldmVsIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgeyBjcmVhdGVDdXN0b21EYXRhIH0gZnJvbSBcIi4uL1RTWFV0aWxzXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cE92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBBbmFseXRpY2FsQ29uZmlndXJhdGlvbiBmcm9tIFwiLi9BbmFseXRpY2FsQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uT3ZlcnJpZGUgZnJvbSBcIi4vQ29sdW1uT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIE1hc3NFZGl0IGZyb20gXCIuL01hc3NFZGl0XCI7XG5pbXBvcnQgdHlwZSBRdWlja1ZhcmlhbnRTZWxlY3Rpb24gZnJvbSBcIi4vUXVpY2tWYXJpYW50U2VsZWN0aW9uXCI7XG5pbXBvcnQgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlciBmcm9tIFwiLi9UYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyXCI7XG5cbnR5cGUgQmxvY2tDb2x1bW4gPSBQYXJ0aWFsPE9taXQ8Q29sdW1uLCBcInRlbXBsYXRlXCIgfCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdGV4cG9ydFNldHRpbmdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuPjtcblx0X3R5cGU6IFwiQ29sdW1uXCI7XG59O1xuXG50eXBlIEJsb2NrQ29sdW1uT3ZlcnJpZGUgPSBQYXJ0aWFsPE9taXQ8Q29sdW1uT3ZlcnJpZGUsIFwiZXhwb3J0U2V0dGluZ3NcIj4+ICYge1xuXHRleHBvcnRTZXR0aW5ncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdIHwgYm9vbGVhbj47XG5cdF90eXBlOiBcIkNvbHVtbk92ZXJyaWRlXCI7XG59O1xudHlwZSBCbG9ja01hc3NFZGl0ID0gUGFydGlhbDxPbWl0PE1hc3NFZGl0LCBcImN1c3RvbUNvbnRlbnRcIj4+ICYgeyBjdXN0b21Db250ZW50Pzogc3RyaW5nOyBrZXk6IHN0cmluZyB9O1xudHlwZSBCbG9ja1F1aWNrVmFyaWFudFNlbGVjdGlvbiA9IFByb3BlcnRpZXNPZjxRdWlja1ZhcmlhbnRTZWxlY3Rpb24+ICYgeyBrZXk6IHN0cmluZyB9O1xudHlwZSBCbG9ja0FjdGlvbiA9IFByb3BlcnRpZXNPZjxPbWl0PEFjdGlvbiwgXCJwcmVzc1wiPj4gJiB7IF90eXBlOiBcIkFjdGlvblwiOyBwcmVzczogc3RyaW5nIH07XG50eXBlIEJsb2NrQWN0aW9uR3JvdXAgPSBQcm9wZXJ0aWVzT2Y8T21pdDxBY3Rpb25Hcm91cCwgXCJhY3Rpb25zXCI+PiAmIHtcblx0X3R5cGU6IFwiQWN0aW9uR3JvdXBcIjtcblx0YWN0aW9uczogKEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25PdmVycmlkZSlbXTtcbn07XG50eXBlIEJsb2NrQWN0aW9uT3ZlcnJpZGUgPSBQcm9wZXJ0aWVzT2Y8QWN0aW9uT3ZlcnJpZGU+ICYgeyBfdHlwZTogXCJBY3Rpb25PdmVycmlkZVwiIH07XG50eXBlIEJsb2NrQWN0aW9uR3JvdXBPdmVycmlkZSA9IFByb3BlcnRpZXNPZjxPbWl0PEFjdGlvbkdyb3VwT3ZlcnJpZGUsIFwiYWN0aW9uc1wiPj4gJiB7XG5cdF90eXBlOiBcIkFjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcblx0YWN0aW9uczogKEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25PdmVycmlkZSlbXTtcbn07XG50eXBlIENvbW1vbkN1c3RvbUFjdGlvbiA9IHtcblx0a2V5OiBzdHJpbmc7XG5cdGVuYWJsZWQ6IGJvb2xlYW47XG5cdHZpc2libGU6IGJvb2xlYW47XG5cdGNvbW1hbmQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0ZW5hYmxlT25TZWxlY3Q6IFwic2luZ2xlXCIgfCBcIm11bHRpXCIgfCB1bmRlZmluZWQ7XG5cdHBsYWNlbWVudDogXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZDtcblx0YW5jaG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGlzQUlPcGVyYXRpb24/OiBib29sZWFuO1xuXHRwcmlvcml0eT86IE92ZXJmbG93VG9vbGJhclByaW9yaXR5O1xuXHRncm91cD86IG51bWJlcjtcblx0X3R5cGU6IFwiQWN0aW9uXCIgfCBcIkFjdGlvbk92ZXJyaWRlXCI7XG59O1xuZnVuY3Rpb24gc2FmZUdldEF0dHJpYnV0ZShub2RlOiBFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gbm9kZS5nZXRBdHRyaWJ1dGUobmFtZSkgPz8gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGR5bmFtaWMgQm9vbGVhbiB2YWx1ZSBvZiBhbiBhdHRyaWJ1dGUuXG4gKiBAcGFyYW0gbm9kZSBUaGUgbm9kZSB0byBnZXQgdGhlIGF0dHJpYnV0ZSBmcm9tXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlXG4gKiBAcmV0dXJucyBUaGUgQm9vbGVhbiB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlXG4gKi9cbmZ1bmN0aW9uIGdldER5bmFtaWNCb29sZWFuVmFsdWVPZkF0dHJpYnV0ZShub2RlOiBFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0Y29uc3QgZW5hYmxlbWVudEF0dHIgPSBub2RlLmdldEF0dHJpYnV0ZShuYW1lKTtcblx0c3dpdGNoIChlbmFibGVtZW50QXR0cikge1xuXHRcdGNhc2UgbnVsbDpcblx0XHRjYXNlIFwidHJ1ZVwiOlxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0Y2FzZSBcImZhbHNlXCI6XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiBlbmFibGVtZW50QXR0ciBhcyB1bmtub3duIGFzIGJvb2xlYW47IC8vIFRvIG1hbmFnZSBiaW5kaW5nIGV4cHJlc3Npb25zXG5cdH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBwcm9wZXJ0aWVzIHdpdGggdGhlIHZhbHVlIG9mIHVuZGVmaW5lZCBmcm9tIHRoZSBvYmplY3QuXG4gKiBAcGFyYW0gb2JqIFRoZSBvYmplY3QgdG8gcmVtb3ZlIHRoZSB1bmRlZmluZWQgcHJvcGVydGllcyBmcm9tXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuXHRPYmplY3Qua2V5cyhvYmopLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdGlmIChvYmpba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRkZWxldGUgb2JqW2tleV07XG5cdFx0fVxuXHR9KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBhY3Rpb24gcHJvcGVydGllcyBmcm9tIGFuIFhNTCBub2RlLlxuICogQHBhcmFtIGFjdGlvbk5vZGUgVGhlIGFjdGlvbiBub2RlXG4gKiBAcmV0dXJucyBUaGUgYWN0aW9uIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gcGFyc2VBY3Rpb25Gcm9tRWxlbWVudChhY3Rpb25Ob2RlOiBFbGVtZW50KTogQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlIHtcblx0Y29uc3QgY29tbW9uUHJvcGVydGllcyA9IGdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMoYWN0aW9uTm9kZSk7XG5cdGlmIChhY3Rpb25Ob2RlLmxvY2FsTmFtZSA9PT0gXCJBY3Rpb25cIikge1xuXHRcdHJldHVybiB7XG5cdFx0XHR0ZXh0OiBhY3Rpb25Ob2RlLmdldEF0dHJpYnV0ZShcInRleHRcIikgPz8gY29tbW9uUHJvcGVydGllcy5rZXksXG5cdFx0XHRwcmVzczogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcInByZXNzXCIpLFxuXHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwicmVxdWlyZXNTZWxlY3Rpb25cIikgPT09IFwidHJ1ZVwiLFxuXHRcdFx0Li4uY29tbW9uUHJvcGVydGllc1xuXHRcdH0gYXMgQmxvY2tBY3Rpb247XG5cdH1cblx0cmV0dXJuIHtcblx0XHRlbmFibGVBdXRvU2Nyb2xsOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJlbmFibGVBdXRvU2Nyb2xsXCIpLFxuXHRcdG5hdmlnYXRlVG9JbnN0YW5jZTogZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwibmF2aWdhdGVUb0luc3RhbmNlXCIpLFxuXHRcdGRlZmF1bHRWYWx1ZXNGdW5jdGlvbjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImRlZmF1bHRWYWx1ZXNGdW5jdGlvblwiKSxcblx0XHQuLi5jb21tb25Qcm9wZXJ0aWVzXG5cdH0gYXMgQmxvY2tBY3Rpb25PdmVycmlkZTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGNvbW1vbiBjdXN0b20gcHJvcGVydGllcyBvZiB0aGUgYWN0aW9uIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIGFjdGlvbk5vZGUgVGhlIGFjdGlvbiBncm91cCBub2RlXG4gKiBAcmV0dXJucyBUaGUgY29sdW1uIHByb3BlcnRpZXMgZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmZ1bmN0aW9uIGdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMoYWN0aW9uTm9kZTogRWxlbWVudCk6IENvbW1vbkN1c3RvbUFjdGlvbiB7XG5cdGNvbnN0IGFjdGlvbjogQ29tbW9uQ3VzdG9tQWN0aW9uID0ge1xuXHRcdGtleTogYWN0aW9uTm9kZS5nZXRBdHRyaWJ1dGUoXCJrZXlcIikhLnJlcGxhY2UoXCJJbmxpbmVYTUxfXCIsIFwiXCIpLFxuXHRcdGVuYWJsZWQ6IGdldER5bmFtaWNCb29sZWFuVmFsdWVPZkF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImVuYWJsZWRcIiksXG5cdFx0dmlzaWJsZTogZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwidmlzaWJsZVwiKSxcblx0XHRjb21tYW5kOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiY29tbWFuZFwiKSxcblx0XHRlbmFibGVPblNlbGVjdDogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImVuYWJsZU9uU2VsZWN0XCIpIGFzIFwic2luZ2xlXCIgfCBcIm11bHRpXCIgfCB1bmRlZmluZWQsXG5cdFx0cGxhY2VtZW50OiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicGxhY2VtZW50XCIpIGFzIFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQsXG5cdFx0YW5jaG9yOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiYW5jaG9yXCIpLFxuXHRcdF90eXBlOiBhY3Rpb25Ob2RlLmxvY2FsTmFtZSA9PT0gXCJBY3Rpb25cIiA/IFwiQWN0aW9uXCIgOiBcIkFjdGlvbk92ZXJyaWRlXCJcblx0fTtcblx0aWYgKGFjdGlvbk5vZGU/LmdldEF0dHJpYnV0ZShcImlzQUlPcGVyYXRpb25cIikpIHtcblx0XHRhY3Rpb25bXCJpc0FJT3BlcmF0aW9uXCJdID0gZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiaXNBSU9wZXJhdGlvblwiKTtcblx0fVxuXG5cdGlmIChhY3Rpb25Ob2RlPy5nZXRBdHRyaWJ1dGUoXCJwcmlvcml0eVwiKSkge1xuXHRcdGFjdGlvbltcInByaW9yaXR5XCJdID0gc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcInByaW9yaXR5XCIpIGFzIE92ZXJmbG93VG9vbGJhclByaW9yaXR5O1xuXHR9XG5cblx0aWYgKGFjdGlvbk5vZGU/LmdldEF0dHJpYnV0ZShcImdyb3VwXCIpKSB7XG5cdFx0YWN0aW9uW1wiZ3JvdXBcIl0gPSBOdW1iZXIucGFyc2VJbnQoc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImdyb3VwXCIpID8/IFwiXCIsIDEwKTtcblx0fVxuXG5cdHJldHVybiBhY3Rpb247XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBhY3Rpb25zIGFuZCBhY3Rpb24gZ3JvdXBzIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIGFjdGlvbk5vZGVcbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdFxuICogQHJldHVybnMgVGhlIGFjdGlvbiBvciBhY3Rpb24gZ3JvdXAgcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gc2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzKFxuXHRhY3Rpb25Ob2RlOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQWN0aW9uIHwgQWN0aW9uT3ZlcnJpZGUgfCBBY3Rpb25Hcm91cCB8IEFjdGlvbkdyb3VwT3ZlcnJpZGVcbik6IEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25Hcm91cCB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUgfCBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGUge1xuXHRpZiAoW1wiQWN0aW9uR3JvdXBcIiwgXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCJdLmluY2x1ZGVzKGFjdGlvbk5vZGUubG9jYWxOYW1lKSkge1xuXHRcdGNvbnN0IGNvbW1vblByb3BlcnRpZXMgPSBnZXRDb21tb25DdXN0b21BY3Rpb25zR3JvdXBQcm9wZXJ0aWVzKGFjdGlvbk5vZGUsIGFnZ3JlZ2F0aW9uT2JqZWN0IGFzIEFjdGlvbkdyb3VwIHwgQWN0aW9uR3JvdXBPdmVycmlkZSk7XG5cdFx0aWYgKGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvbkdyb3VwXCIpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHRleHQ6IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwidGV4dFwiKSA/PyBjb21tb25Qcm9wZXJ0aWVzLmtleSxcblx0XHRcdFx0ZGVmYXVsdEFjdGlvbjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImRlZmF1bHRBY3Rpb25cIiksXG5cdFx0XHRcdC4uLmNvbW1vblByb3BlcnRpZXNcblx0XHRcdH0gYXMgQmxvY2tBY3Rpb25Hcm91cDtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbW1vblByb3BlcnRpZXMgYXMgQmxvY2tBY3Rpb25Hcm91cE92ZXJyaWRlO1xuXHR9XG5cblx0Ly9BY3Rpb24gb3IgQWN0aW9uT3ZlcnJpZGVcblx0cmV0dXJuIHBhcnNlQWN0aW9uRnJvbUVsZW1lbnQoYWN0aW9uTm9kZSk7XG59XG5cbmNvbnN0IHNldEN1c3RvbU1hc3NFZGl0UHJvcGVydGllcyA9IGZ1bmN0aW9uIChlbGVtZW50OiBFbGVtZW50KTogQmxvY2tNYXNzRWRpdCB7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBcImNvbmZpZ3VyYXRpb25cIixcblx0XHRjdXN0b21Db250ZW50OiBlbGVtZW50LmNoaWxkcmVuWzBdPy5vdXRlckhUTUwsXG5cdFx0dmlzaWJsZUZpZWxkczogZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJ2aXNpYmxlRmllbGRzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0aWdub3JlZEZpZWxkczogZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJpZ25vcmVkRmllbGRzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0b3BlcmF0aW9uR3JvdXBpbmdNb2RlOiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJvcGVyYXRpb25Hcm91cGluZ01vZGVcIikgPz8gdW5kZWZpbmVkKSBhcyBcIkNoYW5nZVNldFwiIHwgXCJJc29sYXRlZFwiIHwgdW5kZWZpbmVkXG5cdH07XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIHF1aWNrVmFyaWFudFNlbGVjdGlvbiBUaGUgWE1MIG5vZGUgY29udGFpbmluZyB0aGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uXG4gKiBAcmV0dXJucyBUaGUgUXVpY2tWYXJpYW50U2VsZWN0aW9uIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5jb25zdCBzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24gPSBmdW5jdGlvbiAocXVpY2tWYXJpYW50U2VsZWN0aW9uOiBFbGVtZW50KTogQmxvY2tRdWlja1ZhcmlhbnRTZWxlY3Rpb24ge1xuXHRyZXR1cm4ge1xuXHRcdGtleTogXCJxdWlja0ZpbHRlcnNcIixcblx0XHRwYXRoczogcXVpY2tWYXJpYW50U2VsZWN0aW9uLmdldEF0dHJpYnV0ZShcInBhdGhzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0c2hvd0NvdW50czogcXVpY2tWYXJpYW50U2VsZWN0aW9uLmdldEF0dHJpYnV0ZShcInNob3dDb3VudHNcIikgPT09IFwidHJ1ZVwiXG5cdH07XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29tbW9uIGN1c3RvbSBwcm9wZXJ0aWVzIG9mIHRoZSBhY3Rpb24gZ3JvdXBzIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIGFjdGlvbk5vZGUgVGhlIGFjdGlvbiBncm91cCBub2RlXG4gKiBAcGFyYW0gYWdncmVnYXRpb25PYmplY3QgVGhlIGFnZ3JlZ2F0aW9uIG9iamVjdFxuICogQHJldHVybnMgVGhlIGNvbHVtbiBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBnZXRDb21tb25DdXN0b21BY3Rpb25zR3JvdXBQcm9wZXJ0aWVzKFxuXHRhY3Rpb25Ob2RlOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQWN0aW9uR3JvdXAgfCBBY3Rpb25Hcm91cE92ZXJyaWRlXG4pOiB7XG5cdGtleTogc3RyaW5nO1xuXHRhY3Rpb25zOiAoQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlKVtdO1xuXHRhbmNob3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0cGxhY2VtZW50OiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgdW5kZWZpbmVkO1xuXHRfdHlwZTogXCJBY3Rpb25Hcm91cFwiIHwgXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCI7XG59IHtcblx0Y29uc3QgYWN0aW9uc0luTWVudSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShhY3Rpb25Ob2RlLmNoaWxkcmVuKS5tYXAoKHN1YkFjdGlvbjogRWxlbWVudCkgPT4ge1xuXHRcdHJldHVybiBwYXJzZUFjdGlvbkZyb21FbGVtZW50KHN1YkFjdGlvbik7XG5cdH0pO1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5rZXkgPSBhZ2dyZWdhdGlvbk9iamVjdC5rZXkucmVwbGFjZShcIklubGluZVhNTF9cIiwgXCJcIik7XG5cdGFjdGlvbk5vZGUuc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBhZ2dyZWdhdGlvbk9iamVjdC5rZXksXG5cdFx0YWN0aW9uczogYWN0aW9uc0luTWVudSxcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJhbmNob3JcIiksXG5cdFx0cGxhY2VtZW50OiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicGxhY2VtZW50XCIpIGFzIFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQsXG5cdFx0X3R5cGU6IGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvbkdyb3VwXCIgPyBcIkFjdGlvbkdyb3VwXCIgOiBcIkFjdGlvbkdyb3VwT3ZlcnJpZGVcIlxuXHR9O1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29tbW9uIGN1c3RvbSBwcm9wZXJ0aWVzIG9mIHRoZSBjb2x1bW5zIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIGNoaWxkQ29sdW1uIFRoZSBjb2x1bW4gbm9kZVxuICogQHBhcmFtIGFnZ3JlZ2F0aW9uT2JqZWN0IFRoZSBhZ2dyZWdhdGlvbiBvYmplY3RcbiAqIEByZXR1cm5zIFRoZSBjb2x1bW4gcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMoXG5cdGNoaWxkQ29sdW1uOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlXG4pOiB7XG5cdGtleTogc3RyaW5nO1xuXHR3aWR0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblx0aW1wb3J0YW5jZTogSW1wb3J0YW5jZSB8IHVuZGVmaW5lZDtcblx0aG9yaXpvbnRhbEFsaWduOiBIb3Jpem9udGFsQWxpZ24gfCB1bmRlZmluZWQ7XG5cdGF2YWlsYWJpbGl0eTogQXZhaWxhYmlsaXR5VHlwZSB8IHVuZGVmaW5lZDtcblx0cGxhY2VtZW50OiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgdW5kZWZpbmVkO1xuXHRhbmNob3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0ZXhwb3J0U2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdIHwgYm9vbGVhbj4gfCB1bmRlZmluZWQ7XG59IHtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5IS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0Y2hpbGRDb2x1bW4uc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBhZ2dyZWdhdGlvbk9iamVjdC5rZXksXG5cdFx0d2lkdGg6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwid2lkdGhcIiksXG5cdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpXG5cdFx0XHQ/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpID09PSBcInRydWVcIlxuXHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0aW1wb3J0YW5jZTogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJpbXBvcnRhbmNlXCIpIGFzIEltcG9ydGFuY2UgfCB1bmRlZmluZWQsXG5cdFx0aG9yaXpvbnRhbEFsaWduOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImhvcml6b250YWxBbGlnblwiKSBhcyBIb3Jpem9udGFsQWxpZ24gfCB1bmRlZmluZWQsXG5cdFx0YXZhaWxhYmlsaXR5OiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImF2YWlsYWJpbGl0eVwiKSBhcyBBdmFpbGFiaWxpdHlUeXBlIHwgdW5kZWZpbmVkLFxuXHRcdHBsYWNlbWVudDogKHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicGxhY2VtZW50XCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25QbGFjZW1lbnRcIikpIGFzXG5cdFx0XHR8IFwiQmVmb3JlXCJcblx0XHRcdHwgXCJBZnRlclwiXG5cdFx0XHR8IHVuZGVmaW5lZCwgLy8gcG9zaXRpb25QbGFjZW1lbnQgaXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwiYW5jaG9yXCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25BbmNob3JcIiksIC8vIHBvc2l0aW9uQW5jaG9yIGlzIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cdFx0ZXhwb3J0U2V0dGluZ3M6IHBhcnNlRXhwb3J0U2V0dGluZ3MoY2hpbGRDb2x1bW4pXG5cdH07XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjdXN0b20gY29sdW1ucyBmcm9tIHRoZSBYTUwgbm9kZS5cbiAqIEBwYXJhbSBjaGlsZENvbHVtblxuICogQHBhcmFtIGFnZ3JlZ2F0aW9uT2JqZWN0XG4gKiBAcmV0dXJucyBUSGUgY29sdW1uIHByb3BlcnRpZXMgZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmZ1bmN0aW9uIHNldEN1c3RvbUNvbHVtblByb3BlcnRpZXMoXG5cdGNoaWxkQ29sdW1uOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlXG4pOiBCbG9ja0NvbHVtbiB8IEJsb2NrQ29sdW1uT3ZlcnJpZGUge1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5rZXkgPSBhZ2dyZWdhdGlvbk9iamVjdC5rZXkhLnJlcGxhY2UoXCJJbmxpbmVYTUxfXCIsIFwiXCIpO1xuXHRjaGlsZENvbHVtbi5zZXRBdHRyaWJ1dGUoXCJrZXlcIiwgYWdncmVnYXRpb25PYmplY3Qua2V5KTtcblx0aWYgKGNoaWxkQ29sdW1uLmxvY2FsTmFtZSA9PT0gXCJDb2x1bW5cIikge1xuXHRcdHJldHVybiB7XG5cdFx0XHQuLi5nZXRDb21tb25DdXN0b21Db2x1bW5zUHJvcGVydGllcyhjaGlsZENvbHVtbiwgYWdncmVnYXRpb25PYmplY3QpLFxuXHRcdFx0aGVhZGVyOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImhlYWRlclwiKSxcblx0XHRcdHRvb2x0aXA6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwidG9vbHRpcFwiKSxcblx0XHRcdHRlbXBsYXRlOiBnZXRDb2x1bW5UZW1wbGF0ZShjaGlsZENvbHVtbiksXG5cdFx0XHRwcm9wZXJ0aWVzOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcInByb3BlcnRpZXNcIik/LnNwbGl0KFwiLFwiKSxcblx0XHRcdHJlcXVpcmVkOiBjaGlsZENvbHVtbi5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKSA/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcInJlcXVpcmVkXCIpID09PSBcInRydWVcIiA6IHVuZGVmaW5lZCxcblx0XHRcdF90eXBlOiBjaGlsZENvbHVtbi5sb2NhbE5hbWVcblx0XHR9O1xuXHR9XG5cdHJldHVybiB7XG5cdFx0Li4uZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMoY2hpbGRDb2x1bW4sIGFnZ3JlZ2F0aW9uT2JqZWN0KSxcblx0XHRfdHlwZTogXCJDb2x1bW5PdmVycmlkZVwiXG5cdH07XG59XG5cbmNvbnN0IHBhcnNlRXhwb3J0U2V0dGluZ3MgPSAoZWxlbWVudDogRWxlbWVudCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdIHwgYm9vbGVhbj4gfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBleHBvcnRTZXR0aW5ncyA9IHBhcnNlU2ltcGxlQWdncmVnYXRpb24oZWxlbWVudCwgXCJleHBvcnRTZXR0aW5nc1wiKTtcblx0aWYgKCFleHBvcnRTZXR0aW5ncykge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0cmV0dXJuIHtcblx0XHR0ZW1wbGF0ZTogZXhwb3J0U2V0dGluZ3MudGVtcGxhdGUsXG5cdFx0d3JhcDogZXhwb3J0U2V0dGluZ3Mud3JhcCA9PT0gXCJ0cnVlXCIsXG5cdFx0dHlwZTogZXhwb3J0U2V0dGluZ3MudHlwZSxcblx0XHRwcm9wZXJ0eTogZXhwb3J0U2V0dGluZ3MucHJvcGVydHk/LnNwbGl0KFwiLFwiKSxcblx0XHR3aWR0aDogZXhwb3J0U2V0dGluZ3Mud2lkdGhcblx0fTtcbn07XG5cbmNvbnN0IGdldENvbHVtblRlbXBsYXRlID0gKGVsZW1lbnQ6IEVsZW1lbnQpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRsZXQgYWdncmVnYXRpb24gPSBnZXRBZ2dyZWdhdGlvbihlbGVtZW50LCBcInRlbXBsYXRlXCIpO1xuXHRpZiAoIWFnZ3JlZ2F0aW9uKSB7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBjaGlsZCA9IGVsZW1lbnQuY2hpbGRyZW4uaXRlbShpKTtcblx0XHRcdGlmIChjaGlsZCAmJiAhY2hpbGQubm9kZU5hbWUuZW5kc1dpdGgoXCJleHBvcnRTZXR0aW5nc1wiKSkge1xuXHRcdFx0XHRhZ2dyZWdhdGlvbiA9IGNoaWxkO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIGFnZ3JlZ2F0aW9uPy5vdXRlckhUTUwgPz8gZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJ0ZW1wbGF0ZVwiKSA/PyB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBwYXJzZVNpbXBsZUFnZ3JlZ2F0aW9uID0gKGVsZW1lbnQ6IEVsZW1lbnQsIGFnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IGFnZ3JlZ2F0aW9uID0gZ2V0QWdncmVnYXRpb24oZWxlbWVudCwgYWdncmVnYXRpb25OYW1lKTtcblx0Y29uc3QgY2hpbGQgPSBhZ2dyZWdhdGlvbj8uY2hpbGRyZW5bMF07XG5cdGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXHRpZiAoIWNoaWxkKSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXHRmb3IgKGNvbnN0IG5hbWUgb2YgY2hpbGQuZ2V0QXR0cmlidXRlTmFtZXMoKSkge1xuXHRcdGNvbnN0IHZhbHVlID0gY2hpbGQuZ2V0QXR0cmlidXRlKG5hbWUpO1xuXHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0cmVzdWx0W25hbWVdID0gdmFsdWU7XG5cdFx0fVxuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCBnZXRBZ2dyZWdhdGlvbiA9IChlbGVtZW50OiBFbGVtZW50LCBhZ2dyZWdhdGlvbk5hbWU6IHN0cmluZyk6IEVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuXHRsZXQgYWdncmVnYXRpb246IEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuXHRcdGNvbnN0IGNoaWxkID0gZWxlbWVudC5jaGlsZHJlbi5pdGVtKGkpO1xuXHRcdGlmIChjaGlsZD8ubm9kZU5hbWUuZW5kc1dpdGgoYWdncmVnYXRpb25OYW1lKSA9PT0gdHJ1ZSkge1xuXHRcdFx0YWdncmVnYXRpb24gPSBjaGlsZDtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gYWdncmVnYXRpb247XG59O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gY3JlYXRlIGEgdGFibGUgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogVXN1YWxseSwgYSBMaW5lSXRlbSwgUHJlc2VudGF0aW9uVmFyaWFudCwgb3IgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCBhbm5vdGF0aW9uIGlzIGV4cGVjdGVkLCBidXQgdGhlIFRhYmxlIGJ1aWxkaW5nIGJsb2NrIGNhbiBhbHNvIGJlIHVzZWQgdG8gZGlzcGxheSBhbiBFbnRpdHlTZXQuXG4gKiA8YnI+XG4gKiBJZiBhIFByZXNlbnRhdGlvblZhcmlhbnQgaXMgc3BlY2lmaWVkLCB0aGVuIGl0IG11c3QgaGF2ZSBVSS5MaW5lSXRlbSBhcyB0aGUgZmlyc3QgcHJvcGVydHkgb2YgdGhlIFZpc3VhbGl6YXRpb25zLlxuICogPGJyPlxuICogSWYgYSBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50IGlzIHNwZWNpZmllZCwgdGhlbiBpdCBtdXN0IGNvbnRhaW4gYSB2YWxpZCBQcmVzZW50YXRpb25WYXJpYW50IHRoYXQgYWxzbyBoYXMgYSBVSS5MaW5lSXRlbSBhcyB0aGUgZmlyc3QgcHJvcGVydHkgb2YgdGhlIFZpc3VhbGl6YXRpb25zLlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpUYWJsZSBpZD1cIk15VGFibGVcIiBtZXRhUGF0aD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIHtAbGluayBkZW1vOnNhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2J1aWxkaW5nQmxvY2tzL3RhYmxlL3RhYmxlRGVmYXVsdCBPdmVydmlldyBvZiBUYWJsZSBCdWlsZGluZyBCbG9ja3N9XG4gKiBAbWl4ZXMgc2FwLmZlLm1hY3Jvcy50YWJsZS5UYWJsZUFQSVxuICogQGF1Z21lbnRzIHNhcC5mZS5tYWNyb3MuTWFjcm9BUElcbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZUJ1aWxkaW5nQmxvY2soe1xuXHRuYW1lOiBcIlRhYmxlXCIsXG5cdG5hbWVzcGFjZTogXCJzYXAuZmUubWFjcm9zLmludGVybmFsXCIsXG5cdHB1YmxpY05hbWVzcGFjZTogXCJzYXAuZmUubWFjcm9zXCIsXG5cdHJldHVyblR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQVBJXCJdXG59KVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGFibGVCbG9jayBleHRlbmRzIEJ1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZSB7XG5cdC8vICAqKioqKioqKioqKioqKiogUHVibGljICYgUmVxdWlyZWQgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcmVsYXRpdmUgcGF0aCB0byBhIExpbmVJdGVtLCBQcmVzZW50YXRpb25WYXJpYW50IG9yIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgaW4gdGhlIG1ldGFtb2RlbCwgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dFBhdGguXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdHVuZGVybHlpbmdUeXBlOiBcInN0cmluZ1wiLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW1xuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QcmVzZW50YXRpb25WYXJpYW50XCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcIlxuXHRcdF0sXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0bWV0YVBhdGghOiBDb250ZXh0O1xuXG5cdC8vICAqKioqKioqKioqKioqKiogUHVibGljIEF0dHJpYnV0ZXMgKioqKioqKioqKioqKioqKioqKipcblx0LyoqXG5cdCAqIEFuIGV4cHJlc3Npb24gdGhhdCBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlICdidXN5JyBzdGF0ZSBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSwgYmluZGFibGU6IHRydWUgfSlcblx0YnVzeT86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHBhdGggb2YgdGhlIGNvbnRleHQgdXNlZCBpbiB0aGUgY3VycmVudCBwYWdlIG9yIGJsb2NrLlxuXHQgKiBUaGlzIHNldHRpbmcgaXMgZGVmaW5lZCBieSB0aGUgZnJhbWV3b3JrLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzdHJpbmdcIixcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGNvbnRleHRQYXRoPzogQ29udGV4dDtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0YWJsZSBhZGFwdHMgdG8gdGhlIGNvbmRlbnNlZCBsYXlvdXQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgY29uZGVuc2VkVGFibGVMYXlvdXQ/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB3aGV0aGVyIHRoZSB0YWJsZSBjYW4gYmUgb3BlbmVkIGluIGZ1bGxzY3JlZW4gbW9kZSBvciBub3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgZW5hYmxlRnVsbFNjcmVlbj86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERldGVybWluZSB3aGV0aGVyIHRoZSBkYXRhIGNvcGllZCB0byB0aGUgY29tcHV0ZWQgY29sdW1ucyBpcyBzZW50IHRvIHRoZSBiYWNrIGVuZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBDbGVhciBBbGwgYnV0dG9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC5cblx0ICogVG8gZW5hYmxlIHRoZSBDbGVhciBBbGwgYnV0dG9uIGJ5IGRlZmF1bHQsIHlvdSBtdXN0IHNldCB0aGlzIHByb3BlcnR5IHRvIGZhbHNlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBlbmFibGVTZWxlY3RBbGw/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgZXhwb3J0IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlIGlzIGVuYWJsZWQgb3Igbm90LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGVuYWJsZUV4cG9ydD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIE1heGltdW0gYWxsb3dlZCBudW1iZXIgb2YgcmVjb3JkcyB0byBiZSBleHBvcnRlZCBpbiBvbmUgcmVxdWVzdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBleHBvcnRSZXF1ZXN0U2l6ZT86IG51bWJlcjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygcm93cyB0aGF0IGNhbiBiZSBzZWxlY3RlZCBhdCBvbmNlIGluIHRoZSB0YWJsZS5cblx0ICogVGhpcyBwcm9wZXJ0eSBkb2VzIG5vdCBhcHBseSB0byByZXNwb25zaXZlIHRhYmxlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25MaW1pdD86IG51bWJlcjtcblxuXHQvKipcblx0ICogTnVtYmVyIG9mIGNvbHVtbnMgdGhhdCBhcmUgZml4ZWQgb24gdGhlIGxlZnQuIE9ubHkgY29sdW1ucyB3aGljaCBhcmUgbm90IGZpeGVkIGNhbiBiZSBzY3JvbGxlZCBob3Jpem9udGFsbHkuXG5cdCAqXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgbm90IHJlbGV2YW50IGZvciByZXNwb25zaXZlIHRhYmxlc1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGZyb3plbkNvbHVtbkNvdW50PzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG51bWJlciBvZiBmaXhlZCBjb2x1bW5zIGNhbiBiZSBjb25maWd1cmVkIGluIHRoZSBDb2x1bW4gU2V0dGluZ3MgZGlhbG9nLlxuXHQgKlxuXHQgKiBUaGlzIHByb3BlcnR5IGRvZXNuJ3QgYXBwbHkgZm9yIHJlc3BvbnNpdmUgdGFibGVzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGRpc2FibGVDb2x1bW5GcmVlemU/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBJbmRpY2F0ZXMgaWYgdGhlIGNvbHVtbiBoZWFkZXIgc2hvdWxkIGJlIGEgcGFydCBvZiB0aGUgd2lkdGggY2FsY3VsYXRpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyBob3cgdGhlIHRhYmxlIGhhbmRsZXMgdGhlIHZpc2libGUgcm93cy4gRG9lcyBub3QgYXBwbHkgdG8gUmVzcG9uc2l2ZSB0YWJsZXMuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgQXV0b2AsIGBGaXhlZGAsIGFuZCBgSW50ZXJhY3RpdmVgLjxici8+XG5cdCAqIC0gSWYgc2V0IHRvIGBGaXhlZGAsIHRoZSB0YWJsZSBhbHdheXMgaGFzIGFzIG1hbnkgcm93cyBhcyBkZWZpbmVkIGluIHRoZSByb3dDb3VudCBwcm9wZXJ0eS48YnIvPlxuXHQgKiAtIElmIHNldCB0byBgQXV0b2AsIHRoZSBudW1iZXIgb2Ygcm93cyBpcyBjaGFuZ2VkIGJ5IHRoZSB0YWJsZSBhdXRvbWF0aWNhbGx5LiBJdCB3aWxsIHRoZW4gYWRqdXN0IGl0cyByb3cgY291bnQgdG8gdGhlIHNwYWNlIGl0IGlzIGFsbG93ZWQgdG8gY292ZXIgKGxpbWl0ZWQgYnkgdGhlIHN1cnJvdW5kaW5nIGNvbnRhaW5lcikgYnV0IGl0IGNhbm5vdCBoYXZlIGxlc3MgdGhhbiBkZWZpbmVkIGluIHRoZSBgcm93Q291bnRgIHByb3BlcnR5Ljxici8+XG5cdCAqIC0gSWYgc2V0IHRvIGBJbnRlcmFjdGl2ZWAgdGhlIHRhYmxlIGNhbiBoYXZlIGFzIG1hbnkgcm93cyBhcyBkZWZpbmVkIGluIHRoZSByb3dDb3VudCBwcm9wZXJ0eS4gVGhpcyBudW1iZXIgb2Ygcm93cyBjYW4gYmUgbW9kaWZpZWQgYnkgZHJhZ2dpbmcgdGhlIHJlc2l6ZXIgYXZhaWxhYmxlIGluIHRoaXMgbW9kZS48YnIvPlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBhbGxvd2VkVmFsdWVzOiBbXCJBdXRvXCIsIFwiRml4ZWRcIiwgXCJJbnRlcmFjdGl2ZVwiXSwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSByb3dDb3VudE1vZGU/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIE51bWJlciBvZiByb3dzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgdGFibGUuIERvZXMgbm90IGFwcGx5IHRvIHJlc3BvbnNpdmUgdGFibGVzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHJvd0NvdW50PzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgcGFzdGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdGFibGUgaXMgZW5hYmxlZCBvciBub3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGVuYWJsZVBhc3RlPzogYm9vbGVhbiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgY29weSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0YWJsZSBpcyBkaXNhYmxlZCBvciBub3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRkaXNhYmxlQ29weVRvQ2xpcGJvYXJkPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyBob3cgbWFueSBhZGRpdGlvbmFsIGRhdGEgcmVjb3JkcyBhcmUgcmVxdWVzdGVkIGZyb20gdGhlIGJhY2stZW5kIHN5c3RlbSB3aGVuIHRoZSB1c2VyIHNjcm9sbHMgdmVydGljYWxseSBpbiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHNjcm9sbFRocmVzaG9sZD86IG51bWJlcjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJlY29yZHMgdG8gYmUgaW5pdGlhbGx5IHJlcXVlc3RlZCBmcm9tIHRoZSBiYWNrIGVuZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0dGhyZXNob2xkPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBsYXlvdXQgb3B0aW9ucyBvZiB0aGUgdGFibGUgcG9waW5zLiBPbmx5IGFwcGxpZXMgdG8gcmVzcG9uc2l2ZSB0YWJsZXMuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgQmxvY2tgLCBgR3JpZExhcmdlYCwgYW5kIGBHcmlkU21hbGxgLjxici8+XG5cdCAqIC0gYEJsb2NrYDogU2V0cyBhIGJsb2NrIGxheW91dCBmb3IgcmVuZGVyaW5nIHRoZSB0YWJsZSBwb3BpbnMuIFRoZSBlbGVtZW50cyBpbnNpZGUgdGhlIHBvcGluIGNvbnRhaW5lciBhcmUgcmVuZGVyZWQgb25lIGJlbG93IHRoZSBvdGhlci48YnIvPlxuXHQgKiAtIGBHcmlkTGFyZ2VgOiBTZXRzIGEgZ3JpZCBsYXlvdXQgZm9yIHJlbmRlcmluZyB0aGUgdGFibGUgcG9waW5zLiBUaGUgZ3JpZCB3aWR0aCBmb3IgZWFjaCB0YWJsZSBwb3BpbiBpcyBjb21wYXJhdGl2ZWx5IGxhcmdlciB0aGFuIEdyaWRTbWFsbCwgc28gdGhpcyBsYXlvdXQgYWxsb3dzIGxlc3MgY29udGVudCB0byBiZSByZW5kZXJlZCBpbiBhIHNpbmdsZSBwb3BpbiByb3cuPGJyLz5cblx0ICogLSBgR3JpZFNtYWxsYDogU2V0cyBhIGdyaWQgbGF5b3V0IGZvciByZW5kZXJpbmcgdGhlIHRhYmxlIHBvcGlucy4gVGhlIGdyaWQgd2lkdGggZm9yIGVhY2ggdGFibGUgcG9waW4gaXMgc21hbGwsIHNvIHRoaXMgbGF5b3V0IGFsbG93cyBtb3JlIGNvbnRlbnQgdG8gYmUgcmVuZGVyZWQgaW4gYSBzaW5nbGUgcG9waW4gcm93Ljxici8+XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkJsb2NrXCIsIFwiR3JpZExhcmdlXCIsIFwiR3JpZFNtYWxsXCJdLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHBvcGluTGF5b3V0Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBJRCBvZiB0aGUgRmlsdGVyQmFyIGJ1aWxkaW5nIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlLCBpc0Fzc29jaWF0aW9uOiB0cnVlIH0pXG5cdGZpbHRlckJhcj86IHN0cmluZztcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIHRoZSBoZWFkZXIgdGV4dCB0aGF0IGlzIHNob3duIGluIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aGVhZGVyPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBcImFyaWEtbGV2ZWxcIiBvZiB0aGUgdGFibGUgaGVhZGVyXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInNhcC51aS5jb3JlLlRpdGxlTGV2ZWxcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aGVhZGVyTGV2ZWw/OiBUaXRsZUxldmVsO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgaGVhZGVyIHRleHQgc2hvdWxkIGJlIHNob3duIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGhlYWRlclZpc2libGU/OiBib29sZWFuO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGlkITogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGNvbnRlbnRJZD86IHN0cmluZztcblxuXHQvKipcblx0ICogQWRkaXRpb25uYWwgU2VsZWN0aW9uVmFyaWFudCB0byBiZSBhcHBsaWVkIG9uIHRoZSB0YWJsZSBjb250ZW50LlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0dW5kZXJseWluZ1R5cGU6IFwic3RyaW5nXCIsXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiXSxcblx0XHRleHBlY3RlZEFubm90YXRpb25zOiBbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25WYXJpYW50XCJdLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aD86IENvbnRleHQ7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgd2hldGhlciB0byBkaXNwbGF5IHRoZSBzZWFyY2ggYWN0aW9uLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aXNTZWFyY2hhYmxlPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQ29udHJvbHMgd2hpY2ggb3B0aW9ucyBzaG91bGQgYmUgZW5hYmxlZCBmb3IgdGhlIHRhYmxlIHBlcnNvbmFsaXphdGlvbiBkaWFsb2cuXG5cdCAqXG5cdCAqIElmIGl0IGlzIHNldCB0byBgdHJ1ZWAsIGFsbCBwb3NzaWJsZSBvcHRpb25zIGZvciB0aGlzIGtpbmQgb2YgdGFibGUgYXJlIGVuYWJsZWQuPGJyLz5cblx0ICogSWYgaXQgaXMgc2V0IHRvIGBmYWxzZWAsIHBlcnNvbmFsaXphdGlvbiBpcyBkaXNhYmxlZC48YnIvPlxuXHQgKiA8YnIvPlxuXHQgKiBZb3UgY2FuIGFsc28gcHJvdmlkZSBhIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBmb3IgdGhlIHBlcnNvbmFsaXphdGlvbiBieSBwcm92aWRpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCB3aXRoIHRoZSBvcHRpb25zIHlvdSB3YW50IHRvIGJlIGF2YWlsYWJsZS48YnIvPlxuXHQgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6PGJyLz5cblx0ICogLSBTb3J0PGJyLz5cblx0ICogLSBDb2x1bW48YnIvPlxuXHQgKiAtIEZpbHRlcjxici8+XG5cdCAqIC0gR3JvdXA8YnIvPlxuXHQgKiA8YnIvPlxuXHQgKiBUaGUgR3JvdXAgb3B0aW9uIGlzIG9ubHkgYXBwbGljYWJsZSB0byBhbmFseXRpY2FsIHRhYmxlcyBhbmQgcmVzcG9uc2l2ZSB0YWJsZXMuPGJyLz5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cGVyc29uYWxpemF0aW9uPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBbiBleHByZXNzaW9uIHRoYXQgYWxsb3dzIHlvdSB0byBjb250cm9sIHRoZSAncmVhZC1vbmx5JyBzdGF0ZSBvZiB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIElmIHlvdSBkbyBub3Qgc2V0IGFueSBleHByZXNzaW9uLCBTQVAgRmlvcmkgZWxlbWVudHMgaG9va3MgaW50byB0aGUgc3RhbmRhcmQgbGlmZWN5Y2xlIHRvIGRldGVybWluZSB0aGUgY3VycmVudCBzdGF0ZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHJlYWRPbmx5PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgdHlwZSBvZiB0YWJsZSB0aGF0IHdpbGwgYmUgdXNlZCBieSB0aGUgYnVpbGRpbmcgYmxvY2sgdG8gcmVuZGVyIHRoZSBkYXRhLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYEdyaWRUYWJsZWAsIGBSZXNwb25zaXZlVGFibGVgIGFuZCBgQW5hbHl0aWNhbFRhYmxlYC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGFsbG93ZWRWYWx1ZXM6IFtcIkdyaWRUYWJsZVwiLCBcIlJlc3BvbnNpdmVUYWJsZVwiLCBcIkFuYWx5dGljYWxUYWJsZVwiXSB9KVxuXHRyZWFkb25seSB0eXBlPzogVGFibGVUeXBlO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgdGFibGUgaXMgZGlzcGxheWVkIHdpdGggY29uZGVuc2VkIGxheW91dCAodHJ1ZS9mYWxzZSkuIFRoZSBkZWZhdWx0IHNldHRpbmcgaXMgYGZhbHNlYC5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHR1c2VDb25kZW5zZWRMYXlvdXQ/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBzZWxlY3Rpb24gbW9kZSB0byBiZSB1c2VkIGJ5IHRoZSB0YWJsZS5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBOb25lYCwgYFNpbmdsZWAsIGBGb3JjZVNpbmdsZWAsIGBNdWx0aWAsIGBGb3JjZU11bHRpYCBvciBgQXV0b2AuXG5cdCAqIElmIHNldCB0byAnU2luZ2xlJywgJ011bHRpJyBvciAnQXV0bycsIFNBUCBGaW9yaSBlbGVtZW50cyBob29rcyBpbnRvIHRoZSBzdGFuZGFyZCBsaWZlY3ljbGUgdG8gZGV0ZXJtaW5lIHRoZSBjb25zaXN0ZW50IHNlbGVjdGlvbiBtb2RlLlxuXHQgKiBJZiBzZXQgdG8gJ0ZvcmNlU2luZ2xlJyBvciAnRm9yY2VNdWx0aScgeW91ciBjaG9pY2Ugd2lsbCBiZSByZXNwZWN0ZWQgYnV0IHRoaXMgbWlnaHQgbm90IHJlc3BlY3QgdGhlIEZpb3JpIGd1aWRlbGluZXMuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlLCBhbGxvd2VkVmFsdWVzOiBbXCJOb25lXCIsIFwiU2luZ2xlXCIsIFwiTXVsdGlcIiwgXCJBdXRvXCIsIFwiRm9yY2VNdWx0aVwiLCBcIkZvcmNlU2luZ2xlXCJdIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0aW9uTW9kZT86IHN0cmluZztcblxuXHQvKipcblx0ICogQ29udHJvbHMgdGhlIGtpbmQgb2YgdmFyaWFudCBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSB0YWJsZS5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZSBpcyBgQ29udHJvbGAuPGJyLz5cblx0ICogSWYgc2V0IHdpdGggdmFsdWUgYENvbnRyb2xgLCBhIHZhcmlhbnQgbWFuYWdlbWVudCBjb250cm9sIGlzIHNlZW4gd2l0aGluIHRoZSB0YWJsZSBhbmQgdGhlIHRhYmxlIGlzIGxpbmtlZCB0byB0aGlzLjxici8+XG5cdCAqIElmIG5vdCBzZXQgd2l0aCBhbnkgdmFsdWUsIGNvbnRyb2wgbGV2ZWwgdmFyaWFudCBtYW5hZ2VtZW50IGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlLCBhbGxvd2VkVmFsdWVzOiBbXCJDb250cm9sXCJdIH0pXG5cdHZhcmlhbnRNYW5hZ2VtZW50Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb21tYS1zZXBhcmF0ZWQgdmFsdWUgb2YgZmllbGRzIHRoYXQgbXVzdCBiZSBpZ25vcmVkIGluIHRoZSBPRGF0YSBtZXRhZGF0YSBieSB0aGUgVGFibGUgYnVpbGRpbmcgYmxvY2suPGJyPlxuXHQgKiBUaGUgdGFibGUgYnVpbGRpbmcgYmxvY2sgaXMgbm90IGdvaW5nIHRvIGNyZWF0ZSBidWlsdC1pbiBjb2x1bW5zIG9yIG9mZmVyIHRhYmxlIHBlcnNvbmFsaXphdGlvbiBmb3IgY29tbWEtc2VwYXJhdGVkIHZhbHVlIG9mIGZpZWxkcyB0aGF0IGFyZSBwcm92aWRlZCBpbiB0aGUgaWdub3JlZGZpZWxkcy48YnI+XG5cdCAqIEFueSBjb2x1bW4gcmVmZXJlbmNpbmcgYW4gaWdub3JlZCBmaWVsZCBpcyB0byBiZSByZW1vdmVkLjxicj5cblx0ICogQHNpbmNlIDEuMTI0LjBcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aWdub3JlZEZpZWxkcz86IHN0cmluZztcblxuXHQvLyAgKioqKioqKioqKioqKioqIFByaXZhdGUgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHRwcml2YXRlIF9hcGlJZD86IHN0cmluZztcblxuXHQvKipcblx0ICogQ2hhbmdlcyB0aGUgc2l6ZSBvZiB0aGUgSWxsdXN0cmF0ZWRNZXNzYWdlIGluIHRoZSB0YWJsZSwgb3IgcmVtb3ZlcyBpdCBjb21wbGV0ZWx5LlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYGlsbHVzdHJhdGVkTWVzc2FnZS1BdXRvYCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1CYXNlYCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1EaWFsb2dgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLURvdGAsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtU2NlbmVgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLVNwb3RgIG9yIGB0ZXh0YC5cblx0ICogQHNpbmNlIDEuMTI5LjBcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdGFsbG93ZWRWYWx1ZXM6IFtcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUF1dG9cIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUJhc2VcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLU1lZGl1bVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtRG90XCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1FeHRyYVNtYWxsXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1TY2VuZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtTGFyZ2VcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLVNwb3RcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLVNtYWxsXCIsXG5cdFx0XHRcInRleHRcIlxuXHRcdF1cblx0fSlcblx0bW9kZUZvck5vRGF0YU1lc3NhZ2U/OiBzdHJpbmc7XG5cblx0Ly8gICoqKioqKioqKioqKioqKiBQcml2YXRlIEF0dHJpYnV0ZXMgKioqKioqKioqKioqKioqKioqKipcblx0cHJpdmF0ZSByZWFkb25seSBjb2xsZWN0aW9uRW50aXR5OiBFbnRpdHlTZXQgfCBOYXZpZ2F0aW9uUHJvcGVydHk7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIGhlYWRlciBzdHlsZSBvZiB0aGUgdGFibGUgaGVhZGVyXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInNhcC51aS5jb3JlLlRpdGxlTGV2ZWxcIiB9KVxuXHRoZWFkZXJTdHlsZT86IFRpdGxlTGV2ZWw7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyBpZiB0aGUgY29sdW1uIHdpZHRoIGlzIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGVuYWJsZUF1dG9Db2x1bW5XaWR0aD86IGJvb2xlYW4gPSB0cnVlO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZmllbGRNb2RlID0gXCJcIjtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRpc0FscD86IGJvb2xlYW4gPSBmYWxzZTtcblxuXHQvKipcblx0ICogT05MWSBGT1IgUkVTUE9OU0lWRSBUQUJMRTogU2V0dGluZyB0byBkZWZpbmUgdGhlIGNoZWNrYm94IGluIHRoZSBjb2x1bW4gaGVhZGVyOiBBbGxvd2VkIHZhbHVlcyBhcmUgYERlZmF1bHRgIG9yIGBDbGVhckFsbGAuIElmIHNldCB0byBgRGVmYXVsdGAsIHRoZSBzYXAubS5UYWJsZSBjb250cm9sIHJlbmRlcnMgdGhlIFNlbGVjdCBBbGwgY2hlY2tib3gsIG90aGVyd2lzZSB0aGUgRGVzZWxlY3QgQWxsIGJ1dHRvbiBpcyByZW5kZXJlZC5cblx0ICovXG5cdG11bHRpU2VsZWN0TW9kZT86IHN0cmluZztcblxuXHQvKipcblx0ICogVXNlZCBmb3IgYmluZGluZyB0aGUgdGFibGUgdG8gYSBuYXZpZ2F0aW9uIHBhdGguIE9ubHkgdGhlIHBhdGggaXMgdXNlZCBmb3IgYmluZGluZyByb3dzLlxuXHQgKi9cblx0bmF2aWdhdGlvblBhdGg/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFRydWUgaWYgdGhlIHRhYmxlIGlzIGluIGEgTGlzdFJlcG9ydCBtdWx0aSB2aWV3XG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRpbk11bHRpVmlldz86IGJvb2xlYW47XG5cblx0dXNlQmFzaWNTZWFyY2g/OiBib29sZWFuO1xuXG5cdHRhYmxlRGVmaW5pdGlvbjogVGFibGVWaXN1YWxpemF0aW9uOyAvLyBXZSByZXF1aXJlIHRhYmxlRGVmaW5pdGlvbiB0byBiZSB0aGVyZSBldmVuIHRob3VnaCBpdCBpcyBub3QgZm9ybWFsbHkgcmVxdWlyZWRcblxuXHR0YWJsZURlZmluaXRpb25Db250ZXh0PzogQ29udGV4dDtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHRhYlRpdGxlID0gXCJcIjtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHR2aXNpYmxlPzogYm9vbGVhbjtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRkaXNwbGF5U2VnbWVudGVkQnV0dG9uPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQSBzZXQgb2Ygb3B0aW9ucyB0aGF0IGNhbiBiZSBjb25maWd1cmVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwib2JqZWN0XCIsXG5cdFx0dW5kZXJseWluZ1R5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5UYWJsZUNyZWF0aW9uT3B0aW9uc1wiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdHZhbGlkYXRlOiBmdW5jdGlvbiAoY3JlYXRpb25PcHRpb25zSW5wdXQ6IFRhYmxlQ3JlYXRpb25PcHRpb25zKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGNyZWF0aW9uT3B0aW9uc0lucHV0Lm5hbWUgJiZcblx0XHRcdFx0IVtcIk5ld1BhZ2VcIiwgXCJJbmxpbmVcIiwgXCJJbmxpbmVDcmVhdGlvblJvd3NcIiwgXCJFeHRlcm5hbFwiLCBcIkNyZWF0aW9uRGlhbG9nXCJdLmluY2x1ZGVzKGNyZWF0aW9uT3B0aW9uc0lucHV0Lm5hbWUpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBBbGxvd2VkIHZhbHVlICR7Y3JlYXRpb25PcHRpb25zSW5wdXQubmFtZX0gZm9yIGNyZWF0aW9uTW9kZSBkb2VzIG5vdCBtYXRjaGApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gY3JlYXRpb25PcHRpb25zSW5wdXQ7XG5cdFx0fVxuXHR9KVxuXHRjcmVhdGlvbk1vZGU6IFByb3BlcnRpZXNPZjxUYWJsZUNyZWF0aW9uT3B0aW9ucz4gPSB7fTtcblxuXHQvKipcblx0ICogQSBzZXQgb2Ygb3B0aW9ucyB0aGF0IGNhbiBiZSBjb25maWd1cmVkIHRvIGNvbnRyb2wgdGhlIGFnZ3JlZ2F0aW9uIGJlaGF2aW9yXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwib2JqZWN0XCIsXG5cdFx0dW5kZXJseWluZ1R5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BbmFseXRpY2FsQ29uZmlndXJhdGlvblwiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdHZhbGlkYXRlOiBmdW5jdGlvbiAoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG5cdFx0XHRpZiAodHlwZW9mIGFuYWx5dGljYWxDb25maWd1cmF0aW9uLmFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0YW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9IGFuYWx5dGljYWxDb25maWd1cmF0aW9uLmFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwgPT09IFwidHJ1ZVwiO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGFuYWx5dGljYWxDb25maWd1cmF0aW9uO1xuXHRcdH1cblx0fSlcblx0YW5hbHl0aWNhbENvbmZpZ3VyYXRpb246IFByb3BlcnRpZXNPZjxBbmFseXRpY2FsQ29uZmlndXJhdGlvbj4gPSB7fTtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIGFjdGlvbnMgb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvblwiLFxuXHRcdGFsdFR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbkdyb3VwXCIsIFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25PdmVycmlkZVwiLCBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBPdmVycmlkZVwiXSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRoYXNWaXJ0dWFsTm9kZTogdHJ1ZSxcblx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRwcm9jZXNzQWdncmVnYXRpb25zOiBzZXRDdXN0b21BY3Rpb25Hcm91cFByb3BlcnRpZXNcblx0fSlcblx0YWN0aW9ucz86IFJlY29yZDxzdHJpbmcsIEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25Hcm91cCB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUgfCBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGU+O1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgbWFzcyBlZGl0IG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5NYXNzRWRpdFwiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdG11bHRpcGxlOiBmYWxzZSxcblx0XHRza2lwS2V5OiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbU1hc3NFZGl0UHJvcGVydGllc1xuXHR9KVxuXHRtYXNzRWRpdD86IFJlY29yZDxzdHJpbmcsIEJsb2NrTWFzc0VkaXQ+O1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgY29sdW1ucyBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQ29sdW1uXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuQ29sdW1uT3ZlcnJpZGVcIl0sXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0aGFzVmlydHVhbE5vZGU6IHRydWUsXG5cdFx0aXNEZWZhdWx0OiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbUNvbHVtblByb3BlcnRpZXNcblx0fSlcblx0Y29sdW1ucz86IFJlY29yZDxzdHJpbmcsIEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZT47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBxdWlja1ZhcmlhbnRTZWxlY3Rpb24gb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLlF1aWNrVmFyaWFudFNlbGVjdGlvblwiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdHNraXBLZXk6IHRydWUsXG5cdFx0bXVsdGlwbGU6IGZhbHNlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldFF1aWNrVmFyaWFudFNlbGVjdGlvblxuXHR9KVxuXHRxdWlja1ZhcmlhbnRTZWxlY3Rpb24/OiBSZWNvcmQ8c3RyaW5nLCBCbG9ja1F1aWNrVmFyaWFudFNlbGVjdGlvbj47XG5cblx0Y29udmVydGVkTWV0YWRhdGE6IENvbnZlcnRlZE1ldGFkYXRhO1xuXG5cdGNvbnRleHRPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+O1xuXG5cdC8qKlxuXHQgKiBCZWZvcmUgYSB0YWJsZSByZWJpbmQsIGFuIGV2ZW50IGlzIHRyaWdnZXJlZCB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBiaW5kaW5nLlxuXHQgKlxuXHQgKiBUaGUgZXZlbnQgY29udGFpbnMgYSBwYXJhbWV0ZXIsIGBjb2xsZWN0aW9uQmluZGluZ0luZm9gLCB3aGljaCBpcyBhbiBpbnN0YW5jZSBvZiBgQ29sbGVjdGlvbkJpbmRpbmdJbmZvQVBJYC5cblx0ICogVGhpcyBhbGxvd3MgeW91IHRvIG1hbmlwdWxhdGUgdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLlxuXHQgKiBZb3UgY2FuIHVzZSB0aGlzIGV2ZW50IHRvIGF0dGFjaCBldmVudCBoYW5kbGVycyB0byB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcuXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gYWRkIHNlbGVjdHMsIGFuZCBhZGQgb3IgcmVhZCB0aGUgc29ydGVycyBhbmQgZmlsdGVycy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRwcml2YXRlIHJlYWRvbmx5IGJlZm9yZVJlYmluZFRhYmxlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBjaG9vc2VzIGEgcm93OyB0aGUgZXZlbnQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2ggcm93IGlzIGNob3Nlbi5cblx0ICpcblx0ICogWW91IGNhbiBzZXQgdGhpcyBpbiBvcmRlciB0byBoYW5kbGUgdGhlIG5hdmlnYXRpb24gbWFudWFsbHkuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0cm93UHJlc3M/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVhY3QgdG8gdGhlIGNoYW5nZSBldmVudCBvZiB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcuXG5cdCAqXG5cdCAqIEludGVybmFsIG9ubHlcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0bGlzdEJpbmRpbmdDaGFuZ2U/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2hvb3NlcyBhbiBvcHRpb24gb2YgdGhlIHNlZ21lbnRlZCBidXR0b24gaW4gdGhlIEFMUCBWaWV3XG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHNlZ21lbnRlZEJ1dHRvblByZXNzPzogc3RyaW5nO1xuXG5cdEBibG9ja0V2ZW50KClcblx0dmFyaWFudFNhdmVkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGluIHRoZSB0YWJsZSBjaGFuZ2VzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlPzogc3RyaW5nO1xuXG5cdEBibG9ja0V2ZW50KClcblx0dmFyaWFudFNlbGVjdGVkPzogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpbml0aWFsTG9hZD86IGJvb2xlYW47XG5cblx0cHJpdmF0ZSByZWFkb25seSBhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWw7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6IFByb3BlcnRpZXNPZjxUYWJsZUJsb2NrPiwgY29udHJvbENvbmZpZ3VyYXRpb246IHVua25vd24sIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgY29udHJvbENvbmZpZ3VyYXRpb24sIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpO1xuXHRcdGNvbnN0IGNvbnRleHRPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdFx0dGhpcy5tZXRhUGF0aCxcblx0XHRcdHRoaXMuY29udGV4dFBhdGhcblx0XHQpO1xuXHRcdHRoaXMuY29udGV4dE9iamVjdFBhdGggPSBjb250ZXh0T2JqZWN0UGF0aDtcblxuXHRcdHRoaXMudGFibGVEZWZpbml0aW9uID0gVGFibGVCbG9jay5jcmVhdGVUYWJsZURlZmluaXRpb24odGhpcywgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk7XG5cdFx0dGhpcy50YWJsZURlZmluaXRpb25Db250ZXh0ID0gTWFjcm9BUEkuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy50YWJsZURlZmluaXRpb24gYXMgb2JqZWN0LCB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKTtcblxuXHRcdHRoaXMuY29udmVydGVkTWV0YWRhdGEgPSB0aGlzLmNvbnRleHRPYmplY3RQYXRoLmNvbnZlcnRlZFR5cGVzO1xuXHRcdHRoaXMubWV0YU1vZGVsID0gdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncy5tb2RlbHMubWV0YU1vZGVsO1xuXHRcdHRoaXMuY29sbGVjdGlvbkVudGl0eSA9IHRoaXMuY29udmVydGVkTWV0YWRhdGEucmVzb2x2ZVBhdGgodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jb2xsZWN0aW9uKS50YXJnZXQgYXMgRW50aXR5U2V0O1xuXHRcdHRoaXMuYXBwQ29tcG9uZW50ID0gdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncy5hcHBDb21wb25lbnQ7XG5cdFx0dGhpcy5zZXRVcElkKCk7XG5cblx0XHR0aGlzLmNyZWF0aW9uTW9kZSA/Pz0ge307XG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUubmFtZSA/Pz0gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jcmVhdGUubW9kZSBhcyBUYWJsZUNyZWF0aW9uT3B0aW9uc1tcIm5hbWVcIl07XG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRlQXRFbmQgPz89ICh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNyZWF0ZSBhcyBDcmVhdGVCZWhhdmlvcikuYXBwZW5kO1xuXHRcdC8vIFNwZWNpYWwgY29kZSBmb3IgcmVhZE9ubHlcblx0XHQvLyByZWFkb25seSA9IGZhbHNlIC0+IEZvcmNlIGVkaXRhYmxlXG5cdFx0Ly8gcmVhZG9ubHkgPSB0cnVlIC0+IEZvcmNlIGRpc3BsYXkgbW9kZVxuXHRcdC8vIHJlYWRvbmx5ID0gdW5kZWZpbmVkIC0+IEJvdW5kIHRvIGVkaXQgZmxvd1xuXHRcdGlmIChcblx0XHRcdHRoaXMucmVhZE9ubHkgPT09IHVuZGVmaW5lZCAmJlxuXHRcdFx0KHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uZGlzcGxheU1vZGUgPT09IHRydWUgfHwgdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5yZWFkT25seSA9PT0gdHJ1ZSlcblx0XHQpIHtcblx0XHRcdHRoaXMucmVhZE9ubHkgPSB0cnVlO1xuXHRcdH1cblxuXHRcdFRhYmxlQVBJLnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5KHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wuaWdub3JlZEZpZWxkcywgW10sIHRoaXMudGFibGVEZWZpbml0aW9uKTtcblxuXHRcdGxldCB1c2VCYXNpY1NlYXJjaCA9IGZhbHNlO1xuXG5cdFx0Ly8gTm90ZSBmb3IgdGhlICdmaWx0ZXJCYXInIHByb3BlcnR5OlxuXHRcdC8vIDEuIElEIHJlbGF0aXZlIHRvIHRoZSB2aWV3IG9mIHRoZSBUYWJsZS5cblx0XHQvLyAyLiBBYnNvbHV0ZSBJRC5cblx0XHQvLyAzLiBJRCB3b3VsZCBiZSBjb25zaWRlcmVkIGluIGFzc29jaWF0aW9uIHRvIFRhYmxlQVBJJ3MgSUQuXG5cdFx0aWYgKCF0aGlzLmZpbHRlckJhcikge1xuXHRcdFx0Ly8gZmlsdGVyQmFyOiBQdWJsaWMgcHJvcGVydHkgZm9yIGJ1aWxkaW5nIGJsb2Nrc1xuXHRcdFx0Ly8gZmlsdGVyQmFySWQ6IE9ubHkgdXNlZCBhcyBJbnRlcm5hbCBwcml2YXRlIHByb3BlcnR5IGZvciBGRSB0ZW1wbGF0ZXNcblx0XHRcdHRoaXMuZmlsdGVyQmFyID0gZ2VuZXJhdGUoW3RoaXMuY29udGVudElkLCBcIlN0YW5kYXJkQWN0aW9uXCIsIFwiQmFzaWNTZWFyY2hcIl0pO1xuXHRcdFx0dXNlQmFzaWNTZWFyY2ggPSB0cnVlO1xuXHRcdH1cblx0XHQvLyBJbnRlcm5hbCBwcm9wZXJ0aWVzXG5cdFx0dGhpcy51c2VCYXNpY1NlYXJjaCA9IHVzZUJhc2ljU2VhcmNoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGFubm90YXRpb24gcGF0aCBwb2ludGluZyB0byB0aGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uIChMaW5lSXRlbSkuXG5cdCAqIEBwYXJhbSBjb250ZXh0T2JqZWN0UGF0aCBUaGUgZGF0YW1vZGVsIG9iamVjdCBwYXRoIGZvciB0aGUgdGFibGVcblx0ICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRoZSBhbm5vdGF0aW9uIHBhdGhcblx0ICovXG5cdHN0YXRpYyBnZXRWaXN1YWxpemF0aW9uUGF0aChcblx0XHRjb250ZXh0T2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50Pixcblx0XHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cblx0KTogc3RyaW5nIHtcblx0XHRjb25zdCBtZXRhUGF0aCA9IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoY29udGV4dE9iamVjdFBhdGgpIGFzIHN0cmluZztcblxuXHRcdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgbWV0YXBhdGggaXMgbm90IHNldFxuXHRcdGlmICghbWV0YVBhdGgpIHtcblx0XHRcdExvZy5lcnJvcihgTWlzc2luZyBtZXRhIHBhdGggcGFyYW1ldGVyIGZvciBMaW5lSXRlbWApO1xuXHRcdFx0cmV0dXJuIGBAJHtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbX1gO1xuXHRcdH1cblxuXHRcdGlmIChpc0Fubm90YXRpb25PZlRlcm08TGluZUl0ZW0+KGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0pKSB7XG5cdFx0XHRyZXR1cm4gbWV0YVBhdGg7IC8vIE1ldGFQYXRoIGlzIGFscmVhZHkgcG9pbnRpbmcgdG8gYSBMaW5lSXRlbVxuXHRcdH1cblx0XHQvL05lZWQgdG8gc3dpdGNoIHRvIHRoZSBjb250ZXh0IHJlbGF0ZWQgdGhlIFBWIG9yIFNQVlxuXHRcdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihtZXRhUGF0aCk7XG5cblx0XHRsZXQgdmlzdWFsaXphdGlvbnM6IFZpc3VhbGl6YXRpb25BbmRQYXRoW10gPSBbXTtcblx0XHRpZiAoXG5cdFx0XHRpc0Fubm90YXRpb25PZlRlcm08U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4oXG5cdFx0XHRcdGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCxcblx0XHRcdFx0VUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXHRcdFx0KSB8fFxuXHRcdFx0aXNBbm5vdGF0aW9uT2ZUZXJtPFByZXNlbnRhdGlvblZhcmlhbnQ+KGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudClcblx0XHQpIHtcblx0XHRcdHZpc3VhbGl6YXRpb25zID0gZ2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbihcblx0XHRcdFx0Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LFxuXHRcdFx0XHRtZXRhUGF0aCxcblx0XHRcdFx0cmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLmVycm9yKGBCYWQgbWV0YXBhdGggcGFyYW1ldGVyIGZvciB0YWJsZSA6ICR7Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IS50ZXJtfWApO1xuXHRcdH1cblxuXHRcdGNvbnN0IGxpbmVJdGVtVml6ID0gdmlzdWFsaXphdGlvbnMuZmluZCgodml6KSA9PiB7XG5cdFx0XHRyZXR1cm4gdml6LnZpc3VhbGl6YXRpb24udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW07XG5cdFx0fSk7XG5cblx0XHRpZiAobGluZUl0ZW1WaXopIHtcblx0XHRcdHJldHVybiBsaW5lSXRlbVZpei5hbm5vdGF0aW9uUGF0aDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gZmFsbGJhY2sgdG8gZGVmYXVsdCBMaW5lSXRlbSBpZiBhbm5vdGF0aW9uIG1pc3NpbmcgaW4gUFZcblx0XHRcdExvZy5lcnJvcihgQmFkIG1ldGEgcGF0aCBwYXJhbWV0ZXIgZm9yIExpbmVJdGVtOiAke2NvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCEudGVybX1gKTtcblx0XHRcdHJldHVybiBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDsgLy8gRmFsbGJhY2tcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgYWRkU2V0dGluZyA9ICh0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkID0+IHtcblx0XHRpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGFyZ2V0W2tleV0gPSB2YWx1ZTtcblx0XHR9XG5cdH07XG5cblx0Z2V0VGFibGVTZXR0aW5ncygpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdFx0Y29uc3QgdGFibGVTZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVFeHBvcnRcIiwgdGhpcy5lbmFibGVFeHBvcnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJlYWRPbmx5XCIsIHRoaXMucmVhZE9ubHkpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImlnbm9yZWRGaWVsZHNcIiwgdGhpcy5pZ25vcmVkRmllbGRzKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25MaW1pdFwiLCB0aGlzLnNlbGVjdGlvbkxpbWl0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJjb25kZW5zZWRUYWJsZUxheW91dFwiLCB0aGlzLmNvbmRlbnNlZFRhYmxlTGF5b3V0KTtcblxuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydFJlcXVlc3RTaXplXCIsIHRoaXMuZXhwb3J0UmVxdWVzdFNpemUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImZyb3plbkNvbHVtbkNvdW50XCIsIHRoaXMuZnJvemVuQ29sdW1uQ291bnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImRpc2FibGVDb2x1bW5GcmVlemVcIiwgdGhpcy5kaXNhYmxlQ29sdW1uRnJlZXplKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJ3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlclwiLCB0aGlzLndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJyb3dDb3VudE1vZGVcIiwgdGhpcy5yb3dDb3VudE1vZGUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJvd0NvdW50XCIsIHRoaXMucm93Q291bnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZUZ1bGxTY3JlZW5cIiwgdGhpcy5lbmFibGVGdWxsU2NyZWVuKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3RBbGxcIiwgdGhpcy5lbmFibGVTZWxlY3RBbGwpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc1wiLCB0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlUGFzdGVcIiwgdGhpcy5lbmFibGVQYXN0ZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZGlzYWJsZUNvcHlUb0NsaXBib2FyZFwiLCB0aGlzLmRpc2FibGVDb3B5VG9DbGlwYm9hcmQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNjcm9sbFRocmVzaG9sZFwiLCB0aGlzLnNjcm9sbFRocmVzaG9sZCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidGhyZXNob2xkXCIsIHRoaXMudGhyZXNob2xkKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJwb3BpbkxheW91dFwiLCB0aGlzLnBvcGluTGF5b3V0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25Nb2RlXCIsIHRoaXMuc2VsZWN0aW9uTW9kZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidHlwZVwiLCB0aGlzLnR5cGUpO1xuXHRcdGlmICh0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbj8ucXVpY2tGaWx0ZXJzPy5wYXRocz8ubGVuZ3RoKSB7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJxdWlja1ZhcmlhbnRTZWxlY3Rpb25cIiwge1xuXHRcdFx0XHRwYXRoczogdGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24ucXVpY2tGaWx0ZXJzLnBhdGhzLm1hcCgocGF0aCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB7IGFubm90YXRpb25QYXRoOiBwYXRoIH07XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRzaG93Q291bnRzOiB0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbi5xdWlja0ZpbHRlcnMuc2hvd0NvdW50c1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuY3JlYXRpb25Nb2RlKSB7XG5cdFx0XHRjb25zdCBjcmVhdGlvbk1vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcIm5hbWVcIiwgdGhpcy5jcmVhdGlvbk1vZGUubmFtZSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImNyZWF0aW9uRmllbGRzXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0aW9uRmllbGRzKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwiY3JlYXRlQXRFbmRcIiwgdGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRlQXRFbmQpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJvdXRib3VuZFwiLCB0aGlzLmNyZWF0aW9uTW9kZS5vdXRib3VuZCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoY3JlYXRpb25Nb2RlKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRhYmxlU2V0dGluZ3NbXCJjcmVhdGlvbk1vZGVcIl0gPSBjcmVhdGlvbk1vZGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMubWFzc0VkaXQpIHtcblx0XHRcdGNvbnN0IGVuYWJsZU1hc3NFZGl0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImN1c3RvbUZyYWdtZW50XCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8uY3VzdG9tQ29udGVudCk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiZnJvbUlubGluZVwiLCB0cnVlKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJ2aXNpYmxlRmllbGRzXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8udmlzaWJsZUZpZWxkcz8uam9pbihcIixcIikpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImlnbm9yZWRGaWVsZHNcIiwgdGhpcy5tYXNzRWRpdC5jb25maWd1cmF0aW9uPy5pZ25vcmVkRmllbGRzPy5qb2luKFwiLFwiKSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwib3BlcmF0aW9uR3JvdXBpbmdNb2RlXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8ub3BlcmF0aW9uR3JvdXBpbmdNb2RlKTtcblx0XHRcdHRhYmxlU2V0dGluZ3NbXCJlbmFibGVNYXNzRWRpdFwiXSA9IGVuYWJsZU1hc3NFZGl0O1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmFuYWx5dGljYWxDb25maWd1cmF0aW9uPy5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID09PSB0cnVlKSB7XG5cdFx0XHRjb25zdCBhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhhbmFseXRpY2FsQ29uZmlndXJhdGlvbiwgXCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsXCIsIHRoaXMuYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24pLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dGFibGVTZXR0aW5nc1tcImFuYWx5dGljYWxDb25maWd1cmF0aW9uXCJdID0gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0YWJsZVNldHRpbmdzO1xuXHR9XG5cblx0c3RhdGljIGNyZWF0ZVRhYmxlRGVmaW5pdGlvbih0YWJsZTogVGFibGVCbG9jaywgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5nczogVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdFx0Y29uc3QgaW5pdGlhbENvbnZlcnRlckNvbnRleHQgPSB0YWJsZS5nZXRDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdFx0dGFibGUuY29udGV4dE9iamVjdFBhdGgsXG5cdFx0XHR0YWJsZS5jb250ZXh0UGF0aD8uZ2V0UGF0aCgpLFxuXHRcdFx0dGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5nc1xuXHRcdCk7XG5cdFx0Y29uc3QgdmlzdWFsaXphdGlvblBhdGggPSBUYWJsZUJsb2NrLmdldFZpc3VhbGl6YXRpb25QYXRoKHRhYmxlLmNvbnRleHRPYmplY3RQYXRoLCBpbml0aWFsQ29udmVydGVyQ29udGV4dCk7XG5cblx0XHRjb25zdCB0YWJsZVNldHRpbmdzID0gdGFibGUuZ2V0VGFibGVTZXR0aW5ncygpO1xuXHRcdGNvbnN0IGV4dHJhTWFuaWZlc3RTZXR0aW5nczogVGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSB7XG5cdFx0XHRhY3Rpb25zOiBUYWJsZUJsb2NrLmNyZWF0ZUFjdGlvbnNGcm9tTWFuaWZlc3QodGFibGUpLFxuXHRcdFx0Y29sdW1uczogVGFibGVCbG9jay5jcmVhdGVDb2x1bW5zRm9yTWFuaWZlc3QodGFibGUpLFxuXHRcdFx0dGFibGVTZXR0aW5nc1xuXHRcdH07XG5cblx0XHRjb25zdCBleHRyYVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRleHRyYVBhcmFtc1t2aXN1YWxpemF0aW9uUGF0aF0gPSBleHRyYU1hbmlmZXN0U2V0dGluZ3M7XG5cdFx0Y29uc3QgY29udmVydGVyQ29udGV4dCA9IHRhYmxlLmdldENvbnZlcnRlckNvbnRleHQoXG5cdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCxcblx0XHRcdHRhYmxlLmNvbnRleHRQYXRoPy5nZXRQYXRoKCksXG5cdFx0XHR0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzLFxuXHRcdFx0ZXh0cmFQYXJhbXNcblx0XHQpO1xuXG5cdFx0bGV0IGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50VHlwZSB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGFibGUuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoKSB7XG5cdFx0XHRjb25zdCBzdk9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8U2VsZWN0aW9uVmFyaWFudD4oXG5cdFx0XHRcdHRhYmxlLmFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCxcblx0XHRcdFx0dGFibGUuY29udGV4dFBhdGggYXMgQ29udGV4dFxuXHRcdFx0KTtcblx0XHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50ID0gc3ZPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0XHR9XG5cblx0XHRjb25zdCB2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiA9IGdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbihcblx0XHRcdCh0YWJsZS5pbk11bHRpVmlldyAmJiB0YWJsZS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdFx0PyBjb252ZXJ0ZXJDb250ZXh0LmdldFJlbGF0aXZlQW5ub3RhdGlvblBhdGgoXG5cdFx0XHRcdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QuZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHRcdFx0ICApXG5cdFx0XHRcdDogZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCh0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCkpIGFzIHN0cmluZyxcblx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHR7XG5cdFx0XHRcdGlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQ6IHRhYmxlLnVzZUNvbmRlbnNlZExheW91dCxcblx0XHRcdFx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRcdGlzTWFjcm9Pck11bHRpcGxlVmlldzogdGFibGUuaW5NdWx0aVZpZXcgPz8gdHJ1ZVxuXHRcdFx0fVxuXHRcdCk7XG5cblx0XHQvLyB0YWtlIHRoZSAoZmlyc3QpIFRhYmxlIHZpc3VhbGl6YXRpb25cblx0XHRyZXR1cm4gdmlzdWFsaXphdGlvbkRlZmluaXRpb24udmlzdWFsaXphdGlvbnMuZmluZChcblx0XHRcdCh2aXo6IFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbikgPT4gdml6LnR5cGUgPT09IFZpc3VhbGl6YXRpb25UeXBlLlRhYmxlXG5cdFx0KSBhcyBUYWJsZVZpc3VhbGl6YXRpb247XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3QgYWN0aW9ucyBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJsb2NrXG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBhY3Rpb25zIGZvciB0aGUgdGFibGVcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVBY3Rpb25zRnJvbU1hbmlmZXN0KHRhYmxlOiBUYWJsZUJsb2NrKTogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RBY3Rpb24+IHtcblx0XHRjb25zdCBhY3Rpb25zU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPiA9IHt9O1xuXHRcdGNvbnN0IGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCA9IChhY3Rpb246IEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25PdmVycmlkZSk6IHZvaWQgPT4ge1xuXHRcdFx0Y29uc3Qga2V5ID0gYWN0aW9uLmtleSE7XG5cdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0cG9zaXRpb246IHtcblx0XHRcdFx0XHRwbGFjZW1lbnQ6IChhY3Rpb24ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdGFuY2hvcjogYWN0aW9uLmFuY2hvclxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb21tYW5kOiBhY3Rpb24uY29tbWFuZCxcblx0XHRcdFx0ZW5hYmxlT25TZWxlY3Q6IGFjdGlvbi5lbmFibGVPblNlbGVjdCxcblx0XHRcdFx0dmlzaWJsZTogYWN0aW9uLnZpc2libGUsXG5cdFx0XHRcdGVuYWJsZWQ6IGFjdGlvbi5lbmFibGVkLFxuXHRcdFx0XHRpc0FJT3BlcmF0aW9uOiBhY3Rpb24uaXNBSU9wZXJhdGlvbixcblx0XHRcdFx0cHJpb3JpdHk6IGFjdGlvbi5wcmlvcml0eSxcblx0XHRcdFx0Z3JvdXA6IGFjdGlvbi5ncm91cFxuXHRcdFx0fTtcblx0XHRcdGlmIChhY3Rpb24uX3R5cGUgPT09IFwiQWN0aW9uXCIpIHtcblx0XHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdFx0Li4uYWN0aW9uc1NldHRpbmdzW2tleV0sXG5cdFx0XHRcdFx0dGV4dDogYWN0aW9uLnRleHQsXG5cdFx0XHRcdFx0X19ub1dyYXA6IHRydWUsXG5cdFx0XHRcdFx0cHJlc3M6IGFjdGlvbi5wcmVzcyxcblx0XHRcdFx0XHRyZXF1aXJlc1NlbGVjdGlvbjogYWN0aW9uLnJlcXVpcmVzU2VsZWN0aW9uXG5cdFx0XHRcdH07XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGFmdGVyRXhlY3V0aW9uID0ge1xuXHRcdFx0XHRlbmFibGVBdXRvU2Nyb2xsOiBhY3Rpb25bXCJlbmFibGVBdXRvU2Nyb2xsXCJdLFxuXHRcdFx0XHRuYXZpZ2F0ZVRvSW5zdGFuY2U6IGFjdGlvbltcIm5hdmlnYXRlVG9JbnN0YW5jZVwiXVxuXHRcdFx0fTtcblx0XHRcdHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMoYWZ0ZXJFeGVjdXRpb24pO1xuXHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdC4uLmFjdGlvbnNTZXR0aW5nc1trZXldLFxuXHRcdFx0XHRhZnRlckV4ZWN1dGlvbjogT2JqZWN0LmVudHJpZXMoYWZ0ZXJFeGVjdXRpb24pLmxlbmd0aCA/IGFmdGVyRXhlY3V0aW9uIDogdW5kZWZpbmVkLFxuXHRcdFx0XHRkZWZhdWx0VmFsdWVzRnVuY3Rpb246IGFjdGlvbi5kZWZhdWx0VmFsdWVzRnVuY3Rpb25cblx0XHRcdH07XG5cdFx0fTtcblx0XHRpZiAodGFibGUuYWN0aW9ucykge1xuXHRcdFx0T2JqZWN0LnZhbHVlcyh0YWJsZS5hY3Rpb25zKS5mb3JFYWNoKChpdGVtKSA9PiB7XG5cdFx0XHRcdGlmIChpdGVtLl90eXBlID09PSBcIkFjdGlvblwiIHx8IGl0ZW0uX3R5cGUgPT09IFwiQWN0aW9uT3ZlcnJpZGVcIikge1xuXHRcdFx0XHRcdGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdChpdGVtKTtcblx0XHRcdFx0fSBlbHNlIGlmIChpdGVtLl90eXBlID09PSBcIkFjdGlvbkdyb3VwXCIgfHwgaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCIpIHtcblx0XHRcdFx0XHQvLyBBY3Rpb25Hcm91cCBvciBBY3Rpb25Hcm91cE92ZXJyaWRlXG5cdFx0XHRcdFx0Y29uc3Qga2V5ID0gaXRlbS5rZXkhO1xuXHRcdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdFx0cG9zaXRpb246IHtcblx0XHRcdFx0XHRcdFx0cGxhY2VtZW50OiAoaXRlbS5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnQsXG5cdFx0XHRcdFx0XHRcdGFuY2hvcjogaXRlbS5hbmNob3Jcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRtZW51OiBpdGVtLmFjdGlvbnMubWFwKChhY3Rpb24pID0+IGFjdGlvbi5rZXkhKVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0aWYgKGl0ZW0uX3R5cGUgPT09IFwiQWN0aW9uR3JvdXBcIikge1xuXHRcdFx0XHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdFx0XHRcdC4uLmFjdGlvbnNTZXR0aW5nc1trZXldLFxuXHRcdFx0XHRcdFx0XHR0ZXh0OiBpdGVtLnRleHQsXG5cdFx0XHRcdFx0XHRcdGRlZmF1bHRBY3Rpb246IGl0ZW0uZGVmYXVsdEFjdGlvbixcblx0XHRcdFx0XHRcdFx0X19ub1dyYXA6IHRydWVcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGl0ZW0uYWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcblx0XHRcdFx0XHRcdGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdChhY3Rpb24pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIGFjdGlvbnNTZXR0aW5ncztcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBtYW5pZmVzdCBjb2x1bW5zIGZvciB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSB0YWJsZSBUaGUgdGFibGUgYmxvY2tcblx0ICogQHJldHVybnMgVGhlIG1hbmlmZXN0IGFjdGlvbnMgZm9yIHRoZSB0YWJsZVxuXHQgKi9cblx0c3RhdGljIGNyZWF0ZUNvbHVtbnNGb3JNYW5pZmVzdCh0YWJsZTogVGFibGVCbG9jayk6IFJlY29yZDxzdHJpbmcsIEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbiB8IEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbkZvck92ZXJyaWRlPiB7XG5cdFx0Y29uc3QgaXNCbG9ja0NvbHVtbiA9IChibG9jazogQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlKTogYmxvY2sgaXMgQmxvY2tDb2x1bW4gPT4ge1xuXHRcdFx0cmV0dXJuIGJsb2NrLl90eXBlID09PSBcIkNvbHVtblwiO1xuXHRcdH07XG5cblx0XHRjb25zdCBjb2x1bW5TZXR0aW5nczogUmVjb3JkPHN0cmluZywgQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uIHwgQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGU+ID0ge307XG5cblx0XHRpZiAodGFibGUuY29sdW1ucykge1xuXHRcdFx0T2JqZWN0LnZhbHVlcyh0YWJsZS5jb2x1bW5zKS5mb3JFYWNoKChjb2x1bW4pID0+IHtcblx0XHRcdFx0bGV0IGN1c3RvbUNvbHVtbkRlZmluaXRpb246IEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbiB8IChDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZSAmIHsga2V5OiBzdHJpbmcgfSk7XG5cdFx0XHRcdGlmIChpc0Jsb2NrQ29sdW1uKGNvbHVtbikpIHtcblx0XHRcdFx0XHRjdXN0b21Db2x1bW5EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRcdFx0aGVhZGVyOiBjb2x1bW4uaGVhZGVyISxcblx0XHRcdFx0XHRcdHdpZHRoOiBjb2x1bW4ud2lkdGgsXG5cdFx0XHRcdFx0XHRpbXBvcnRhbmNlOiBjb2x1bW4uaW1wb3J0YW5jZSBhcyBJbXBvcnRhbmNlLFxuXHRcdFx0XHRcdFx0aG9yaXpvbnRhbEFsaWduOiBjb2x1bW4uaG9yaXpvbnRhbEFsaWduLFxuXHRcdFx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNvbHVtbi53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcixcblx0XHRcdFx0XHRcdGV4cG9ydFNldHRpbmdzOiBjb2x1bW4uZXhwb3J0U2V0dGluZ3MsXG5cdFx0XHRcdFx0XHRwcm9wZXJ0aWVzOiBjb2x1bW4ucHJvcGVydGllcyxcblx0XHRcdFx0XHRcdHRvb2x0aXA6IGNvbHVtbi50b29sdGlwLFxuXHRcdFx0XHRcdFx0dGVtcGxhdGU6IGNvbHVtbi50ZW1wbGF0ZSEsXG5cdFx0XHRcdFx0XHRhdmFpbGFiaWxpdHk6IGNvbHVtbi5hdmFpbGFiaWxpdHkgYXMgQXZhaWxhYmlsaXR5VHlwZSxcblx0XHRcdFx0XHRcdHJlcXVpcmVkOiBjb2x1bW4ucmVxdWlyZWQsXG5cdFx0XHRcdFx0XHR0eXBlOiBcIlNsb3RcIlxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGtleTogY29sdW1uLmtleSEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGVcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVtb3ZlIGFsbCB1bmRlZmluZWQgcHJvcGVydGllcywgc28gdGhhdCB0aGV5IGRvbid0IGVyYXNlIHdoYXQgaXMgc2V0IGluIHRoZSBtYW5pZmVzdFxuXHRcdFx0XHQvLyAobmVjZXNzYXJ5IGJlY2F1c2UgbWFuaWZlc3QtYmFzZWQgY29sdW1ucyBhcmUgdHJhbnNmb3JtZWQgaW50byBzbG90IGNvbHVtbnMgYW5kIHdlIGRvbid0IGNvcHlcblx0XHRcdFx0Ly8gYWxsIHRoZWlyIHByb3BlcnRpZXMgaW4gdGhlIFhNTClcblx0XHRcdFx0cmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhjdXN0b21Db2x1bW5EZWZpbml0aW9uKTtcblx0XHRcdFx0aWYgKGlzQmxvY2tDb2x1bW4oY29sdW1uKSAmJiAoY29sdW1uLmFuY2hvciB8fCBjb2x1bW4ucGxhY2VtZW50KSkge1xuXHRcdFx0XHRcdGN1c3RvbUNvbHVtbkRlZmluaXRpb24ucG9zaXRpb24gPSB7XG5cdFx0XHRcdFx0XHRhbmNob3I6IGNvbHVtbi5hbmNob3IsXG5cdFx0XHRcdFx0XHRwbGFjZW1lbnQ6IChjb2x1bW4ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbHVtblNldHRpbmdzW2NvbHVtbi5rZXkhXSA9IGN1c3RvbUNvbHVtbkRlZmluaXRpb247XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbHVtblNldHRpbmdzO1xuXHR9XG5cblx0c2V0VXBJZCgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5pZCkge1xuXHRcdFx0Ly8gVGhlIGdpdmVuIElEIHNoYWxsIGJlIGFzc2lnbmVkIHRvIHRoZSBUYWJsZUFQSSBhbmQgbm90IHRvIHRoZSBNREMgVGFibGVcblx0XHRcdHRoaXMuX2FwaUlkID0gdGhpcy5pZDtcblx0XHRcdC8vIEdlbmVyYXRlIHRoZSBjb250ZW50SWQgYmFzZWQgb24gdGhlIElELCBpZiBub3QgcHJvdmlkZWQgKEZQTSBjYXNlKVxuXHRcdFx0dGhpcy5jb250ZW50SWQgPz89IHRoaXMuZ2V0Q29udGVudElkKHRoaXMuaWQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBXZSBnZW5lcmF0ZSB0aGUgSUQgYW5kIHRoZSBjb250ZW50SUQuIER1ZSB0byBjb21wYXRpYmlsaXR5IHJlYXNvbnMgd2Uga2VlcCBpdCBvbiB0aGUgTURDIFRhYmxlIGJ1dCBwcm92aWRlIGFzc2lnblxuXHRcdFx0Ly8gdGhlIElEIHdpdGggYSA6OlRhYmxlIHN1ZmZpeCB0byB0aGUgVGFibGVBUElcblx0XHRcdHRoaXMuaWQgPSB0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmFwaUlkO1xuXHRcdFx0dGhpcy5jb250ZW50SWQgPSB0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmlkO1xuXHRcdFx0dGhpcy5fYXBpSWQgPSB0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmFwaUlkO1xuXHRcdH1cblx0fVxuXG5cdF9nZXRFbnRpdHlUeXBlKCk6IEVudGl0eVR5cGUge1xuXHRcdHJldHVybiAodGhpcy5jb2xsZWN0aW9uRW50aXR5IGFzIEVudGl0eVNldCk/LmVudGl0eVR5cGUgfHwgKHRoaXMuY29sbGVjdGlvbkVudGl0eSBhcyBOYXZpZ2F0aW9uUHJvcGVydHkpPy50YXJnZXRUeXBlO1xuXHR9XG5cblx0Z2V0RW1wdHlSb3dzRW5hYmxlZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGVuYWJsZWQgPVxuXHRcdFx0dGhpcy5jcmVhdGlvbk1vZGUubmFtZSA9PT0gQ3JlYXRpb25Nb2RlLklubGluZUNyZWF0aW9uUm93c1xuXHRcdFx0XHQ/IHRoaXMudGFibGVEZWZpbml0aW9uLmFjdGlvbnMuZmluZCgoYSkgPT4gYS5rZXkgPT09IFN0YW5kYXJkQWN0aW9uS2V5cy5DcmVhdGUpPy5lbmFibGVkXG5cdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdHJldHVybiBlbmFibGVkID09PSBcImZhbHNlXCIgPyB1bmRlZmluZWQgOiBlbmFibGVkO1xuXHR9XG5cblx0Z2V0VGVtcGxhdGUoKTogc3RyaW5nIHtcblx0XHRjb25zdCBlbnRpdHlUeXBlID0gdGhpcy5fZ2V0RW50aXR5VHlwZSgpO1xuXHRcdGNvbnN0IHRhYmxlUHJvcHMgPSB0aGlzIGFzIHVua25vd24gYXMgVGFibGVCbG9ja1Byb3BlcnRpZXM7XG5cdFx0dGFibGVQcm9wcy5vdmVycmlkZVJvd1ByZXNzID0gdGhpcy5yb3dQcmVzcyAhPT0gdW5kZWZpbmVkO1xuXG5cdFx0Y29uc3QgY29sbGVjdGlvbkVudGl0eSA9IHRoaXMuY29udmVydGVkTWV0YWRhdGEucmVzb2x2ZVBhdGgodGFibGVQcm9wcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jb2xsZWN0aW9uKS50YXJnZXQgYXNcblx0XHRcdHwgRW50aXR5U2V0XG5cdFx0XHR8IE5hdmlnYXRpb25Qcm9wZXJ0eTtcblx0XHRjb25zdCBoYW5kbGVyUHJvdmlkZXIgPSBuZXcgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlcih0YWJsZVByb3BzLCB7IGNvbGxlY3Rpb25FbnRpdHksIG1ldGFNb2RlbDogdGhpcy5tZXRhUGF0aC5nZXRNb2RlbCgpIH0pO1xuXG5cdFx0bGV0IGNyZWF0aW9uTW9kZTogVGFibGVDcmVhdGlvbk9wdGlvbnMgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKHRoaXMuY3JlYXRpb25Nb2RlICYmIE9iamVjdC5rZXlzKHRoaXMuY3JlYXRpb25Nb2RlKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRjcmVhdGlvbk1vZGUgPSA8VGFibGVDcmVhdGlvbk9wdGlvbnMgey4uLnRoaXMuY3JlYXRpb25Nb2RlfSAvPjtcblx0XHR9XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PFRhYmxlQVBJXG5cdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntGUE06ICdzYXAvZmUvY29yZS9oZWxwZXJzL0ZQTUhlbHBlcid9XCJcblx0XHRcdFx0YmluZGluZz17YHtpbnRlcm5hbD5jb250cm9scy8ke3RoaXMuY29udGVudElkfX1gfVxuXHRcdFx0XHRpZD17dGhpcy5fYXBpSWR9XG5cdFx0XHRcdGNvbnRlbnRJZD17dGhpcy5jb250ZW50SWR9XG5cdFx0XHRcdHZpc2libGU9e3RoaXMudmlzaWJsZX1cblx0XHRcdFx0aGVhZGVyTGV2ZWw9e3RoaXMuaGVhZGVyTGV2ZWx9XG5cdFx0XHRcdGhlYWRlclN0eWxlPXt0aGlzLmhlYWRlclN0eWxlfVxuXHRcdFx0XHRoZWFkZXJWaXNpYmxlPXt0aGlzLmhlYWRlclZpc2libGV9XG5cdFx0XHRcdHRhYlRpdGxlPXt0aGlzLnRhYlRpdGxlfVxuXHRcdFx0XHRleHBvcnRSZXF1ZXN0U2l6ZT17dGhpcy5leHBvcnRSZXF1ZXN0U2l6ZX1cblx0XHRcdFx0ZGlzYWJsZUNvcHlUb0NsaXBib2FyZD17dGhpcy5kaXNhYmxlQ29weVRvQ2xpcGJvYXJkfVxuXHRcdFx0XHRzY3JvbGxUaHJlc2hvbGQ9e3RoaXMuc2Nyb2xsVGhyZXNob2xkfVxuXHRcdFx0XHR0aHJlc2hvbGQ9e3RoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wudGhyZXNob2xkID8/IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24udGhyZXNob2xkfVxuXHRcdFx0XHRwb3BpbkxheW91dD17dGhpcy5wb3BpbkxheW91dH1cblx0XHRcdFx0aXNTZWFyY2hhYmxlPXt0aGlzLmlzU2VhcmNoYWJsZX1cblx0XHRcdFx0YnVzeT17dGhpcy5idXN5fVxuXHRcdFx0XHRpbml0aWFsTG9hZD17dGhpcy5pbml0aWFsTG9hZH1cblx0XHRcdFx0aGVhZGVyPXt0aGlzLmhlYWRlcn1cblx0XHRcdFx0aXNBbHA9e3RoaXMuaXNBbHB9XG5cdFx0XHRcdGZpZWxkTW9kZT17dGhpcy5maWVsZE1vZGV9XG5cdFx0XHRcdHBlcnNvbmFsaXphdGlvbj17dGhpcy5wZXJzb25hbGl6YXRpb259XG5cdFx0XHRcdHJvd1ByZXNzPXt0aGlzLnJvd1ByZXNzIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHZhcmlhbnRTYXZlZD17dGhpcy52YXJpYW50U2F2ZWQgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0dmFyaWFudFNlbGVjdGVkPXt0aGlzLnZhcmlhbnRTZWxlY3RlZCBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRzZWdtZW50ZWRCdXR0b25QcmVzcz17dGhpcy5zZWdtZW50ZWRCdXR0b25QcmVzcyBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHR2YXJpYW50TWFuYWdlbWVudD17dGhpcy52YXJpYW50TWFuYWdlbWVudH1cblx0XHRcdFx0aWdub3JlZEZpZWxkcz17dGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5pZ25vcmVkRmllbGRzfSAvLyBOZWVkIHRvIGJlIGZyb20gdGhlIHRhYmxlRGVmaW5pdGlvbiB0byBiZSBpbiBwaGFzZSBmb3IgdGhlIGdldElnbm9yZUZpZWxkc1xuXHRcdFx0XHR0YWJsZURlZmluaXRpb249e2B7X3BhZ2VNb2RlbD4ke3RoaXMudGFibGVEZWZpbml0aW9uQ29udGV4dCEuZ2V0UGF0aCgpfX1gIGFzIHVua25vd24gYXMgVGFibGVWaXN1YWxpemF0aW9ufVxuXHRcdFx0XHRlbnRpdHlUeXBlRnVsbHlRdWFsaWZpZWROYW1lPXtlbnRpdHlUeXBlPy5mdWxseVF1YWxpZmllZE5hbWV9XG5cdFx0XHRcdG1ldGFQYXRoPXt0aGlzLm1ldGFQYXRoPy5nZXRQYXRoKCl9XG5cdFx0XHRcdHVzZUJhc2ljU2VhcmNoPXt0aGlzLnVzZUJhc2ljU2VhcmNofVxuXHRcdFx0XHRlbmFibGVGdWxsU2NyZWVuPXt0aGlzLmVuYWJsZUZ1bGxTY3JlZW59XG5cdFx0XHRcdGVuYWJsZUV4cG9ydD17dGhpcy5lbmFibGVFeHBvcnR9XG5cdFx0XHRcdGZyb3plbkNvbHVtbkNvdW50PXt0aGlzLmZyb3plbkNvbHVtbkNvdW50fVxuXHRcdFx0XHRkaXNhYmxlQ29sdW1uRnJlZXplPXt0aGlzLmRpc2FibGVDb2x1bW5GcmVlemV9XG5cdFx0XHRcdGVuYWJsZVBhc3RlPXt0aGlzLmVuYWJsZVBhc3RlfVxuXHRcdFx0XHRyb3dDb3VudE1vZGU9e3RoaXMucm93Q291bnRNb2RlfVxuXHRcdFx0XHRyb3dDb3VudD17dGhpcy5yb3dDb3VudH1cblx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuY29udGV4dFBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0c2VsZWN0aW9uQ2hhbmdlPXt0aGlzLnNlbGVjdGlvbkNoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRsaXN0QmluZGluZ0NoYW5nZT17dGhpcy5saXN0QmluZGluZ0NoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRyZWFkT25seT17dGhpcy5yZWFkT25seX1cblx0XHRcdFx0c2VsZWN0aW9uTW9kZT17dGhpcy5zZWxlY3Rpb25Nb2RlfVxuXHRcdFx0XHR1c2VDb25kZW5zZWRMYXlvdXQ9e3RoaXMudXNlQ29uZGVuc2VkTGF5b3V0fVxuXHRcdFx0XHR0eXBlPXt0aGlzLnR5cGV9XG5cdFx0XHRcdGZpbHRlckJhcj17dGhpcy5maWx0ZXJCYXJ9XG5cdFx0XHRcdGVtcHR5Um93c0VuYWJsZWQ9e3RoaXMuZ2V0RW1wdHlSb3dzRW5hYmxlZCgpIGFzIHVua25vd24gYXMgYm9vbGVhbn1cblx0XHRcdFx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoPXt0aGlzLmVuYWJsZUF1dG9Db2x1bW5XaWR0aH1cblx0XHRcdFx0YmVmb3JlUmViaW5kVGFibGU9e3RoaXMuYmVmb3JlUmViaW5kVGFibGUgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI9e3RoaXMud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJ9XG5cdFx0XHRcdG1vZGVGb3JOb0RhdGFNZXNzYWdlPXt0aGlzLm1vZGVGb3JOb0RhdGFNZXNzYWdlfVxuXHRcdFx0XHRhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGg9e3RoaXMuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPy5nZXRQYXRoKCl9XG5cdFx0XHRcdGRpc3BsYXlTZWdtZW50ZWRCdXR0b249e3RoaXMuZGlzcGxheVNlZ21lbnRlZEJ1dHRvbn1cblx0XHRcdFx0ZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzPXt0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc31cblx0XHRcdFx0ZW5hYmxlU2VsZWN0QWxsPXt0aGlzLmVuYWJsZVNlbGVjdEFsbH1cblx0XHRcdFx0aW5NdWx0aVZpZXc9e3RoaXMuaW5NdWx0aVZpZXd9XG5cdFx0XHRcdHNlbGVjdGlvbkxpbWl0PXt0aGlzLnNlbGVjdGlvbkxpbWl0fVxuXHRcdFx0XHRjb25kZW5zZWRUYWJsZUxheW91dD17dGhpcy5jb25kZW5zZWRUYWJsZUxheW91dH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjdXN0b21EYXRhOiBjcmVhdGVDdXN0b21EYXRhKFwidGFibGVBUElMb2NhbElkXCIsIHRoaXMuX2FwaUlkKSxcblx0XHRcdFx0XHRjcmVhdGlvbk1vZGUsXG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogPEZsZXhJdGVtRGF0YSBtYXhXaWR0aD1cIjEwMCVcIiAvPixcblx0XHRcdFx0XHRjb250ZW50OiBnZXRNRENUYWJsZVRlbXBsYXRlKHRhYmxlUHJvcHMsIHtcblx0XHRcdFx0XHRcdG1ldGFQYXRoOiB0aGlzLm1ldGFQYXRoLFxuXHRcdFx0XHRcdFx0Y29udmVydGVkTWV0YWRhdGE6IHRoaXMuY29udmVydGVkTWV0YWRhdGEsXG5cdFx0XHRcdFx0XHRtZXRhTW9kZWw6IHRoaXMubWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0aGFuZGxlclByb3ZpZGVyLFxuXHRcdFx0XHRcdFx0YXBwQ29tcG9uZW50OiB0aGlzLmFwcENvbXBvbmVudFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH19XG5cdFx0XHQ8L1RhYmxlQVBJPlxuXHRcdCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF3R0EsU0FBU0EsZ0JBQWdCQSxDQUFDQyxJQUFhLEVBQUVDLElBQVksRUFBc0I7SUFDMUUsT0FBT0QsSUFBSSxDQUFDRSxZQUFZLENBQUNELElBQUksQ0FBQyxJQUFJRSxTQUFTO0VBQzVDOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNDLGlDQUFpQ0EsQ0FBQ0osSUFBYSxFQUFFQyxJQUFZLEVBQVc7SUFDaEYsTUFBTUksY0FBYyxHQUFHTCxJQUFJLENBQUNFLFlBQVksQ0FBQ0QsSUFBSSxDQUFDO0lBQzlDLFFBQVFJLGNBQWM7TUFDckIsS0FBSyxJQUFJO01BQ1QsS0FBSyxNQUFNO1FBQ1YsT0FBTyxJQUFJO01BQ1osS0FBSyxPQUFPO1FBQ1gsT0FBTyxLQUFLO01BQ2I7UUFDQyxPQUFPQSxjQUFjO01BQXdCO0lBQy9DO0VBQ0Q7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7RUFD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
|
|
1562
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzYWZlR2V0QXR0cmlidXRlIiwibm9kZSIsIm5hbWUiLCJnZXRBdHRyaWJ1dGUiLCJ1bmRlZmluZWQiLCJnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUiLCJlbmFibGVtZW50QXR0ciIsInJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInBhcnNlQWN0aW9uRnJvbUVsZW1lbnQiLCJhY3Rpb25Ob2RlIiwiY29tbW9uUHJvcGVydGllcyIsImdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMiLCJsb2NhbE5hbWUiLCJ0ZXh0IiwicHJlc3MiLCJyZXF1aXJlc1NlbGVjdGlvbiIsImVuYWJsZUF1dG9TY3JvbGwiLCJuYXZpZ2F0ZVRvSW5zdGFuY2UiLCJkZWZhdWx0VmFsdWVzRnVuY3Rpb24iLCJhY3Rpb24iLCJyZXBsYWNlIiwiZW5hYmxlZCIsInZpc2libGUiLCJjb21tYW5kIiwiZW5hYmxlT25TZWxlY3QiLCJwbGFjZW1lbnQiLCJhbmNob3IiLCJfdHlwZSIsIk51bWJlciIsInBhcnNlSW50Iiwic2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25PYmplY3QiLCJpbmNsdWRlcyIsImdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMiLCJkZWZhdWx0QWN0aW9uIiwic2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzIiwiZWxlbWVudCIsImN1c3RvbUNvbnRlbnQiLCJjaGlsZHJlbiIsIm91dGVySFRNTCIsInZpc2libGVGaWVsZHMiLCJzcGxpdCIsImlnbm9yZWRGaWVsZHMiLCJvcGVyYXRpb25Hcm91cGluZ01vZGUiLCJzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJxdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJwYXRocyIsInNob3dDb3VudHMiLCJhY3Rpb25zSW5NZW51IiwiQXJyYXkiLCJwcm90b3R5cGUiLCJzbGljZSIsImFwcGx5IiwibWFwIiwic3ViQWN0aW9uIiwic2V0QXR0cmlidXRlIiwiYWN0aW9ucyIsImdldENvbW1vbkN1c3RvbUNvbHVtbnNQcm9wZXJ0aWVzIiwiY2hpbGRDb2x1bW4iLCJ3aWR0aCIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwiaW1wb3J0YW5jZSIsImhvcml6b250YWxBbGlnbiIsImF2YWlsYWJpbGl0eSIsImRpc2FibGVFeHBvcnQiLCJleHBvcnRTZXR0aW5ncyIsInBhcnNlRXhwb3J0U2V0dGluZ3MiLCJzZXRDdXN0b21Db2x1bW5Qcm9wZXJ0aWVzIiwiaGVhZGVyIiwidG9vbHRpcCIsInRlbXBsYXRlIiwiZ2V0Q29sdW1uVGVtcGxhdGUiLCJwcm9wZXJ0aWVzIiwicmVxdWlyZWQiLCJwYXJzZVNpbXBsZUFnZ3JlZ2F0aW9uIiwid3JhcCIsInR5cGUiLCJwcm9wZXJ0eSIsInRleHRBbGlnbiIsImxhYmVsIiwidHJ1ZVZhbHVlIiwiZmFsc2VWYWx1ZSIsInZhbHVlTWFwIiwiYWdncmVnYXRpb24iLCJnZXRBZ2dyZWdhdGlvbiIsImkiLCJsZW5ndGgiLCJjaGlsZCIsIml0ZW0iLCJub2RlTmFtZSIsImVuZHNXaXRoIiwiYWdncmVnYXRpb25OYW1lIiwicmVzdWx0IiwiZ2V0QXR0cmlidXRlTmFtZXMiLCJ2YWx1ZSIsIlRhYmxlQmxvY2siLCJfZGVjIiwiZGVmaW5lQnVpbGRpbmdCbG9jayIsIm5hbWVzcGFjZSIsInB1YmxpY05hbWVzcGFjZSIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJibG9ja0F0dHJpYnV0ZSIsInVuZGVybHlpbmdUeXBlIiwiZXhwZWN0ZWRUeXBlcyIsImV4cGVjdGVkQW5ub3RhdGlvbnMiLCJpc1B1YmxpYyIsIl9kZWMzIiwiYmluZGFibGUiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzE4IiwiX2RlYzE5IiwiX2RlYzIwIiwiX2RlYzIxIiwiX2RlYzIyIiwiX2RlYzIzIiwiX2RlYzI0IiwiaXNBc3NvY2lhdGlvbiIsIl9kZWMyNSIsIl9kZWMyNiIsIl9kZWMyNyIsIl9kZWMyOCIsIl9kZWMyOSIsIl9kZWMzMCIsIl9kZWMzMSIsIl9kZWMzMiIsIl9kZWMzMyIsIl9kZWMzNCIsIl9kZWMzNSIsIl9kZWMzNiIsIl9kZWMzNyIsIl9kZWMzOCIsIl9kZWMzOSIsIl9kZWM0MCIsIl9kZWM0MSIsIl9kZWM0MiIsIl9kZWM0MyIsIl9kZWM0NCIsIl9kZWM0NSIsIl9kZWM0NiIsIl9kZWM0NyIsIl9kZWM0OCIsInZhbGlkYXRlIiwiY3JlYXRpb25PcHRpb25zSW5wdXQiLCJFcnJvciIsIl9kZWM0OSIsImFuYWx5dGljYWxDb25maWd1cmF0aW9uIiwiYWdncmVnYXRpb25PbkxlYWZMZXZlbCIsIl9kZWM1MCIsImJsb2NrQWdncmVnYXRpb24iLCJhbHRUeXBlcyIsImhhc1ZpcnR1YWxOb2RlIiwibXVsdGlwbGUiLCJwcm9jZXNzQWdncmVnYXRpb25zIiwiX2RlYzUxIiwic2tpcEtleSIsIl9kZWM1MiIsImlzRGVmYXVsdCIsIl9kZWM1MyIsIl9kZWM1NCIsImJsb2NrRXZlbnQiLCJfZGVjNTUiLCJfZGVjNTYiLCJfZGVjNTciLCJfZGVjNTgiLCJfZGVjNTkiLCJfZGVjNjAiLCJfZGVjNjEiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX1RhYmxlQmxvY2siLCJfQnVpbGRpbmdCbG9ja1RlbXBsYXQiLCJwcm9wcyIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwidGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwiX2Rlc2NyaXB0b3IxMSIsIl9kZXNjcmlwdG9yMTIiLCJfZGVzY3JpcHRvcjEzIiwiX2Rlc2NyaXB0b3IxNCIsIl9kZXNjcmlwdG9yMTUiLCJfZGVzY3JpcHRvcjE2IiwiX2Rlc2NyaXB0b3IxNyIsIl9kZXNjcmlwdG9yMTgiLCJfZGVzY3JpcHRvcjE5IiwiX2Rlc2NyaXB0b3IyMCIsIl9kZXNjcmlwdG9yMjEiLCJfZGVzY3JpcHRvcjIyIiwiX2Rlc2NyaXB0b3IyMyIsIl9kZXNjcmlwdG9yMjQiLCJfZGVzY3JpcHRvcjI1IiwiX2Rlc2NyaXB0b3IyNiIsIl9kZXNjcmlwdG9yMjciLCJfZGVzY3JpcHRvcjI4IiwiX2Rlc2NyaXB0b3IyOSIsIl9kZXNjcmlwdG9yMzAiLCJfZGVzY3JpcHRvcjMxIiwiX2Rlc2NyaXB0b3IzMiIsIl9kZXNjcmlwdG9yMzMiLCJfZGVzY3JpcHRvcjM0IiwiX2Rlc2NyaXB0b3IzNSIsIl9kZXNjcmlwdG9yMzYiLCJfZGVzY3JpcHRvcjM3IiwiX2Rlc2NyaXB0b3IzOCIsIl9kZXNjcmlwdG9yMzkiLCJfZGVzY3JpcHRvcjQwIiwiX2Rlc2NyaXB0b3I0MSIsIl9kZXNjcmlwdG9yNDIiLCJfZGVzY3JpcHRvcjQzIiwiX2Rlc2NyaXB0b3I0NCIsIl9kZXNjcmlwdG9yNDUiLCJfZGVzY3JpcHRvcjQ2IiwiX2Rlc2NyaXB0b3I0NyIsIl9kZXNjcmlwdG9yNDgiLCJfZGVzY3JpcHRvcjQ5IiwiX2Rlc2NyaXB0b3I1MCIsIl9kZXNjcmlwdG9yNTEiLCJfZGVzY3JpcHRvcjUyIiwiX2Rlc2NyaXB0b3I1MyIsIl9kZXNjcmlwdG9yNTQiLCJfZGVzY3JpcHRvcjU1IiwiX2Rlc2NyaXB0b3I1NiIsIl9kZXNjcmlwdG9yNTciLCJfZGVzY3JpcHRvcjU4IiwiX2Rlc2NyaXB0b3I1OSIsIl9kZXNjcmlwdG9yNjAiLCJjb250ZXh0T2JqZWN0UGF0aCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsIm1ldGFQYXRoIiwiY29udGV4dFBhdGgiLCJ0YWJsZURlZmluaXRpb24iLCJjcmVhdGVUYWJsZURlZmluaXRpb24iLCJ0YWJsZURlZmluaXRpb25Db250ZXh0IiwiTWFjcm9BUEkiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImNvbnZlcnRlZE1ldGFkYXRhIiwiY29udmVydGVkVHlwZXMiLCJtZXRhTW9kZWwiLCJtb2RlbHMiLCJjb2xsZWN0aW9uRW50aXR5IiwicmVzb2x2ZVBhdGgiLCJhbm5vdGF0aW9uIiwiY29sbGVjdGlvbiIsInRhcmdldCIsImFwcENvbXBvbmVudCIsInNldFVwSWQiLCJjcmVhdGlvbk1vZGUiLCJjcmVhdGUiLCJtb2RlIiwiY3JlYXRlQXRFbmQiLCJhcHBlbmQiLCJyZWFkT25seSIsImRpc3BsYXlNb2RlIiwiY29udHJvbCIsIlRhYmxlQVBJIiwidXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkiLCJ1c2VCYXNpY1NlYXJjaCIsImZpbHRlckJhciIsImdlbmVyYXRlIiwiY29udGVudElkIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsImdldFZpc3VhbGl6YXRpb25QYXRoIiwiY29udmVydGVyQ29udGV4dCIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJMb2ciLCJlcnJvciIsImlzQW5ub3RhdGlvbk9mVGVybSIsInRhcmdldE9iamVjdCIsInJlc29sdmVkVGFyZ2V0IiwiZ2V0RW50aXR5VHlwZUFubm90YXRpb24iLCJ2aXN1YWxpemF0aW9ucyIsImdldFZpc3VhbGl6YXRpb25zRnJvbUFubm90YXRpb24iLCJ0ZXJtIiwibGluZUl0ZW1WaXoiLCJmaW5kIiwidml6IiwidmlzdWFsaXphdGlvbiIsImFubm90YXRpb25QYXRoIiwiX3Byb3RvIiwiZ2V0VGFibGVTZXR0aW5ncyIsInRhYmxlU2V0dGluZ3MiLCJhZGRTZXR0aW5nIiwiZW5hYmxlRXhwb3J0IiwiZXhwb3J0RmlsZU5hbWUiLCJleHBvcnRTaGVldE5hbWUiLCJzZWxlY3Rpb25MaW1pdCIsImNvbmRlbnNlZFRhYmxlTGF5b3V0IiwiZXhwb3J0UmVxdWVzdFNpemUiLCJmcm96ZW5Db2x1bW5Db3VudCIsImRpc2FibGVDb2x1bW5GcmVlemUiLCJyb3dDb3VudE1vZGUiLCJyb3dDb3VudCIsImVuYWJsZUZ1bGxTY3JlZW4iLCJlbmFibGVTZWxlY3RBbGwiLCJlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXMiLCJlbmFibGVQYXN0ZSIsImRpc2FibGVDb3B5VG9DbGlwYm9hcmQiLCJzY3JvbGxUaHJlc2hvbGQiLCJ0aHJlc2hvbGQiLCJwb3BpbkxheW91dCIsInNlbGVjdGlvbk1vZGUiLCJxdWlja0ZpbHRlcnMiLCJwYXRoIiwiY3JlYXRpb25GaWVsZHMiLCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlIiwib3V0Ym91bmQiLCJlbnRyaWVzIiwibWFzc0VkaXQiLCJlbmFibGVNYXNzRWRpdCIsImNvbmZpZ3VyYXRpb24iLCJqb2luIiwidGFibGUiLCJpbml0aWFsQ29udmVydGVyQ29udGV4dCIsImdldENvbnZlcnRlckNvbnRleHQiLCJnZXRQYXRoIiwidmlzdWFsaXphdGlvblBhdGgiLCJleHRyYU1hbmlmZXN0U2V0dGluZ3MiLCJjcmVhdGVBY3Rpb25zRnJvbU1hbmlmZXN0IiwiY29sdW1ucyIsImNyZWF0ZUNvbHVtbnNGb3JNYW5pZmVzdCIsImV4dHJhUGFyYW1zIiwiYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgiLCJzdk9iamVjdFBhdGgiLCJ2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiIsImdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbiIsImluTXVsdGlWaWV3IiwiZ2V0UmVsYXRpdmVBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImdldEVudGl0eVR5cGUiLCJpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50IiwidXNlQ29uZGVuc2VkTGF5b3V0IiwiaXNNYWNyb09yTXVsdGlwbGVWaWV3IiwiVmlzdWFsaXphdGlvblR5cGUiLCJUYWJsZSIsImFjdGlvbnNTZXR0aW5ncyIsImFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCIsInBvc2l0aW9uIiwiaXNBSU9wZXJhdGlvbiIsInByaW9yaXR5IiwiZ3JvdXAiLCJfX25vV3JhcCIsImFmdGVyRXhlY3V0aW9uIiwidmFsdWVzIiwibWVudSIsImlzQmxvY2tDb2x1bW4iLCJibG9jayIsImNvbHVtblNldHRpbmdzIiwiY29sdW1uIiwiY3VzdG9tQ29sdW1uRGVmaW5pdGlvbiIsImlkIiwiX2FwaUlkIiwiZ2V0Q29udGVudElkIiwiYXBpSWQiLCJfZ2V0RW50aXR5VHlwZSIsImVudGl0eVR5cGUiLCJ0YXJnZXRUeXBlIiwiZ2V0RW1wdHlSb3dzRW5hYmxlZCIsIkNyZWF0aW9uTW9kZSIsIklubGluZUNyZWF0aW9uUm93cyIsImEiLCJTdGFuZGFyZEFjdGlvbktleXMiLCJDcmVhdGUiLCJnZXRUZW1wbGF0ZSIsInRhYmxlUHJvcHMiLCJvdmVycmlkZVJvd1ByZXNzIiwicm93UHJlc3MiLCJoYW5kbGVyUHJvdmlkZXIiLCJUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyIiwiZ2V0TW9kZWwiLCJfanN4IiwiVGFibGVDcmVhdGlvbk9wdGlvbnMiLCJiaW5kaW5nIiwiaGVhZGVyTGV2ZWwiLCJoZWFkZXJTdHlsZSIsImhlYWRlclZpc2libGUiLCJ0YWJUaXRsZSIsImlzU2VhcmNoYWJsZSIsImJ1c3kiLCJpbml0aWFsTG9hZCIsImlzQWxwIiwiZmllbGRNb2RlIiwicGVyc29uYWxpemF0aW9uIiwidmFyaWFudFNhdmVkIiwidmFyaWFudFNlbGVjdGVkIiwic2VnbWVudGVkQnV0dG9uUHJlc3MiLCJ2YXJpYW50TWFuYWdlbWVudCIsImVudGl0eVR5cGVGdWxseVF1YWxpZmllZE5hbWUiLCJzZWxlY3Rpb25DaGFuZ2UiLCJsaXN0QmluZGluZ0NoYW5nZSIsImVtcHR5Um93c0VuYWJsZWQiLCJlbmFibGVBdXRvQ29sdW1uV2lkdGgiLCJiZWZvcmVSZWJpbmRUYWJsZSIsIm1vZGVGb3JOb0RhdGFNZXNzYWdlIiwiZGlzcGxheVNlZ21lbnRlZEJ1dHRvbiIsImN1c3RvbURhdGEiLCJjcmVhdGVDdXN0b21EYXRhIiwibGF5b3V0RGF0YSIsIkZsZXhJdGVtRGF0YSIsIm1heFdpZHRoIiwiY29udGVudCIsImdldE1EQ1RhYmxlVGVtcGxhdGUiLCJCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlLmJsb2NrLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnZlcnRlZE1ldGFkYXRhLCBFbnRpdHlTZXQsIEVudGl0eVR5cGUsIE5hdmlnYXRpb25Qcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRMaW5lSXRlbSxcblx0UHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudFR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IHR5cGUgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB7XG5cdGJsb2NrQWdncmVnYXRpb24sXG5cdGJsb2NrQXR0cmlidXRlLFxuXHRibG9ja0V2ZW50LFxuXHRkZWZpbmVCdWlsZGluZ0Jsb2NrXG59IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHtcblx0QXZhaWxhYmlsaXR5VHlwZSxcblx0Q3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uLFxuXHRDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZSxcblx0SG9yaXpvbnRhbEFsaWduLFxuXHRJbXBvcnRhbmNlLFxuXHRNYW5pZmVzdEFjdGlvbixcblx0VGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb25cbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgQ3JlYXRpb25Nb2RlLCBWaXN1YWxpemF0aW9uVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBQYWdlQ29udGV4dFBhdGhUYXJnZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBDaGFydFZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgVmlzdWFsaXphdGlvbkFuZFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vRGF0YVZpc3VhbGl6YXRpb25cIjtcbmltcG9ydCB7XG5cdGdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbixcblx0Z2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vRGF0YVZpc3VhbGl6YXRpb25cIjtcbmltcG9ydCB0eXBlIHsgQ3JlYXRlQmVoYXZpb3IsIFRhYmxlVHlwZSwgVGFibGVWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL1RhYmxlXCI7XG5pbXBvcnQgeyBTdGFuZGFyZEFjdGlvbktleXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vdGFibGUvU3RhbmRhcmRBY3Rpb25zXCI7XG5pbXBvcnQgeyB0eXBlIFBsYWNlbWVudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgeyBpc0Fubm90YXRpb25PZlRlcm0gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IE1hY3JvQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL01hY3JvQVBJXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb24gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQWN0aW9uXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cCBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9BY3Rpb25Hcm91cFwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0NvbHVtblwiO1xuaW1wb3J0IHR5cGUgeyBUYWJsZUJsb2NrUHJvcGVydGllcyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL01kY1RhYmxlVGVtcGxhdGVcIjtcbmltcG9ydCB7IGdldE1EQ1RhYmxlVGVtcGxhdGUgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9NZGNUYWJsZVRlbXBsYXRlXCI7XG5pbXBvcnQgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVBUElcIjtcbmltcG9ydCBUYWJsZUNyZWF0aW9uT3B0aW9ucyBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUNyZWF0aW9uT3B0aW9uc1wiO1xuaW1wb3J0IEZsZXhJdGVtRGF0YSBmcm9tIFwic2FwL20vRmxleEl0ZW1EYXRhXCI7XG5pbXBvcnQgdHlwZSB7IE92ZXJmbG93VG9vbGJhclByaW9yaXR5IH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB7IHR5cGUgVGl0bGVMZXZlbCB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEV4cG9ydFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgeyBjcmVhdGVDdXN0b21EYXRhIH0gZnJvbSBcIi4uL1RTWFV0aWxzXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cE92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBBbmFseXRpY2FsQ29uZmlndXJhdGlvbiBmcm9tIFwiLi9BbmFseXRpY2FsQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uT3ZlcnJpZGUgZnJvbSBcIi4vQ29sdW1uT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIE1hc3NFZGl0IGZyb20gXCIuL01hc3NFZGl0XCI7XG5pbXBvcnQgdHlwZSBRdWlja1ZhcmlhbnRTZWxlY3Rpb24gZnJvbSBcIi4vUXVpY2tWYXJpYW50U2VsZWN0aW9uXCI7XG5pbXBvcnQgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlciBmcm9tIFwiLi9UYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyXCI7XG5cbnR5cGUgQmxvY2tDb2x1bW4gPSBQYXJ0aWFsPE9taXQ8Q29sdW1uLCBcInRlbXBsYXRlXCIgfCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdGV4cG9ydFNldHRpbmdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgb2JqZWN0PiB8IG51bGw7XG5cdF90eXBlOiBcIkNvbHVtblwiO1xufTtcblxudHlwZSBCbG9ja0NvbHVtbk92ZXJyaWRlID0gUGFydGlhbDxPbWl0PENvbHVtbk92ZXJyaWRlLCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0ZXhwb3J0U2V0dGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgbnVsbDtcblx0X3R5cGU6IFwiQ29sdW1uT3ZlcnJpZGVcIjtcbn07XG50eXBlIEJsb2NrTWFzc0VkaXQgPSBQYXJ0aWFsPE9taXQ8TWFzc0VkaXQsIFwiY3VzdG9tQ29udGVudFwiPj4gJiB7IGN1c3RvbUNvbnRlbnQ/OiBzdHJpbmc7IGtleTogc3RyaW5nIH07XG50eXBlIEJsb2NrUXVpY2tWYXJpYW50U2VsZWN0aW9uID0gUHJvcGVydGllc09mPFF1aWNrVmFyaWFudFNlbGVjdGlvbj4gJiB7IGtleTogc3RyaW5nIH07XG50eXBlIEJsb2NrQWN0aW9uID0gUHJvcGVydGllc09mPE9taXQ8QWN0aW9uLCBcInByZXNzXCI+PiAmIHsgX3R5cGU6IFwiQWN0aW9uXCI7IHByZXNzOiBzdHJpbmcgfTtcbnR5cGUgQmxvY2tBY3Rpb25Hcm91cCA9IFByb3BlcnRpZXNPZjxPbWl0PEFjdGlvbkdyb3VwLCBcImFjdGlvbnNcIj4+ICYge1xuXHRfdHlwZTogXCJBY3Rpb25Hcm91cFwiO1xuXHRhY3Rpb25zOiAoQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlKVtdO1xufTtcbnR5cGUgQmxvY2tBY3Rpb25PdmVycmlkZSA9IFByb3BlcnRpZXNPZjxBY3Rpb25PdmVycmlkZT4gJiB7IF90eXBlOiBcIkFjdGlvbk92ZXJyaWRlXCIgfTtcbnR5cGUgQmxvY2tBY3Rpb25Hcm91cE92ZXJyaWRlID0gUHJvcGVydGllc09mPE9taXQ8QWN0aW9uR3JvdXBPdmVycmlkZSwgXCJhY3Rpb25zXCI+PiAmIHtcblx0X3R5cGU6IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiO1xuXHRhY3Rpb25zOiAoQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlKVtdO1xufTtcbnR5cGUgQ29tbW9uQ3VzdG9tQWN0aW9uID0ge1xuXHRrZXk6IHN0cmluZztcblx0ZW5hYmxlZDogYm9vbGVhbjtcblx0dmlzaWJsZTogYm9vbGVhbjtcblx0Y29tbWFuZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRlbmFibGVPblNlbGVjdDogXCJzaW5nbGVcIiB8IFwibXVsdGlcIiB8IHVuZGVmaW5lZDtcblx0cGxhY2VtZW50OiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgdW5kZWZpbmVkO1xuXHRhbmNob3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0aXNBSU9wZXJhdGlvbj86IGJvb2xlYW47XG5cdHByaW9yaXR5PzogT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHk7XG5cdGdyb3VwPzogbnVtYmVyO1xuXHRfdHlwZTogXCJBY3Rpb25cIiB8IFwiQWN0aW9uT3ZlcnJpZGVcIjtcbn07XG5mdW5jdGlvbiBzYWZlR2V0QXR0cmlidXRlKG5vZGU6IEVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBub2RlLmdldEF0dHJpYnV0ZShuYW1lKSA/PyB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgZHluYW1pYyBCb29sZWFuIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZS5cbiAqIEBwYXJhbSBub2RlIFRoZSBub2RlIHRvIGdldCB0aGUgYXR0cmlidXRlIGZyb21cbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIFRoZSBCb29sZWFuIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGVcbiAqL1xuZnVuY3Rpb24gZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKG5vZGU6IEVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRjb25zdCBlbmFibGVtZW50QXR0ciA9IG5vZGUuZ2V0QXR0cmlidXRlKG5hbWUpO1xuXHRzd2l0Y2ggKGVuYWJsZW1lbnRBdHRyKSB7XG5cdFx0Y2FzZSBudWxsOlxuXHRcdGNhc2UgXCJ0cnVlXCI6XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRjYXNlIFwiZmFsc2VcIjpcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIGVuYWJsZW1lbnRBdHRyIGFzIHVua25vd24gYXMgYm9vbGVhbjsgLy8gVG8gbWFuYWdlIGJpbmRpbmcgZXhwcmVzc2lvbnNcblx0fVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgd2l0aCB0aGUgdmFsdWUgb2YgdW5kZWZpbmVkIGZyb20gdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byByZW1vdmUgdGhlIHVuZGVmaW5lZCBwcm9wZXJ0aWVzIGZyb21cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG5cdE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0aWYgKG9ialtrZXldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRlbGV0ZSBvYmpba2V5XTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGFjdGlvbiBwcm9wZXJ0aWVzIGZyb20gYW4gWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIG5vZGVcbiAqIEByZXR1cm5zIFRoZSBhY3Rpb24gcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBwYXJzZUFjdGlvbkZyb21FbGVtZW50KGFjdGlvbk5vZGU6IEVsZW1lbnQpOiBCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUge1xuXHRjb25zdCBjb21tb25Qcm9wZXJ0aWVzID0gZ2V0Q29tbW9uQ3VzdG9tQWN0aW9uUHJvcGVydGllcyhhY3Rpb25Ob2RlKTtcblx0aWYgKGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvblwiKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRleHQ6IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwidGV4dFwiKSA/PyBjb21tb25Qcm9wZXJ0aWVzLmtleSxcblx0XHRcdHByZXNzOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicHJlc3NcIiksXG5cdFx0XHRyZXF1aXJlc1NlbGVjdGlvbjogYWN0aW9uTm9kZS5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlc1NlbGVjdGlvblwiKSA9PT0gXCJ0cnVlXCIsXG5cdFx0XHQuLi5jb21tb25Qcm9wZXJ0aWVzXG5cdFx0fSBhcyBCbG9ja0FjdGlvbjtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdGVuYWJsZUF1dG9TY3JvbGw6IGdldER5bmFtaWNCb29sZWFuVmFsdWVPZkF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImVuYWJsZUF1dG9TY3JvbGxcIiksXG5cdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIiksXG5cdFx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uXCIpLFxuXHRcdC4uLmNvbW1vblByb3BlcnRpZXNcblx0fSBhcyBCbG9ja0FjdGlvbk92ZXJyaWRlO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29tbW9uIGN1c3RvbSBwcm9wZXJ0aWVzIG9mIHRoZSBhY3Rpb24gZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIGdyb3VwIG5vZGVcbiAqIEByZXR1cm5zIFRoZSBjb2x1bW4gcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gZ2V0Q29tbW9uQ3VzdG9tQWN0aW9uUHJvcGVydGllcyhhY3Rpb25Ob2RlOiBFbGVtZW50KTogQ29tbW9uQ3VzdG9tQWN0aW9uIHtcblx0Y29uc3QgYWN0aW9uOiBDb21tb25DdXN0b21BY3Rpb24gPSB7XG5cdFx0a2V5OiBhY3Rpb25Ob2RlLmdldEF0dHJpYnV0ZShcImtleVwiKSEucmVwbGFjZShcIklubGluZVhNTF9cIiwgXCJcIiksXG5cdFx0ZW5hYmxlZDogZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZW5hYmxlZFwiKSxcblx0XHR2aXNpYmxlOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJ2aXNpYmxlXCIpLFxuXHRcdGNvbW1hbmQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJjb21tYW5kXCIpLFxuXHRcdGVuYWJsZU9uU2VsZWN0OiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZW5hYmxlT25TZWxlY3RcIikgYXMgXCJzaW5nbGVcIiB8IFwibXVsdGlcIiB8IHVuZGVmaW5lZCxcblx0XHRwbGFjZW1lbnQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJwbGFjZW1lbnRcIikgYXMgXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZCxcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJhbmNob3JcIiksXG5cdFx0X3R5cGU6IGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvblwiID8gXCJBY3Rpb25cIiA6IFwiQWN0aW9uT3ZlcnJpZGVcIlxuXHR9O1xuXHRpZiAoYWN0aW9uTm9kZT8uZ2V0QXR0cmlidXRlKFwiaXNBSU9wZXJhdGlvblwiKSkge1xuXHRcdGFjdGlvbltcImlzQUlPcGVyYXRpb25cIl0gPSBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJpc0FJT3BlcmF0aW9uXCIpO1xuXHR9XG5cblx0aWYgKGFjdGlvbk5vZGU/LmdldEF0dHJpYnV0ZShcInByaW9yaXR5XCIpKSB7XG5cdFx0YWN0aW9uW1wicHJpb3JpdHlcIl0gPSBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicHJpb3JpdHlcIikgYXMgT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHk7XG5cdH1cblxuXHRpZiAoYWN0aW9uTm9kZT8uZ2V0QXR0cmlidXRlKFwiZ3JvdXBcIikpIHtcblx0XHRhY3Rpb25bXCJncm91cFwiXSA9IE51bWJlci5wYXJzZUludChzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZ3JvdXBcIikgPz8gXCJcIiwgMTApO1xuXHR9XG5cblx0cmV0dXJuIGFjdGlvbjtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGFjdGlvbnMgYW5kIGFjdGlvbiBncm91cHMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZVxuICogQHBhcmFtIGFnZ3JlZ2F0aW9uT2JqZWN0XG4gKiBAcmV0dXJucyBUaGUgYWN0aW9uIG9yIGFjdGlvbiBncm91cCBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBzZXRDdXN0b21BY3Rpb25Hcm91cFByb3BlcnRpZXMoXG5cdGFjdGlvbk5vZGU6IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBBY3Rpb24gfCBBY3Rpb25PdmVycmlkZSB8IEFjdGlvbkdyb3VwIHwgQWN0aW9uR3JvdXBPdmVycmlkZVxuKTogQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbkdyb3VwIHwgQmxvY2tBY3Rpb25PdmVycmlkZSB8IEJsb2NrQWN0aW9uR3JvdXBPdmVycmlkZSB7XG5cdGlmIChbXCJBY3Rpb25Hcm91cFwiLCBcIkFjdGlvbkdyb3VwT3ZlcnJpZGVcIl0uaW5jbHVkZXMoYWN0aW9uTm9kZS5sb2NhbE5hbWUpKSB7XG5cdFx0Y29uc3QgY29tbW9uUHJvcGVydGllcyA9IGdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMoYWN0aW9uTm9kZSwgYWdncmVnYXRpb25PYmplY3QgYXMgQWN0aW9uR3JvdXAgfCBBY3Rpb25Hcm91cE92ZXJyaWRlKTtcblx0XHRpZiAoYWN0aW9uTm9kZS5sb2NhbE5hbWUgPT09IFwiQWN0aW9uR3JvdXBcIikge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dGV4dDogYWN0aW9uTm9kZS5nZXRBdHRyaWJ1dGUoXCJ0ZXh0XCIpID8/IGNvbW1vblByb3BlcnRpZXMua2V5LFxuXHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZGVmYXVsdEFjdGlvblwiKSxcblx0XHRcdFx0Li4uY29tbW9uUHJvcGVydGllc1xuXHRcdFx0fSBhcyBCbG9ja0FjdGlvbkdyb3VwO1xuXHRcdH1cblx0XHRyZXR1cm4gY29tbW9uUHJvcGVydGllcyBhcyBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGU7XG5cdH1cblxuXHQvL0FjdGlvbiBvciBBY3Rpb25PdmVycmlkZVxuXHRyZXR1cm4gcGFyc2VBY3Rpb25Gcm9tRWxlbWVudChhY3Rpb25Ob2RlKTtcbn1cblxuY29uc3Qgc2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGVsZW1lbnQ6IEVsZW1lbnQpOiBCbG9ja01hc3NFZGl0IHtcblx0cmV0dXJuIHtcblx0XHRrZXk6IFwiY29uZmlndXJhdGlvblwiLFxuXHRcdGN1c3RvbUNvbnRlbnQ6IGVsZW1lbnQuY2hpbGRyZW5bMF0/Lm91dGVySFRNTCxcblx0XHR2aXNpYmxlRmllbGRzOiBlbGVtZW50LmdldEF0dHJpYnV0ZShcInZpc2libGVGaWVsZHNcIik/LnNwbGl0KFwiLFwiKSxcblx0XHRpZ25vcmVkRmllbGRzOiBlbGVtZW50LmdldEF0dHJpYnV0ZShcImlnbm9yZWRGaWVsZHNcIik/LnNwbGl0KFwiLFwiKSxcblx0XHRvcGVyYXRpb25Hcm91cGluZ01vZGU6IChlbGVtZW50LmdldEF0dHJpYnV0ZShcIm9wZXJhdGlvbkdyb3VwaW5nTW9kZVwiKSA/PyB1bmRlZmluZWQpIGFzIFwiQ2hhbmdlU2V0XCIgfCBcIklzb2xhdGVkXCIgfCB1bmRlZmluZWRcblx0fTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBxdWlja1ZhcmlhbnRTZWxlY3Rpb24gZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gcXVpY2tWYXJpYW50U2VsZWN0aW9uIFRoZSBYTUwgbm9kZSBjb250YWluaW5nIHRoZSBxdWlja1ZhcmlhbnRTZWxlY3Rpb25cbiAqIEByZXR1cm5zIFRoZSBRdWlja1ZhcmlhbnRTZWxlY3Rpb24gZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmNvbnN0IHNldFF1aWNrVmFyaWFudFNlbGVjdGlvbiA9IGZ1bmN0aW9uIChxdWlja1ZhcmlhbnRTZWxlY3Rpb246IEVsZW1lbnQpOiBCbG9ja1F1aWNrVmFyaWFudFNlbGVjdGlvbiB7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBcInF1aWNrRmlsdGVyc1wiLFxuXHRcdHBhdGhzOiBxdWlja1ZhcmlhbnRTZWxlY3Rpb24uZ2V0QXR0cmlidXRlKFwicGF0aHNcIik/LnNwbGl0KFwiLFwiKSxcblx0XHRzaG93Q291bnRzOiBxdWlja1ZhcmlhbnRTZWxlY3Rpb24uZ2V0QXR0cmlidXRlKFwic2hvd0NvdW50c1wiKSA9PT0gXCJ0cnVlXCJcblx0fTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb21tb24gY3VzdG9tIHByb3BlcnRpZXMgb2YgdGhlIGFjdGlvbiBncm91cHMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIGdyb3VwIG5vZGVcbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdCBUaGUgYWdncmVnYXRpb24gb2JqZWN0XG4gKiBAcmV0dXJucyBUaGUgY29sdW1uIHByb3BlcnRpZXMgZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmZ1bmN0aW9uIGdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMoXG5cdGFjdGlvbk5vZGU6IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBBY3Rpb25Hcm91cCB8IEFjdGlvbkdyb3VwT3ZlcnJpZGVcbik6IHtcblx0a2V5OiBzdHJpbmc7XG5cdGFjdGlvbnM6IChCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUpW107XG5cdGFuY2hvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRwbGFjZW1lbnQ6IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQ7XG5cdF90eXBlOiBcIkFjdGlvbkdyb3VwXCIgfCBcIkFjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbn0ge1xuXHRjb25zdCBhY3Rpb25zSW5NZW51ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGFjdGlvbk5vZGUuY2hpbGRyZW4pLm1hcCgoc3ViQWN0aW9uOiBFbGVtZW50KSA9PiB7XG5cdFx0cmV0dXJuIHBhcnNlQWN0aW9uRnJvbUVsZW1lbnQoc3ViQWN0aW9uKTtcblx0fSk7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSA9IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0YWN0aW9uTm9kZS5zZXRBdHRyaWJ1dGUoXCJrZXlcIiwgYWdncmVnYXRpb25PYmplY3Qua2V5KTtcblx0cmV0dXJuIHtcblx0XHRrZXk6IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSxcblx0XHRhY3Rpb25zOiBhY3Rpb25zSW5NZW51LFxuXHRcdGFuY2hvcjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImFuY2hvclwiKSxcblx0XHRwbGFjZW1lbnQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJwbGFjZW1lbnRcIikgYXMgXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZCxcblx0XHRfdHlwZTogYWN0aW9uTm9kZS5sb2NhbE5hbWUgPT09IFwiQWN0aW9uR3JvdXBcIiA/IFwiQWN0aW9uR3JvdXBcIiA6IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiXG5cdH07XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb21tb24gY3VzdG9tIHByb3BlcnRpZXMgb2YgdGhlIGNvbHVtbnMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gY2hpbGRDb2x1bW4gVGhlIGNvbHVtbiBub2RlXG4gKiBAcGFyYW0gYWdncmVnYXRpb25PYmplY3QgVGhlIGFnZ3JlZ2F0aW9uIG9iamVjdFxuICogQHJldHVybnMgVGhlIGNvbHVtbiBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBnZXRDb21tb25DdXN0b21Db2x1bW5zUHJvcGVydGllcyhcblx0Y2hpbGRDb2x1bW46IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBCbG9ja0NvbHVtbiB8IEJsb2NrQ29sdW1uT3ZlcnJpZGVcbik6IHtcblx0a2V5OiBzdHJpbmc7XG5cdHdpZHRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHRpbXBvcnRhbmNlOiBJbXBvcnRhbmNlIHwgdW5kZWZpbmVkO1xuXHRob3Jpem9udGFsQWxpZ246IEhvcml6b250YWxBbGlnbiB8IHVuZGVmaW5lZDtcblx0YXZhaWxhYmlsaXR5OiBBdmFpbGFiaWxpdHlUeXBlIHwgdW5kZWZpbmVkO1xuXHRwbGFjZW1lbnQ6IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQ7XG5cdGFuY2hvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRleHBvcnRTZXR0aW5nczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgb2JqZWN0PiB8IHVuZGVmaW5lZCB8IG51bGw7XG5cdGRpc2FibGVFeHBvcnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59IHtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5IS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0Y2hpbGRDb2x1bW4uc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBhZ2dyZWdhdGlvbk9iamVjdC5rZXksXG5cdFx0d2lkdGg6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwid2lkdGhcIiksXG5cdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpXG5cdFx0XHQ/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpID09PSBcInRydWVcIlxuXHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0aW1wb3J0YW5jZTogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJpbXBvcnRhbmNlXCIpIGFzIEltcG9ydGFuY2UgfCB1bmRlZmluZWQsXG5cdFx0aG9yaXpvbnRhbEFsaWduOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImhvcml6b250YWxBbGlnblwiKSBhcyBIb3Jpem9udGFsQWxpZ24gfCB1bmRlZmluZWQsXG5cdFx0YXZhaWxhYmlsaXR5OiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImF2YWlsYWJpbGl0eVwiKSBhcyBBdmFpbGFiaWxpdHlUeXBlIHwgdW5kZWZpbmVkLFxuXHRcdHBsYWNlbWVudDogKHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicGxhY2VtZW50XCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25QbGFjZW1lbnRcIikpIGFzXG5cdFx0XHR8IFwiQmVmb3JlXCJcblx0XHRcdHwgXCJBZnRlclwiXG5cdFx0XHR8IHVuZGVmaW5lZCwgLy8gcG9zaXRpb25QbGFjZW1lbnQgaXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwiYW5jaG9yXCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25BbmNob3JcIiksIC8vIHBvc2l0aW9uQW5jaG9yIGlzIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cdFx0ZGlzYWJsZUV4cG9ydDogY2hpbGRDb2x1bW4uZ2V0QXR0cmlidXRlKFwiZGlzYWJsZUV4cG9ydFwiKSA/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcImRpc2FibGVFeHBvcnRcIikgPT09IFwidHJ1ZVwiIDogdW5kZWZpbmVkLFxuXHRcdGV4cG9ydFNldHRpbmdzOiBwYXJzZUV4cG9ydFNldHRpbmdzKGNoaWxkQ29sdW1uKVxuXHR9O1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY3VzdG9tIGNvbHVtbnMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gY2hpbGRDb2x1bW5cbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdFxuICogQHJldHVybnMgVGhlIGNvbHVtbiBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBzZXRDdXN0b21Db2x1bW5Qcm9wZXJ0aWVzKFxuXHRjaGlsZENvbHVtbjogRWxlbWVudCxcblx0YWdncmVnYXRpb25PYmplY3Q6IEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZVxuKTogQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlIHtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5IS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0Y2hpbGRDb2x1bW4uc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdGlmIChjaGlsZENvbHVtbi5sb2NhbE5hbWUgPT09IFwiQ29sdW1uXCIpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4uZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMoY2hpbGRDb2x1bW4sIGFnZ3JlZ2F0aW9uT2JqZWN0KSxcblx0XHRcdGhlYWRlcjogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJoZWFkZXJcIiksXG5cdFx0XHR0b29sdGlwOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcInRvb2x0aXBcIiksXG5cdFx0XHR0ZW1wbGF0ZTogZ2V0Q29sdW1uVGVtcGxhdGUoY2hpbGRDb2x1bW4pLFxuXHRcdFx0cHJvcGVydGllczogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJwcm9wZXJ0aWVzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0XHRyZXF1aXJlZDogY2hpbGRDb2x1bW4uZ2V0QXR0cmlidXRlKFwicmVxdWlyZWRcIikgPyBjaGlsZENvbHVtbi5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKSA9PT0gXCJ0cnVlXCIgOiB1bmRlZmluZWQsXG5cdFx0XHRfdHlwZTogY2hpbGRDb2x1bW4ubG9jYWxOYW1lXG5cdFx0fTtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdC4uLmdldENvbW1vbkN1c3RvbUNvbHVtbnNQcm9wZXJ0aWVzKGNoaWxkQ29sdW1uLCBhZ2dyZWdhdGlvbk9iamVjdCksXG5cdFx0X3R5cGU6IFwiQ29sdW1uT3ZlcnJpZGVcIlxuXHR9O1xufVxuXG5jb25zdCBwYXJzZUV4cG9ydFNldHRpbmdzID0gKGVsZW1lbnQ6IEVsZW1lbnQpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3QgZXhwb3J0U2V0dGluZ3MgPSBwYXJzZVNpbXBsZUFnZ3JlZ2F0aW9uKGVsZW1lbnQsIFwiZXhwb3J0U2V0dGluZ3NcIik7XG5cdGlmICghZXhwb3J0U2V0dGluZ3MpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdHJldHVybiB7XG5cdFx0dGVtcGxhdGU6IGV4cG9ydFNldHRpbmdzLnRlbXBsYXRlLFxuXHRcdHdyYXA6IGV4cG9ydFNldHRpbmdzLndyYXAgPT09IFwidHJ1ZVwiLFxuXHRcdHR5cGU6IGV4cG9ydFNldHRpbmdzLnR5cGUsXG5cdFx0cHJvcGVydHk6IGV4cG9ydFNldHRpbmdzLnByb3BlcnR5Py5zcGxpdChcIixcIiksXG5cdFx0d2lkdGg6IGV4cG9ydFNldHRpbmdzLndpZHRoLFxuXHRcdHRleHRBbGlnbjogZXhwb3J0U2V0dGluZ3MudGV4dEFsaWduLFxuXHRcdGxhYmVsOiBleHBvcnRTZXR0aW5ncy5sYWJlbCxcblx0XHR0cnVlVmFsdWU6IGV4cG9ydFNldHRpbmdzLnRydWVWYWx1ZSxcblx0XHRmYWxzZVZhbHVlOiBleHBvcnRTZXR0aW5ncy5mYWxzZVZhbHVlLFxuXHRcdHZhbHVlTWFwOiBleHBvcnRTZXR0aW5ncy52YWx1ZU1hcFxuXHR9O1xufTtcblxuY29uc3QgZ2V0Q29sdW1uVGVtcGxhdGUgPSAoZWxlbWVudDogRWxlbWVudCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGxldCBhZ2dyZWdhdGlvbiA9IGdldEFnZ3JlZ2F0aW9uKGVsZW1lbnQsIFwidGVtcGxhdGVcIik7XG5cdGlmICghYWdncmVnYXRpb24pIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGNoaWxkID0gZWxlbWVudC5jaGlsZHJlbi5pdGVtKGkpO1xuXHRcdFx0aWYgKGNoaWxkICYmICFjaGlsZC5ub2RlTmFtZS5lbmRzV2l0aChcImV4cG9ydFNldHRpbmdzXCIpKSB7XG5cdFx0XHRcdGFnZ3JlZ2F0aW9uID0gY2hpbGQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gYWdncmVnYXRpb24/Lm91dGVySFRNTCA/PyBlbGVtZW50LmdldEF0dHJpYnV0ZShcInRlbXBsYXRlXCIpID8/IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IHBhcnNlU2ltcGxlQWdncmVnYXRpb24gPSAoZWxlbWVudDogRWxlbWVudCwgYWdncmVnYXRpb25OYW1lOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3QgYWdncmVnYXRpb24gPSBnZXRBZ2dyZWdhdGlvbihlbGVtZW50LCBhZ2dyZWdhdGlvbk5hbWUpO1xuXHRjb25zdCBjaGlsZCA9IGFnZ3JlZ2F0aW9uPy5jaGlsZHJlblswXTtcblx0Y29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cdGlmICghY2hpbGQpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdGZvciAoY29uc3QgbmFtZSBvZiBjaGlsZC5nZXRBdHRyaWJ1dGVOYW1lcygpKSB7XG5cdFx0Y29uc3QgdmFsdWUgPSBjaGlsZC5nZXRBdHRyaWJ1dGUobmFtZSk7XG5cdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRyZXN1bHRbbmFtZV0gPSB2YWx1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IGdldEFnZ3JlZ2F0aW9uID0gKGVsZW1lbnQ6IEVsZW1lbnQsIGFnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nKTogRWxlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG5cdGxldCBhZ2dyZWdhdGlvbjogRWxlbWVudCB8IHVuZGVmaW5lZDtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgY2hpbGQgPSBlbGVtZW50LmNoaWxkcmVuLml0ZW0oaSk7XG5cdFx0aWYgKGNoaWxkPy5ub2RlTmFtZS5lbmRzV2l0aChhZ2dyZWdhdGlvbk5hbWUpID09PSB0cnVlKSB7XG5cdFx0XHRhZ2dyZWdhdGlvbiA9IGNoaWxkO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBhZ2dyZWdhdGlvbjtcbn07XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgYSB0YWJsZSBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBVc3VhbGx5LCBhIExpbmVJdGVtLCBQcmVzZW50YXRpb25WYXJpYW50LCBvciBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50IGFubm90YXRpb24gaXMgZXhwZWN0ZWQsIGJ1dCB0aGUgVGFibGUgYnVpbGRpbmcgYmxvY2sgY2FuIGFsc28gYmUgdXNlZCB0byBkaXNwbGF5IGFuIEVudGl0eVNldC5cbiAqIDxicj5cbiAqIElmIGEgUHJlc2VudGF0aW9uVmFyaWFudCBpcyBzcGVjaWZpZWQsIHRoZW4gaXQgbXVzdCBoYXZlIFVJLkxpbmVJdGVtIGFzIHRoZSBmaXJzdCBwcm9wZXJ0eSBvZiB0aGUgVmlzdWFsaXphdGlvbnMuXG4gKiA8YnI+XG4gKiBJZiBhIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgaXMgc3BlY2lmaWVkLCB0aGVuIGl0IG11c3QgY29udGFpbiBhIHZhbGlkIFByZXNlbnRhdGlvblZhcmlhbnQgdGhhdCBhbHNvIGhhcyBhIFVJLkxpbmVJdGVtIGFzIHRoZSBmaXJzdCBwcm9wZXJ0eSBvZiB0aGUgVmlzdWFsaXphdGlvbnMuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOlRhYmxlIGlkPVwiTXlUYWJsZVwiIG1ldGFQYXRoPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIgLyZndDtcbiAqIDwvcHJlPlxuICoge0BsaW5rIGRlbW86c2FwL2ZlL2NvcmUvZnBtRXhwbG9yZXIvaW5kZXguaHRtbCMvYnVpbGRpbmdCbG9ja3MvdGFibGUvdGFibGVEZWZhdWx0IE92ZXJ2aWV3IG9mIFRhYmxlIEJ1aWxkaW5nIEJsb2Nrc31cbiAqIEBtaXhlcyBzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQVBJXG4gKiBAYXVnbWVudHMgc2FwLmZlLm1hY3Jvcy5NYWNyb0FQSVxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lQnVpbGRpbmdCbG9jayh7XG5cdG5hbWU6IFwiVGFibGVcIixcblx0bmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIixcblx0cHVibGljTmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3NcIixcblx0cmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuVGFibGVBUElcIl1cbn0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYWJsZUJsb2NrIGV4dGVuZHMgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIHtcblx0Ly8gICoqKioqKioqKioqKioqKiBQdWJsaWMgJiBSZXF1aXJlZCBBdHRyaWJ1dGVzICoqKioqKioqKioqKioqKioqKioqXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSByZWxhdGl2ZSBwYXRoIHRvIGEgTGluZUl0ZW0sIFByZXNlbnRhdGlvblZhcmlhbnQgb3IgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCBpbiB0aGUgbWV0YW1vZGVsLCBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0UGF0aC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0dW5kZXJseWluZ1R5cGU6IFwic3RyaW5nXCIsXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiXSxcblx0XHRleHBlY3RlZEFubm90YXRpb25zOiBbXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnRcIixcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFwiXG5cdFx0XSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KVxuXHRtZXRhUGF0aCE6IENvbnRleHQ7XG5cblx0Ly8gICoqKioqKioqKioqKioqKiBQdWJsaWMgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHQvKipcblx0ICogQW4gZXhwcmVzc2lvbiB0aGF0IGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgJ2J1c3knIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlLCBiaW5kYWJsZTogdHJ1ZSB9KVxuXHRidXN5PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcGF0aCBvZiB0aGUgY29udGV4dCB1c2VkIGluIHRoZSBjdXJyZW50IHBhZ2Ugb3IgYmxvY2suXG5cdCAqIFRoaXMgc2V0dGluZyBpcyBkZWZpbmVkIGJ5IHRoZSBmcmFtZXdvcmsuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdHVuZGVybHlpbmdUeXBlOiBcInN0cmluZ1wiLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0Y29udGV4dFBhdGg/OiBDb250ZXh0O1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRhYmxlIGFkYXB0cyB0byB0aGUgY29uZGVuc2VkIGxheW91dC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHB1YmxpYyByZWFkb25seSBjb25kZW5zZWRUYWJsZUxheW91dD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHRhYmxlIGNhbiBiZSBvcGVuZWQgaW4gZnVsbHNjcmVlbiBtb2RlIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHB1YmxpYyByZWFkb25seSBlbmFibGVGdWxsU2NyZWVuPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGRhdGEgY29waWVkIHRvIHRoZSBjb21wdXRlZCBjb2x1bW5zIGlzIHNlbnQgdG8gdGhlIGJhY2sgZW5kLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXM/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIENsZWFyIEFsbCBidXR0b24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXHQgKiBUbyBlbmFibGUgdGhlIENsZWFyIEFsbCBidXR0b24gYnkgZGVmYXVsdCwgeW91IG11c3Qgc2V0IHRoaXMgcHJvcGVydHkgdG8gZmFsc2UuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGVuYWJsZVNlbGVjdEFsbD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBleHBvcnQgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdGFibGUgaXMgZW5hYmxlZCBvciBub3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgZW5hYmxlRXhwb3J0PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQ29uZmlndXJlcyB0aGUgZmlsZSBuYW1lIG9mIGV4cG9ydGVkIHRhYmxlLlxuXHQgKiBJdCdzIGxpbWl0ZWQgdG8gMzEgY2hhcmFjdGVycy4gSWYgdGhlIG5hbWUgaXMgbG9uZ2VyLCBpdCB3aWxsIGJlIHRydW5jYXRlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGV4cG9ydEZpbGVOYW1lPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb25maWd1cmVzIHRoZSBzaGVldCBuYW1lIG9mIGV4cG9ydGVkIHRhYmxlLlxuXHQgKiBJdCdzIGxpbWl0ZWQgdG8gMzEgY2hhcmFjdGVycy4gSWYgdGhlIG5hbWUgaXMgbG9uZ2VyLCBpdCB3aWxsIGJlIHRydW5jYXRlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGV4cG9ydFNoZWV0TmFtZT86IHN0cmluZztcblxuXHQvKipcblx0ICogTWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiByZWNvcmRzIHRvIGJlIGV4cG9ydGVkIGluIG9uZSByZXF1ZXN0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGV4cG9ydFJlcXVlc3RTaXplPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiByb3dzIHRoYXQgY2FuIGJlIHNlbGVjdGVkIGF0IG9uY2UgaW4gdGhlIHRhYmxlLlxuXHQgKiBUaGlzIHByb3BlcnR5IGRvZXMgbm90IGFwcGx5IHRvIHJlc3BvbnNpdmUgdGFibGVzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkxpbWl0PzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBOdW1iZXIgb2YgY29sdW1ucyB0aGF0IGFyZSBmaXhlZCBvbiB0aGUgbGVmdC4gT25seSBjb2x1bW5zIHdoaWNoIGFyZSBub3QgZml4ZWQgY2FuIGJlIHNjcm9sbGVkIGhvcml6b250YWxseS5cblx0ICpcblx0ICogVGhpcyBwcm9wZXJ0eSBpcyBub3QgcmVsZXZhbnQgZm9yIHJlc3BvbnNpdmUgdGFibGVzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZnJvemVuQ29sdW1uQ291bnQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgd2hldGhlciB0aGUgbnVtYmVyIG9mIGZpeGVkIGNvbHVtbnMgY2FuIGJlIGNvbmZpZ3VyZWQgaW4gdGhlIENvbHVtbiBTZXR0aW5ncyBkaWFsb2cuXG5cdCAqXG5cdCAqIFRoaXMgcHJvcGVydHkgZG9lc24ndCBhcHBseSBmb3IgcmVzcG9uc2l2ZSB0YWJsZXNcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZGlzYWJsZUNvbHVtbkZyZWV6ZT86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEluZGljYXRlcyBpZiB0aGUgY29sdW1uIGhlYWRlciBzaG91bGQgYmUgYSBwYXJ0IG9mIHRoZSB3aWR0aCBjYWxjdWxhdGlvbi5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgd2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIGhvdyB0aGUgdGFibGUgaGFuZGxlcyB0aGUgdmlzaWJsZSByb3dzLiBEb2VzIG5vdCBhcHBseSB0byBSZXNwb25zaXZlIHRhYmxlcy5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBBdXRvYCwgYEZpeGVkYCwgYW5kIGBJbnRlcmFjdGl2ZWAuPGJyLz5cblx0ICogLSBJZiBzZXQgdG8gYEZpeGVkYCwgdGhlIHRhYmxlIGFsd2F5cyBoYXMgYXMgbWFueSByb3dzIGFzIGRlZmluZWQgaW4gdGhlIHJvd0NvdW50IHByb3BlcnR5Ljxici8+XG5cdCAqIC0gSWYgc2V0IHRvIGBBdXRvYCwgdGhlIG51bWJlciBvZiByb3dzIGlzIGNoYW5nZWQgYnkgdGhlIHRhYmxlIGF1dG9tYXRpY2FsbHkuIEl0IHdpbGwgdGhlbiBhZGp1c3QgaXRzIHJvdyBjb3VudCB0byB0aGUgc3BhY2UgaXQgaXMgYWxsb3dlZCB0byBjb3ZlciAobGltaXRlZCBieSB0aGUgc3Vycm91bmRpbmcgY29udGFpbmVyKSBidXQgaXQgY2Fubm90IGhhdmUgbGVzcyB0aGFuIGRlZmluZWQgaW4gdGhlIGByb3dDb3VudGAgcHJvcGVydHkuPGJyLz5cblx0ICogLSBJZiBzZXQgdG8gYEludGVyYWN0aXZlYCB0aGUgdGFibGUgY2FuIGhhdmUgYXMgbWFueSByb3dzIGFzIGRlZmluZWQgaW4gdGhlIHJvd0NvdW50IHByb3BlcnR5LiBUaGlzIG51bWJlciBvZiByb3dzIGNhbiBiZSBtb2RpZmllZCBieSBkcmFnZ2luZyB0aGUgcmVzaXplciBhdmFpbGFibGUgaW4gdGhpcyBtb2RlLjxici8+XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkF1dG9cIiwgXCJGaXhlZFwiLCBcIkludGVyYWN0aXZlXCJdLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHJvd0NvdW50TW9kZT86IHN0cmluZztcblxuXHQvKipcblx0ICogTnVtYmVyIG9mIHJvd3MgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB0YWJsZS4gRG9lcyBub3QgYXBwbHkgdG8gcmVzcG9uc2l2ZSB0YWJsZXMuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgcm93Q291bnQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBwYXN0ZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0YWJsZSBpcyBlbmFibGVkIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlUGFzdGU/OiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBjb3B5IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlIGlzIGRpc2FibGVkIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGRpc2FibGVDb3B5VG9DbGlwYm9hcmQ/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIGhvdyBtYW55IGFkZGl0aW9uYWwgZGF0YSByZWNvcmRzIGFyZSByZXF1ZXN0ZWQgZnJvbSB0aGUgYmFjay1lbmQgc3lzdGVtIHdoZW4gdGhlIHVzZXIgc2Nyb2xscyB2ZXJ0aWNhbGx5IGluIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0c2Nyb2xsVGhyZXNob2xkPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBudW1iZXIgb2YgcmVjb3JkcyB0byBiZSBpbml0aWFsbHkgcmVxdWVzdGVkIGZyb20gdGhlIGJhY2sgZW5kLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHR0aHJlc2hvbGQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIGxheW91dCBvcHRpb25zIG9mIHRoZSB0YWJsZSBwb3BpbnMuIE9ubHkgYXBwbGllcyB0byByZXNwb25zaXZlIHRhYmxlcy5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBCbG9ja2AsIGBHcmlkTGFyZ2VgLCBhbmQgYEdyaWRTbWFsbGAuPGJyLz5cblx0ICogLSBgQmxvY2tgOiBTZXRzIGEgYmxvY2sgbGF5b3V0IGZvciByZW5kZXJpbmcgdGhlIHRhYmxlIHBvcGlucy4gVGhlIGVsZW1lbnRzIGluc2lkZSB0aGUgcG9waW4gY29udGFpbmVyIGFyZSByZW5kZXJlZCBvbmUgYmVsb3cgdGhlIG90aGVyLjxici8+XG5cdCAqIC0gYEdyaWRMYXJnZWA6IFNldHMgYSBncmlkIGxheW91dCBmb3IgcmVuZGVyaW5nIHRoZSB0YWJsZSBwb3BpbnMuIFRoZSBncmlkIHdpZHRoIGZvciBlYWNoIHRhYmxlIHBvcGluIGlzIGNvbXBhcmF0aXZlbHkgbGFyZ2VyIHRoYW4gR3JpZFNtYWxsLCBzbyB0aGlzIGxheW91dCBhbGxvd3MgbGVzcyBjb250ZW50IHRvIGJlIHJlbmRlcmVkIGluIGEgc2luZ2xlIHBvcGluIHJvdy48YnIvPlxuXHQgKiAtIGBHcmlkU21hbGxgOiBTZXRzIGEgZ3JpZCBsYXlvdXQgZm9yIHJlbmRlcmluZyB0aGUgdGFibGUgcG9waW5zLiBUaGUgZ3JpZCB3aWR0aCBmb3IgZWFjaCB0YWJsZSBwb3BpbiBpcyBzbWFsbCwgc28gdGhpcyBsYXlvdXQgYWxsb3dzIG1vcmUgY29udGVudCB0byBiZSByZW5kZXJlZCBpbiBhIHNpbmdsZSBwb3BpbiByb3cuPGJyLz5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgYWxsb3dlZFZhbHVlczogW1wiQmxvY2tcIiwgXCJHcmlkTGFyZ2VcIiwgXCJHcmlkU21hbGxcIl0sIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgcG9waW5MYXlvdXQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBGaWx0ZXJCYXIgYnVpbGRpbmcgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGlzQXNzb2NpYXRpb246IHRydWUgfSlcblx0ZmlsdGVyQmFyPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIGhlYWRlciB0ZXh0IHRoYXQgaXMgc2hvd24gaW4gdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRoZWFkZXI/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIFwiYXJpYS1sZXZlbFwiIG9mIHRoZSB0YWJsZSBoZWFkZXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRoZWFkZXJMZXZlbD86IFRpdGxlTGV2ZWw7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBoZWFkZXIgdGV4dCBzaG91bGQgYmUgc2hvd24gb3Igbm90LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aGVhZGVyVmlzaWJsZT86IGJvb2xlYW47XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aWQhOiBzdHJpbmc7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0Y29udGVudElkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBZGRpdGlvbm5hbCBTZWxlY3Rpb25WYXJpYW50IHRvIGJlIGFwcGxpZWQgb24gdGhlIHRhYmxlIGNvbnRlbnQuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzdHJpbmdcIixcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdLFxuXHRcdGV4cGVjdGVkQW5ub3RhdGlvbnM6IFtcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblZhcmlhbnRcIl0sXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPzogQ29udGV4dDtcblxuXHQvKipcblx0ICogRGVmaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIHNlYXJjaCBhY3Rpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpc1NlYXJjaGFibGU/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB3aGljaCBvcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIGZvciB0aGUgdGFibGUgcGVyc29uYWxpemF0aW9uIGRpYWxvZy5cblx0ICpcblx0ICogSWYgaXQgaXMgc2V0IHRvIGB0cnVlYCwgYWxsIHBvc3NpYmxlIG9wdGlvbnMgZm9yIHRoaXMga2luZCBvZiB0YWJsZSBhcmUgZW5hYmxlZC48YnIvPlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYGZhbHNlYCwgcGVyc29uYWxpemF0aW9uIGlzIGRpc2FibGVkLjxici8+XG5cdCAqIDxici8+XG5cdCAqIFlvdSBjYW4gYWxzbyBwcm92aWRlIGEgbW9yZSBncmFudWxhciBjb250cm9sIGZvciB0aGUgcGVyc29uYWxpemF0aW9uIGJ5IHByb3ZpZGluZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGggdGhlIG9wdGlvbnMgeW91IHdhbnQgdG8gYmUgYXZhaWxhYmxlLjxici8+XG5cdCAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTo8YnIvPlxuXHQgKiAtIFNvcnQ8YnIvPlxuXHQgKiAtIENvbHVtbjxici8+XG5cdCAqIC0gRmlsdGVyPGJyLz5cblx0ICogLSBHcm91cDxici8+XG5cdCAqIDxici8+XG5cdCAqIFRoZSBHcm91cCBvcHRpb24gaXMgb25seSBhcHBsaWNhYmxlIHRvIGFuYWx5dGljYWwgdGFibGVzIGFuZCByZXNwb25zaXZlIHRhYmxlcy48YnIvPlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwZXJzb25hbGl6YXRpb24/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEFuIGV4cHJlc3Npb24gdGhhdCBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlICdyZWFkLW9ubHknIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICpcblx0ICogSWYgeW91IGRvIG5vdCBzZXQgYW55IGV4cHJlc3Npb24sIFNBUCBGaW9yaSBlbGVtZW50cyBob29rcyBpbnRvIHRoZSBzdGFuZGFyZCBsaWZlY3ljbGUgdG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHN0YXRlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cmVhZE9ubHk/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSB0eXBlIG9mIHRhYmxlIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBidWlsZGluZyBibG9jayB0byByZW5kZXIgdGhlIGRhdGEuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgR3JpZFRhYmxlYCwgYFJlc3BvbnNpdmVUYWJsZWAgYW5kIGBBbmFseXRpY2FsVGFibGVgLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSwgYWxsb3dlZFZhbHVlczogW1wiR3JpZFRhYmxlXCIsIFwiUmVzcG9uc2l2ZVRhYmxlXCIsIFwiQW5hbHl0aWNhbFRhYmxlXCJdIH0pXG5cdHJlYWRvbmx5IHR5cGU/OiBUYWJsZVR5cGU7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgd2l0aCBjb25kZW5zZWQgbGF5b3V0ICh0cnVlL2ZhbHNlKS4gVGhlIGRlZmF1bHQgc2V0dGluZyBpcyBgZmFsc2VgLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHVzZUNvbmRlbnNlZExheW91dD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHNlbGVjdGlvbiBtb2RlIHRvIGJlIHVzZWQgYnkgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYE5vbmVgLCBgU2luZ2xlYCwgYEZvcmNlU2luZ2xlYCwgYE11bHRpYCwgYEZvcmNlTXVsdGlgIG9yIGBBdXRvYC5cblx0ICogSWYgc2V0IHRvICdTaW5nbGUnLCAnTXVsdGknIG9yICdBdXRvJywgU0FQIEZpb3JpIGVsZW1lbnRzIGhvb2tzIGludG8gdGhlIHN0YW5kYXJkIGxpZmVjeWNsZSB0byBkZXRlcm1pbmUgdGhlIGNvbnNpc3RlbnQgc2VsZWN0aW9uIG1vZGUuXG5cdCAqIElmIHNldCB0byAnRm9yY2VTaW5nbGUnIG9yICdGb3JjZU11bHRpJyB5b3VyIGNob2ljZSB3aWxsIGJlIHJlc3BlY3RlZCBidXQgdGhpcyBtaWdodCBub3QgcmVzcGVjdCB0aGUgRmlvcmkgZ3VpZGVsaW5lcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGFsbG93ZWRWYWx1ZXM6IFtcIk5vbmVcIiwgXCJTaW5nbGVcIiwgXCJNdWx0aVwiLCBcIkF1dG9cIiwgXCJGb3JjZU11bHRpXCIsIFwiRm9yY2VTaW5nbGVcIl0gfSlcblx0cHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25Nb2RlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB0aGUga2luZCBvZiB2YXJpYW50IG1hbmFnZW1lbnQgdGhhdCBzaG91bGQgYmUgZW5hYmxlZCBmb3IgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlIGlzIGBDb250cm9sYC48YnIvPlxuXHQgKiBJZiBzZXQgd2l0aCB2YWx1ZSBgQ29udHJvbGAsIGEgdmFyaWFudCBtYW5hZ2VtZW50IGNvbnRyb2wgaXMgc2VlbiB3aXRoaW4gdGhlIHRhYmxlIGFuZCB0aGUgdGFibGUgaXMgbGlua2VkIHRvIHRoaXMuPGJyLz5cblx0ICogSWYgbm90IHNldCB3aXRoIGFueSB2YWx1ZSwgY29udHJvbCBsZXZlbCB2YXJpYW50IG1hbmFnZW1lbnQgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGFsbG93ZWRWYWx1ZXM6IFtcIkNvbnRyb2xcIl0gfSlcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbW1hLXNlcGFyYXRlZCB2YWx1ZSBvZiBmaWVsZHMgdGhhdCBtdXN0IGJlIGlnbm9yZWQgaW4gdGhlIE9EYXRhIG1ldGFkYXRhIGJ5IHRoZSBUYWJsZSBidWlsZGluZyBibG9jay48YnI+XG5cdCAqIFRoZSB0YWJsZSBidWlsZGluZyBibG9jayBpcyBub3QgZ29pbmcgdG8gY3JlYXRlIGJ1aWx0LWluIGNvbHVtbnMgb3Igb2ZmZXIgdGFibGUgcGVyc29uYWxpemF0aW9uIGZvciBjb21tYS1zZXBhcmF0ZWQgdmFsdWUgb2YgZmllbGRzIHRoYXQgYXJlIHByb3ZpZGVkIGluIHRoZSBpZ25vcmVkZmllbGRzLjxicj5cblx0ICogQW55IGNvbHVtbiByZWZlcmVuY2luZyBhbiBpZ25vcmVkIGZpZWxkIGlzIHRvIGJlIHJlbW92ZWQuPGJyPlxuXHQgKiBAc2luY2UgMS4xMjQuMFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpZ25vcmVkRmllbGRzPzogc3RyaW5nO1xuXG5cdC8vICAqKioqKioqKioqKioqKiogUHJpdmF0ZSBBdHRyaWJ1dGVzICoqKioqKioqKioqKioqKioqKioqXG5cdHByaXZhdGUgX2FwaUlkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDaGFuZ2VzIHRoZSBzaXplIG9mIHRoZSBJbGx1c3RyYXRlZE1lc3NhZ2UgaW4gdGhlIHRhYmxlLCBvciByZW1vdmVzIGl0IGNvbXBsZXRlbHkuXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgaWxsdXN0cmF0ZWRNZXNzYWdlLUF1dG9gLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLUJhc2VgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLURpYWxvZ2AsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtRG90YCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1TY2VuZWAsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdGAgb3IgYHRleHRgLlxuXHQgKiBAc2luY2UgMS4xMjkuMFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0YWxsb3dlZFZhbHVlczogW1xuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQXV0b1wiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQmFzZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtTWVkaXVtXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1Eb3RcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUV4dHJhU21hbGxcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLVNjZW5lXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1MYXJnZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU21hbGxcIixcblx0XHRcdFwidGV4dFwiXG5cdFx0XVxuXHR9KVxuXHRtb2RlRm9yTm9EYXRhTWVzc2FnZT86IHN0cmluZztcblxuXHQvLyAgKioqKioqKioqKioqKioqIFByaXZhdGUgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHRwcml2YXRlIHJlYWRvbmx5IGNvbGxlY3Rpb25FbnRpdHk6IEVudGl0eVNldCB8IE5hdmlnYXRpb25Qcm9wZXJ0eTtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgaGVhZGVyIHN0eWxlIG9mIHRoZSB0YWJsZSBoZWFkZXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiIH0pXG5cdGhlYWRlclN0eWxlPzogVGl0bGVMZXZlbDtcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIGlmIHRoZSBjb2x1bW4gd2lkdGggaXMgYXV0b21hdGljYWxseSBjYWxjdWxhdGVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoPzogYm9vbGVhbiA9IHRydWU7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRmaWVsZE1vZGUgPSBcIlwiO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGlzQWxwPzogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBPTkxZIEZPUiBSRVNQT05TSVZFIFRBQkxFOiBTZXR0aW5nIHRvIGRlZmluZSB0aGUgY2hlY2tib3ggaW4gdGhlIGNvbHVtbiBoZWFkZXI6IEFsbG93ZWQgdmFsdWVzIGFyZSBgRGVmYXVsdGAgb3IgYENsZWFyQWxsYC4gSWYgc2V0IHRvIGBEZWZhdWx0YCwgdGhlIHNhcC5tLlRhYmxlIGNvbnRyb2wgcmVuZGVycyB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCwgb3RoZXJ3aXNlIHRoZSBEZXNlbGVjdCBBbGwgYnV0dG9uIGlzIHJlbmRlcmVkLlxuXHQgKi9cblx0bXVsdGlTZWxlY3RNb2RlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBVc2VkIGZvciBiaW5kaW5nIHRoZSB0YWJsZSB0byBhIG5hdmlnYXRpb24gcGF0aC4gT25seSB0aGUgcGF0aCBpcyB1c2VkIGZvciBiaW5kaW5nIHJvd3MuXG5cdCAqL1xuXHRuYXZpZ2F0aW9uUGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogVHJ1ZSBpZiB0aGUgdGFibGUgaXMgaW4gYSBMaXN0UmVwb3J0IG11bHRpIHZpZXdcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGluTXVsdGlWaWV3PzogYm9vbGVhbjtcblxuXHR1c2VCYXNpY1NlYXJjaD86IGJvb2xlYW47XG5cblx0dGFibGVEZWZpbml0aW9uOiBUYWJsZVZpc3VhbGl6YXRpb247IC8vIFdlIHJlcXVpcmUgdGFibGVEZWZpbml0aW9uIHRvIGJlIHRoZXJlIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCBmb3JtYWxseSByZXF1aXJlZFxuXG5cdHRhYmxlRGVmaW5pdGlvbkNvbnRleHQ/OiBDb250ZXh0O1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0dGFiVGl0bGUgPSBcIlwiO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHZpc2libGU/OiBib29sZWFuO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGRpc3BsYXlTZWdtZW50ZWRCdXR0b24/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJvYmplY3RcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQ3JlYXRpb25PcHRpb25zXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uIChjcmVhdGlvbk9wdGlvbnNJbnB1dDogVGFibGVDcmVhdGlvbk9wdGlvbnMpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0Y3JlYXRpb25PcHRpb25zSW5wdXQubmFtZSAmJlxuXHRcdFx0XHQhW1wiTmV3UGFnZVwiLCBcIklubGluZVwiLCBcIklubGluZUNyZWF0aW9uUm93c1wiLCBcIkV4dGVybmFsXCIsIFwiQ3JlYXRpb25EaWFsb2dcIl0uaW5jbHVkZXMoY3JlYXRpb25PcHRpb25zSW5wdXQubmFtZSlcblx0XHRcdCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEFsbG93ZWQgdmFsdWUgJHtjcmVhdGlvbk9wdGlvbnNJbnB1dC5uYW1lfSBmb3IgY3JlYXRpb25Nb2RlIGRvZXMgbm90IG1hdGNoYCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBjcmVhdGlvbk9wdGlvbnNJbnB1dDtcblx0XHR9XG5cdH0pXG5cdGNyZWF0aW9uTW9kZTogUHJvcGVydGllc09mPFRhYmxlQ3JlYXRpb25PcHRpb25zPiA9IHt9O1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gY29udHJvbCB0aGUgYWdncmVnYXRpb24gYmVoYXZpb3Jcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJvYmplY3RcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFuYWx5dGljYWxDb25maWd1cmF0aW9uXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uIChhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcblx0XHRcdGlmICh0eXBlb2YgYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbi5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID0gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gXCJ0cnVlXCI7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cdFx0fVxuXHR9KVxuXHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUHJvcGVydGllc09mPEFuYWx5dGljYWxDb25maWd1cmF0aW9uPiA9IHt9O1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgYWN0aW9ucyBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBcIiwgXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbk92ZXJyaWRlXCIsIFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cE92ZXJyaWRlXCJdLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdGhhc1ZpcnR1YWxOb2RlOiB0cnVlLFxuXHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbUFjdGlvbkdyb3VwUHJvcGVydGllc1xuXHR9KVxuXHRhY3Rpb25zPzogUmVjb3JkPHN0cmluZywgQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbkdyb3VwIHwgQmxvY2tBY3Rpb25PdmVycmlkZSB8IEJsb2NrQWN0aW9uR3JvdXBPdmVycmlkZT47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBtYXNzIGVkaXQgb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLk1hc3NFZGl0XCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0bXVsdGlwbGU6IGZhbHNlLFxuXHRcdHNraXBLZXk6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzXG5cdH0pXG5cdG1hc3NFZGl0PzogUmVjb3JkPHN0cmluZywgQmxvY2tNYXNzRWRpdD47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBjb2x1bW5zIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5cIixcblx0XHRhbHRUeXBlczogW1wic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5PdmVycmlkZVwiXSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRoYXNWaXJ0dWFsTm9kZTogdHJ1ZSxcblx0XHRpc0RlZmF1bHQ6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tQ29sdW1uUHJvcGVydGllc1xuXHR9KVxuXHRjb2x1bW5zPzogUmVjb3JkPHN0cmluZywgQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlPjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIHF1aWNrVmFyaWFudFNlbGVjdGlvbiBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuUXVpY2tWYXJpYW50U2VsZWN0aW9uXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0c2tpcEtleTogdHJ1ZSxcblx0XHRtdWx0aXBsZTogZmFsc2UsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0UXVpY2tWYXJpYW50U2VsZWN0aW9uXG5cdH0pXG5cdHF1aWNrVmFyaWFudFNlbGVjdGlvbj86IFJlY29yZDxzdHJpbmcsIEJsb2NrUXVpY2tWYXJpYW50U2VsZWN0aW9uPjtcblxuXHRjb252ZXJ0ZWRNZXRhZGF0YTogQ29udmVydGVkTWV0YWRhdGE7XG5cblx0Y29udGV4dE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8TGluZUl0ZW0gfCBQcmVzZW50YXRpb25WYXJpYW50IHwgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD47XG5cblx0LyoqXG5cdCAqIEJlZm9yZSBhIHRhYmxlIHJlYmluZCwgYW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJpbmRpbmcuXG5cdCAqXG5cdCAqIFRoZSBldmVudCBjb250YWlucyBhIHBhcmFtZXRlciwgYGNvbGxlY3Rpb25CaW5kaW5nSW5mb2AsIHdoaWNoIGlzIGFuIGluc3RhbmNlIG9mIGBDb2xsZWN0aW9uQmluZGluZ0luZm9BUElgLlxuXHQgKiBJdCBjYW4gYWxzbyBjb250YWluIGFuIG9wdGlvbmFsIHBhcmFtZXRlciwgYHF1aWNrRmlsdGVyS2V5YCwgd2hpY2ggaW5kaWNhdGVzIHdoYXQgaXMgdGhlIHF1aWNrIGZpbHRlciBrZXkgKGlmIGFueSkgYmVpbmcgcHJvY2Vzc2VkIGZvciB0aGUgdGFibGUuXG5cdCAqIFRoaXMgYWxsb3dzIHlvdSB0byBtYW5pcHVsYXRlIHRoZSB0YWJsZSdzIGxpc3QgYmluZGluZy5cblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byBhdHRhY2ggZXZlbnQgaGFuZGxlcnMgdG8gdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLlxuXHQgKiBZb3UgY2FuIHVzZSB0aGlzIGV2ZW50IHRvIGFkZCBzZWxlY3RzLCBhbmQgYWRkIG9yIHJlYWQgdGhlIHNvcnRlcnMgYW5kIGZpbHRlcnMuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0cHJpdmF0ZSByZWFkb25seSBiZWZvcmVSZWJpbmRUYWJsZT86IHN0cmluZztcblxuXHQvKipcblx0ICogQW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgY2hvb3NlcyBhIHJvdzsgdGhlIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIHJvdyBpcyBjaG9zZW4uXG5cdCAqXG5cdCAqIFlvdSBjYW4gc2V0IHRoaXMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBuYXZpZ2F0aW9uIG1hbnVhbGx5LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHJvd1ByZXNzPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBjaGFuZ2UgZXZlbnQgb2YgdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLlxuXHQgKlxuXHQgKiBJbnRlcm5hbCBvbmx5XG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdGxpc3RCaW5kaW5nQ2hhbmdlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNob29zZXMgYW4gb3B0aW9uIG9mIHRoZSBzZWdtZW50ZWQgYnV0dG9uIGluIHRoZSBBTFAgVmlld1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRzZWdtZW50ZWRCdXR0b25QcmVzcz86IHN0cmluZztcblxuXHRAYmxvY2tFdmVudCgpXG5cdHZhcmlhbnRTYXZlZD86IHN0cmluZztcblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpbiB0aGUgdGFibGUgY2hhbmdlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZT86IHN0cmluZztcblxuXHRAYmxvY2tFdmVudCgpXG5cdHZhcmlhbnRTZWxlY3RlZD86IHN0cmluZztcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aW5pdGlhbExvYWQ/OiBib29sZWFuO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQ7XG5cblx0cHJpdmF0ZSByZWFkb25seSBtZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiBQcm9wZXJ0aWVzT2Y8VGFibGVCbG9jaz4sIGNvbnRyb2xDb25maWd1cmF0aW9uOiB1bmtub3duLCB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzOiBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcHMsIGNvbnRyb2xDb25maWd1cmF0aW9uLCB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKTtcblx0XHRjb25zdCBjb250ZXh0T2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50Pihcblx0XHRcdHRoaXMubWV0YVBhdGgsXG5cdFx0XHR0aGlzLmNvbnRleHRQYXRoXG5cdFx0KTtcblx0XHR0aGlzLmNvbnRleHRPYmplY3RQYXRoID0gY29udGV4dE9iamVjdFBhdGg7XG5cblx0XHR0aGlzLnRhYmxlRGVmaW5pdGlvbiA9IFRhYmxlQmxvY2suY3JlYXRlVGFibGVEZWZpbml0aW9uKHRoaXMsIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpO1xuXHRcdHRoaXMudGFibGVEZWZpbml0aW9uQ29udGV4dCA9IE1hY3JvQVBJLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHRoaXMudGFibGVEZWZpbml0aW9uIGFzIG9iamVjdCwgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk7XG5cblx0XHR0aGlzLmNvbnZlcnRlZE1ldGFkYXRhID0gdGhpcy5jb250ZXh0T2JqZWN0UGF0aC5jb252ZXJ0ZWRUeXBlcztcblx0XHR0aGlzLm1ldGFNb2RlbCA9IHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MubW9kZWxzLm1ldGFNb2RlbDtcblx0XHR0aGlzLmNvbGxlY3Rpb25FbnRpdHkgPSB0aGlzLmNvbnZlcnRlZE1ldGFkYXRhLnJlc29sdmVQYXRoKHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY29sbGVjdGlvbikudGFyZ2V0IGFzIEVudGl0eVNldDtcblx0XHR0aGlzLmFwcENvbXBvbmVudCA9IHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MuYXBwQ29tcG9uZW50O1xuXHRcdHRoaXMuc2V0VXBJZCgpO1xuXG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUgPz89IHt9O1xuXHRcdHRoaXMuY3JlYXRpb25Nb2RlLm5hbWUgPz89IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY3JlYXRlLm1vZGUgYXMgVGFibGVDcmVhdGlvbk9wdGlvbnNbXCJuYW1lXCJdO1xuXHRcdHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0ZUF0RW5kID8/PSAodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jcmVhdGUgYXMgQ3JlYXRlQmVoYXZpb3IpLmFwcGVuZDtcblx0XHQvLyBTcGVjaWFsIGNvZGUgZm9yIHJlYWRPbmx5XG5cdFx0Ly8gcmVhZG9ubHkgPSBmYWxzZSAtPiBGb3JjZSBlZGl0YWJsZVxuXHRcdC8vIHJlYWRvbmx5ID0gdHJ1ZSAtPiBGb3JjZSBkaXNwbGF5IG1vZGVcblx0XHQvLyByZWFkb25seSA9IHVuZGVmaW5lZCAtPiBCb3VuZCB0byBlZGl0IGZsb3dcblx0XHRpZiAoXG5cdFx0XHR0aGlzLnJlYWRPbmx5ID09PSB1bmRlZmluZWQgJiZcblx0XHRcdCh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmRpc3BsYXlNb2RlID09PSB0cnVlIHx8IHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wucmVhZE9ubHkgPT09IHRydWUpXG5cdFx0KSB7XG5cdFx0XHR0aGlzLnJlYWRPbmx5ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRUYWJsZUFQSS51cGRhdGVDb2x1bW5zVmlzaWJpbGl0eSh0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmlnbm9yZWRGaWVsZHMsIFtdLCB0aGlzLnRhYmxlRGVmaW5pdGlvbik7XG5cblx0XHRsZXQgdXNlQmFzaWNTZWFyY2ggPSBmYWxzZTtcblxuXHRcdC8vIE5vdGUgZm9yIHRoZSAnZmlsdGVyQmFyJyBwcm9wZXJ0eTpcblx0XHQvLyAxLiBJRCByZWxhdGl2ZSB0byB0aGUgdmlldyBvZiB0aGUgVGFibGUuXG5cdFx0Ly8gMi4gQWJzb2x1dGUgSUQuXG5cdFx0Ly8gMy4gSUQgd291bGQgYmUgY29uc2lkZXJlZCBpbiBhc3NvY2lhdGlvbiB0byBUYWJsZUFQSSdzIElELlxuXHRcdGlmICghdGhpcy5maWx0ZXJCYXIpIHtcblx0XHRcdC8vIGZpbHRlckJhcjogUHVibGljIHByb3BlcnR5IGZvciBidWlsZGluZyBibG9ja3Ncblx0XHRcdC8vIGZpbHRlckJhcklkOiBPbmx5IHVzZWQgYXMgSW50ZXJuYWwgcHJpdmF0ZSBwcm9wZXJ0eSBmb3IgRkUgdGVtcGxhdGVzXG5cdFx0XHR0aGlzLmZpbHRlckJhciA9IGdlbmVyYXRlKFt0aGlzLmNvbnRlbnRJZCwgXCJTdGFuZGFyZEFjdGlvblwiLCBcIkJhc2ljU2VhcmNoXCJdKTtcblx0XHRcdHVzZUJhc2ljU2VhcmNoID0gdHJ1ZTtcblx0XHR9XG5cdFx0Ly8gSW50ZXJuYWwgcHJvcGVydGllc1xuXHRcdHRoaXMudXNlQmFzaWNTZWFyY2ggPSB1c2VCYXNpY1NlYXJjaDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBhbm5vdGF0aW9uIHBhdGggcG9pbnRpbmcgdG8gdGhlIHZpc3VhbGl6YXRpb24gYW5ub3RhdGlvbiAoTGluZUl0ZW0pLlxuXHQgKiBAcGFyYW0gY29udGV4dE9iamVjdFBhdGggVGhlIGRhdGFtb2RlbCBvYmplY3QgcGF0aCBmb3IgdGhlIHRhYmxlXG5cdCAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuXHQgKiBAcmV0dXJucyBUaGUgYW5ub3RhdGlvbiBwYXRoXG5cdCAqL1xuXHRzdGF0aWMgZ2V0VmlzdWFsaXphdGlvblBhdGgoXG5cdFx0Y29udGV4dE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8TGluZUl0ZW0gfCBQcmVzZW50YXRpb25WYXJpYW50IHwgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4sXG5cdFx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG5cdCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbWV0YVBhdGggPSBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKGNvbnRleHRPYmplY3RQYXRoKSBhcyBzdHJpbmc7XG5cblx0XHQvLyBmYWxsYmFjayB0byBkZWZhdWx0IExpbmVJdGVtIGlmIG1ldGFwYXRoIGlzIG5vdCBzZXRcblx0XHRpZiAoIW1ldGFQYXRoKSB7XG5cdFx0XHRMb2cuZXJyb3IoYE1pc3NpbmcgbWV0YSBwYXRoIHBhcmFtZXRlciBmb3IgTGluZUl0ZW1gKTtcblx0XHRcdHJldHVybiBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDtcblx0XHR9XG5cblx0XHRpZiAoaXNBbm5vdGF0aW9uT2ZUZXJtPExpbmVJdGVtPihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtKSkge1xuXHRcdFx0cmV0dXJuIG1ldGFQYXRoOyAvLyBNZXRhUGF0aCBpcyBhbHJlYWR5IHBvaW50aW5nIHRvIGEgTGluZUl0ZW1cblx0XHR9XG5cdFx0Ly9OZWVkIHRvIHN3aXRjaCB0byB0aGUgY29udGV4dCByZWxhdGVkIHRoZSBQViBvciBTUFZcblx0XHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24obWV0YVBhdGgpO1xuXG5cdFx0bGV0IHZpc3VhbGl6YXRpb25zOiBWaXN1YWxpemF0aW9uQW5kUGF0aFtdID0gW107XG5cdFx0aWYgKFxuXHRcdFx0aXNBbm5vdGF0aW9uT2ZUZXJtPFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdFx0XHRjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblRlcm1zLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcblx0XHRcdCkgfHxcblx0XHRcdGlzQW5ub3RhdGlvbk9mVGVybTxQcmVzZW50YXRpb25WYXJpYW50Pihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQpXG5cdFx0KSB7XG5cdFx0XHR2aXN1YWxpemF0aW9ucyA9IGdldFZpc3VhbGl6YXRpb25zRnJvbUFubm90YXRpb24oXG5cdFx0XHRcdGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCxcblx0XHRcdFx0bWV0YVBhdGgsXG5cdFx0XHRcdHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHRcdHRydWVcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdExvZy5lcnJvcihgQmFkIG1ldGFwYXRoIHBhcmFtZXRlciBmb3IgdGFibGUgOiAke2NvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCEudGVybX1gKTtcblx0XHR9XG5cblx0XHRjb25zdCBsaW5lSXRlbVZpeiA9IHZpc3VhbGl6YXRpb25zLmZpbmQoKHZpeikgPT4ge1xuXHRcdFx0cmV0dXJuIHZpei52aXN1YWxpemF0aW9uLnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtO1xuXHRcdH0pO1xuXG5cdFx0aWYgKGxpbmVJdGVtVml6KSB7XG5cdFx0XHRyZXR1cm4gbGluZUl0ZW1WaXouYW5ub3RhdGlvblBhdGg7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgYW5ub3RhdGlvbiBtaXNzaW5nIGluIFBWXG5cdFx0XHRMb2cuZXJyb3IoYEJhZCBtZXRhIHBhdGggcGFyYW1ldGVyIGZvciBMaW5lSXRlbTogJHtjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QhLnRlcm19YCk7XG5cdFx0XHRyZXR1cm4gYEAke1VJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtfWA7IC8vIEZhbGxiYWNrXG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIGFkZFNldHRpbmcgPSAodGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCA9PiB7XG5cdFx0aWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRhcmdldFtrZXldID0gdmFsdWU7XG5cdFx0fVxuXHR9O1xuXG5cdGdldFRhYmxlU2V0dGluZ3MoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuXHRcdGNvbnN0IHRhYmxlU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlRXhwb3J0XCIsIHRoaXMuZW5hYmxlRXhwb3J0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJleHBvcnRGaWxlTmFtZVwiLCB0aGlzLmV4cG9ydEZpbGVOYW1lKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJleHBvcnRTaGVldE5hbWVcIiwgdGhpcy5leHBvcnRTaGVldE5hbWUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJlYWRPbmx5XCIsIHRoaXMucmVhZE9ubHkpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImlnbm9yZWRGaWVsZHNcIiwgdGhpcy5pZ25vcmVkRmllbGRzKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25MaW1pdFwiLCB0aGlzLnNlbGVjdGlvbkxpbWl0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJjb25kZW5zZWRUYWJsZUxheW91dFwiLCB0aGlzLmNvbmRlbnNlZFRhYmxlTGF5b3V0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJleHBvcnRSZXF1ZXN0U2l6ZVwiLCB0aGlzLmV4cG9ydFJlcXVlc3RTaXplKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJmcm96ZW5Db2x1bW5Db3VudFwiLCB0aGlzLmZyb3plbkNvbHVtbkNvdW50KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJkaXNhYmxlQ29sdW1uRnJlZXplXCIsIHRoaXMuZGlzYWJsZUNvbHVtbkZyZWV6ZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJcIiwgdGhpcy53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcik7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicm93Q291bnRNb2RlXCIsIHRoaXMucm93Q291bnRNb2RlKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJyb3dDb3VudFwiLCB0aGlzLnJvd0NvdW50KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVGdWxsU2NyZWVuXCIsIHRoaXMuZW5hYmxlRnVsbFNjcmVlbik7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwic2VsZWN0QWxsXCIsIHRoaXMuZW5hYmxlU2VsZWN0QWxsKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXNcIiwgdGhpcy5lbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXMpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZVBhc3RlXCIsIHRoaXMuZW5hYmxlUGFzdGUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImRpc2FibGVDb3B5VG9DbGlwYm9hcmRcIiwgdGhpcy5kaXNhYmxlQ29weVRvQ2xpcGJvYXJkKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzY3JvbGxUaHJlc2hvbGRcIiwgdGhpcy5zY3JvbGxUaHJlc2hvbGQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInRocmVzaG9sZFwiLCB0aGlzLnRocmVzaG9sZCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicG9waW5MYXlvdXRcIiwgdGhpcy5wb3BpbkxheW91dCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwic2VsZWN0aW9uTW9kZVwiLCB0aGlzLnNlbGVjdGlvbk1vZGUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInR5cGVcIiwgdGhpcy50eXBlKTtcblx0XHRpZiAodGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24/LnF1aWNrRmlsdGVycz8ucGF0aHM/Lmxlbmd0aCkge1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicXVpY2tWYXJpYW50U2VsZWN0aW9uXCIsIHtcblx0XHRcdFx0cGF0aHM6IHRoaXMucXVpY2tWYXJpYW50U2VsZWN0aW9uLnF1aWNrRmlsdGVycy5wYXRocy5tYXAoKHBhdGgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4geyBhbm5vdGF0aW9uUGF0aDogcGF0aCB9O1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0c2hvd0NvdW50czogdGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24ucXVpY2tGaWx0ZXJzLnNob3dDb3VudHNcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmNyZWF0aW9uTW9kZSkge1xuXHRcdFx0Y29uc3QgY3JlYXRpb25Nb2RlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJuYW1lXCIsIHRoaXMuY3JlYXRpb25Nb2RlLm5hbWUpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJjcmVhdGlvbkZpZWxkc1wiLCB0aGlzLmNyZWF0aW9uTW9kZS5jcmVhdGlvbkZpZWxkcyk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImNyZWF0ZUF0RW5kXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0ZUF0RW5kKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwiaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZVwiLCB0aGlzLmNyZWF0aW9uTW9kZS5pbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwib3V0Ym91bmRcIiwgdGhpcy5jcmVhdGlvbk1vZGUub3V0Ym91bmQpO1xuXHRcdFx0aWYgKE9iamVjdC5lbnRyaWVzKGNyZWF0aW9uTW9kZSkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0YWJsZVNldHRpbmdzW1wiY3JlYXRpb25Nb2RlXCJdID0gY3JlYXRpb25Nb2RlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLm1hc3NFZGl0KSB7XG5cdFx0XHRjb25zdCBlbmFibGVNYXNzRWRpdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJjdXN0b21GcmFnbWVudFwiLCB0aGlzLm1hc3NFZGl0LmNvbmZpZ3VyYXRpb24/LmN1c3RvbUNvbnRlbnQpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImZyb21JbmxpbmVcIiwgdHJ1ZSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwidmlzaWJsZUZpZWxkc1wiLCB0aGlzLm1hc3NFZGl0LmNvbmZpZ3VyYXRpb24/LnZpc2libGVGaWVsZHM/LmpvaW4oXCIsXCIpKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJpZ25vcmVkRmllbGRzXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8uaWdub3JlZEZpZWxkcz8uam9pbihcIixcIikpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcIm9wZXJhdGlvbkdyb3VwaW5nTW9kZVwiLCB0aGlzLm1hc3NFZGl0LmNvbmZpZ3VyYXRpb24/Lm9wZXJhdGlvbkdyb3VwaW5nTW9kZSk7XG5cdFx0XHR0YWJsZVNldHRpbmdzW1wiZW5hYmxlTWFzc0VkaXRcIl0gPSBlbmFibGVNYXNzRWRpdDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5hbmFseXRpY2FsQ29uZmlndXJhdGlvbj8uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gdHJ1ZSkge1xuXHRcdFx0Y29uc3QgYW5hbHl0aWNhbENvbmZpZ3VyYXRpb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24sIFwiYWdncmVnYXRpb25PbkxlYWZMZXZlbFwiLCB0aGlzLmFuYWx5dGljYWxDb25maWd1cmF0aW9uLmFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwpO1xuXHRcdFx0aWYgKE9iamVjdC5lbnRyaWVzKGFuYWx5dGljYWxDb25maWd1cmF0aW9uKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRhYmxlU2V0dGluZ3NbXCJhbmFseXRpY2FsQ29uZmlndXJhdGlvblwiXSA9IGFuYWx5dGljYWxDb25maWd1cmF0aW9uO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdGFibGVTZXR0aW5ncztcblx0fVxuXG5cdHN0YXRpYyBjcmVhdGVUYWJsZURlZmluaXRpb24odGFibGU6IFRhYmxlQmxvY2ssIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpOiBUYWJsZVZpc3VhbGl6YXRpb24ge1xuXHRcdGNvbnN0IGluaXRpYWxDb252ZXJ0ZXJDb250ZXh0ID0gdGFibGUuZ2V0Q29udmVydGVyQ29udGV4dChcblx0XHRcdHRhYmxlLmNvbnRleHRPYmplY3RQYXRoLFxuXHRcdFx0dGFibGUuY29udGV4dFBhdGg/LmdldFBhdGgoKSxcblx0XHRcdHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3Ncblx0XHQpO1xuXHRcdGNvbnN0IHZpc3VhbGl6YXRpb25QYXRoID0gVGFibGVCbG9jay5nZXRWaXN1YWxpemF0aW9uUGF0aCh0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCwgaW5pdGlhbENvbnZlcnRlckNvbnRleHQpO1xuXG5cdFx0Y29uc3QgdGFibGVTZXR0aW5ncyA9IHRhYmxlLmdldFRhYmxlU2V0dGluZ3MoKTtcblx0XHRjb25zdCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uID0ge1xuXHRcdFx0YWN0aW9uczogVGFibGVCbG9jay5jcmVhdGVBY3Rpb25zRnJvbU1hbmlmZXN0KHRhYmxlKSxcblx0XHRcdGNvbHVtbnM6IFRhYmxlQmxvY2suY3JlYXRlQ29sdW1uc0Zvck1hbmlmZXN0KHRhYmxlKSxcblx0XHRcdHRhYmxlU2V0dGluZ3Ncblx0XHR9O1xuXG5cdFx0Y29uc3QgZXh0cmFQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0ZXh0cmFQYXJhbXNbdmlzdWFsaXphdGlvblBhdGhdID0gZXh0cmFNYW5pZmVzdFNldHRpbmdzO1xuXHRcdGNvbnN0IGNvbnZlcnRlckNvbnRleHQgPSB0YWJsZS5nZXRDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdFx0dGFibGUuY29udGV4dE9iamVjdFBhdGgsXG5cdFx0XHR0YWJsZS5jb250ZXh0UGF0aD8uZ2V0UGF0aCgpLFxuXHRcdFx0dGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyxcblx0XHRcdGV4dHJhUGFyYW1zXG5cdFx0KTtcblxuXHRcdGxldCBhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudFR5cGUgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKHRhYmxlLmFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCkge1xuXHRcdFx0Y29uc3Qgc3ZPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPFNlbGVjdGlvblZhcmlhbnQ+KFxuXHRcdFx0XHR0YWJsZS5hc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgsXG5cdFx0XHRcdHRhYmxlLmNvbnRleHRQYXRoIGFzIENvbnRleHRcblx0XHRcdCk7XG5cdFx0XHRhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudCA9IHN2T2JqZWN0UGF0aC50YXJnZXRPYmplY3Q7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdmlzdWFsaXphdGlvbkRlZmluaXRpb24gPSBnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24oXG5cdFx0XHQodGFibGUuaW5NdWx0aVZpZXcgJiYgdGFibGUuY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0XG5cdFx0XHRcdD8gY29udmVydGVyQ29udGV4dC5nZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoKFxuXHRcdFx0XHRcdFx0dGFibGUuY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LmZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpXG5cdFx0XHRcdCAgKVxuXHRcdFx0XHQ6IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgodGFibGUuY29udGV4dE9iamVjdFBhdGgpKSBhcyBzdHJpbmcsXG5cdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0e1xuXHRcdFx0XHRpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50OiB0YWJsZS51c2VDb25kZW5zZWRMYXlvdXQsXG5cdFx0XHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0XHRpc01hY3JvT3JNdWx0aXBsZVZpZXc6IHRhYmxlLmluTXVsdGlWaWV3ID8/IHRydWVcblx0XHRcdH1cblx0XHQpO1xuXG5cdFx0Ly8gdGFrZSB0aGUgKGZpcnN0KSBUYWJsZSB2aXN1YWxpemF0aW9uXG5cdFx0cmV0dXJuIHZpc3VhbGl6YXRpb25EZWZpbml0aW9uLnZpc3VhbGl6YXRpb25zLmZpbmQoXG5cdFx0XHQodml6OiBUYWJsZVZpc3VhbGl6YXRpb24gfCBDaGFydFZpc3VhbGl6YXRpb24pID0+IHZpei50eXBlID09PSBWaXN1YWxpemF0aW9uVHlwZS5UYWJsZVxuXHRcdCkgYXMgVGFibGVWaXN1YWxpemF0aW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIG1hbmlmZXN0IGFjdGlvbnMgZm9yIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSBibG9ja1xuXHQgKiBAcmV0dXJucyBUaGUgbWFuaWZlc3QgYWN0aW9ucyBmb3IgdGhlIHRhYmxlXG5cdCAqL1xuXHRzdGF0aWMgY3JlYXRlQWN0aW9uc0Zyb21NYW5pZmVzdCh0YWJsZTogVGFibGVCbG9jayk6IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPiB7XG5cdFx0Y29uc3QgYWN0aW9uc1NldHRpbmdzOiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdEFjdGlvbj4gPSB7fTtcblx0XHRjb25zdCBhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QgPSAoYWN0aW9uOiBCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUpOiB2b2lkID0+IHtcblx0XHRcdGNvbnN0IGtleSA9IGFjdGlvbi5rZXkhO1xuXHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdFx0cGxhY2VtZW50OiAoYWN0aW9uLnBsYWNlbWVudCA/PyBcIkFmdGVyXCIpIGFzIFBsYWNlbWVudCxcblx0XHRcdFx0XHRhbmNob3I6IGFjdGlvbi5hbmNob3Jcblx0XHRcdFx0fSxcblx0XHRcdFx0Y29tbWFuZDogYWN0aW9uLmNvbW1hbmQsXG5cdFx0XHRcdGVuYWJsZU9uU2VsZWN0OiBhY3Rpb24uZW5hYmxlT25TZWxlY3QsXG5cdFx0XHRcdHZpc2libGU6IGFjdGlvbi52aXNpYmxlLFxuXHRcdFx0XHRlbmFibGVkOiBhY3Rpb24uZW5hYmxlZCxcblx0XHRcdFx0aXNBSU9wZXJhdGlvbjogYWN0aW9uLmlzQUlPcGVyYXRpb24sXG5cdFx0XHRcdHByaW9yaXR5OiBhY3Rpb24ucHJpb3JpdHksXG5cdFx0XHRcdGdyb3VwOiBhY3Rpb24uZ3JvdXBcblx0XHRcdH07XG5cdFx0XHRpZiAoYWN0aW9uLl90eXBlID09PSBcIkFjdGlvblwiKSB7XG5cdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdC4uLmFjdGlvbnNTZXR0aW5nc1trZXldLFxuXHRcdFx0XHRcdHRleHQ6IGFjdGlvbi50ZXh0LFxuXHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlLFxuXHRcdFx0XHRcdHByZXNzOiBhY3Rpb24ucHJlc3MsXG5cdFx0XHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IGFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvblxuXHRcdFx0XHR9O1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBhZnRlckV4ZWN1dGlvbiA9IHtcblx0XHRcdFx0ZW5hYmxlQXV0b1Njcm9sbDogYWN0aW9uW1wiZW5hYmxlQXV0b1Njcm9sbFwiXSxcblx0XHRcdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBhY3Rpb25bXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIl1cblx0XHRcdH07XG5cdFx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGFmdGVyRXhlY3V0aW9uKTtcblx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0YWZ0ZXJFeGVjdXRpb246IE9iamVjdC5lbnRyaWVzKGFmdGVyRXhlY3V0aW9uKS5sZW5ndGggPyBhZnRlckV4ZWN1dGlvbiA6IHVuZGVmaW5lZCxcblx0XHRcdFx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uOiBhY3Rpb24uZGVmYXVsdFZhbHVlc0Z1bmN0aW9uXG5cdFx0XHR9O1xuXHRcdH07XG5cdFx0aWYgKHRhYmxlLmFjdGlvbnMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuYWN0aW9ucykuZm9yRWFjaCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRpZiAoaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25cIiB8fCBpdGVtLl90eXBlID09PSBcIkFjdGlvbk92ZXJyaWRlXCIpIHtcblx0XHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoaXRlbSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25Hcm91cFwiIHx8IGl0ZW0uX3R5cGUgPT09IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiKSB7XG5cdFx0XHRcdFx0Ly8gQWN0aW9uR3JvdXAgb3IgQWN0aW9uR3JvdXBPdmVycmlkZVxuXHRcdFx0XHRcdGNvbnN0IGtleSA9IGl0ZW0ua2V5ITtcblx0XHRcdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdFx0XHRcdHBsYWNlbWVudDogKGl0ZW0ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdFx0XHRhbmNob3I6IGl0ZW0uYW5jaG9yXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bWVudTogaXRlbS5hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rpb24ua2V5ISlcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGlmIChpdGVtLl90eXBlID09PSBcIkFjdGlvbkdyb3VwXCIpIHtcblx0XHRcdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0XHRcdFx0dGV4dDogaXRlbS50ZXh0LFxuXHRcdFx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBpdGVtLmRlZmF1bHRBY3Rpb24sXG5cdFx0XHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpdGVtLmFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoYWN0aW9uKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBhY3Rpb25zU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3QgY29sdW1ucyBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJsb2NrXG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBhY3Rpb25zIGZvciB0aGUgdGFibGVcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVDb2x1bW5zRm9yTWFuaWZlc3QodGFibGU6IFRhYmxlQmxvY2spOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZT4ge1xuXHRcdGNvbnN0IGlzQmxvY2tDb2x1bW4gPSAoYmxvY2s6IEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZSk6IGJsb2NrIGlzIEJsb2NrQ29sdW1uID0+IHtcblx0XHRcdHJldHVybiBibG9jay5fdHlwZSA9PT0gXCJDb2x1bW5cIjtcblx0XHR9O1xuXG5cdFx0Y29uc3QgY29sdW1uU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbiB8IEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbkZvck92ZXJyaWRlPiA9IHt9O1xuXG5cdFx0aWYgKHRhYmxlLmNvbHVtbnMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuY29sdW1ucykuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG5cdFx0XHRcdGxldCBjdXN0b21Db2x1bW5EZWZpbml0aW9uOiBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCAoQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUgJiB7IGtleTogc3RyaW5nIH0pO1xuXHRcdFx0XHRpZiAoaXNCbG9ja0NvbHVtbihjb2x1bW4pKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGhlYWRlcjogY29sdW1uLmhlYWRlciEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzIGFzIEV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0cHJvcGVydGllczogY29sdW1uLnByb3BlcnRpZXMsXG5cdFx0XHRcdFx0XHR0b29sdGlwOiBjb2x1bW4udG9vbHRpcCxcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiBjb2x1bW4udGVtcGxhdGUhLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRyZXF1aXJlZDogY29sdW1uLnJlcXVpcmVkLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJTbG90XCIsXG5cdFx0XHRcdFx0XHRkaXNhYmxlRXhwb3J0OiBjb2x1bW4uZGlzYWJsZUV4cG9ydFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGtleTogY29sdW1uLmtleSEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzIGFzIEV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRkaXNhYmxlRXhwb3J0OiBjb2x1bW4uZGlzYWJsZUV4cG9ydFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZW1vdmUgYWxsIHVuZGVmaW5lZCBwcm9wZXJ0aWVzLCBzbyB0aGF0IHRoZXkgZG9uJ3QgZXJhc2Ugd2hhdCBpcyBzZXQgaW4gdGhlIG1hbmlmZXN0XG5cdFx0XHRcdC8vIChuZWNlc3NhcnkgYmVjYXVzZSBtYW5pZmVzdC1iYXNlZCBjb2x1bW5zIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIHNsb3QgY29sdW1ucyBhbmQgd2UgZG9uJ3QgY29weVxuXHRcdFx0XHQvLyBhbGwgdGhlaXIgcHJvcGVydGllcyBpbiB0aGUgWE1MKVxuXHRcdFx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGN1c3RvbUNvbHVtbkRlZmluaXRpb24pO1xuXHRcdFx0XHRpZiAoaXNCbG9ja0NvbHVtbihjb2x1bW4pICYmIChjb2x1bW4uYW5jaG9yIHx8IGNvbHVtbi5wbGFjZW1lbnQpKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbi5wb3NpdGlvbiA9IHtcblx0XHRcdFx0XHRcdGFuY2hvcjogY29sdW1uLmFuY2hvcixcblx0XHRcdFx0XHRcdHBsYWNlbWVudDogKGNvbHVtbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnRcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29sdW1uU2V0dGluZ3NbY29sdW1uLmtleSFdID0gY3VzdG9tQ29sdW1uRGVmaW5pdGlvbjtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gY29sdW1uU2V0dGluZ3M7XG5cdH1cblxuXHRzZXRVcElkKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmlkKSB7XG5cdFx0XHQvLyBUaGUgZ2l2ZW4gSUQgc2hhbGwgYmUgYXNzaWduZWQgdG8gdGhlIFRhYmxlQVBJIGFuZCBub3QgdG8gdGhlIE1EQyBUYWJsZVxuXHRcdFx0dGhpcy5fYXBpSWQgPSB0aGlzLmlkO1xuXHRcdFx0Ly8gR2VuZXJhdGUgdGhlIGNvbnRlbnRJZCBiYXNlZCBvbiB0aGUgSUQsIGlmIG5vdCBwcm92aWRlZCAoRlBNIGNhc2UpXG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA/Pz0gdGhpcy5nZXRDb250ZW50SWQodGhpcy5pZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFdlIGdlbmVyYXRlIHRoZSBJRCBhbmQgdGhlIGNvbnRlbnRJRC4gRHVlIHRvIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3ZSBrZWVwIGl0IG9uIHRoZSBNREMgVGFibGUgYnV0IHByb3ZpZGUgYXNzaWduXG5cdFx0XHQvLyB0aGUgSUQgd2l0aCBhIDo6VGFibGUgc3VmZml4IHRvIHRoZSBUYWJsZUFQSVxuXHRcdFx0dGhpcy5pZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uYXBpSWQ7XG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uaWQ7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uYXBpSWQ7XG5cdFx0fVxuXHR9XG5cblx0X2dldEVudGl0eVR5cGUoKTogRW50aXR5VHlwZSB7XG5cdFx0cmV0dXJuICh0aGlzLmNvbGxlY3Rpb25FbnRpdHkgYXMgRW50aXR5U2V0KT8uZW50aXR5VHlwZSB8fCAodGhpcy5jb2xsZWN0aW9uRW50aXR5IGFzIE5hdmlnYXRpb25Qcm9wZXJ0eSk/LnRhcmdldFR5cGU7XG5cdH1cblxuXHRnZXRFbXB0eVJvd3NFbmFibGVkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZW5hYmxlZCA9XG5cdFx0XHR0aGlzLmNyZWF0aW9uTW9kZS5uYW1lID09PSBDcmVhdGlvbk1vZGUuSW5saW5lQ3JlYXRpb25Sb3dzXG5cdFx0XHRcdD8gdGhpcy50YWJsZURlZmluaXRpb24uYWN0aW9ucy5maW5kKChhKSA9PiBhLmtleSA9PT0gU3RhbmRhcmRBY3Rpb25LZXlzLkNyZWF0ZSk/LmVuYWJsZWRcblx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0cmV0dXJuIGVuYWJsZWQgPT09IFwiZmFsc2VcIiA/IHVuZGVmaW5lZCA6IGVuYWJsZWQ7XG5cdH1cblxuXHRnZXRUZW1wbGF0ZSgpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGVudGl0eVR5cGUgPSB0aGlzLl9nZXRFbnRpdHlUeXBlKCk7XG5cdFx0Y29uc3QgdGFibGVQcm9wcyA9IHRoaXMgYXMgdW5rbm93biBhcyBUYWJsZUJsb2NrUHJvcGVydGllcztcblx0XHR0YWJsZVByb3BzLm92ZXJyaWRlUm93UHJlc3MgPSB0aGlzLnJvd1ByZXNzICE9PSB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBjb2xsZWN0aW9uRW50aXR5ID0gdGhpcy5jb252ZXJ0ZWRNZXRhZGF0YS5yZXNvbHZlUGF0aCh0YWJsZVByb3BzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNvbGxlY3Rpb24pLnRhcmdldCBhc1xuXHRcdFx0fCBFbnRpdHlTZXRcblx0XHRcdHwgTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdGNvbnN0IGhhbmRsZXJQcm92aWRlciA9IG5ldyBUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyKHRhYmxlUHJvcHMsIHsgY29sbGVjdGlvbkVudGl0eSwgbWV0YU1vZGVsOiB0aGlzLm1ldGFQYXRoLmdldE1vZGVsKCkgfSk7XG5cblx0XHRsZXQgY3JlYXRpb25Nb2RlOiBUYWJsZUNyZWF0aW9uT3B0aW9ucyB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5jcmVhdGlvbk1vZGUgJiYgT2JqZWN0LmtleXModGhpcy5jcmVhdGlvbk1vZGUpLmxlbmd0aCA+IDApIHtcblx0XHRcdGNyZWF0aW9uTW9kZSA9IDxUYWJsZUNyZWF0aW9uT3B0aW9ucyB7Li4udGhpcy5jcmVhdGlvbk1vZGV9IC8+O1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8VGFibGVBUElcblx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0ZQTTogJ3NhcC9mZS9jb3JlL2hlbHBlcnMvRlBNSGVscGVyJ31cIlxuXHRcdFx0XHRiaW5kaW5nPXtge2ludGVybmFsPmNvbnRyb2xzLyR7dGhpcy5jb250ZW50SWR9fWB9XG5cdFx0XHRcdGlkPXt0aGlzLl9hcGlJZH1cblx0XHRcdFx0Y29udGVudElkPXt0aGlzLmNvbnRlbnRJZH1cblx0XHRcdFx0dmlzaWJsZT17dGhpcy52aXNpYmxlfVxuXHRcdFx0XHRoZWFkZXJMZXZlbD17dGhpcy5oZWFkZXJMZXZlbH1cblx0XHRcdFx0aGVhZGVyU3R5bGU9e3RoaXMuaGVhZGVyU3R5bGV9XG5cdFx0XHRcdGhlYWRlclZpc2libGU9e3RoaXMuaGVhZGVyVmlzaWJsZX1cblx0XHRcdFx0dGFiVGl0bGU9e3RoaXMudGFiVGl0bGV9XG5cdFx0XHRcdGV4cG9ydFJlcXVlc3RTaXplPXt0aGlzLmV4cG9ydFJlcXVlc3RTaXplfVxuXHRcdFx0XHRkaXNhYmxlQ29weVRvQ2xpcGJvYXJkPXt0aGlzLmRpc2FibGVDb3B5VG9DbGlwYm9hcmR9XG5cdFx0XHRcdHNjcm9sbFRocmVzaG9sZD17dGhpcy5zY3JvbGxUaHJlc2hvbGR9XG5cdFx0XHRcdHRocmVzaG9sZD17dGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC50aHJlc2hvbGQgPz8gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi50aHJlc2hvbGR9XG5cdFx0XHRcdHBvcGluTGF5b3V0PXt0aGlzLnBvcGluTGF5b3V0fVxuXHRcdFx0XHRpc1NlYXJjaGFibGU9e3RoaXMuaXNTZWFyY2hhYmxlfVxuXHRcdFx0XHRidXN5PXt0aGlzLmJ1c3l9XG5cdFx0XHRcdGluaXRpYWxMb2FkPXt0aGlzLmluaXRpYWxMb2FkfVxuXHRcdFx0XHRoZWFkZXI9e3RoaXMuaGVhZGVyfVxuXHRcdFx0XHRpc0FscD17dGhpcy5pc0FscH1cblx0XHRcdFx0ZmllbGRNb2RlPXt0aGlzLmZpZWxkTW9kZX1cblx0XHRcdFx0cGVyc29uYWxpemF0aW9uPXt0aGlzLnBlcnNvbmFsaXphdGlvbn1cblx0XHRcdFx0cm93UHJlc3M9e3RoaXMucm93UHJlc3MgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0dmFyaWFudFNhdmVkPXt0aGlzLnZhcmlhbnRTYXZlZCBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHR2YXJpYW50U2VsZWN0ZWQ9e3RoaXMudmFyaWFudFNlbGVjdGVkIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHNlZ21lbnRlZEJ1dHRvblByZXNzPXt0aGlzLnNlZ21lbnRlZEJ1dHRvblByZXNzIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHZhcmlhbnRNYW5hZ2VtZW50PXt0aGlzLnZhcmlhbnRNYW5hZ2VtZW50fVxuXHRcdFx0XHRpZ25vcmVkRmllbGRzPXt0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmlnbm9yZWRGaWVsZHN9IC8vIE5lZWQgdG8gYmUgZnJvbSB0aGUgdGFibGVEZWZpbml0aW9uIHRvIGJlIGluIHBoYXNlIGZvciB0aGUgZ2V0SWdub3JlRmllbGRzXG5cdFx0XHRcdHRhYmxlRGVmaW5pdGlvbj17YHtfcGFnZU1vZGVsPiR7dGhpcy50YWJsZURlZmluaXRpb25Db250ZXh0IS5nZXRQYXRoKCl9fWAgYXMgdW5rbm93biBhcyBUYWJsZVZpc3VhbGl6YXRpb259XG5cdFx0XHRcdGVudGl0eVR5cGVGdWxseVF1YWxpZmllZE5hbWU9e2VudGl0eVR5cGU/LmZ1bGx5UXVhbGlmaWVkTmFtZX1cblx0XHRcdFx0bWV0YVBhdGg9e3RoaXMubWV0YVBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0dXNlQmFzaWNTZWFyY2g9e3RoaXMudXNlQmFzaWNTZWFyY2h9XG5cdFx0XHRcdGVuYWJsZUZ1bGxTY3JlZW49e3RoaXMuZW5hYmxlRnVsbFNjcmVlbn1cblx0XHRcdFx0ZW5hYmxlRXhwb3J0PXt0aGlzLmVuYWJsZUV4cG9ydH1cblx0XHRcdFx0ZXhwb3J0RmlsZU5hbWU9e3RoaXMuZXhwb3J0RmlsZU5hbWV9XG5cdFx0XHRcdGV4cG9ydFNoZWV0TmFtZT17dGhpcy5leHBvcnRTaGVldE5hbWV9XG5cdFx0XHRcdGZyb3plbkNvbHVtbkNvdW50PXt0aGlzLmZyb3plbkNvbHVtbkNvdW50fVxuXHRcdFx0XHRkaXNhYmxlQ29sdW1uRnJlZXplPXt0aGlzLmRpc2FibGVDb2x1bW5GcmVlemV9XG5cdFx0XHRcdGVuYWJsZVBhc3RlPXt0aGlzLmVuYWJsZVBhc3RlfVxuXHRcdFx0XHRyb3dDb3VudE1vZGU9e3RoaXMucm93Q291bnRNb2RlfVxuXHRcdFx0XHRyb3dDb3VudD17dGhpcy5yb3dDb3VudH1cblx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuY29udGV4dFBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0c2VsZWN0aW9uQ2hhbmdlPXt0aGlzLnNlbGVjdGlvbkNoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRsaXN0QmluZGluZ0NoYW5nZT17dGhpcy5saXN0QmluZGluZ0NoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRyZWFkT25seT17dGhpcy5yZWFkT25seX1cblx0XHRcdFx0c2VsZWN0aW9uTW9kZT17dGhpcy5zZWxlY3Rpb25Nb2RlfVxuXHRcdFx0XHR1c2VDb25kZW5zZWRMYXlvdXQ9e3RoaXMudXNlQ29uZGVuc2VkTGF5b3V0fVxuXHRcdFx0XHR0eXBlPXt0aGlzLnR5cGV9XG5cdFx0XHRcdGZpbHRlckJhcj17dGhpcy5maWx0ZXJCYXJ9XG5cdFx0XHRcdGVtcHR5Um93c0VuYWJsZWQ9e3RoaXMuZ2V0RW1wdHlSb3dzRW5hYmxlZCgpIGFzIHVua25vd24gYXMgYm9vbGVhbn1cblx0XHRcdFx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoPXt0aGlzLmVuYWJsZUF1dG9Db2x1bW5XaWR0aH1cblx0XHRcdFx0YmVmb3JlUmViaW5kVGFibGU9e3RoaXMuYmVmb3JlUmViaW5kVGFibGUgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI9e3RoaXMud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJ9XG5cdFx0XHRcdG1vZGVGb3JOb0RhdGFNZXNzYWdlPXt0aGlzLm1vZGVGb3JOb0RhdGFNZXNzYWdlfVxuXHRcdFx0XHRhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGg9e3RoaXMuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPy5nZXRQYXRoKCl9XG5cdFx0XHRcdGRpc3BsYXlTZWdtZW50ZWRCdXR0b249e3RoaXMuZGlzcGxheVNlZ21lbnRlZEJ1dHRvbn1cblx0XHRcdFx0ZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzPXt0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc31cblx0XHRcdFx0ZW5hYmxlU2VsZWN0QWxsPXt0aGlzLmVuYWJsZVNlbGVjdEFsbH1cblx0XHRcdFx0aW5NdWx0aVZpZXc9e3RoaXMuaW5NdWx0aVZpZXd9XG5cdFx0XHRcdHNlbGVjdGlvbkxpbWl0PXt0aGlzLnNlbGVjdGlvbkxpbWl0fVxuXHRcdFx0XHRjb25kZW5zZWRUYWJsZUxheW91dD17dGhpcy5jb25kZW5zZWRUYWJsZUxheW91dH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjdXN0b21EYXRhOiBjcmVhdGVDdXN0b21EYXRhKFwidGFibGVBUElMb2NhbElkXCIsIHRoaXMuX2FwaUlkKSxcblx0XHRcdFx0XHRjcmVhdGlvbk1vZGUsXG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogPEZsZXhJdGVtRGF0YSBtYXhXaWR0aD1cIjEwMCVcIiAvPixcblx0XHRcdFx0XHRjb250ZW50OiBnZXRNRENUYWJsZVRlbXBsYXRlKHRhYmxlUHJvcHMsIHtcblx0XHRcdFx0XHRcdG1ldGFQYXRoOiB0aGlzLm1ldGFQYXRoLFxuXHRcdFx0XHRcdFx0Y29udmVydGVkTWV0YWRhdGE6IHRoaXMuY29udmVydGVkTWV0YWRhdGEsXG5cdFx0XHRcdFx0XHRtZXRhTW9kZWw6IHRoaXMubWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0aGFuZGxlclByb3ZpZGVyLFxuXHRcdFx0XHRcdFx0YXBwQ29tcG9uZW50OiB0aGlzLmFwcENvbXBvbmVudFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH19XG5cdFx0XHQ8L1RhYmxlQVBJPlxuXHRcdCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF5R0EsU0FBU0EsZ0JBQWdCQSxDQUFDQyxJQUFhLEVBQUVDLElBQVksRUFBc0I7SUFDMUUsT0FBT0QsSUFBSSxDQUFDRSxZQUFZLENBQUNELElBQUksQ0FBQyxJQUFJRSxTQUFTO0VBQzVDOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNDLGlDQUFpQ0EsQ0FBQ0osSUFBYSxFQUFFQyxJQUFZLEVBQVc7SUFDaEYsTUFBTUksY0FBYyxHQUFHTCxJQUFJLENBQUNFLFlBQVksQ0FBQ0QsSUFBSSxDQUFDO0lBQzlDLFFBQVFJLGNBQWM7TUFDckIsS0FBSyxJQUFJO01BQ1QsS0FBSyxNQUFNO1FBQ1YsT0FBTyxJQUFJO01BQ1osS0FBSyxPQUFPO1FBQ1gsT0FBTyxLQUFLO01BQ2I7UUFDQyxPQUFPQSxjQUFjO01BQXdCO0lBQy9DO0VBQ0Q7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTQyx5QkFBeUJBLENBQUNDLEdBQTRCLEVBQVE7SUFDdEVDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDRixHQUFHLENBQUMsQ0FBQ0csT0FBTyxDQUFFQyxHQUFHLElBQUs7TUFDakMsSUFBSUosR0FBRyxDQUFDSSxHQUFHLENBQUMsS0FBS1IsU0FBUyxFQUFFO1FBQzNCLE9BQU9JLEdBQUcsQ0FBQ0ksR0FBRyxDQUFDO01BQ2hCO0lBQ0QsQ0FBQyxDQUFDO0VBQ0g7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNDLHNCQUFzQkEsQ0FBQ0MsVUFBbUIsRUFBcUM7SUFDdkYsTUFBTUMsZ0JBQWdCLEdBQUdDLCtCQUErQixDQUFDRixVQUFVLENBQUM7SUFDcEUsSUFBSUEsVUFBVSxDQUFDRyxTQUFTLEtBQUssUUFBUSxFQUFFO01BQ3RDLE9BQU87UUFDTkMsSUFBSSxFQUFFSixVQUFVLENBQUNYLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSVksZ0JBQWdCLENBQUNILEdBQUc7UUFDN0RPLEtBQUssRUFBRW5CLGdCQUFnQixDQUFDYyxVQUFVLEVBQUUsT0FBTyxDQUFDO1FBQzVDTSxpQkFBaUIsRUFBRU4sVUFBVSxDQUFDWCxZQUFZLENBQUMsbUJBQW1CLENBQUMsS0FBSyxNQUFNO1FBQzFFLEdBQUdZO01BQ0osQ0FBQztJQUNGO0lBQ0EsT0FBTztNQUNOTSxnQkFBZ0IsRUFBRWhCLGlDQUFpQyxDQUFDUyxVQUFVLEVBQUUsa0JBQWtCLENBQUM7TUFDbkZRLGtCQUFrQixFQUFFakIsaUNBQWlDLENBQUNTLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQztNQUN2RlMscUJBQXFCLEVBQUV2QixnQkFBZ0IsQ0FBQ2MsVUFBVSxFQUFFLHVCQUF1QixDQUFDO01BQzVFLEdBQUdDO0lBQ0osQ0FBQztFQUNGOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTQywrQkFBK0JBLENBQUNGLFVBQW1CLEVBQXNCO0lBQ2pGLE1BQU1VLE1BQTBCLEdBQUc7TUFDbENaLEdBQUcsRUFBRUUsVUFBVSxDQUFDWCxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUVzQixPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztNQUM5REMsT0FBTyxFQUFFckIsaUNBQWlDLENBQUNTLFVBQVUsRUFBRSxTQUFTLENBQUM7TUFDakVhLE9BQU8sRUFBRXRCLGlDQUFpQyxDQUFDUyxVQUFVLEVBQUUsU0FBUyxDQUFDO01BQ2pFYyxPQUFPLEVBQUU1QixnQkFBZ0IsQ0FBQ2MsVUFBVSxFQUFFLFNBQVMsQ0FBQztNQUNoRGUsY0FBYyxFQUFFN0IsZ0JBQWdCLENBQUNjLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBbUM7TUFDaEdnQixTQUFTLEVBQUU5QixnQkFBZ0IsQ0FBQ2MsVUFBVSxFQUFFLFdBQVcsQ0FBbUM7TUFDdEZpQixNQUFNLEVBQUUvQixnQkFBZ0IsQ0FBQ2MsVUFBVSxFQUFFLFFBQVEsQ0FBQztNQUM5Q2tCLEtBQUssRUFBRWxCLFVBQVUsQ0FBQ0csU0FBUyxLQUFLLFFBQVEsR0FBRyxRQUFRLEdBQUc7SUFDdkQsQ0FBQztJQUNELElBQUlILFVBQVUsRUFBRVgsWUFBWSxDQUFDLGVBQWUsQ0FBQyxFQUFFO01BQzlDcUIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHbkIsaUNBQWlDLENBQUNTLFVBQVUsRUFBRSxlQUFlLENBQUM7SUFDekY7SUFFQSxJQUFJQSxVQUFVLEVBQUVYLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRTtNQUN6Q3FCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBR3hCLGdCQUFnQixDQUFDYyxVQUFVLEVBQUUsVUFBVSxDQUE0QjtJQUN6RjtJQUVBLElBQUlBLFVBQVUsRUFBRVgsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFO01BQ3RDcUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHUyxNQUFNLENBQUNDLFFBQVEsQ0FBQ2xDLGdCQUFnQixDQUFDYyxVQUFVLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRjtJQUVBLE9BQU9VLE1BQU07RUFDZDs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTVyw4QkFBOEJBLENBQ3RDckIsVUFBbUIsRUFDbkJzQixpQkFBOEUsRUFDSTtJQUNsRixJQUFJLENBQUMsYUFBYSxFQUFFLHFCQUFxQixDQUFDLENBQUNDLFFBQVEsQ0FBQ3ZCLFVBQVUsQ0FBQ0csU0FBUyxDQUFDLEVBQUU7TUFDMUUsTUFBTUYsZ0JBQWdCLEdBQUd1QixxQ0FBcUMsQ0FBQ3hCLFVBQVUsRUFBRXNCLGlCQUFzRCxDQUFDO01BQ2xJLElBQUl0QixVQUFVLENBQUNHLFNBQVMsS0FBSyxhQUFhLEVBQUU7UUFDM0MsT0FBTztVQUNOQyxJQUFJLEVBQUVKLFVBQVUsQ0FBQ1gsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJWSxnQkFBZ0IsQ0FBQ0gsR0FBRztVQUM3RDJCLGFBQWEsRUFBRXZDLGdCQUFnQixDQUFDYyxVQUFVLEVBQUUsZUFBZSxDQUFDO1VBQzVELEdBQUdDO1FBQ0osQ0FBQztNQUNGO01BQ0EsT0FBT0EsZ0JBQWdCO0lBQ3hCOztJQUVBO0lBQ0EsT0FBT0Ysc0JBQXNCLENBQUNDLFVBQVUsQ0FBQztFQUMxQztFQUVBLE1BQU0wQiwyQkFBMkIsR0FBRyxTQUFBQSxDQUFVQyxPQUFnQixFQUFpQjtJQUM5RSxPQUFPO01BQ043QixHQUFHLEVBQUUsZUFBZTtNQUNwQjhCLGFBQWEsRUFBRUQsT0FBTyxDQUFDRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUVDLFNBQVM7TUFDN0NDLGFBQWEsRUFBRUosT0FBTyxDQUFDdEMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxFQUFFMkMsS0FBSyxDQUFDLEdBQUcsQ0FBQztNQUNoRUMsYUFBYSxFQUFFTixPQUFPLENBQUN0QyxZQUFZLENBQUMsZUFBZSxDQUFDLEVBQUUyQyxLQUFLLENBQUMsR0FBRyxDQUFDO01BQ2hFRSxxQkFBcUIsRUFBR1AsT0FBTyxDQUFDdEMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLElBQUlDO0lBQzFFLENBQUM7RUFDRixDQUFDOztFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxNQUFNNkMsd0JBQXdCLEdBQUcsU0FBQUEsQ0FBVUMscUJBQThCLEVBQThCO0lBQ3RHLE9BQU87TUFDTnRDLEdBQUcsRUFBRSxjQUFjO01BQ25CdUMsS0FBSyxFQUFFRCxxQkFBcUIsQ0FBQy9DLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRTJDLEtBQUssQ0FBQyxHQUFHLENBQUM7TUFDOURNLFVBQVUsRUFBRUYscUJBQXFCLENBQUMvQyxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUs7SUFDbEUsQ0FBQztFQUNGLENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU21DLHFDQUFxQ0EsQ0FDN0N4QixVQUFtQixFQUNuQnNCLGlCQUFvRCxFQU9uRDtJQUNELE1BQU1pQixhQUFhLEdBQUdDLEtBQUssQ0FBQ0MsU0FBUyxDQUFDQyxLQUFLLENBQUNDLEtBQUssQ0FBQzNDLFVBQVUsQ0FBQzZCLFFBQVEsQ0FBQyxDQUFDZSxHQUFHLENBQUVDLFNBQWtCLElBQUs7TUFDbEcsT0FBTzlDLHNCQUFzQixDQUFDOEMsU0FBUyxDQUFDO0lBQ3pDLENBQUMsQ0FBQztJQUNGdkIsaUJBQWlCLENBQUN4QixHQUFHLEdBQUd3QixpQkFBaUIsQ0FBQ3hCLEdBQUcsQ0FBQ2EsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7SUFDdkVYLFVBQVUsQ0FBQzhDLFlBQVksQ0FBQyxLQUFLLEVBQUV4QixpQkFBaUIsQ0FBQ3hCLEdBQUcsQ0FBQztJQUNyRCxPQUFPO01BQ05BLEdBQUcsRUFBRXdCLGlCQUFpQixDQUFDeEIsR0FBRztNQUMxQmlELE9BQU8sRUFBRVIsYUFBYTtNQUN0QnRCLE1BQU0sRUFBRS9CLGdCQUFnQixDQUFDYyxVQUFVLEVBQUUsUUFBUSxDQUFDO01BQzlDZ0IsU0FBUyxFQUFFOUIsZ0JBQWdCLENBQUNjLFVBQVUsRUFBRSxXQUFXLENBQW1DO01BQ3RGa0IsS0FBSyxFQUFFbEIsVUFBVSxDQUFDRyxTQUFTLEtBQUssYUFBYSxHQUFHLGFBQWEsR0FBRztJQUNqRSxDQUFDO0VBQ0Y7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBUzZDLGdDQUFnQ0EsQ0FDeENDLFdBQW9CLEVBQ3BCM0IsaUJBQW9ELEVBWW5EO0lBQ0RBLGlCQUFpQixDQUFDeEIsR0FBRyxHQUFHd0IsaUJBQWlCLENBQUN4QixHQUFHLENBQUVhLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO0lBQ3hFc0MsV0FBVyxDQUFDSCxZQUFZLENBQUMsS0FBSyxFQUFFeEIsaUJBQWlCLENBQUN4QixHQUFHLENBQUM7SUFDdEQsT0FBTztNQUNOQSxHQUFHLEVBQUV3QixpQkFBaUIsQ0FBQ3hCLEdBQUc7TUFDMUJvRCxLQUFLLEVBQUVoRSxnQkFBZ0IsQ0FBQytELFdBQVcsRUFBRSxPQUFPLENBQUM7TUFDN0NFLDBCQUEwQixFQUFFRixXQUFXLENBQUM1RCxZQUFZLENBQUMsNEJBQTRCLENBQUMsR0FDL0U0RCxXQUFXLENBQUM1RCxZQUFZLENBQUMsNEJBQTRCLENBQUMsS0FBSyxNQUFNLEdBQ2pFQyxTQUFTO01BQ1o4RCxVQUFVLEVBQUVsRSxnQkFBZ0IsQ0FBQytELFdBQVcsRUFBRSxZQUFZLENBQTJCO01BQ2pGSSxlQUFlLEVBQUVuRSxnQkFBZ0IsQ0FBQytELFdBQVcsRUFBRSxpQkFBaUIsQ0FBZ0M7TUFDaEdLLFlBQVksRUFBRXBFLGdCQUFnQixDQUFDK0QsV0FBVyxFQUFFLGNBQWMsQ0FBaUM7TUFDM0ZqQyxTQUFTLEVBQUc5QixnQkFBZ0IsQ0FBQytELFdBQVcsRUFBRSxXQUFXLENBQUMsSUFBSS9ELGdCQUFnQixDQUFDK0QsV0FBVyxFQUFFLG1CQUFtQixDQUcvRjtNQUFFO01BQ2RoQyxNQUFNLEVBQUUvQixnQkFBZ0IsQ0FBQytELFdBQVcsRUFBRSxRQUFRLENBQUMsSUFBSS9ELGdCQUFnQixDQUFDK0QsV0FBVyxFQUFFLGdCQUFnQixDQUFDO01BQUU7TUFDcEdNLGFBQWEsRUFBRU4sV0FBVyxDQUFDNUQsWUFBWSxDQUFDLGVBQWUsQ0FBQyxHQUFHNEQsV0FBVyxDQUFDNUQsWUFBWSxDQUFDLGVBQWUsQ0FBQyxLQUFLLE1BQU0sR0FBR0MsU0FBUztNQUMzSGtFLGNBQWMsRUFBRUMsbUJBQW1CLENBQUNSLFdBQVc7SUFDaEQsQ0FBQztFQUNGOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNTLHlCQUF5QkEsQ0FDakNULFdBQW9CLEVBQ3BCM0IsaUJBQW9ELEVBQ2hCO0lBQ3BDQSxpQkFBaUIsQ0FBQ3hCLEdBQUcsR0FBR3dCLGlCQUFpQixDQUFDeEIsR0FBRyxDQUFFYSxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztJQUN4RXNDLFdBQVcsQ0FBQ0gsWUFBWSxDQUFDLEtBQUssRUFBRXhCLGlCQUFpQixDQUFDeEIsR0FBRyxDQUFDO0lBQ3RELElBQUltRCxXQUFXLENBQUM5QyxTQUFTLEtBQUssUUFBUSxFQUFFO01BQ3ZDLE9BQU87UUFDTixHQUFHNkMsZ0NBQWdDLENBQUNDLFdBQVcsRUFBRTNCLGlCQUFpQixDQUFDO1FBQ25FcUMsTUFBTSxFQUFFekUsZ0JBQWdCLENBQUMrRCxXQUFXLEVBQUUsUUFBUSxDQUFDO1FBQy9DVyxPQUFPLEVBQUUxRSxnQkFBZ0IsQ0FBQytELFdBQVcsRUFBRSxTQUFTLENBQUM7UUFDakRZLFFBQVEsRUFBRUMsaUJBQWlCLENBQUNiLFdBQVcsQ0FBQztRQUN4Q2MsVUFBVSxFQUFFN0UsZ0JBQWdCLENBQUMrRCxXQUFXLEVBQUUsWUFBWSxDQUFDLEVBQUVqQixLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ25FZ0MsUUFBUSxFQUFFZixXQUFXLENBQUM1RCxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUc0RCxXQUFXLENBQUM1RCxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssTUFBTSxHQUFHQyxTQUFTO1FBQzVHNEIsS0FBSyxFQUFFK0IsV0FBVyxDQUFDOUM7TUFDcEIsQ0FBQztJQUNGO0lBQ0EsT0FBTztNQUNOLEdBQUc2QyxnQ0FBZ0MsQ0FBQ0MsV0FBVyxFQUFFM0IsaUJBQWlCLENBQUM7TUFDbkVKLEtBQUssRUFBRTtJQUNSLENBQUM7RUFDRjtFQUVBLE1BQU11QyxtQkFBbUIsR0FBSTlCLE9BQWdCLElBQXVFO0lBQ25ILE1BQU02QixjQUFjLEdBQUdTLHNCQUFzQixDQUFDdEMsT0FBTyxFQUFFLGdCQUFnQixDQUFDO0lBQ3hFLElBQUksQ0FBQzZCLGNBQWMsRUFBRTtNQUNwQixPQUFPbEUsU0FBUztJQUNqQjtJQUNBLE9BQU87TUFDTnVFLFFBQVEsRUFBRUwsY0FBYyxDQUFDSyxRQUFRO01BQ2pDSyxJQUFJLEVBQUVWLGNBQWMsQ0FBQ1UsSUFBSSxLQUFLLE1BQU07TUFDcENDLElBQUksRUFBRVgsY0FBYyxDQUFDVyxJQUFJO01BQ3pCQyxRQUFRLEVBQUVaLGNBQWMsQ0FBQ1ksUUFBUSxFQUFFcEMsS0FBSyxDQUFDLEdBQUcsQ0FBQztNQUM3Q2tCLEtBQUssRUFBRU0sY0FBYyxDQUFDTixLQUFLO01BQzNCbUIsU0FBUyxFQUFFYixjQUFjLENBQUNhLFNBQVM7TUFDbkNDLEtBQUssRUFBRWQsY0FBYyxDQUFDYyxLQUFLO01BQzNCQyxTQUFTLEVBQUVmLGNBQWMsQ0FBQ2UsU0FBUztNQUNuQ0MsVUFBVSxFQUFFaEIsY0FBYyxDQUFDZ0IsVUFBVTtNQUNyQ0MsUUFBUSxFQUFFakIsY0FBYyxDQUFDaUI7SUFDMUIsQ0FBQztFQUNGLENBQUM7RUFFRCxNQUFNWCxpQkFBaUIsR0FBSW5DLE9BQWdCLElBQXlCO0lBQ25FLElBQUkrQyxXQUFXLEdBQUdDLGNBQWMsQ0FBQ2hELE9BQU8sRUFBRSxVQUFVLENBQUM7SUFDckQsSUFBSSxDQUFDK0MsV0FBVyxFQUFFO01BQ2pCLEtBQUssSUFBSUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHakQsT0FBTyxDQUFDRSxRQUFRLENBQUNnRCxNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO1FBQ2pELE1BQU1FLEtBQUssR0FBR25ELE9BQU8sQ0FBQ0UsUUFBUSxDQUFDa0QsSUFBSSxDQUFDSCxDQUFDLENBQUM7UUFDdEMsSUFBSUUsS0FBSyxJQUFJLENBQUNBLEtBQUssQ0FBQ0UsUUFBUSxDQUFDQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtVQUN4RFAsV0FBVyxHQUFHSSxLQUFLO1VBQ25CO1FBQ0Q7TUFDRDtJQUNEO0lBQ0EsT0FBT0osV0FBVyxFQUFFNUMsU0FBUyxJQUFJSCxPQUFPLENBQUN0QyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUlDLFNBQVM7RUFDL0UsQ0FBQztFQUVELE1BQU0yRSxzQkFBc0IsR0FBR0EsQ0FBQ3RDLE9BQWdCLEVBQUV1RCxlQUF1QixLQUF5QztJQUNqSCxNQUFNUixXQUFXLEdBQUdDLGNBQWMsQ0FBQ2hELE9BQU8sRUFBRXVELGVBQWUsQ0FBQztJQUM1RCxNQUFNSixLQUFLLEdBQUdKLFdBQVcsRUFBRTdDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDdEMsTUFBTXNELE1BQThCLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLElBQUksQ0FBQ0wsS0FBSyxFQUFFO01BQ1gsT0FBT3hGLFNBQVM7SUFDakI7SUFDQSxLQUFLLE1BQU1GLElBQUksSUFBSTBGLEtBQUssQ0FBQ00saUJBQWlCLENBQUMsQ0FBQyxFQUFFO01BQzdDLE1BQU1DLEtBQUssR0FBR1AsS0FBSyxDQUFDekYsWUFBWSxDQUFDRCxJQUFJLENBQUM7TUFDdEMsSUFBSWlHLEtBQUssRUFBRTtRQUNWRixNQUFNLENBQUMvRixJQUFJLENBQUMsR0FBR2lHLEtBQUs7TUFDckI7SUFDRDtJQUNBLE9BQU9GLE1BQU07RUFDZCxDQUFDO0VBRUQsTUFBTVIsY0FBYyxHQUFHQSxDQUFDaEQsT0FBZ0IsRUFBRXVELGVBQXVCLEtBQTBCO0lBQzFGLElBQUlSLFdBQWdDO0lBQ3BDLEtBQUssSUFBSUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHakQsT0FBTyxDQUFDRSxRQUFRLENBQUNnRCxNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO01BQ2pELE1BQU1FLEtBQUssR0FBR25ELE9BQU8sQ0FBQ0UsUUFBUSxDQUFDa0QsSUFBSSxDQUFDSCxDQUFDLENBQUM7TUFDdEMsSUFBSUUsS0FBSyxFQUFFRSxRQUFRLENBQUNDLFFBQVEsQ0FBQ0MsZUFBZSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ3ZEUixXQUFXLEdBQUdJLEtBQUs7UUFDbkI7TUFDRDtJQUNEO0lBQ0EsT0FBT0osV0FBVztFQUNuQixDQUFDOztFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQWpCQSxJQXdCcUJZLFVBQVUsSUFBQUMsSUFBQSxHQU45QkMsbUJBQW1CLENBQUM7SUFDcEJwRyxJQUFJLEVBQUUsT0FBTztJQUNicUcsU0FBUyxFQUFFLHdCQUF3QjtJQUNuQ0MsZUFBZSxFQUFFLGVBQWU7SUFDaENDLFdBQVcsRUFBRSxDQUFDLDhCQUE4QjtFQUM3QyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU9BQyxjQUFjLENBQUM7SUFDZjFCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIyQixjQUFjLEVBQUUsUUFBUTtJQUN4QkMsYUFBYSxFQUFFLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsb0JBQW9CLENBQUM7SUFDN0VDLG1CQUFtQixFQUFFLENBQ3BCLHFDQUFxQyxFQUNyQyxnREFBZ0QsRUFDaEQseURBQXlELENBQ3pEO0lBQ0RDLFFBQVEsRUFBRSxJQUFJO0lBQ2RqQyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQWtDLEtBQUEsR0FRREwsY0FBYyxDQUFDO0lBQUUxQixJQUFJLEVBQUUsU0FBUztJQUFFOEIsUUFBUSxFQUFFLElBQUk7SUFBRUUsUUFBUSxFQUFFO0VBQUssQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FRbkVQLGNBQWMsQ0FBQztJQUNmMUIsSUFBSSxFQUFFLHNCQUFzQjtJQUM1QjJCLGNBQWMsRUFBRSxRQUFRO0lBQ3hCQyxhQUFhLEVBQUUsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQztJQUM3RUUsUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFJLEtBQUEsR0FPRFIsY0FBYyxDQUFDO0lBQUUxQixJQUFJLEVBQUUsU0FBUztJQUFFOEIsUUFBUSxFQUFFO0VBQUssQ0FBQyxDQUFDLEVBQUFLLEtBQUEsR0FPbkRULGNBQWMsQ0FBQztJQUFFMUIsSUFBSSxFQUFFLFNBQVM7SUFBRThCLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBTSxLQUFBLEdBT25EVixjQUFjLENBQUM7SUFBRTFCLElBQUksRUFBRSxTQUFTO0lBQUU4QixRQUFRLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQU8sS0FBQSxHQVFuRFgsY0FBYyxDQUFDO0lBQUUxQixJQUFJLEVBQUUsU0FBUztJQUFFOEIsUUFBUSxFQUFFO0VBQUssQ0FBQyxDQUFDLEVBQUFRLEtBQUEsR0FPbkRaLGNBQWMsQ0FBQztJQUFFMUIsSUFBSSxFQUFFLFNBQVM7SUFBRThCLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBUyxNQUFBLEdBUW5EYixjQUFjLENBQUM7SUFBRTFCLElBQUksRUFBRSxRQUFRO0lBQUU4QixRQUFRLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQVUsTUFBQSxHQVFsRGQsY0FBYyxDQUFDO0lBQUUxQixJQUFJLEVBQUUsUUFBUTtJQUFFOEIsUUFBUSxFQUFFO0VBQUssQ0FBQyxDQUFDLEVBQUFXLE1BQUEsR0FPbERmLGNBQWMsQ0FBQztJQUFFMUIsSUFBSSxFQUFFLEtBQUs7SUFBRThCLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBWSxNQUFBLEdBUS9DaEIsY0FBYyxDQUFDO0lBQUUxQixJQUFJLEVBQUUsS0FBSztJQUFFOEIsUUFBUSxFQUFFO0VBQUssQ0FBQyxDQUFDLEVBQUFhLE1BQUEsR0FTL0NqQixjQUFjLENBQUM7SUFBRTFCLElBQUksRUFBRSxLQUFLO0lBQUU4QixRQUFRLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQWMsTUFBQSxHQVMvQ2xCLGNBQWMsQ0FBQztJQUFFMUIsSUFBSSxFQUFFLFNBQVM7SUFBRThCLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBZSxNQUFBLEdBT25EbkIsY0FBYyxDQUFDO0lBQUUxQixJQUFJLEVBQUUsU0FBUztJQUFFOEIsUUFBUSxFQUFFO0VBQUssQ0FBQyxDQUFDLEVBQUFnQixNQUFBLEdBWW5EcEIsY0FBYyxDQUFDO0lBQUUxQixJQUFJLEVBQUUsUUFBUTtJQUFFK0MsYUFBYSxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUM7SUFBRWpCLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBa0IsTUFBQSxHQU9uR3RCLGNBQWMsQ0FBQztJQUFFMUIsSUFBSSxFQUFFLEtBQUs7SUFBRThCLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBbUIsTUFBQSxHQU8vQ3ZCLGNBQWMsQ0FBQztJQUFFMUIsSUFBSSxFQUFFLFNBQVM7SUFBRThCLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBb0IsTUFBQSxHQU9uRHhCLGNBQWMsQ0FBQztJQUFFMUIsSUFBSSxFQUFFLFNBQVM7SUFBRThCLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBcUIsTUFBQSxHQU9uRHpCLGNBQWMsQ0FBQztJQUFFMUIsSUFBSSxFQUFFLEtBQUs7SUFBRThCLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBc0IsTUFBQSxHQU8vQzFCLGNBQWMsQ0FBQztJQUFFMUIsSUFBSSxFQUFFLEtBQUs7SUFBRThCLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBdUIsTUFBQSxHQVkvQzNCLGNBQWMsQ0FBQztJQUFFMUIsSUFBSSxFQUFFLFFBQVE7SUFBRStDLGFBQWEsRUFBRSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQUVqQixRQUFRLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQXdCLE1BQUEsR0FPdEc1QixjQUFjLENBQUM7SUFBRTFCLElBQUksRUFBRSxRQUFRO0lBQUU4QixRQUFRLEVBQUUsSUFBSTtJQUFFeUIsYUFBYSxFQUFFO0VBQUssQ0FBQyxDQUFDLEVBQUFDLE1BQUEsR0FPdkU5QixjQUFjLENBQUM7SUFBRTFCLElBQUksRUFBRSxRQUFRO0lBQUU4QixRQUFRLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQTJCLE1BQUEsR0FNbEQvQixjQUFjLENBQUM7SUFBRTFCLElBQUksRUFBRSx3QkFBd0I7SUFBRThCLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBNEIsTUFBQSxHQU9sRWhDLGNBQWMsQ0FBQztJQUFFMUIsSUFBSSxFQUFFLFNBQVM7SUFBRThCLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBNkIsTUFBQSxHQUduRGpDLGNBQWMsQ0FBQztJQUFFMUIsSUFBSSxFQUFFLFFBQVE7SUFBRThCLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBOEIsTUFBQSxHQUdsRGxDLGNBQWMsQ0FBQztJQUFFMUIsSUFBSSxFQUFFLFFBQVE7SUFBRThCLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBK0IsTUFBQSxHQU1sRG5DLGNBQWMsQ0FBQztJQUNmMUIsSUFBSSxFQUFFLHNCQUFzQjtJQUM1QjJCLGNBQWMsRUFBRSxRQUFRO0lBQ3hCQyxhQUFhLEVBQUUsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQztJQUM3RUMsbUJBQW1CLEVBQUUsQ0FBQyw2Q0FBNkMsQ0FBQztJQUNwRUMsUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFnQyxNQUFBLEdBT0RwQyxjQUFjLENBQUM7SUFBRTFCLElBQUksRUFBRSxTQUFTO0lBQUU4QixRQUFRLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQWlDLE1BQUEsR0FtQm5EckMsY0FBYyxDQUFDO0lBQUUxQixJQUFJLEVBQUUsUUFBUTtJQUFFOEIsUUFBUSxFQUFFO0VBQUssQ0FBQyxDQUFDLEVBQUFrQyxNQUFBLEdBU2xEdEMsY0FBYyxDQUFDO0lBQUUxQixJQUFJLEVBQUUsU0FBUztJQUFFOEIsUUFBUSxFQUFFO0VBQUssQ0FBQyxDQUFDLEVBQUFtQyxNQUFBLEdBU25EdkMsY0FBYyxDQUFDO0lBQUUxQixJQUFJLEVBQUUsUUFBUTtJQUFFOEIsUUFBUSxFQUFFLElBQUk7SUFBRWlCLGFBQWEsRUFBRSxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUI7RUFBRSxDQUFDLENBQUMsRUFBQW1CLE1BQUEsR0FNdEh4QyxjQUFjLENBQUM7SUFBRTFCLElBQUksRUFBRSxTQUFTO0lBQUU4QixRQUFRLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQXFDLE1BQUEsR0FXbkR6QyxjQUFjLENBQUM7SUFBRTFCLElBQUksRUFBRSxRQUFRO0lBQUU4QixRQUFRLEVBQUUsSUFBSTtJQUFFaUIsYUFBYSxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxhQUFhO0VBQUUsQ0FBQyxDQUFDLEVBQUFxQixNQUFBLEdBV25JMUMsY0FBYyxDQUFDO0lBQUUxQixJQUFJLEVBQUUsUUFBUTtJQUFFOEIsUUFBUSxFQUFFLElBQUk7SUFBRWlCLGFBQWEsRUFBRSxDQUFDLFNBQVM7RUFBRSxDQUFDLENBQUMsRUFBQXNCLE1BQUEsR0FVOUUzQyxjQUFjLENBQUM7SUFBRTFCLElBQUksRUFBRSxRQUFRO0lBQUU4QixRQUFRLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQXdDLE1BQUEsR0FZbEQ1QyxjQUFjLENBQUM7SUFDZjFCLElBQUksRUFBRSxRQUFRO0lBQ2Q4QixRQUFRLEVBQUUsSUFBSTtJQUNkaUIsYUFBYSxFQUFFLENBQ2QseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDM0Isd0JBQXdCLEVBQ3hCLCtCQUErQixFQUMvQiwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsTUFBTTtFQUVSLENBQUMsQ0FBQyxFQUFBd0IsTUFBQSxHQVNEN0MsY0FBYyxDQUFDO0lBQUUxQixJQUFJLEVBQUU7RUFBeUIsQ0FBQyxDQUFDLEVBQUF3RSxNQUFBLEdBT2xEOUMsY0FBYyxDQUFDO0lBQUUxQixJQUFJLEVBQUUsU0FBUztJQUFFOEIsUUFBUSxFQUFFO0VBQUssQ0FBQyxDQUFDLEVBQUEyQyxNQUFBLEdBR25EL0MsY0FBYyxDQUFDO0lBQUUxQixJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQTBFLE1BQUEsR0FHbENoRCxjQUFjLENBQUM7SUFBRTFCLElBQUksRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUFBMkUsTUFBQSxHQWdCbkNqRCxjQUFjLENBQUM7SUFBRTFCLElBQUksRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUFBNEUsTUFBQSxHQVNuQ2xELGNBQWMsQ0FBQztJQUFFMUIsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUE2RSxNQUFBLEdBR2xDbkQsY0FBYyxDQUFDO0lBQUUxQixJQUFJLEVBQUU7RUFBVSxDQUFDLENBQUMsRUFBQThFLE1BQUEsR0FHbkNwRCxjQUFjLENBQUM7SUFBRTFCLElBQUksRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUFBK0UsTUFBQSxHQU9uQ3JELGNBQWMsQ0FBQztJQUNmMUIsSUFBSSxFQUFFLFFBQVE7SUFDZDJCLGNBQWMsRUFBRSwwQ0FBMEM7SUFDMURHLFFBQVEsRUFBRSxJQUFJO0lBQ2RrRCxRQUFRLEVBQUUsU0FBQUEsQ0FBVUMsb0JBQTBDLEVBQUU7TUFDL0QsSUFDQ0Esb0JBQW9CLENBQUNoSyxJQUFJLElBQ3pCLENBQUMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDbUMsUUFBUSxDQUFDNkgsb0JBQW9CLENBQUNoSyxJQUFJLENBQUMsRUFDN0c7UUFDRCxNQUFNLElBQUlpSyxLQUFLLENBQUMsaUJBQWlCRCxvQkFBb0IsQ0FBQ2hLLElBQUksa0NBQWtDLENBQUM7TUFDOUY7TUFFQSxPQUFPZ0ssb0JBQW9CO0lBQzVCO0VBQ0QsQ0FBQyxDQUFDLEVBQUFFLE1BQUEsR0FPRHpELGNBQWMsQ0FBQztJQUNmMUIsSUFBSSxFQUFFLFFBQVE7SUFDZDJCLGNBQWMsRUFBRSw2Q0FBNkM7SUFDN0RHLFFBQVEsRUFBRSxJQUFJO0lBQ2RrRCxRQUFRLEVBQUUsU0FBQUEsQ0FBVUksdUJBQWdELEVBQUU7TUFDckUsSUFBSSxPQUFPQSx1QkFBdUIsQ0FBQ0Msc0JBQXNCLEtBQUssUUFBUSxFQUFFO1FBQ3ZFRCx1QkFBdUIsQ0FBQ0Msc0JBQXNCLEdBQUdELHVCQUF1QixDQUFDQyxzQkFBc0IsS0FBSyxNQUFNO01BQzNHO01BQ0EsT0FBT0QsdUJBQXVCO0lBQy9CO0VBQ0QsQ0FBQyxDQUFDLEVBQUFFLE1BQUEsR0FPREMsZ0JBQWdCLENBQUM7SUFDakJ2RixJQUFJLEVBQUUsNEJBQTRCO0lBQ2xDd0YsUUFBUSxFQUFFLENBQUMsaUNBQWlDLEVBQUUsb0NBQW9DLEVBQUUseUNBQXlDLENBQUM7SUFDOUgxRCxRQUFRLEVBQUUsSUFBSTtJQUNkMkQsY0FBYyxFQUFFLElBQUk7SUFDcEJDLFFBQVEsRUFBRSxJQUFJO0lBQ2RDLG1CQUFtQixFQUFFekk7RUFDdEIsQ0FBQyxDQUFDLEVBQUEwSSxNQUFBLEdBT0RMLGdCQUFnQixDQUFDO0lBQ2pCdkYsSUFBSSxFQUFFLDhCQUE4QjtJQUNwQzhCLFFBQVEsRUFBRSxJQUFJO0lBQ2Q0RCxRQUFRLEVBQUUsS0FBSztJQUNmRyxPQUFPLEVBQUUsSUFBSTtJQUNiRixtQkFBbUIsRUFBRXBJO0VBQ3RCLENBQUMsQ0FBQyxFQUFBdUksTUFBQSxHQU9EUCxnQkFBZ0IsQ0FBQztJQUNqQnZGLElBQUksRUFBRSw0QkFBNEI7SUFDbEN3RixRQUFRLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQztJQUNoRDFELFFBQVEsRUFBRSxJQUFJO0lBQ2Q0RCxRQUFRLEVBQUUsSUFBSTtJQUNkRCxjQUFjLEVBQUUsSUFBSTtJQUNwQk0sU0FBUyxFQUFFLElBQUk7SUFDZkosbUJBQW1CLEVBQUVwRztFQUN0QixDQUFDLENBQUMsRUFBQXlHLE1BQUEsR0FPRFQsZ0JBQWdCLENBQUM7SUFDakJ2RixJQUFJLEVBQUUsMkNBQTJDO0lBQ2pEOEIsUUFBUSxFQUFFLElBQUk7SUFDZCtELE9BQU8sRUFBRSxJQUFJO0lBQ2JILFFBQVEsRUFBRSxLQUFLO0lBQ2ZDLG1CQUFtQixFQUFFM0g7RUFDdEIsQ0FBQyxDQUFDLEVBQUFpSSxNQUFBLEdBaUJEQyxVQUFVLENBQUMsQ0FBQyxFQUFBQyxNQUFBLEdBU1pELFVBQVUsQ0FBQyxDQUFDLEVBQUFFLE1BQUEsR0FRWkYsVUFBVSxDQUFDLENBQUMsRUFBQUcsTUFBQSxHQU1aSCxVQUFVLENBQUMsQ0FBQyxFQUFBSSxNQUFBLEdBR1pKLFVBQVUsQ0FBQyxDQUFDLEVBQUFLLE1BQUEsR0FPWkwsVUFBVSxDQUFDLENBQUMsRUFBQU0sTUFBQSxHQUdaTixVQUFVLENBQUMsQ0FBQyxFQUFBTyxNQUFBLEdBR1ovRSxjQUFjLENBQUM7SUFBRTFCLElBQUksRUFBRSxTQUFTO0lBQUU4QixRQUFRLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQVYsSUFBQSxDQUFBc0YsTUFBQSxJQUFBQyxPQUFBLElBQUFDLFdBQUEsMEJBQUFDLHFCQUFBO0lBT3BELFNBQUExRixXQUFZMkYsS0FBK0IsRUFBRUMsb0JBQTZCLEVBQUVDLHlCQUFvRCxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUNqSUEsS0FBQSxHQUFBSixxQkFBQSxDQUFBSyxJQUFBLE9BQU1KLEtBQUssRUFBRUMsb0JBQW9CLEVBQUVDLHlCQUF5QixDQUFDO01BeGlCOUQ7TUFDQTtBQUNEO0FBQ0E7QUFDQTtNQUhDRywwQkFBQSxDQUFBRixLQUFBLGNBQUFHLFdBQUEsRUFBQUgsS0FBQTtNQWtCQTtNQUNBO0FBQ0Q7QUFDQTtBQUNBO01BSENFLDBCQUFBLENBQUFGLEtBQUEsVUFBQUksWUFBQSxFQUFBSixLQUFBO01BT0E7QUFDRDtBQUNBO0FBQ0E7QUFDQTtNQUpDRSwwQkFBQSxDQUFBRixLQUFBLGlCQUFBSyxZQUFBLEVBQUFMLEtBQUE7TUFhQTtBQUNEO0FBQ0E7QUFDQTtNQUhDRSwwQkFBQSxDQUFBRixLQUFBLDBCQUFBTSxZQUFBLEVBQUFOLEtBQUE7TUFPQTtBQUNEO0FBQ0E7QUFDQTtNQUhDRSwwQkFBQSxDQUFBRixLQUFBLHNCQUFBTyxZQUFBLEVBQUFQLEtBQUE7TUFPQTtBQUNEO0FBQ0E7QUFDQTtNQUhDRSwwQkFBQSxDQUFBRixLQUFBLHVDQUFBUSxZQUFBLEVBQUFSLEtBQUE7TUFPQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO01BSkNFLDBCQUFBLENBQUFGLEtBQUEscUJBQUFTLFlBQUEsRUFBQVQsS0FBQTtNQVFBO0FBQ0Q7QUFDQTtBQUNBO01BSENFLDBCQUFBLENBQUFGLEtBQUEsa0JBQUFVLFlBQUEsRUFBQVYsS0FBQTtNQU9BO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7TUFKQ0UsMEJBQUEsQ0FBQUYsS0FBQSxvQkFBQVcsWUFBQSxFQUFBWCxLQUFBO01BUUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtNQUpDRSwwQkFBQSxDQUFBRixLQUFBLHFCQUFBWSxhQUFBLEVBQUFaLEtBQUE7TUFRQTtBQUNEO0FBQ0E7QUFDQTtNQUhDRSwwQkFBQSxDQUFBRixLQUFBLHVCQUFBYSxhQUFBLEVBQUFiLEtBQUE7TUFPQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO01BSkNFLDBCQUFBLENBQUFGLEtBQUEsb0JBQUFjLGFBQUEsRUFBQWQsS0FBQTtNQVFBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUxDRSwwQkFBQSxDQUFBRixLQUFBLHVCQUFBZSxhQUFBLEVBQUFmLEtBQUE7TUFTQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7TUFMQ0UsMEJBQUEsQ0FBQUYsS0FBQSx5QkFBQWdCLGFBQUEsRUFBQWhCLEtBQUE7TUFTQTtBQUNEO0FBQ0E7QUFDQTtNQUhDRSwwQkFBQSxDQUFBRixLQUFBLGdDQUFBaUIsYUFBQSxFQUFBakIsS0FBQTtNQU9BO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQVJDRSwwQkFBQSxDQUFBRixLQUFBLGtCQUFBa0IsYUFBQSxFQUFBbEIsS0FBQTtNQVlBO0FBQ0Q7QUFDQTtBQUNBO01BSENFLDBCQUFBLENBQUFGLEtBQUEsY0FBQW1CLGFBQUEsRUFBQW5CLEtBQUE7TUFPQTtBQUNEO0FBQ0E7QUFDQTtNQUhDRSwwQkFBQSxDQUFBRixLQUFBLGlCQUFBb0IsYUFBQSxFQUFBcEIsS0FBQTtNQU9BO0FBQ0Q7QUFDQTtBQUNBO01BSENFLDBCQUFBLENBQUFGLEtBQUEsNEJBQUFxQixhQUFBLEVBQUFyQixLQUFBO01BT0E7QUFDRDtBQUNBO0FBQ0E7TUFIQ0UsMEJBQUEsQ0FBQUYsS0FBQSxxQkFBQXNCLGFBQUEsRUFBQXRCLEtBQUE7TUFPQTtBQUNEO0FBQ0E7QUFDQTtNQUhDRSwwQkFBQSxDQUFBRixLQUFBLGVBQUF1QixhQUFBLEVBQUF2QixLQUFBO01BT0E7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO01BUkNFLDBCQUFBLENBQUFGLEtBQUEsaUJBQUF3QixhQUFBLEVBQUF4QixLQUFBO01BWUE7QUFDRDtBQUNBO0FBQ0E7TUFIQ0UsMEJBQUEsQ0FBQUYsS0FBQSxlQUFBeUIsYUFBQSxFQUFBekIsS0FBQTtNQU9BO0FBQ0Q7QUFDQTtBQUNBO01BSENFLDBCQUFBLENBQUFGLEtBQUEsWUFBQTBCLGFBQUEsRUFBQTFCLEtBQUE7TUFPQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSxpQkFBQTJCLGFBQUEsRUFBQTNCLEtBQUE7TUFNQTtBQUNEO0FBQ0E7QUFDQTtNQUhDRSwwQkFBQSxDQUFBRixLQUFBLG1CQUFBNEIsYUFBQSxFQUFBNUIsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLFFBQUE2QixhQUFBLEVBQUE3QixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsZUFBQThCLGFBQUEsRUFBQTlCLEtBQUE7TUFhQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSxvQ0FBQStCLGFBQUEsRUFBQS9CLEtBQUE7TUFZQTtBQUNEO0FBQ0E7QUFDQTtNQUhDRSwwQkFBQSxDQUFBRixLQUFBLGtCQUFBZ0MsYUFBQSxFQUFBaEMsS0FBQTtNQU9BO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO01BZkNFLDBCQUFBLENBQUFGLEtBQUEscUJBQUFpQyxhQUFBLEVBQUFqQyxLQUFBO01BbUJBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUxDRSwwQkFBQSxDQUFBRixLQUFBLGNBQUFrQyxhQUFBLEVBQUFsQyxLQUFBO01BU0E7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO01BTENFLDBCQUFBLENBQUFGLEtBQUEsVUFBQW1DLGFBQUEsRUFBQW5DLEtBQUE7TUFTQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSx3QkFBQW9DLGFBQUEsRUFBQXBDLEtBQUE7TUFNQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO01BUENFLDBCQUFBLENBQUFGLEtBQUEsbUJBQUFxQyxhQUFBLEVBQUFyQyxLQUFBO01BV0E7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQVBDRSwwQkFBQSxDQUFBRixLQUFBLHVCQUFBc0MsYUFBQSxFQUFBdEMsS0FBQTtNQVdBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO01BTkNFLDBCQUFBLENBQUFGLEtBQUEsbUJBQUF1QyxhQUFBLEVBQUF2QyxLQUFBO01BYUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO01BTENFLDBCQUFBLENBQUFGLEtBQUEsMEJBQUF3QyxhQUFBLEVBQUF4QyxLQUFBO01BMkJBO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLGlCQUFBeUMsYUFBQSxFQUFBekMsS0FBQTtNQU1BO0FBQ0Q7QUFDQTtBQUNBO01BSENFLDBCQUFBLENBQUFGLEtBQUEsMkJBQUEwQyxhQUFBLEVBQUExQyxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsZUFBQTJDLGFBQUEsRUFBQTNDLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxXQUFBNEMsYUFBQSxFQUFBNUMsS0FBQTtNQXVCQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSxpQkFBQTZDLGFBQUEsRUFBQTdDLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxjQUFBOEMsYUFBQSxFQUFBOUMsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGFBQUErQyxhQUFBLEVBQUEvQyxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsNEJBQUFnRCxhQUFBLEVBQUFoRCxLQUFBO01BcUJBO0FBQ0Q7QUFDQTtBQUNBO01BSENFLDBCQUFBLENBQUFGLEtBQUEsa0JBQUFpRCxhQUFBLEVBQUFqRCxLQUFBO01BcUJBO0FBQ0Q7QUFDQTtBQUNBO01BSENFLDBCQUFBLENBQUFGLEtBQUEsNkJBQUFrRCxhQUFBLEVBQUFsRCxLQUFBO01BaUJBO0FBQ0Q7QUFDQTtBQUNBO01BSENFLDBCQUFBLENBQUFGLEtBQUEsYUFBQW1ELGFBQUEsRUFBQW5ELEtBQUE7TUFjQTtBQUNEO0FBQ0E7QUFDQTtNQUhDRSwwQkFBQSxDQUFBRixLQUFBLGNBQUFvRCxhQUFBLEVBQUFwRCxLQUFBO01BYUE7QUFDRDtBQUNBO0FBQ0E7TUFIQ0UsMEJBQUEsQ0FBQUYsS0FBQSxhQUFBcUQsYUFBQSxFQUFBckQsS0FBQTtNQWVBO0FBQ0Q7QUFDQTtBQUNBO01BSENFLDBCQUFBLENBQUFGLEtBQUEsMkJBQUFzRCxhQUFBLEVBQUF0RCxLQUFBO01BaUJBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO01BVENFLDBCQUFBLENBQUFGLEtBQUEsdUJBQUF1RCxhQUFBLEVBQUF2RCxLQUFBO01BYUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO01BTENFLDBCQUFBLENBQUFGLEtBQUEsY0FBQXdELGFBQUEsRUFBQXhELEtBQUE7TUFTQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO01BSkNFLDBCQUFBLENBQUFGLEtBQUEsdUJBQUF5RCxhQUFBLEVBQUF6RCxLQUFBO01BUUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsMEJBQUEwRCxhQUFBLEVBQUExRCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsa0JBQUEyRCxhQUFBLEVBQUEzRCxLQUFBO01BU0E7QUFDRDtBQUNBO0FBQ0E7TUFIQ0UsMEJBQUEsQ0FBQUYsS0FBQSxxQkFBQTRELGFBQUEsRUFBQTVELEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxxQkFBQTZELGFBQUEsRUFBQTdELEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxpQkFBQThELGFBQUEsRUFBQTlELEtBQUE7TUFtQkMsTUFBTStELGlCQUFpQixHQUFHQywyQkFBMkIsQ0FDcERoRSxLQUFBLENBQUtpRSxRQUFRLEVBQ2JqRSxLQUFBLENBQUtrRSxXQUNOLENBQUM7TUFDRGxFLEtBQUEsQ0FBSytELGlCQUFpQixHQUFHQSxpQkFBaUI7TUFFMUMvRCxLQUFBLENBQUttRSxlQUFlLEdBQUdqSyxVQUFVLENBQUNrSyxxQkFBcUIsQ0FBQXBFLEtBQUEsRUFBT0QseUJBQXlCLENBQUM7TUFDeEZDLEtBQUEsQ0FBS3FFLHNCQUFzQixHQUFHQyxRQUFRLENBQUNDLG9CQUFvQixDQUFDdkUsS0FBQSxDQUFLbUUsZUFBZSxFQUFZcEUseUJBQXlCLENBQUM7TUFFdEhDLEtBQUEsQ0FBS3dFLGlCQUFpQixHQUFHeEUsS0FBQSxDQUFLK0QsaUJBQWlCLENBQUNVLGNBQWM7TUFDOUR6RSxLQUFBLENBQUswRSxTQUFTLEdBQUczRSx5QkFBeUIsQ0FBQzRFLE1BQU0sQ0FBQ0QsU0FBUztNQUMzRDFFLEtBQUEsQ0FBSzRFLGdCQUFnQixHQUFHNUUsS0FBQSxDQUFLd0UsaUJBQWlCLENBQUNLLFdBQVcsQ0FBQzdFLEtBQUEsQ0FBS21FLGVBQWUsQ0FBQ1csVUFBVSxDQUFDQyxVQUFVLENBQUMsQ0FBQ0MsTUFBbUI7TUFDMUhoRixLQUFBLENBQUtpRixZQUFZLEdBQUdsRix5QkFBeUIsQ0FBQ2tGLFlBQVk7TUFDMURqRixLQUFBLENBQUtrRixPQUFPLENBQUMsQ0FBQztNQUVkbEYsS0FBQSxDQUFLbUYsWUFBWSxLQUFLLENBQUMsQ0FBQztNQUN4Qm5GLEtBQUEsQ0FBS21GLFlBQVksQ0FBQ25SLElBQUksS0FBS2dNLEtBQUEsQ0FBS21FLGVBQWUsQ0FBQ1csVUFBVSxDQUFDTSxNQUFNLENBQUNDLElBQW9DO01BQ3RHckYsS0FBQSxDQUFLbUYsWUFBWSxDQUFDRyxXQUFXLEtBQU10RixLQUFBLENBQUttRSxlQUFlLENBQUNXLFVBQVUsQ0FBQ00sTUFBTSxDQUFvQkcsTUFBTTtNQUNuRztNQUNBO01BQ0E7TUFDQTtNQUNBLElBQ0N2RixLQUFBLENBQUt3RixRQUFRLEtBQUt0UixTQUFTLEtBQzFCOEwsS0FBQSxDQUFLbUUsZUFBZSxDQUFDVyxVQUFVLENBQUNXLFdBQVcsS0FBSyxJQUFJLElBQUl6RixLQUFBLENBQUttRSxlQUFlLENBQUN1QixPQUFPLENBQUNGLFFBQVEsS0FBSyxJQUFJLENBQUMsRUFDdkc7UUFDRHhGLEtBQUEsQ0FBS3dGLFFBQVEsR0FBRyxJQUFJO01BQ3JCO01BRUFHLFFBQVEsQ0FBQ0MsdUJBQXVCLENBQUM1RixLQUFBLENBQUttRSxlQUFlLENBQUN1QixPQUFPLENBQUM3TyxhQUFhLEVBQUUsRUFBRSxFQUFFbUosS0FBQSxDQUFLbUUsZUFBZSxDQUFDO01BRXRHLElBQUkwQixjQUFjLEdBQUcsS0FBSzs7TUFFMUI7TUFDQTtNQUNBO01BQ0E7TUFDQSxJQUFJLENBQUM3RixLQUFBLENBQUs4RixTQUFTLEVBQUU7UUFDcEI7UUFDQTtRQUNBOUYsS0FBQSxDQUFLOEYsU0FBUyxHQUFHQyxRQUFRLENBQUMsQ0FBQy9GLEtBQUEsQ0FBS2dHLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUM1RUgsY0FBYyxHQUFHLElBQUk7TUFDdEI7TUFDQTtNQUNBN0YsS0FBQSxDQUFLNkYsY0FBYyxHQUFHQSxjQUFjO01BQUMsT0FBQTdGLEtBQUE7SUFDdEM7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBTENpRyxRQUFBLEdBQUEvTCxVQUFBO0lBQUFnTSxjQUFBLENBQUFoTSxVQUFBLEVBQUEwRixxQkFBQTtJQUFBMUYsVUFBQSxDQU1PaU0sb0JBQW9CLEdBQTNCLFNBQU9BLG9CQUFvQkEsQ0FDMUJwQyxpQkFBcUcsRUFDckdxQyxnQkFBeUQsRUFDaEQ7TUFDVCxNQUFNbkMsUUFBUSxHQUFHb0Msa0NBQWtDLENBQUN0QyxpQkFBaUIsQ0FBVzs7TUFFaEY7TUFDQSxJQUFJLENBQUNFLFFBQVEsRUFBRTtRQUNkcUMsR0FBRyxDQUFDQyxLQUFLLENBQUMsMENBQTBDLENBQUM7UUFDckQsT0FBTywyQ0FBZ0M7TUFDeEM7TUFFQSxJQUFJQyxrQkFBa0IsQ0FBV3pDLGlCQUFpQixDQUFDMEMsWUFBWSx1Q0FBNEIsQ0FBQyxFQUFFO1FBQzdGLE9BQU94QyxRQUFRLENBQUMsQ0FBQztNQUNsQjtNQUNBO01BQ0EsTUFBTXlDLGNBQWMsR0FBR04sZ0JBQWdCLENBQUNPLHVCQUF1QixDQUFDMUMsUUFBUSxDQUFDO01BRXpFLElBQUkyQyxjQUFzQyxHQUFHLEVBQUU7TUFDL0MsSUFDQ0osa0JBQWtCLENBQ2pCekMsaUJBQWlCLENBQUMwQyxZQUFZLDJEQUUvQixDQUFDLElBQ0RELGtCQUFrQixDQUFzQnpDLGlCQUFpQixDQUFDMEMsWUFBWSxrREFBdUMsQ0FBQyxFQUM3RztRQUNERyxjQUFjLEdBQUdDLCtCQUErQixDQUMvQzlDLGlCQUFpQixDQUFDMEMsWUFBWSxFQUM5QnhDLFFBQVEsRUFDUnlDLGNBQWMsQ0FBQ04sZ0JBQWdCLEVBQy9CLElBQ0QsQ0FBQztNQUNGLENBQUMsTUFBTTtRQUNORSxHQUFHLENBQUNDLEtBQUssQ0FBQyxzQ0FBc0N4QyxpQkFBaUIsQ0FBQzBDLFlBQVksQ0FBRUssSUFBSSxFQUFFLENBQUM7TUFDeEY7TUFFQSxNQUFNQyxXQUFXLEdBQUdILGNBQWMsQ0FBQ0ksSUFBSSxDQUFFQyxHQUFHLElBQUs7UUFDaEQsT0FBT0EsR0FBRyxDQUFDQyxhQUFhLENBQUNKLElBQUksMENBQStCO01BQzdELENBQUMsQ0FBQztNQUVGLElBQUlDLFdBQVcsRUFBRTtRQUNoQixPQUFPQSxXQUFXLENBQUNJLGNBQWM7TUFDbEMsQ0FBQyxNQUFNO1FBQ047UUFDQWIsR0FBRyxDQUFDQyxLQUFLLENBQUMseUNBQXlDeEMsaUJBQWlCLENBQUMwQyxZQUFZLENBQUVLLElBQUksRUFBRSxDQUFDO1FBQzFGLE9BQU8sMkNBQWdDLENBQUMsQ0FBQztNQUMxQztJQUNELENBQUM7SUFBQSxJQUFBTSxNQUFBLEdBQUFsTixVQUFBLENBQUE3QyxTQUFBO0lBQUErUCxNQUFBLENBUURDLGdCQUFnQixHQUFoQixTQUFBQSxnQkFBZ0JBLENBQUEsRUFBNEI7TUFDM0MsTUFBTUMsYUFBc0MsR0FBRyxDQUFDLENBQUM7TUFDakRwTixVQUFVLENBQUNxTixVQUFVLENBQUNELGFBQWEsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDRSxZQUFZLENBQUM7TUFDdkV0TixVQUFVLENBQUNxTixVQUFVLENBQUNELGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUNHLGNBQWMsQ0FBQztNQUMzRXZOLFVBQVUsQ0FBQ3FOLFVBQVUsQ0FBQ0QsYUFBYSxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQ0ksZUFBZSxDQUFDO01BQzdFeE4sVUFBVSxDQUFDcU4sVUFBVSxDQUFDRCxhQUFhLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQzlCLFFBQVEsQ0FBQztNQUMvRHRMLFVBQVUsQ0FBQ3FOLFVBQVUsQ0FBQ0QsYUFBYSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUN6USxhQUFhLENBQUM7TUFDekVxRCxVQUFVLENBQUNxTixVQUFVLENBQUNELGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUNLLGNBQWMsQ0FBQztNQUMzRXpOLFVBQVUsQ0FBQ3FOLFVBQVUsQ0FBQ0QsYUFBYSxFQUFFLHNCQUFzQixFQUFFLElBQUksQ0FBQ00sb0JBQW9CLENBQUM7TUFDdkYxTixVQUFVLENBQUNxTixVQUFVLENBQUNELGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUNPLGlCQUFpQixDQUFDO01BQ2pGM04sVUFBVSxDQUFDcU4sVUFBVSxDQUFDRCxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDUSxpQkFBaUIsQ0FBQztNQUNqRjVOLFVBQVUsQ0FBQ3FOLFVBQVUsQ0FBQ0QsYUFBYSxFQUFFLHFCQUFxQixFQUFFLElBQUksQ0FBQ1MsbUJBQW1CLENBQUM7TUFDckY3TixVQUFVLENBQUNxTixVQUFVLENBQUNELGFBQWEsRUFBRSw0QkFBNEIsRUFBRSxJQUFJLENBQUN2UCwwQkFBMEIsQ0FBQztNQUNuR21DLFVBQVUsQ0FBQ3FOLFVBQVUsQ0FBQ0QsYUFBYSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUNVLFlBQVksQ0FBQztNQUN2RTlOLFVBQVUsQ0FBQ3FOLFVBQVUsQ0FBQ0QsYUFBYSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUNXLFFBQVEsQ0FBQztNQUMvRC9OLFVBQVUsQ0FBQ3FOLFVBQVUsQ0FBQ0QsYUFBYSxFQUFFLGtCQUFrQixFQUFFLElBQUksQ0FBQ1ksZ0JBQWdCLENBQUM7TUFDL0VoTyxVQUFVLENBQUNxTixVQUFVLENBQUNELGFBQWEsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDYSxlQUFlLENBQUM7TUFDdkVqTyxVQUFVLENBQUNxTixVQUFVLENBQUNELGFBQWEsRUFBRSxtQ0FBbUMsRUFBRSxJQUFJLENBQUNjLGlDQUFpQyxDQUFDO01BQ2pIbE8sVUFBVSxDQUFDcU4sVUFBVSxDQUFDRCxhQUFhLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQ2UsV0FBVyxDQUFDO01BQ3JFbk8sVUFBVSxDQUFDcU4sVUFBVSxDQUFDRCxhQUFhLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxDQUFDZ0Isc0JBQXNCLENBQUM7TUFDM0ZwTyxVQUFVLENBQUNxTixVQUFVLENBQUNELGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUNpQixlQUFlLENBQUM7TUFDN0VyTyxVQUFVLENBQUNxTixVQUFVLENBQUNELGFBQWEsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDa0IsU0FBUyxDQUFDO01BQ2pFdE8sVUFBVSxDQUFDcU4sVUFBVSxDQUFDRCxhQUFhLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQ21CLFdBQVcsQ0FBQztNQUNyRXZPLFVBQVUsQ0FBQ3FOLFVBQVUsQ0FBQ0QsYUFBYSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUNvQixhQUFhLENBQUM7TUFDekV4TyxVQUFVLENBQUNxTixVQUFVLENBQUNELGFBQWEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDdk8sSUFBSSxDQUFDO01BQ3ZELElBQUksSUFBSSxDQUFDL0IscUJBQXFCLEVBQUUyUixZQUFZLEVBQUUxUixLQUFLLEVBQUV3QyxNQUFNLEVBQUU7UUFDNURTLFVBQVUsQ0FBQ3FOLFVBQVUsQ0FBQ0QsYUFBYSxFQUFFLHVCQUF1QixFQUFFO1VBQzdEclEsS0FBSyxFQUFFLElBQUksQ0FBQ0QscUJBQXFCLENBQUMyUixZQUFZLENBQUMxUixLQUFLLENBQUNPLEdBQUcsQ0FBRW9SLElBQUksSUFBSztZQUNsRSxPQUFPO2NBQUV6QixjQUFjLEVBQUV5QjtZQUFLLENBQUM7VUFDaEMsQ0FBQyxDQUFDO1VBQ0YxUixVQUFVLEVBQUUsSUFBSSxDQUFDRixxQkFBcUIsQ0FBQzJSLFlBQVksQ0FBQ3pSO1FBQ3JELENBQUMsQ0FBQztNQUNIO01BRUEsSUFBSSxJQUFJLENBQUNpTyxZQUFZLEVBQUU7UUFDdEIsTUFBTUEsWUFBcUMsR0FBRyxDQUFDLENBQUM7UUFDaERqTCxVQUFVLENBQUNxTixVQUFVLENBQUNwQyxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQ0EsWUFBWSxDQUFDblIsSUFBSSxDQUFDO1FBQ25Fa0csVUFBVSxDQUFDcU4sVUFBVSxDQUFDcEMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLElBQUksQ0FBQ0EsWUFBWSxDQUFDMEQsY0FBYyxDQUFDO1FBQ3ZGM08sVUFBVSxDQUFDcU4sVUFBVSxDQUFDcEMsWUFBWSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUNBLFlBQVksQ0FBQ0csV0FBVyxDQUFDO1FBQ2pGcEwsVUFBVSxDQUFDcU4sVUFBVSxDQUFDcEMsWUFBWSxFQUFFLG9DQUFvQyxFQUFFLElBQUksQ0FBQ0EsWUFBWSxDQUFDMkQsa0NBQWtDLENBQUM7UUFDL0g1TyxVQUFVLENBQUNxTixVQUFVLENBQUNwQyxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQ0EsWUFBWSxDQUFDNEQsUUFBUSxDQUFDO1FBQzNFLElBQUl4VSxNQUFNLENBQUN5VSxPQUFPLENBQUM3RCxZQUFZLENBQUMsQ0FBQzFMLE1BQU0sR0FBRyxDQUFDLEVBQUU7VUFDNUM2TixhQUFhLENBQUMsY0FBYyxDQUFDLEdBQUduQyxZQUFZO1FBQzdDO01BQ0Q7TUFFQSxJQUFJLElBQUksQ0FBQzhELFFBQVEsRUFBRTtRQUNsQixNQUFNQyxjQUF1QyxHQUFHLENBQUMsQ0FBQztRQUNsRGhQLFVBQVUsQ0FBQ3FOLFVBQVUsQ0FBQzJCLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUNELFFBQVEsQ0FBQ0UsYUFBYSxFQUFFM1MsYUFBYSxDQUFDO1FBQ25HMEQsVUFBVSxDQUFDcU4sVUFBVSxDQUFDMkIsY0FBYyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUM7UUFDekRoUCxVQUFVLENBQUNxTixVQUFVLENBQUMyQixjQUFjLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQ0QsUUFBUSxDQUFDRSxhQUFhLEVBQUV4UyxhQUFhLEVBQUV5UyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0dsUCxVQUFVLENBQUNxTixVQUFVLENBQUMyQixjQUFjLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQ0QsUUFBUSxDQUFDRSxhQUFhLEVBQUV0UyxhQUFhLEVBQUV1UyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0dsUCxVQUFVLENBQUNxTixVQUFVLENBQUMyQixjQUFjLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxDQUFDRCxRQUFRLENBQUNFLGFBQWEsRUFBRXJTLHFCQUFxQixDQUFDO1FBQ2xId1EsYUFBYSxDQUFDLGdCQUFnQixDQUFDLEdBQUc0QixjQUFjO01BQ2pEO01BRUEsSUFBSSxJQUFJLENBQUMvSyx1QkFBdUIsRUFBRUMsc0JBQXNCLEtBQUssSUFBSSxFQUFFO1FBQ2xFLE1BQU1ELHVCQUFnRCxHQUFHLENBQUMsQ0FBQztRQUMzRGpFLFVBQVUsQ0FBQ3FOLFVBQVUsQ0FBQ3BKLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLElBQUksQ0FBQ0EsdUJBQXVCLENBQUNDLHNCQUFzQixDQUFDO1FBQzdILElBQUk3SixNQUFNLENBQUN5VSxPQUFPLENBQUM3Syx1QkFBdUIsQ0FBQyxDQUFDMUUsTUFBTSxHQUFHLENBQUMsRUFBRTtVQUN2RDZOLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHbkosdUJBQXVCO1FBQ25FO01BQ0Q7TUFDQSxPQUFPbUosYUFBYTtJQUNyQixDQUFDO0lBQUFwTixVQUFBLENBRU1rSyxxQkFBcUIsR0FBNUIsU0FBT0EscUJBQXFCQSxDQUFDaUYsS0FBaUIsRUFBRXRKLHlCQUFvRCxFQUFzQjtNQUN6SCxNQUFNdUosdUJBQXVCLEdBQUdELEtBQUssQ0FBQ0UsbUJBQW1CLENBQ3hERixLQUFLLENBQUN0RixpQkFBaUIsRUFDdkJzRixLQUFLLENBQUNuRixXQUFXLEVBQUVzRixPQUFPLENBQUMsQ0FBQyxFQUM1QnpKLHlCQUNELENBQUM7TUFDRCxNQUFNMEosaUJBQWlCLEdBQUd2UCxVQUFVLENBQUNpTSxvQkFBb0IsQ0FBQ2tELEtBQUssQ0FBQ3RGLGlCQUFpQixFQUFFdUYsdUJBQXVCLENBQUM7TUFFM0csTUFBTWhDLGFBQWEsR0FBRytCLEtBQUssQ0FBQ2hDLGdCQUFnQixDQUFDLENBQUM7TUFDOUMsTUFBTXFDLHFCQUFpRCxHQUFHO1FBQ3pEL1IsT0FBTyxFQUFFdUMsVUFBVSxDQUFDeVAseUJBQXlCLENBQUNOLEtBQUssQ0FBQztRQUNwRE8sT0FBTyxFQUFFMVAsVUFBVSxDQUFDMlAsd0JBQXdCLENBQUNSLEtBQUssQ0FBQztRQUNuRC9CO01BQ0QsQ0FBQztNQUVELE1BQU13QyxXQUFvQyxHQUFHLENBQUMsQ0FBQztNQUMvQ0EsV0FBVyxDQUFDTCxpQkFBaUIsQ0FBQyxHQUFHQyxxQkFBcUI7TUFDdEQsTUFBTXRELGdCQUFnQixHQUFHaUQsS0FBSyxDQUFDRSxtQkFBbUIsQ0FDakRGLEtBQUssQ0FBQ3RGLGlCQUFpQixFQUN2QnNGLEtBQUssQ0FBQ25GLFdBQVcsRUFBRXNGLE9BQU8sQ0FBQyxDQUFDLEVBQzVCekoseUJBQXlCLEVBQ3pCK0osV0FDRCxDQUFDO01BRUQsSUFBSUMsMEJBQTREO01BQ2hFLElBQUlWLEtBQUssQ0FBQ1csOEJBQThCLEVBQUU7UUFDekMsTUFBTUMsWUFBWSxHQUFHakcsMkJBQTJCLENBQy9DcUYsS0FBSyxDQUFDVyw4QkFBOEIsRUFDcENYLEtBQUssQ0FBQ25GLFdBQ1AsQ0FBQztRQUNENkYsMEJBQTBCLEdBQUdFLFlBQVksQ0FBQ3hELFlBQVk7TUFDdkQ7TUFFQSxNQUFNeUQsdUJBQXVCLEdBQUdDLGlDQUFpQyxDQUMvRGQsS0FBSyxDQUFDZSxXQUFXLElBQUlmLEtBQUssQ0FBQ3RGLGlCQUFpQixDQUFDMEMsWUFBWSxHQUN2REwsZ0JBQWdCLENBQUNpRSx5QkFBeUIsQ0FDMUNoQixLQUFLLENBQUN0RixpQkFBaUIsQ0FBQzBDLFlBQVksQ0FBQzZELGtCQUFrQixFQUN2RGxFLGdCQUFnQixDQUFDbUUsYUFBYSxDQUFDLENBQy9CLENBQUMsR0FDRGxFLGtDQUFrQyxDQUFDZ0QsS0FBSyxDQUFDdEYsaUJBQWlCLENBQUMsRUFDOURxQyxnQkFBZ0IsRUFDaEI7UUFDQ29FLCtCQUErQixFQUFFbkIsS0FBSyxDQUFDb0Isa0JBQWtCO1FBQ3pEViwwQkFBMEI7UUFDMUJXLHFCQUFxQixFQUFFckIsS0FBSyxDQUFDZSxXQUFXLElBQUk7TUFDN0MsQ0FDRCxDQUFDOztNQUVEO01BQ0EsT0FBT0YsdUJBQXVCLENBQUN0RCxjQUFjLENBQUNJLElBQUksQ0FDaERDLEdBQTRDLElBQUtBLEdBQUcsQ0FBQ2xPLElBQUksS0FBSzRSLGlCQUFpQixDQUFDQyxLQUNsRixDQUFDO0lBQ0Y7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUExUSxVQUFBLENBS095UCx5QkFBeUIsR0FBaEMsU0FBT0EseUJBQXlCQSxDQUFDTixLQUFpQixFQUFrQztNQUNuRixNQUFNd0IsZUFBK0MsR0FBRyxDQUFDLENBQUM7TUFDMUQsTUFBTUMsd0JBQXdCLEdBQUl4VixNQUF5QyxJQUFXO1FBQ3JGLE1BQU1aLEdBQUcsR0FBR1ksTUFBTSxDQUFDWixHQUFJO1FBQ3ZCbVcsZUFBZSxDQUFDblcsR0FBRyxDQUFDLEdBQUc7VUFDdEJxVyxRQUFRLEVBQUU7WUFDVG5WLFNBQVMsRUFBR04sTUFBTSxDQUFDTSxTQUFTLElBQUksT0FBcUI7WUFDckRDLE1BQU0sRUFBRVAsTUFBTSxDQUFDTztVQUNoQixDQUFDO1VBQ0RILE9BQU8sRUFBRUosTUFBTSxDQUFDSSxPQUFPO1VBQ3ZCQyxjQUFjLEVBQUVMLE1BQU0sQ0FBQ0ssY0FBYztVQUNyQ0YsT0FBTyxFQUFFSCxNQUFNLENBQUNHLE9BQU87VUFDdkJELE9BQU8sRUFBRUYsTUFBTSxDQUFDRSxPQUFPO1VBQ3ZCd1YsYUFBYSxFQUFFMVYsTUFBTSxDQUFDMFYsYUFBYTtVQUNuQ0MsUUFBUSxFQUFFM1YsTUFBTSxDQUFDMlYsUUFBUTtVQUN6QkMsS0FBSyxFQUFFNVYsTUFBTSxDQUFDNFY7UUFDZixDQUFDO1FBQ0QsSUFBSTVWLE1BQU0sQ0FBQ1EsS0FBSyxLQUFLLFFBQVEsRUFBRTtVQUM5QitVLGVBQWUsQ0FBQ25XLEdBQUcsQ0FBQyxHQUFHO1lBQ3RCLEdBQUdtVyxlQUFlLENBQUNuVyxHQUFHLENBQUM7WUFDdkJNLElBQUksRUFBRU0sTUFBTSxDQUFDTixJQUFJO1lBQ2pCbVcsUUFBUSxFQUFFLElBQUk7WUFDZGxXLEtBQUssRUFBRUssTUFBTSxDQUFDTCxLQUFLO1lBQ25CQyxpQkFBaUIsRUFBRUksTUFBTSxDQUFDSjtVQUMzQixDQUFDO1VBQ0Q7UUFDRDtRQUNBLE1BQU1rVyxjQUFjLEdBQUc7VUFDdEJqVyxnQkFBZ0IsRUFBRUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDO1VBQzVDRixrQkFBa0IsRUFBRUUsTUFBTSxDQUFDLG9CQUFvQjtRQUNoRCxDQUFDO1FBQ0RqQix5QkFBeUIsQ0FBQytXLGNBQWMsQ0FBQztRQUN6Q1AsZUFBZSxDQUFDblcsR0FBRyxDQUFDLEdBQUc7VUFDdEIsR0FBR21XLGVBQWUsQ0FBQ25XLEdBQUcsQ0FBQztVQUN2QjBXLGNBQWMsRUFBRTdXLE1BQU0sQ0FBQ3lVLE9BQU8sQ0FBQ29DLGNBQWMsQ0FBQyxDQUFDM1IsTUFBTSxHQUFHMlIsY0FBYyxHQUFHbFgsU0FBUztVQUNsRm1CLHFCQUFxQixFQUFFQyxNQUFNLENBQUNEO1FBQy9CLENBQUM7TUFDRixDQUFDO01BQ0QsSUFBSWdVLEtBQUssQ0FBQzFSLE9BQU8sRUFBRTtRQUNsQnBELE1BQU0sQ0FBQzhXLE1BQU0sQ0FBQ2hDLEtBQUssQ0FBQzFSLE9BQU8sQ0FBQyxDQUFDbEQsT0FBTyxDQUFFa0YsSUFBSSxJQUFLO1VBQzlDLElBQUlBLElBQUksQ0FBQzdELEtBQUssS0FBSyxRQUFRLElBQUk2RCxJQUFJLENBQUM3RCxLQUFLLEtBQUssZ0JBQWdCLEVBQUU7WUFDL0RnVix3QkFBd0IsQ0FBQ25SLElBQUksQ0FBQztVQUMvQixDQUFDLE1BQU0sSUFBSUEsSUFBSSxDQUFDN0QsS0FBSyxLQUFLLGFBQWEsSUFBSTZELElBQUksQ0FBQzdELEtBQUssS0FBSyxxQkFBcUIsRUFBRTtZQUNoRjtZQUNBLE1BQU1wQixHQUFHLEdBQUdpRixJQUFJLENBQUNqRixHQUFJO1lBQ3JCbVcsZUFBZSxDQUFDblcsR0FBRyxDQUFDLEdBQUc7Y0FDdEJxVyxRQUFRLEVBQUU7Z0JBQ1RuVixTQUFTLEVBQUcrRCxJQUFJLENBQUMvRCxTQUFTLElBQUksT0FBcUI7Z0JBQ25EQyxNQUFNLEVBQUU4RCxJQUFJLENBQUM5RDtjQUNkLENBQUM7Y0FDRHlWLElBQUksRUFBRTNSLElBQUksQ0FBQ2hDLE9BQU8sQ0FBQ0gsR0FBRyxDQUFFbEMsTUFBTSxJQUFLQSxNQUFNLENBQUNaLEdBQUk7WUFDL0MsQ0FBQztZQUNELElBQUlpRixJQUFJLENBQUM3RCxLQUFLLEtBQUssYUFBYSxFQUFFO2NBQ2pDK1UsZUFBZSxDQUFDblcsR0FBRyxDQUFDLEdBQUc7Z0JBQ3RCLEdBQUdtVyxlQUFlLENBQUNuVyxHQUFHLENBQUM7Z0JBQ3ZCTSxJQUFJLEVBQUUyRSxJQUFJLENBQUMzRSxJQUFJO2dCQUNmcUIsYUFBYSxFQUFFc0QsSUFBSSxDQUFDdEQsYUFBYTtnQkFDakM4VSxRQUFRLEVBQUU7Y0FDWCxDQUFDO1lBQ0Y7WUFDQXhSLElBQUksQ0FBQ2hDLE9BQU8sQ0FBQ2xELE9BQU8sQ0FBRWEsTUFBTSxJQUFLO2NBQ2hDd1Ysd0JBQXdCLENBQUN4VixNQUFNLENBQUM7WUFDakMsQ0FBQyxDQUFDO1VBQ0g7UUFDRCxDQUFDLENBQUM7TUFDSDtNQUNBLE9BQU91VixlQUFlO0lBQ3ZCOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBM1EsVUFBQSxDQUtPMlAsd0JBQXdCLEdBQS9CLFNBQU9BLHdCQUF3QkEsQ0FBQ1IsS0FBaUIsRUFBa0Y7TUFDbEksTUFBTWtDLGFBQWEsR0FBSUMsS0FBd0MsSUFBMkI7UUFDekYsT0FBT0EsS0FBSyxDQUFDMVYsS0FBSyxLQUFLLFFBQVE7TUFDaEMsQ0FBQztNQUVELE1BQU0yVixjQUE4RixHQUFHLENBQUMsQ0FBQztNQUV6RyxJQUFJcEMsS0FBSyxDQUFDTyxPQUFPLEVBQUU7UUFDbEJyVixNQUFNLENBQUM4VyxNQUFNLENBQUNoQyxLQUFLLENBQUNPLE9BQU8sQ0FBQyxDQUFDblYsT0FBTyxDQUFFaVgsTUFBTSxJQUFLO1VBQ2hELElBQUlDLHNCQUEwRztVQUM5RyxJQUFJSixhQUFhLENBQUNHLE1BQU0sQ0FBQyxFQUFFO1lBQzFCQyxzQkFBc0IsR0FBRztjQUN4QnBULE1BQU0sRUFBRW1ULE1BQU0sQ0FBQ25ULE1BQU87Y0FDdEJULEtBQUssRUFBRTRULE1BQU0sQ0FBQzVULEtBQUs7Y0FDbkJFLFVBQVUsRUFBRTBULE1BQU0sQ0FBQzFULFVBQXdCO2NBQzNDQyxlQUFlLEVBQUV5VCxNQUFNLENBQUN6VCxlQUFlO2NBQ3ZDRiwwQkFBMEIsRUFBRTJULE1BQU0sQ0FBQzNULDBCQUEwQjtjQUM3REssY0FBYyxFQUFFc1QsTUFBTSxDQUFDdFQsY0FBZ0M7Y0FDdkRPLFVBQVUsRUFBRStTLE1BQU0sQ0FBQy9TLFVBQVU7Y0FDN0JILE9BQU8sRUFBRWtULE1BQU0sQ0FBQ2xULE9BQU87Y0FDdkJDLFFBQVEsRUFBRWlULE1BQU0sQ0FBQ2pULFFBQVM7Y0FDMUJQLFlBQVksRUFBRXdULE1BQU0sQ0FBQ3hULFlBQWdDO2NBQ3JEVSxRQUFRLEVBQUU4UyxNQUFNLENBQUM5UyxRQUFRO2NBQ3pCRyxJQUFJLEVBQUUsTUFBTTtjQUNaWixhQUFhLEVBQUV1VCxNQUFNLENBQUN2VDtZQUN2QixDQUFDO1VBQ0YsQ0FBQyxNQUFNO1lBQ053VCxzQkFBc0IsR0FBRztjQUN4QmpYLEdBQUcsRUFBRWdYLE1BQU0sQ0FBQ2hYLEdBQUk7Y0FDaEJvRCxLQUFLLEVBQUU0VCxNQUFNLENBQUM1VCxLQUFLO2NBQ25CRSxVQUFVLEVBQUUwVCxNQUFNLENBQUMxVCxVQUF3QjtjQUMzQ0MsZUFBZSxFQUFFeVQsTUFBTSxDQUFDelQsZUFBZTtjQUN2Q0YsMEJBQTBCLEVBQUUyVCxNQUFNLENBQUMzVCwwQkFBMEI7Y0FDN0RLLGNBQWMsRUFBRXNULE1BQU0sQ0FBQ3RULGNBQWdDO2NBQ3ZERixZQUFZLEVBQUV3VCxNQUFNLENBQUN4VCxZQUFnQztjQUNyREMsYUFBYSxFQUFFdVQsTUFBTSxDQUFDdlQ7WUFDdkIsQ0FBQztVQUNGOztVQUVBO1VBQ0E7VUFDQTtVQUNBOUQseUJBQXlCLENBQUNzWCxzQkFBc0IsQ0FBQztVQUNqRCxJQUFJSixhQUFhLENBQUNHLE1BQU0sQ0FBQyxLQUFLQSxNQUFNLENBQUM3VixNQUFNLElBQUk2VixNQUFNLENBQUM5VixTQUFTLENBQUMsRUFBRTtZQUNqRStWLHNCQUFzQixDQUFDWixRQUFRLEdBQUc7Y0FDakNsVixNQUFNLEVBQUU2VixNQUFNLENBQUM3VixNQUFNO2NBQ3JCRCxTQUFTLEVBQUc4VixNQUFNLENBQUM5VixTQUFTLElBQUk7WUFDakMsQ0FBQztVQUNGO1VBRUE2VixjQUFjLENBQUNDLE1BQU0sQ0FBQ2hYLEdBQUcsQ0FBRSxHQUFHaVgsc0JBQXNCO1FBQ3JELENBQUMsQ0FBQztNQUNIO01BQ0EsT0FBT0YsY0FBYztJQUN0QixDQUFDO0lBQUFyRSxNQUFBLENBRURsQyxPQUFPLEdBQVAsU0FBQUEsT0FBT0EsQ0FBQSxFQUFTO01BQ2YsSUFBSSxJQUFJLENBQUMwRyxFQUFFLEVBQUU7UUFDWjtRQUNBLElBQUksQ0FBQ0MsTUFBTSxHQUFHLElBQUksQ0FBQ0QsRUFBRTtRQUNyQjtRQUNBLElBQUksQ0FBQzVGLFNBQVMsS0FBSyxJQUFJLENBQUM4RixZQUFZLENBQUMsSUFBSSxDQUFDRixFQUFFLENBQUM7TUFDOUMsQ0FBQyxNQUFNO1FBQ047UUFDQTtRQUNBLElBQUksQ0FBQ0EsRUFBRSxHQUFHLElBQUksQ0FBQ3pILGVBQWUsQ0FBQ1csVUFBVSxDQUFDaUgsS0FBSztRQUMvQyxJQUFJLENBQUMvRixTQUFTLEdBQUcsSUFBSSxDQUFDN0IsZUFBZSxDQUFDVyxVQUFVLENBQUM4RyxFQUFFO1FBQ25ELElBQUksQ0FBQ0MsTUFBTSxHQUFHLElBQUksQ0FBQzFILGVBQWUsQ0FBQ1csVUFBVSxDQUFDaUgsS0FBSztNQUNwRDtJQUNELENBQUM7SUFBQTNFLE1BQUEsQ0FFRDRFLGNBQWMsR0FBZCxTQUFBQSxjQUFjQSxDQUFBLEVBQWU7TUFDNUIsT0FBUSxJQUFJLENBQUNwSCxnQkFBZ0IsRUFBZ0JxSCxVQUFVLElBQUssSUFBSSxDQUFDckgsZ0JBQWdCLEVBQXlCc0gsVUFBVTtJQUNySCxDQUFDO0lBQUE5RSxNQUFBLENBRUQrRSxtQkFBbUIsR0FBbkIsU0FBQUEsbUJBQW1CQSxDQUFBLEVBQXVCO01BQ3pDLE1BQU0zVyxPQUFPLEdBQ1osSUFBSSxDQUFDMlAsWUFBWSxDQUFDblIsSUFBSSxLQUFLb1ksWUFBWSxDQUFDQyxrQkFBa0IsR0FDdkQsSUFBSSxDQUFDbEksZUFBZSxDQUFDeE0sT0FBTyxDQUFDcVAsSUFBSSxDQUFFc0YsQ0FBQyxJQUFLQSxDQUFDLENBQUM1WCxHQUFHLEtBQUs2WCxrQkFBa0IsQ0FBQ0MsTUFBTSxDQUFDLEVBQUVoWCxPQUFPLEdBQ3RGdEIsU0FBUztNQUNiLE9BQU9zQixPQUFPLEtBQUssT0FBTyxHQUFHdEIsU0FBUyxHQUFHc0IsT0FBTztJQUNqRCxDQUFDO0lBQUE0UixNQUFBLENBRURxRixXQUFXLEdBQVgsU0FBQUEsV0FBV0EsQ0FBQSxFQUFXO01BQ3JCLE1BQU1SLFVBQVUsR0FBRyxJQUFJLENBQUNELGNBQWMsQ0FBQyxDQUFDO01BQ3hDLE1BQU1VLFVBQVUsR0FBRyxJQUF1QztNQUMxREEsVUFBVSxDQUFDQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUNDLFFBQVEsS0FBSzFZLFNBQVM7TUFFekQsTUFBTTBRLGdCQUFnQixHQUFHLElBQUksQ0FBQ0osaUJBQWlCLENBQUNLLFdBQVcsQ0FBQzZILFVBQVUsQ0FBQ3ZJLGVBQWUsQ0FBQ1csVUFBVSxDQUFDQyxVQUFVLENBQUMsQ0FBQ0MsTUFFekY7TUFDckIsTUFBTTZILGVBQWUsR0FBRyxJQUFJQyx5QkFBeUIsQ0FBQ0osVUFBVSxFQUFFO1FBQUU5SCxnQkFBZ0I7UUFBRUYsU0FBUyxFQUFFLElBQUksQ0FBQ1QsUUFBUSxDQUFDOEksUUFBUSxDQUFDO01BQUUsQ0FBQyxDQUFDO01BRTVILElBQUk1SCxZQUE4QztNQUNsRCxJQUFJLElBQUksQ0FBQ0EsWUFBWSxJQUFJNVEsTUFBTSxDQUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDMlEsWUFBWSxDQUFDLENBQUMxTCxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ25FMEwsWUFBWSxHQUFHNkgsSUFBQSxDQUFDQyxvQkFBb0I7VUFBQSxHQUFLLElBQUksQ0FBQzlIO1FBQVksQ0FBRyxDQUFDO01BQy9EO01BRUEsT0FDQzZILElBQUEsQ0FBQ3JILFFBQVE7UUFDUixnQkFBYSx3Q0FBd0M7UUFDckR1SCxPQUFPLEVBQUUsc0JBQXNCLElBQUksQ0FBQ2xILFNBQVMsR0FBSTtRQUNqRDRGLEVBQUUsRUFBRSxJQUFJLENBQUNDLE1BQU87UUFDaEI3RixTQUFTLEVBQUUsSUFBSSxDQUFDQSxTQUFVO1FBQzFCdlEsT0FBTyxFQUFFLElBQUksQ0FBQ0EsT0FBUTtRQUN0QjBYLFdBQVcsRUFBRSxJQUFJLENBQUNBLFdBQVk7UUFDOUJDLFdBQVcsRUFBRSxJQUFJLENBQUNBLFdBQVk7UUFDOUJDLGFBQWEsRUFBRSxJQUFJLENBQUNBLGFBQWM7UUFDbENDLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVM7UUFDeEJ6RixpQkFBaUIsRUFBRSxJQUFJLENBQUNBLGlCQUFrQjtRQUMxQ1Msc0JBQXNCLEVBQUUsSUFBSSxDQUFDQSxzQkFBdUI7UUFDcERDLGVBQWUsRUFBRSxJQUFJLENBQUNBLGVBQWdCO1FBQ3RDQyxTQUFTLEVBQUUsSUFBSSxDQUFDckUsZUFBZSxDQUFDdUIsT0FBTyxDQUFDOEMsU0FBUyxJQUFJLElBQUksQ0FBQ3JFLGVBQWUsQ0FBQ1csVUFBVSxDQUFDMEQsU0FBVTtRQUMvRkMsV0FBVyxFQUFFLElBQUksQ0FBQ0EsV0FBWTtRQUM5QjhFLFlBQVksRUFBRSxJQUFJLENBQUNBLFlBQWE7UUFDaENDLElBQUksRUFBRSxJQUFJLENBQUNBLElBQUs7UUFDaEJDLFdBQVcsRUFBRSxJQUFJLENBQUNBLFdBQVk7UUFDOUJsVixNQUFNLEVBQUUsSUFBSSxDQUFDQSxNQUFPO1FBQ3BCbVYsS0FBSyxFQUFFLElBQUksQ0FBQ0EsS0FBTTtRQUNsQkMsU0FBUyxFQUFFLElBQUksQ0FBQ0EsU0FBVTtRQUMxQkMsZUFBZSxFQUFFLElBQUksQ0FBQ0EsZUFBZ0I7UUFDdENoQixRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFnQztRQUMvQ2lCLFlBQVksRUFBRSxJQUFJLENBQUNBLFlBQW9DO1FBQ3ZEQyxlQUFlLEVBQUUsSUFBSSxDQUFDQSxlQUF1QztRQUM3REMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDQSxvQkFBNEM7UUFDdkVDLGlCQUFpQixFQUFFLElBQUksQ0FBQ0EsaUJBQWtCO1FBQzFDblgsYUFBYSxFQUFFLElBQUksQ0FBQ3NOLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQzdPLGFBQWMsQ0FBQztRQUFBO1FBQzNEc04sZUFBZSxFQUFFLGVBQWUsSUFBSSxDQUFDRSxzQkFBc0IsQ0FBRW1GLE9BQU8sQ0FBQyxDQUFDLEdBQXFDO1FBQzNHeUUsNEJBQTRCLEVBQUVoQyxVQUFVLEVBQUUzQixrQkFBbUI7UUFDN0RyRyxRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFRLEVBQUV1RixPQUFPLENBQUMsQ0FBRTtRQUNuQzNELGNBQWMsRUFBRSxJQUFJLENBQUNBLGNBQWU7UUFDcENxQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUNBLGdCQUFpQjtRQUN4Q1YsWUFBWSxFQUFFLElBQUksQ0FBQ0EsWUFBYTtRQUNoQ0MsY0FBYyxFQUFFLElBQUksQ0FBQ0EsY0FBZTtRQUNwQ0MsZUFBZSxFQUFFLElBQUksQ0FBQ0EsZUFBZ0I7UUFDdENJLGlCQUFpQixFQUFFLElBQUksQ0FBQ0EsaUJBQWtCO1FBQzFDQyxtQkFBbUIsRUFBRSxJQUFJLENBQUNBLG1CQUFvQjtRQUM5Q00sV0FBVyxFQUFFLElBQUksQ0FBQ0EsV0FBWTtRQUM5QkwsWUFBWSxFQUFFLElBQUksQ0FBQ0EsWUFBYTtRQUNoQ0MsUUFBUSxFQUFFLElBQUksQ0FBQ0EsUUFBUztRQUN4Qi9ELFdBQVcsRUFBRSxJQUFJLENBQUNBLFdBQVcsRUFBRXNGLE9BQU8sQ0FBQyxDQUFFO1FBQ3pDMEUsZUFBZSxFQUFFLElBQUksQ0FBQ0EsZUFBdUM7UUFDN0RDLGlCQUFpQixFQUFFLElBQUksQ0FBQ0EsaUJBQXlDO1FBQ2pFM0ksUUFBUSxFQUFFLElBQUksQ0FBQ0EsUUFBUztRQUN4QmtELGFBQWEsRUFBRSxJQUFJLENBQUNBLGFBQWM7UUFDbEMrQixrQkFBa0IsRUFBRSxJQUFJLENBQUNBLGtCQUFtQjtRQUM1QzFSLElBQUksRUFBRSxJQUFJLENBQUNBLElBQUs7UUFDaEIrTSxTQUFTLEVBQUUsSUFBSSxDQUFDQSxTQUFVO1FBQzFCc0ksZ0JBQWdCLEVBQUUsSUFBSSxDQUFDakMsbUJBQW1CLENBQUMsQ0FBd0I7UUFDbkVrQyxxQkFBcUIsRUFBRSxJQUFJLENBQUNBLHFCQUFzQjtRQUNsREMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDQSxpQkFBeUM7UUFDakV2VywwQkFBMEIsRUFBRSxJQUFJLENBQUNBLDBCQUEyQjtRQUM1RHdXLG9CQUFvQixFQUFFLElBQUksQ0FBQ0Esb0JBQXFCO1FBQ2hEdkUsOEJBQThCLEVBQUUsSUFBSSxDQUFDQSw4QkFBOEIsRUFBRVIsT0FBTyxDQUFDLENBQUU7UUFDL0VnRixzQkFBc0IsRUFBRSxJQUFJLENBQUNBLHNCQUF1QjtRQUNwRHBHLGlDQUFpQyxFQUFFLElBQUksQ0FBQ0EsaUNBQWtDO1FBQzFFRCxlQUFlLEVBQUUsSUFBSSxDQUFDQSxlQUFnQjtRQUN0Q2lDLFdBQVcsRUFBRSxJQUFJLENBQUNBLFdBQVk7UUFDOUJ6QyxjQUFjLEVBQUUsSUFBSSxDQUFDQSxjQUFlO1FBQ3BDQyxvQkFBb0IsRUFBRSxJQUFJLENBQUNBLG9CQUFxQjtRQUFBblIsUUFBQSxFQUUvQztVQUNBZ1ksVUFBVSxFQUFFQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUM3QyxNQUFNLENBQUM7VUFDNUQxRyxZQUFZO1VBQ1p3SixVQUFVLEVBQUUzQixJQUFBLENBQUM0QixZQUFZO1lBQUNDLFFBQVEsRUFBQztVQUFNLENBQUUsQ0FBQztVQUM1Q0MsT0FBTyxFQUFFQyxtQkFBbUIsQ0FBQ3JDLFVBQVUsRUFBRTtZQUN4Q3pJLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVE7WUFDdkJPLGlCQUFpQixFQUFFLElBQUksQ0FBQ0EsaUJBQWlCO1lBQ3pDRSxTQUFTLEVBQUUsSUFBSSxDQUFDQSxTQUFTO1lBQ3pCbUksZUFBZTtZQUNmNUgsWUFBWSxFQUFFLElBQUksQ0FBQ0E7VUFDcEIsQ0FBQztRQUNGO01BQUMsQ0FDUSxDQUFDO0lBRWIsQ0FBQztJQUFBLE9BQUEvSyxVQUFBO0VBQUEsRUE1Z0NzQzhVLDJCQUEyQixHQUFBclAsV0FBQSxDQWdwQjNENEgsVUFBVSxHQUFHLENBQUN2QyxNQUErQixFQUFFdFEsR0FBVyxFQUFFdUYsS0FBYyxLQUFXO0lBQzNGLElBQUlBLEtBQUssS0FBSy9GLFNBQVMsRUFBRTtNQUN4QjhRLE1BQU0sQ0FBQ3RRLEdBQUcsQ0FBQyxHQUFHdUYsS0FBSztJQUNwQjtFQUNELENBQUMsRUFBQTBGLFdBQUEsR0FBQVEsV0FBQSxHQUFBOE8seUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEsZUFBQW1ELEtBQUE7SUFBQTBVLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBalAsWUFBQSxHQUFBNk8seUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEsV0FBQXlELEtBQUE7SUFBQW9VLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBaFAsWUFBQSxHQUFBNE8seUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEsa0JBQUEyRCxLQUFBO0lBQUFrVSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQS9PLFlBQUEsR0FBQTJPLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLDJCQUFBNEQsS0FBQTtJQUFBaVUsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUE5TyxZQUFBLEdBQUEwTyx5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSx1QkFBQTZELEtBQUE7SUFBQWdVLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBN08sWUFBQSxHQUFBeU8seUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEsd0NBQUE4RCxLQUFBO0lBQUErVCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTVPLFlBQUEsR0FBQXdPLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLHNCQUFBK0QsS0FBQTtJQUFBOFQsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUEzTyxZQUFBLEdBQUF1Tyx5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSxtQkFBQWdFLEtBQUE7SUFBQTZULFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBMU8sWUFBQSxHQUFBc08seUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEscUJBQUFpRSxNQUFBO0lBQUE0VCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXpPLGFBQUEsR0FBQXFPLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLHNCQUFBa0UsTUFBQTtJQUFBMlQsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF4TyxhQUFBLEdBQUFvTyx5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSx3QkFBQW1FLE1BQUE7SUFBQTBULFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBdk8sYUFBQSxHQUFBbU8seUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEscUJBQUFvRSxNQUFBO0lBQUF5VCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXRPLGFBQUEsR0FBQWtPLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLHdCQUFBcUUsTUFBQTtJQUFBd1QsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFyTyxhQUFBLEdBQUFpTyx5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSwwQkFBQXNFLE1BQUE7SUFBQXVULFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBcE8sYUFBQSxHQUFBZ08seUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEsaUNBQUF1RSxNQUFBO0lBQUFzVCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQW5PLGFBQUEsR0FBQStOLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLG1CQUFBd0UsTUFBQTtJQUFBcVQsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFsTyxhQUFBLEdBQUE4Tix5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSxlQUFBMEUsTUFBQTtJQUFBbVQsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFqTyxhQUFBLEdBQUE2Tix5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSxrQkFBQTJFLE1BQUE7SUFBQWtULFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBaE8sYUFBQSxHQUFBNE4seUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEsNkJBQUE0RSxNQUFBO0lBQUFpVCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQS9OLGFBQUEsR0FBQTJOLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLHNCQUFBNkUsTUFBQTtJQUFBZ1QsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUE5TixhQUFBLEdBQUEwTix5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSxnQkFBQThFLE1BQUE7SUFBQStTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBN04sYUFBQSxHQUFBeU4seUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEsa0JBQUErRSxNQUFBO0lBQUE4UyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTVOLGFBQUEsR0FBQXdOLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLGdCQUFBZ0YsTUFBQTtJQUFBNlMsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUEzTixhQUFBLEdBQUF1Tix5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSxhQUFBa0YsTUFBQTtJQUFBMlMsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUExTixhQUFBLEdBQUFzTix5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSxrQkFBQW1GLE1BQUE7SUFBQTBTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBek4sYUFBQSxHQUFBcU4seUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEsb0JBQUFvRixNQUFBO0lBQUF5UyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXhOLGFBQUEsR0FBQW9OLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLFNBQUFxRixNQUFBO0lBQUF3UyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXZOLGFBQUEsR0FBQW1OLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLGdCQUFBc0YsTUFBQTtJQUFBdVMsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF0TixhQUFBLEdBQUFrTix5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSxxQ0FBQXVGLE1BQUE7SUFBQXNTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBck4sYUFBQSxHQUFBaU4seUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEsbUJBQUF3RixNQUFBO0lBQUFxUyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXBOLGFBQUEsR0FBQWdOLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLHNCQUFBeUYsTUFBQTtJQUFBb1MsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFuTixhQUFBLEdBQUErTSx5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSxlQUFBMEYsTUFBQTtJQUFBbVMsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFsTixhQUFBLEdBQUE4TSx5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSxXQUFBMkYsTUFBQTtJQUFBa1MsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFqTixhQUFBLEdBQUE2TSx5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSx5QkFBQTRGLE1BQUE7SUFBQWlTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBaE4sYUFBQSxHQUFBNE0seUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEsb0JBQUE2RixNQUFBO0lBQUFnUyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQS9NLGFBQUEsR0FBQTJNLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLHdCQUFBOEYsTUFBQTtJQUFBK1IsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUE5TSxhQUFBLEdBQUEwTSx5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSxvQkFBQStGLE1BQUE7SUFBQThSLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBN00sYUFBQSxHQUFBeU0seUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEsMkJBQUFnRyxNQUFBO0lBQUE2UixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTVNLGFBQUEsR0FBQXdNLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLGtCQUFBaUcsTUFBQTtJQUFBNFIsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUEzTSxhQUFBLEdBQUF1TSx5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSw0QkFBQWtHLE1BQUE7SUFBQTJSLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BNVNpQyxJQUFJO0lBQUE7RUFBQSxJQUFBMU0sYUFBQSxHQUFBc00seUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEsZ0JBQUFtRyxNQUFBO0lBQUEwUixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQUcxQixFQUFFO0lBQUE7RUFBQSxJQUFBek0sYUFBQSxHQUFBcU0seUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEsWUFBQW9HLE1BQUE7SUFBQXlSLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BR0ksS0FBSztJQUFBO0VBQUEsSUFBQXhNLGFBQUEsR0FBQW9NLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLGtCQUFBcUcsTUFBQTtJQUFBd1IsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF2TSxhQUFBLEdBQUFtTSx5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSxlQUFBc0csTUFBQTtJQUFBdVIsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0F5QlosRUFBRTtJQUFBO0VBQUEsSUFBQXRNLGFBQUEsR0FBQWtNLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLGNBQUF1RyxNQUFBO0lBQUFzUixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXJNLGFBQUEsR0FBQWlNLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLDZCQUFBd0csTUFBQTtJQUFBcVIsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFwTSxhQUFBLEdBQUFnTSx5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSxtQkFBQXlHLE1BQUE7SUFBQW9SLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BMkJzQyxDQUFDLENBQUM7SUFBQTtFQUFBLElBQUFuTSxhQUFBLEdBQUErTCx5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSw4QkFBQTZHLE1BQUE7SUFBQWdSLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BaUJZLENBQUMsQ0FBQztJQUFBO0VBQUEsSUFBQWxNLGFBQUEsR0FBQThMLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLGNBQUFnSCxNQUFBO0lBQUE2USxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWpNLGFBQUEsR0FBQTZMLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLGVBQUFzSCxNQUFBO0lBQUF1USxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWhNLGFBQUEsR0FBQTRMLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLGNBQUF3SCxNQUFBO0lBQUFxUSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQS9MLGFBQUEsR0FBQTJMLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLDRCQUFBMEgsTUFBQTtJQUFBbVEsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUE5TCxhQUFBLEdBQUEwTCx5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSx3QkFBQTJILE1BQUE7SUFBQWtRLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBN0wsYUFBQSxHQUFBeUwseUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEsZUFBQTZILE1BQUE7SUFBQWdRLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBNUwsYUFBQSxHQUFBd0wseUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEsd0JBQUE4SCxNQUFBO0lBQUErUCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTNMLGFBQUEsR0FBQXVMLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLDJCQUFBK0gsTUFBQTtJQUFBOFAsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUExTCxhQUFBLEdBQUFzTCx5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSxtQkFBQWdJLE1BQUE7SUFBQTZQLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBekwsYUFBQSxHQUFBcUwseUJBQUEsQ0FBQXZQLE9BQUEsQ0FBQXJJLFNBQUEsc0JBQUFpSSxNQUFBO0lBQUE0UCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXhMLGFBQUEsR0FBQW9MLHlCQUFBLENBQUF2UCxPQUFBLENBQUFySSxTQUFBLHNCQUFBa0ksTUFBQTtJQUFBMlAsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF2TCxhQUFBLEdBQUFtTCx5QkFBQSxDQUFBdlAsT0FBQSxDQUFBckksU0FBQSxrQkFBQW1JLE1BQUE7SUFBQTBQLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBM1AsT0FBQSxNQUFBRCxNQUFBO0VBQUF3RyxRQUFBLEdBQUEvTCxVQUFBO0VBQUEsT0FBQStMLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|