tide-design-system 2.5.13 → 2.5.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tide-design-system.d.ts +2742 -0
- package/dist/tide-design-system.js +2 -2
- package/package.json +13 -2
- package/.eslintrc.cjs +0 -119
- package/.github/workflows/publish-release.yml +0 -38
- package/.storybook/main.ts +0 -70
- package/.storybook/preview.ts +0 -256
- package/docs/assets/full-bleed.gif +0 -0
- package/docs/assets/layout-grid-default.webp +0 -0
- package/docs/assets/layout-grid-fluid.webp +0 -0
- package/docs/assets/layout-grid.webp +0 -0
- package/docs/assets/native-input-validation.png +0 -0
- package/docs/configuation.md +0 -47
- package/docs/development.md +0 -163
- package/docs/figma.md +0 -43
- package/docs/forms.md +0 -484
- package/docs/grid-layout.md +0 -83
- package/docs/images.md +0 -50
- package/docs/integration-full.md +0 -84
- package/docs/integration-partial.md +0 -39
- package/docs/migration.md +0 -74
- package/docs/storybook.md +0 -44
- package/docs/style-guide.md +0 -22
- package/docs/toast.md +0 -61
- package/docs/token-cheatsheet.md +0 -63
- package/docs/upgrading.md +0 -188
- package/docs/workflows.md +0 -20
- package/index.html +0 -14
- package/index.ts +0 -201
- package/netlify.toml +0 -3
- package/src/assets/css/fonts.css +0 -36
- package/src/assets/css/grid-layout.css +0 -34
- package/src/assets/css/main.css +0 -5
- package/src/assets/css/realm/aero.css +0 -25
- package/src/assets/css/realm/atv.css +0 -25
- package/src/assets/css/realm/boatmart.css +0 -25
- package/src/assets/css/realm/cycle.css +0 -24
- package/src/assets/css/realm/equipment.css +0 -25
- package/src/assets/css/realm/pwc.css +0 -25
- package/src/assets/css/realm/rv.css +0 -25
- package/src/assets/css/realm/snow.css +0 -25
- package/src/assets/css/realm/truck.css +0 -25
- package/src/assets/css/reset.css +0 -99
- package/src/assets/css/storybook.css +0 -18
- package/src/assets/css/utilities-base.css +0 -574
- package/src/assets/css/utilities-responsive.css +0 -2307
- package/src/assets/css/utilities.css +0 -16
- package/src/assets/css/variables.css +0 -223
- package/src/assets/svg/branding/logo/logo-aero.svg +0 -4
- package/src/assets/svg/branding/logo/logo-atv.svg +0 -6
- package/src/assets/svg/branding/logo/logo-boatmart.svg +0 -4
- package/src/assets/svg/branding/logo/logo-cycle.svg +0 -4
- package/src/assets/svg/branding/logo/logo-equipment.svg +0 -4
- package/src/assets/svg/branding/logo/logo-pwc.svg +0 -4
- package/src/assets/svg/branding/logo/logo-rv.svg +0 -6
- package/src/assets/svg/branding/logo/logo-snow.svg +0 -4
- package/src/assets/svg/branding/logo/logo-truck.svg +0 -5
- package/src/assets/svg/branding/mark/mark-aero.svg +0 -3
- package/src/assets/svg/branding/mark/mark-atv.svg +0 -4
- package/src/assets/svg/branding/mark/mark-boatmart.svg +0 -3
- package/src/assets/svg/branding/mark/mark-cycle.svg +0 -3
- package/src/assets/svg/branding/mark/mark-equipment.svg +0 -3
- package/src/assets/svg/branding/mark/mark-pwc.svg +0 -3
- package/src/assets/svg/branding/mark/mark-rv.svg +0 -4
- package/src/assets/svg/branding/mark/mark-snow.svg +0 -3
- package/src/assets/svg/branding/mark/mark-truck.svg +0 -4
- package/src/assets/svg/icons/IconAccountBalance.svg +0 -5
- package/src/assets/svg/icons/IconAcute.svg +0 -3
- package/src/assets/svg/icons/IconAdd.svg +0 -3
- package/src/assets/svg/icons/IconAiDescription.svg +0 -7
- package/src/assets/svg/icons/IconAlignSpaceEven.svg +0 -3
- package/src/assets/svg/icons/IconApplePay.svg +0 -5
- package/src/assets/svg/icons/IconArrowBack.svg +0 -3
- package/src/assets/svg/icons/IconArrowCycle.svg +0 -5
- package/src/assets/svg/icons/IconArrowForward.svg +0 -3
- package/src/assets/svg/icons/IconArrowRight.svg +0 -3
- package/src/assets/svg/icons/IconArrowUp.svg +0 -3
- package/src/assets/svg/icons/IconAssignment.svg +0 -3
- package/src/assets/svg/icons/IconAttachMoney.svg +0 -4
- package/src/assets/svg/icons/IconAutoRenew.svg +0 -3
- package/src/assets/svg/icons/IconAwardStar.svg +0 -5
- package/src/assets/svg/icons/IconBed.svg +0 -3
- package/src/assets/svg/icons/IconBolt.svg +0 -3
- package/src/assets/svg/icons/IconBookmark.svg +0 -5
- package/src/assets/svg/icons/IconBunkhouse.svg +0 -3
- package/src/assets/svg/icons/IconCalculate.svg +0 -3
- package/src/assets/svg/icons/IconCalendarMonth.svg +0 -5
- package/src/assets/svg/icons/IconCall.svg +0 -5
- package/src/assets/svg/icons/IconCallQuality.svg +0 -3
- package/src/assets/svg/icons/IconCarRental.svg +0 -3
- package/src/assets/svg/icons/IconCheck.svg +0 -3
- package/src/assets/svg/icons/IconChevronLeft.svg +0 -3
- package/src/assets/svg/icons/IconChevronRight.svg +0 -3
- package/src/assets/svg/icons/IconClear.svg +0 -3
- package/src/assets/svg/icons/IconClose.svg +0 -3
- package/src/assets/svg/icons/IconContract.svg +0 -3
- package/src/assets/svg/icons/IconCrash.svg +0 -3
- package/src/assets/svg/icons/IconDashboardCustomize.svg +0 -3
- package/src/assets/svg/icons/IconDelete.svg +0 -5
- package/src/assets/svg/icons/IconDiamond.svg +0 -5
- package/src/assets/svg/icons/IconDirectionsBoat.svg +0 -3
- package/src/assets/svg/icons/IconDomain.svg +0 -3
- package/src/assets/svg/icons/IconDraft.svg +0 -3
- package/src/assets/svg/icons/IconEdit.svg +0 -5
- package/src/assets/svg/icons/IconEngine.svg +0 -3
- package/src/assets/svg/icons/IconEngineering.svg +0 -3
- package/src/assets/svg/icons/IconError.svg +0 -5
- package/src/assets/svg/icons/IconExpandContent.svg +0 -3
- package/src/assets/svg/icons/IconExpandLess.svg +0 -3
- package/src/assets/svg/icons/IconExpandMore.svg +0 -3
- package/src/assets/svg/icons/IconFacebook.svg +0 -3
- package/src/assets/svg/icons/IconFavorite.svg +0 -5
- package/src/assets/svg/icons/IconFavoriteFilled.svg +0 -5
- package/src/assets/svg/icons/IconFlag.svg +0 -3
- package/src/assets/svg/icons/IconFormatBold.svg +0 -5
- package/src/assets/svg/icons/IconFormatItalic.svg +0 -3
- package/src/assets/svg/icons/IconFormatListBulleted.svg +0 -5
- package/src/assets/svg/icons/IconForum.svg +0 -5
- package/src/assets/svg/icons/IconGas.svg +0 -3
- package/src/assets/svg/icons/IconGavel.svg +0 -5
- package/src/assets/svg/icons/IconGears.svg +0 -3
- package/src/assets/svg/icons/IconGlobeLocationPin.svg +0 -3
- package/src/assets/svg/icons/IconGoogle.svg +0 -18
- package/src/assets/svg/icons/IconGooglePay.svg +0 -5
- package/src/assets/svg/icons/IconGrid.svg +0 -3
- package/src/assets/svg/icons/IconHandshake.svg +0 -3
- package/src/assets/svg/icons/IconHandyman.svg +0 -3
- package/src/assets/svg/icons/IconHeight.svg +0 -3
- package/src/assets/svg/icons/IconHelp.svg +0 -5
- package/src/assets/svg/icons/IconInfo.svg +0 -5
- package/src/assets/svg/icons/IconInformation.svg +0 -3
- package/src/assets/svg/icons/IconInsertText.svg +0 -5
- package/src/assets/svg/icons/IconInstagram.svg +0 -3
- package/src/assets/svg/icons/IconIosShare.svg +0 -5
- package/src/assets/svg/icons/IconLayout.svg +0 -3
- package/src/assets/svg/icons/IconLevellingJack.svg +0 -3
- package/src/assets/svg/icons/IconLinkedIn.svg +0 -3
- package/src/assets/svg/icons/IconLocalShipping.svg +0 -5
- package/src/assets/svg/icons/IconLock.svg +0 -5
- package/src/assets/svg/icons/IconMail.svg +0 -5
- package/src/assets/svg/icons/IconMenu.svg +0 -3
- package/src/assets/svg/icons/IconMoneyBag.svg +0 -3
- package/src/assets/svg/icons/IconMoreHoriz.svg +0 -5
- package/src/assets/svg/icons/IconMove.svg +0 -3
- package/src/assets/svg/icons/IconNotifications.svg +0 -5
- package/src/assets/svg/icons/IconOdometer.svg +0 -3
- package/src/assets/svg/icons/IconOpenInNew.svg +0 -5
- package/src/assets/svg/icons/IconPalette.svg +0 -5
- package/src/assets/svg/icons/IconPaypal.svg +0 -5
- package/src/assets/svg/icons/IconPerson.svg +0 -5
- package/src/assets/svg/icons/IconPersonSearch.svg +0 -3
- package/src/assets/svg/icons/IconPhotoCamera.svg +0 -5
- package/src/assets/svg/icons/IconPinterest.svg +0 -5
- package/src/assets/svg/icons/IconPlayArrow.svg +0 -3
- package/src/assets/svg/icons/IconPolicy.svg +0 -3
- package/src/assets/svg/icons/IconPower.svg +0 -3
- package/src/assets/svg/icons/IconPowerOff.svg +0 -3
- package/src/assets/svg/icons/IconPriorityHigh.svg +0 -3
- package/src/assets/svg/icons/IconRemove.svg +0 -3
- package/src/assets/svg/icons/IconRequestQuote.svg +0 -3
- package/src/assets/svg/icons/IconResetWrench.svg +0 -3
- package/src/assets/svg/icons/IconRoad.svg +0 -3
- package/src/assets/svg/icons/IconRoundedCorner.svg +0 -5
- package/src/assets/svg/icons/IconRuler.svg +0 -3
- package/src/assets/svg/icons/IconSailing.svg +0 -3
- package/src/assets/svg/icons/IconSchool.svg +0 -3
- package/src/assets/svg/icons/IconSearch.svg +0 -5
- package/src/assets/svg/icons/IconSeating.svg +0 -3
- package/src/assets/svg/icons/IconSell.svg +0 -5
- package/src/assets/svg/icons/IconSensors.svg +0 -3
- package/src/assets/svg/icons/IconSettings.svg +0 -3
- package/src/assets/svg/icons/IconShare.svg +0 -5
- package/src/assets/svg/icons/IconShieldCheck.svg +0 -3
- package/src/assets/svg/icons/IconShoppingCart.svg +0 -5
- package/src/assets/svg/icons/IconSleeps.svg +0 -3
- package/src/assets/svg/icons/IconSms.svg +0 -5
- package/src/assets/svg/icons/IconSnowflake.svg +0 -3
- package/src/assets/svg/icons/IconStar.svg +0 -5
- package/src/assets/svg/icons/IconStarFilled.svg +0 -3
- package/src/assets/svg/icons/IconStarHalf.svg +0 -3
- package/src/assets/svg/icons/IconSummarize.svg +0 -3
- package/src/assets/svg/icons/IconSwapHoriz.svg +0 -3
- package/src/assets/svg/icons/IconSwapVert.svg +0 -5
- package/src/assets/svg/icons/IconThreeDRotation.svg +0 -18
- package/src/assets/svg/icons/IconThumbUp.svg +0 -3
- package/src/assets/svg/icons/IconTrendingDown.svg +0 -5
- package/src/assets/svg/icons/IconTrophy.svg +0 -5
- package/src/assets/svg/icons/IconTune.svg +0 -5
- package/src/assets/svg/icons/IconTwitter.svg +0 -5
- package/src/assets/svg/icons/IconUmbrella.svg +0 -3
- package/src/assets/svg/icons/IconVerified.svg +0 -4
- package/src/assets/svg/icons/IconVideocam.svg +0 -5
- package/src/assets/svg/icons/IconViewInAr.svg +0 -5
- package/src/assets/svg/icons/IconVisibility.svg +0 -5
- package/src/assets/svg/icons/IconVolumeOff.svg +0 -5
- package/src/assets/svg/icons/IconVolumeOn.svg +0 -5
- package/src/assets/svg/icons/IconWarehouse.svg +0 -3
- package/src/assets/svg/icons/IconWarning.svg +0 -5
- package/src/assets/svg/icons/IconWater.svg +0 -3
- package/src/assets/svg/icons/IconWeight.svg +0 -3
- package/src/assets/svg/icons/IconWidth.svg +0 -3
- package/src/assets/svg/icons/IconWorkspacePremium.svg +0 -3
- package/src/assets/svg/icons/IconWrench.svg +0 -3
- package/src/assets/svg/icons/IconYoutube.svg +0 -5
- package/src/assets/svg/icons/realm/aero/IconAeroFlight.svg +0 -3
- package/src/assets/svg/icons/realm/aero/IconAeroHelicopter.svg +0 -3
- package/src/assets/svg/icons/realm/aero/IconAeroModeFan.svg +0 -3
- package/src/assets/svg/icons/realm/aero/IconAeroPlaneContrails.svg +0 -3
- package/src/assets/svg/icons/realm/atv/IconAtvAtv.svg +0 -3
- package/src/assets/svg/icons/realm/atv/IconAtvDuneBuggy.svg +0 -3
- package/src/assets/svg/icons/realm/atv/IconAtvGoKart.svg +0 -3
- package/src/assets/svg/icons/realm/atv/IconAtvGolfCart.svg +0 -3
- package/src/assets/svg/icons/realm/atv/IconAtvSandRail.svg +0 -3
- package/src/assets/svg/icons/realm/atv/IconAtvSideBySide.svg +0 -3
- package/src/assets/svg/icons/realm/atv/IconAtvTrailer.svg +0 -3
- package/src/assets/svg/icons/realm/boatmart/IconBoatmartPwc.svg +0 -3
- package/src/assets/svg/icons/realm/boatmart/IconBoatmartTrailer.svg +0 -3
- package/src/assets/svg/icons/realm/cycle/IconCycleMotorcycle.svg +0 -4
- package/src/assets/svg/icons/realm/cycle/IconCycleTrailer.svg +0 -3
- package/src/assets/svg/icons/realm/pwc/IconPwcPwc.svg +0 -3
- package/src/assets/svg/icons/realm/pwc/IconPwcSnowmobile.svg +0 -3
- package/src/assets/svg/icons/realm/pwc/IconPwcTrailer.svg +0 -3
- package/src/assets/svg/icons/realm/rv/IconRvClassA.svg +0 -3
- package/src/assets/svg/icons/realm/rv/IconRvClassB.svg +0 -3
- package/src/assets/svg/icons/realm/rv/IconRvClassC.svg +0 -3
- package/src/assets/svg/icons/realm/rv/IconRvDestinationTrailer.svg +0 -5
- package/src/assets/svg/icons/realm/rv/IconRvFifthWheel.svg +0 -3
- package/src/assets/svg/icons/realm/rv/IconRvFishHouse.svg +0 -3
- package/src/assets/svg/icons/realm/rv/IconRvParkModel.svg +0 -3
- package/src/assets/svg/icons/realm/rv/IconRvPopUpCamper.svg +0 -3
- package/src/assets/svg/icons/realm/rv/IconRvTeardropTrailer.svg +0 -4
- package/src/assets/svg/icons/realm/rv/IconRvTravelTrailer.svg +0 -3
- package/src/assets/svg/icons/realm/rv/IconRvTruckCamper.svg +0 -3
- package/src/assets/svg/icons/realm/snow/IconSnowMotorcycle.svg +0 -4
- package/src/assets/svg/icons/realm/snow/IconSnowPwc.svg +0 -3
- package/src/assets/svg/icons/realm/snow/IconSnowSideBySide.svg +0 -3
- package/src/assets/svg/icons/realm/snow/IconSnowSnowmobile.svg +0 -3
- package/src/assets/svg/icons/realm/snow/IconSnowTrailer.svg +0 -3
- package/src/components/InternalBaseLink.vue +0 -11
- package/src/components/TideAccordionItem.vue +0 -120
- package/src/components/TideAlert.vue +0 -186
- package/src/components/TideBadge.vue +0 -64
- package/src/components/TideBadgeTrustedPartner.vue +0 -52
- package/src/components/TideBadgeVerifiedVehicle.vue +0 -46
- package/src/components/TideBreadCrumbs.vue +0 -62
- package/src/components/TideButton.vue +0 -115
- package/src/components/TideButtonIcon.vue +0 -91
- package/src/components/TideButtonPagination.vue +0 -87
- package/src/components/TideButtonSave.vue +0 -109
- package/src/components/TideButtonSegmented.vue +0 -115
- package/src/components/TideCard.vue +0 -107
- package/src/components/TideCarousel.vue +0 -489
- package/src/components/TideChipAction.vue +0 -83
- package/src/components/TideChipFilter.vue +0 -71
- package/src/components/TideChipInput.vue +0 -54
- package/src/components/TideColumns.vue +0 -65
- package/src/components/TideDivider.vue +0 -43
- package/src/components/TideForm.vue +0 -33
- package/src/components/TideIcon.vue +0 -85
- package/src/components/TideImage.vue +0 -126
- package/src/components/TideImageBackground.vue +0 -69
- package/src/components/TideIndicator.vue +0 -63
- package/src/components/TideInputCheckbox.vue +0 -210
- package/src/components/TideInputCheckboxDeprecated.vue +0 -117
- package/src/components/TideInputRadio.vue +0 -115
- package/src/components/TideInputRadioDeprecated.vue +0 -119
- package/src/components/TideInputSelect.vue +0 -331
- package/src/components/TideInputSelectDeprecated.vue +0 -245
- package/src/components/TideInputSupportingText.vue +0 -44
- package/src/components/TideInputText.vue +0 -382
- package/src/components/TideInputTextDeprecated.vue +0 -327
- package/src/components/TideInputTextarea.vue +0 -235
- package/src/components/TideInputTextareaDeprecated.vue +0 -198
- package/src/components/TideLink.vue +0 -95
- package/src/components/TideMenuItem.vue +0 -83
- package/src/components/TideModal.vue +0 -281
- package/src/components/TidePagination.vue +0 -65
- package/src/components/TidePopover.vue +0 -198
- package/src/components/TideRating.vue +0 -109
- package/src/components/TideRealmLogo.vue +0 -154
- package/src/components/TideSeoLinks.vue +0 -59
- package/src/components/TideSheet.vue +0 -209
- package/src/components/TideSwitch.vue +0 -101
- package/src/components/TideTabs.vue +0 -63
- package/src/components/TideToaster.vue +0 -97
- package/src/composables/useTideConfig.ts +0 -23
- package/src/composables/useTideForm.ts +0 -25
- package/src/composables/useTideToaster.ts +0 -63
- package/src/contexts/sandbox/AppSandbox.vue +0 -7
- package/src/contexts/sandbox/app-sandbox.ts +0 -10
- package/src/stories/DemoCssUtilities.stories.ts +0 -154
- package/src/stories/DemoCssUtilitiesByTextInput.stories.ts +0 -61
- package/src/stories/FoundationsBorder.stories.ts +0 -272
- package/src/stories/FoundationsColor.stories.ts +0 -311
- package/src/stories/FoundationsFlexbox.stories.ts +0 -184
- package/src/stories/FoundationsGrid.stories.ts +0 -126
- package/src/stories/FoundationsMargin.stories.ts +0 -155
- package/src/stories/FoundationsPadding.stories.ts +0 -108
- package/src/stories/FoundationsShadow.stories.ts +0 -103
- package/src/stories/FoundationsTransparency.stories.ts +0 -114
- package/src/stories/FoundationsTypography.stories.ts +0 -212
- package/src/stories/Template.stories.ts +0 -73
- package/src/stories/TideAccordionItem.stories.ts +0 -91
- package/src/stories/TideAlert.stories.ts +0 -133
- package/src/stories/TideBadge.stories.ts +0 -90
- package/src/stories/TideBadgeTrustedPartner.stories.ts +0 -34
- package/src/stories/TideBadgeVerifiedVehicle.stories.ts +0 -22
- package/src/stories/TideBreadCrumbs.stories.ts +0 -42
- package/src/stories/TideButton.stories.ts +0 -132
- package/src/stories/TideButtonIcon.stories.ts +0 -109
- package/src/stories/TideButtonPagination.stories.ts +0 -99
- package/src/stories/TideButtonSave.stories.ts +0 -62
- package/src/stories/TideButtonSegmented.stories.ts +0 -110
- package/src/stories/TideCard.stories.ts +0 -102
- package/src/stories/TideCarousel.stories.ts +0 -219
- package/src/stories/TideChipAction.stories.ts +0 -81
- package/src/stories/TideChipFilter.stories.ts +0 -84
- package/src/stories/TideChipInput.stories.ts +0 -56
- package/src/stories/TideColumns.stories.ts +0 -89
- package/src/stories/TideDivider.stories.ts +0 -48
- package/src/stories/TideIcon.stories.ts +0 -31
- package/src/stories/TideImage.stories.ts +0 -124
- package/src/stories/TideImageBackground.stories.ts +0 -114
- package/src/stories/TideIndicator.stories.ts +0 -32
- package/src/stories/TideInputCheckbox.stories.ts +0 -138
- package/src/stories/TideInputRadio.stories.ts +0 -100
- package/src/stories/TideInputSelect.stories.ts +0 -244
- package/src/stories/TideInputText.stories.ts +0 -221
- package/src/stories/TideInputTextarea.stories.ts +0 -156
- package/src/stories/TideLink.stories.ts +0 -127
- package/src/stories/TideMenuItem.stories.ts +0 -117
- package/src/stories/TideModal.stories.ts +0 -219
- package/src/stories/TidePagination.stories.ts +0 -100
- package/src/stories/TidePopover.stories.ts +0 -101
- package/src/stories/TideRating.stories.ts +0 -114
- package/src/stories/TideRealmLogo.stories.ts +0 -93
- package/src/stories/TideSeoLinks.stories.ts +0 -68
- package/src/stories/TideSheet.stories.ts +0 -152
- package/src/stories/TideSwitch.stories.ts +0 -72
- package/src/stories/TideTabs.stories.ts +0 -114
- package/src/stories/TideToaster.stories.ts +0 -117
- package/src/stories/Welcome.mdx +0 -17
- package/src/types/Alert.ts +0 -8
- package/src/types/Badge.ts +0 -76
- package/src/types/BreadCrumb.ts +0 -5
- package/src/types/Breakpoint.ts +0 -18
- package/src/types/Card.ts +0 -7
- package/src/types/Element.ts +0 -13
- package/src/types/FieldDeprecated.ts +0 -92
- package/src/types/Form.ts +0 -1
- package/src/types/FormDeprecated.ts +0 -91
- package/src/types/Formatted.ts +0 -23
- package/src/types/Icon.ts +0 -202
- package/src/types/Image.ts +0 -7
- package/src/types/Link.ts +0 -5
- package/src/types/Orientation.ts +0 -6
- package/src/types/Priority.ts +0 -11
- package/src/types/Realm.ts +0 -14
- package/src/types/RealmLogo.ts +0 -23
- package/src/types/Select.ts +0 -9
- package/src/types/Size.ts +0 -13
- package/src/types/Source.ts +0 -6
- package/src/types/Storybook.ts +0 -253
- package/src/types/Styles.ts +0 -526
- package/src/types/Tab.ts +0 -5
- package/src/types/Target.ts +0 -6
- package/src/types/TextInput.ts +0 -28
- package/src/types/Toast.ts +0 -21
- package/src/types/Type.ts +0 -6
- package/src/types/Validation.ts +0 -33
- package/src/types/ValidationDeprecated.ts +0 -41
- package/src/utilities/event.ts +0 -4
- package/src/utilities/format.ts +0 -184
- package/src/utilities/forms.ts +0 -22
- package/src/utilities/realm.ts +0 -17
- package/src/utilities/storybook.ts +0 -354
- package/src/utilities/validation-deprecated.ts +0 -252
- package/src/utilities/validation.ts +0 -132
- package/src/utilities/viewport.ts +0 -63
- package/tests/InternalBaseLink.spec.ts +0 -61
- package/tests/TideRealmLogo.spec.ts +0 -58
- package/tests/svg-icons.spec.ts +0 -74
- package/tests/utilities-format.spec.ts +0 -470
- package/tests/utilities-storybook.spec.ts +0 -99
- package/tsconfig.app.json +0 -14
- package/tsconfig.config.json +0 -12
- package/tsconfig.json +0 -35
- package/tsconfig.node.json +0 -7
- package/tsconfig.vitest.json +0 -10
- package/vite-env.d.ts +0 -2
- package/vite.config.sandbox.ts +0 -29
- package/vite.config.ts +0 -37
|
@@ -691,10 +691,10 @@ const Pt = {
|
|
|
691
691
|
LOCAL_SHIPPING: "local-shipping",
|
|
692
692
|
LOCK: "lock",
|
|
693
693
|
MAIL: "mail",
|
|
694
|
-
MOVE: "move",
|
|
695
694
|
MENU: "menu",
|
|
696
695
|
MONEY_BAG: "money-bag",
|
|
697
696
|
MORE_HORIZ: "more-horiz",
|
|
697
|
+
MOVE: "move",
|
|
698
698
|
NOTIFICATIONS: "notifications",
|
|
699
699
|
ODOMETER: "odometer",
|
|
700
700
|
OPEN_IN_NEW: "open-in-new",
|
|
@@ -5383,4 +5383,4 @@ export {
|
|
|
5383
5383
|
Xo as useTideForm,
|
|
5384
5384
|
aa as useTideToaster
|
|
5385
5385
|
};
|
|
5386
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMvT3JpZW50YXRpb24udHMiLCIuLi9zcmMvdHlwZXMvU3R5bGVzLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZURpdmlkZXIudnVlIiwiLi4vc3JjL3R5cGVzL1JlYWxtLnRzIiwiLi4vc3JjL3R5cGVzL1NpemUudHMiLCIuLi9zcmMvdXRpbGl0aWVzL2Zvcm1hdC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSIsIi4uL3NyYy90eXBlcy9JY29uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUFjY29yZGlvbkl0ZW0udnVlIiwiLi4vc3JjL3R5cGVzL0VsZW1lbnQudHMiLCIuLi9zcmMvY29tcG9zYWJsZXMvdXNlVGlkZUNvbmZpZy50cyIsIi4uL3NyYy9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVMaW5rLnZ1ZSIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBbGVydC52dWUiLCIuLi9zcmMvdHlwZXMvQmFkZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQmFkZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVHJ1c3RlZFBhcnRuZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVmVyaWZpZWRWZWhpY2xlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCcmVhZENydW1icy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25TYXZlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25TZWdtZW50ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0NhcmQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2FyZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2Fyb3VzZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBBY3Rpb24udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBGaWx0ZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBJbnB1dC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ29sdW1ucy52dWUiLCIuLi9zcmMvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlRm9ybS52dWUiLCIuLi9zcmMvdHlwZXMvSW1hZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlQmFja2dyb3VuZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5kaWNhdG9yLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpb0RlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0Zvcm1hdHRlZC50cyIsIi4uL3NyYy90eXBlcy9WYWxpZGF0aW9uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0LnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvdHlwZXMvVGV4dElucHV0LnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3Jtcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWFEZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVNZW51SXRlbS52dWUiLCIuLi9zcmMvdHlwZXMvQnJlYWtwb2ludC50cyIsIi4uL3NyYy91dGlsaXRpZXMvdmlld3BvcnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTW9kYWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVBhZ2luYXRpb24udnVlIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS91dGlscy9kaXN0L2Zsb2F0aW5nLXVpLnV0aWxzLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvY29yZS9kaXN0L2Zsb2F0aW5nLXVpLmNvcmUubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS91dGlscy9kaXN0L2Zsb2F0aW5nLXVpLnV0aWxzLmRvbS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2RvbS9kaXN0L2Zsb2F0aW5nLXVpLmRvbS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3Z1ZS9kaXN0L2Zsb2F0aW5nLXVpLnZ1ZS5tanMiLCIuLi9zcmMvdXRpbGl0aWVzL2V2ZW50LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVBvcG92ZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVJhdGluZy52dWUiLCIuLi9zcmMvdHlwZXMvUmVhbG1Mb2dvLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9yZWFsbS50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVSZWFsbUxvZ28udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVNlb0xpbmtzLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTaGVldC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlU3dpdGNoLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUYWJzLnZ1ZSIsIi4uL3NyYy9jb21wb3NhYmxlcy91c2VUaWRlVG9hc3Rlci50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUb2FzdGVyLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgT1JJRU5UQVRJT04gPSB7XG4gIEhPUklaT05UQUw6ICdob3Jpem9udGFsJyxcbiAgVkVSVElDQUw6ICd2ZXJ0aWNhbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPcmllbnRhdGlvbiA9ICh0eXBlb2YgT1JJRU5UQVRJT04pW2tleW9mIHR5cGVvZiBPUklFTlRBVElPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmltcG9ydCB0eXBlIHsgQnJlYWtwb2ludCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG5cbmV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIHdpdGhCcmVha3BvaW50OiAodXRpbGl0aWVzOiBzdHJpbmdbXSwgYnJlYWtwb2ludDogQnJlYWtwb2ludCk6IHN0cmluZ1tdID0+IHtcbiAgICByZXR1cm4gdXRpbGl0aWVzLm1hcCgodXRpbGl0eSkgPT4gYCR7YnJlYWtwb2ludH0tJHt1dGlsaXR5fWApO1xuICB9LFxuICBBTElHTjoge1xuICAgIFg6IHtcbiAgICAgIENFTlRFUjogJ3RpZGUtdGV4dC1jZW50ZXInLFxuICAgICAgSlVTVElGWTogJ3RpZGUtdGV4dC1qdXN0aWZ5JyxcbiAgICAgIExFRlQ6ICd0aWRlLXRleHQtbGVmdCcsXG4gICAgICBSSUdIVDogJ3RpZGUtdGV4dC1yaWdodCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBJTklUSUFMOiAndGlkZS1hbGlnbi1pbml0aWFsJyxcbiAgICAgIE1JRERMRTogJ3RpZGUtYWxpZ24tbWlkZGxlJyxcbiAgICB9LFxuICB9LFxuICBBWElTMToge1xuICAgIEFST1VORDogJ3RpZGUtYXhpczEtYXJvdW5kJyxcbiAgICBCRVRXRUVOOiAndGlkZS1heGlzMS1iZXR3ZWVuJyxcbiAgICBDRU5URVI6ICd0aWRlLWF4aXMxLWNlbnRlcicsXG4gICAgRU5EOiAndGlkZS1heGlzMS1lbmQnLFxuICAgIFNUQVJUOiAndGlkZS1heGlzMS1zdGFydCcsXG4gIH0sXG4gIEFYSVMyOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMi1hcm91bmQnLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczItY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMyLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMyLXN0YXJ0JyxcbiAgICBTVFJFVENIOiAndGlkZS1heGlzMi1zdHJldGNoJyxcbiAgfSxcbiAgQkc6IHtcbiAgICBHTE9CQUw6IHtcbiAgICAgIFBSSU1BUlk6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJnLXByaW1hcnktZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1iZy1wcmltYXJ5LWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1iZy1wcmltYXJ5LXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1iZy1wcmltYXJ5LXdhcm5pbmcnLFxuICAgICAgfSxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJnLXN1cmZhY2UtZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1iZy1zdXJmYWNlLWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1iZy1zdXJmYWNlLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1iZy1zdXJmYWNlLXdhcm5pbmcnLFxuXG4gICAgICAgIEJMVUU6ICd0aWRlLWJnLXN1cmZhY2UtYmx1ZScsXG4gICAgICAgIEdSRUVOOiAndGlkZS1iZy1zdXJmYWNlLWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtYmctc3VyZmFjZS1saW1lJyxcbiAgICAgICAgT1JBTkdFOiAndGlkZS1iZy1zdXJmYWNlLW9yYW5nZScsXG4gICAgICAgIFBVUlBMRTogJ3RpZGUtYmctc3VyZmFjZS1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWJnLXN1cmZhY2UtcmVkJyxcbiAgICAgICAgU0FMTU9OOiAndGlkZS1iZy1zdXJmYWNlLXNhbG1vbicsXG4gICAgICAgIFRFQUw6ICd0aWRlLWJnLXN1cmZhY2UtdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtYmctc3VyZmFjZS15ZWxsb3cnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIElOSVRJQUw6ICd0aWRlLWJnLWluaXRpYWwnLFxuICAgIEJMVVI6ICd0aWRlLWJnLWJsdXInLFxuICAgIFBSSU1BUlk6ICd0aWRlLWJnLXByaW1hcnknLFxuICAgIFNFQ09OREFSWTogJ3RpZGUtYmctc2Vjb25kYXJ5JyxcbiAgICBTVVJGQUNFOiB7XG4gICAgICBBQ0NFTlQ6ICd0aWRlLWJnLXN1cmZhY2UtYWNjZW50JyxcbiAgICAgIEJSQU5EOiAndGlkZS1iZy1zdXJmYWNlLWJyYW5kJyxcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJnLXN1cmZhY2UnLFxuICAgICAgRkxPQVRJTkc6ICd0aWRlLWJnLXN1cmZhY2UtZmxvYXRpbmcnLFxuICAgICAgR1JBRElFTlQ6ICd0aWRlLWJnLXN1cmZhY2UtZ3JhZGllbnQnLFxuICAgICAgSU5WRVJTRTogJ3RpZGUtYmctc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgIFZBUklBTlQ6ICd0aWRlLWJnLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgfSxcbiAgICBUUkFOU1BBUkVOVDoge1xuICAgICAgT05FX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTEwMCcsXG4gICAgICBUV09fSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtMjAwJyxcbiAgICAgIFRIUkVFX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTMwMCcsXG4gICAgICBGT1VSX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTQwMCcsXG4gICAgfSxcbiAgfSxcbiAgQk9SREVSOiB7XG4gICAgQ09MT1I6IHtcbiAgICAgIEdMT0JBTDoge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYm9yZGVyLWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtYm9yZGVyLWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1ib3JkZXItc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJvcmRlci13YXJuaW5nJyxcblxuICAgICAgICBCTFVFOiAndGlkZS1ib3JkZXItYmx1ZScsXG4gICAgICAgIEdSRUVOOiAndGlkZS1ib3JkZXItZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1ib3JkZXItbGltZScsXG4gICAgICAgIE9SQU5HRTogJ3RpZGUtYm9yZGVyLW9yYW5nZScsXG4gICAgICAgIFBVUlBMRTogJ3RpZGUtYm9yZGVyLXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtYm9yZGVyLXJlZCcsXG4gICAgICAgIFNBTE1PTjogJ3RpZGUtYm9yZGVyLXNhbG1vbicsXG4gICAgICAgIFRFQUw6ICd0aWRlLWJvcmRlci10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1ib3JkZXIteWVsbG93JyxcbiAgICAgIH0sXG4gICAgICBJTklUSUFMOiAndGlkZS1ib3JkZXItY29sb3ItaW5pdGlhbCcsXG4gICAgICBERUZBVUxUOiAndGlkZS1ib3JkZXInLFxuICAgICAgRkxPQVRJTkc6ICd0aWRlLWJvcmRlci1mbG9hdGluZycsXG4gICAgICBISUdIOiAndGlkZS1ib3JkZXItaGlnaCcsXG4gICAgICBMT1c6ICd0aWRlLWJvcmRlci1sb3cnLFxuICAgICAgUFJJTUFSWTogJ3RpZGUtYm9yZGVyLXByaW1hcnknLFxuICAgIH0sXG4gICAgUkFESVVTOiB7XG4gICAgICBaRVJPOiAndGlkZS1yYWRpdXMtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1yYWRpdXMtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXJhZGl1cy0xLzInLFxuICAgICAgT05FOiAndGlkZS1yYWRpdXMtMScsXG4gICAgICBGVUxMOiAndGlkZS1yYWRpdXMtZnVsbCcsXG4gICAgfSxcbiAgICBTVFlMRToge1xuICAgICAgREFTSEVEOiAndGlkZS1ib3JkZXItZGFzaGVkJyxcbiAgICAgIFNPTElEOiAndGlkZS1ib3JkZXItc29saWQnLFxuICAgIH0sXG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItYm90dG9tLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItYm90dG9tLTInLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci0yJyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1sZWZ0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWxlZnQtMicsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1yaWdodC0yJyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXRvcC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXRvcC0yJyxcbiAgICB9LFxuICB9LFxuICBCT1hfU0laSU5HOiB7XG4gICAgQk9SREVSX0JPWDogJ3RpZGUtYm94LWJvcmRlcicsXG4gICAgQ09OVEVOVF9CT1g6ICd0aWRlLWJveC1jb250ZW50JyxcbiAgfSxcbiAgQlJFQUtfSU5TSURFOiB7XG4gICAgQVZPSURfQ09MVU1OOiAndGlkZS1icmVhay1pbnNpZGUtYXZvaWQtY29sdW1uJyxcbiAgfSxcbiAgQlJFQUtfV09SRDoge1xuICAgIE9GRjogJ3RpZGUtYnJlYWstaW5pdGlhbCcsXG4gICAgT046ICd0aWRlLWJyZWFrLXdvcmQnLFxuICB9LFxuICBDT0xVTU5TOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtY29sdW1ucy1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLWNvbHVtbnMtMScsXG4gICAgVFdPOiAndGlkZS1jb2x1bW5zLTInLFxuICAgIFRIUkVFOiAndGlkZS1jb2x1bW5zLTMnLFxuICAgIEZPVVI6ICd0aWRlLWNvbHVtbnMtNCcsXG4gIH0sXG4gIENVUlNPUjoge1xuICAgIE5PVF9BTExPV0VEOiAndGlkZS1jdXJzb3Itbm90LWFsbG93ZWQnLFxuICAgIFBPSU5URVI6ICd0aWRlLWN1cnNvci1wb2ludGVyJyxcbiAgICBURVhUOiAndGlkZS1jdXJzb3ItdGV4dCcsXG4gIH0sXG4gIERJU1BMQVk6IHtcbiAgICBCTE9DSzogJ3RpZGUtZGlzcGxheS1ibG9jaycsXG4gICAgQ09OVEVOVFM6ICd0aWRlLWRpc3BsYXktY29udGVudHMnLFxuICAgIEZMRVg6ICd0aWRlLWRpc3BsYXktZmxleCcsXG4gICAgR1JJRDogJ3RpZGUtZGlzcGxheS1ncmlkJyxcbiAgICBJTklUSUFMOiAndGlkZS1kaXNwbGF5LWluaXRpYWwnLFxuICAgIElOTElORTogJ3RpZGUtZGlzcGxheS1pbmxpbmUnLFxuICAgIElOTElORV9CTE9DSzogJ3RpZGUtZGlzcGxheS1pbmxpbmUtYmxvY2snLFxuICAgIElOTElORV9GTEVYOiAndGlkZS1kaXNwbGF5LWlubGluZS1mbGV4JyxcbiAgICBOT05FOiAndGlkZS1kaXNwbGF5LW5vbmUnLFxuICB9LFxuICBFTExJUFNJUzogJ3RpZGUtZWxsaXBzaXMnLFxuICBGTEVYOiB7XG4gICAgQkFTSVM6IHtcbiAgICAgIEFVVE86ICd0aWRlLWZsZXgtYmFzaXMtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1mbGV4LWJhc2lzLTAnLFxuICAgIH0sXG4gICAgRElSRUNUSU9OOiB7XG4gICAgICBDT0xVTU46ICd0aWRlLWZsZXgtY29sdW1uJyxcbiAgICAgIENPTFVNTl9SRVZFUlNFOiAndGlkZS1mbGV4LWNvbHVtbi1yZXZlcnNlJyxcbiAgICAgIFJPVzogJ3RpZGUtZmxleC1yb3cnLFxuICAgICAgUk9XX1JFVkVSU0U6ICd0aWRlLWZsZXgtcm93LXJldmVyc2UnLFxuICAgIH0sXG4gICAgR1JPVzoge1xuICAgICAgT0ZGOiAndGlkZS1ncm93LW5vbmUnLFxuICAgICAgT046ICd0aWRlLWdyb3cnLFxuICAgIH0sXG4gICAgU0hSSU5LOiB7XG4gICAgICBPRkY6ICd0aWRlLXNocmluay1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1zaHJpbmsnLFxuICAgIH0sXG4gICAgV1JBUDogJ3RpZGUtZmxleC13cmFwJyxcbiAgfSxcbiAgRk9OVDoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWZvbnQtZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1mb250LWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1mb250LXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1mb250LXdhcm5pbmcnLFxuXG4gICAgICAgIEJMVUU6ICd0aWRlLWZvbnQtYmx1ZScsXG4gICAgICAgIEdSRUVOOiAndGlkZS1mb250LWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtZm9udC1saW1lJyxcbiAgICAgICAgT1JBTkdFOiAndGlkZS1mb250LW9yYW5nZScsXG4gICAgICAgIFBVUlBMRTogJ3RpZGUtZm9udC1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWZvbnQtcmVkJyxcbiAgICAgICAgU0FMTU9OOiAndGlkZS1mb250LXNhbG1vbicsXG4gICAgICAgIFRFQUw6ICd0aWRlLWZvbnQtdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtZm9udC15ZWxsb3cnLFxuXG4gICAgICAgIFBSSU1BUlk6IHtcbiAgICAgICAgICBCTFVFOiAndGlkZS1mb250LXByaW1hcnktYmx1ZScsXG4gICAgICAgICAgR1JFRU46ICd0aWRlLWZvbnQtcHJpbWFyeS1ncmVlbicsXG4gICAgICAgICAgTElNRTogJ3RpZGUtZm9udC1wcmltYXJ5LWxpbWUnLFxuICAgICAgICAgIE9SQU5HRTogJ3RpZGUtZm9udC1wcmltYXJ5LW9yYW5nZScsXG4gICAgICAgICAgUFVSUExFOiAndGlkZS1mb250LXByaW1hcnktcHVycGxlJyxcbiAgICAgICAgICBSRUQ6ICd0aWRlLWZvbnQtcHJpbWFyeS1yZWQnLFxuICAgICAgICAgIFNBTE1PTjogJ3RpZGUtZm9udC1wcmltYXJ5LXNhbG1vbicsXG4gICAgICAgICAgVEVBTDogJ3RpZGUtZm9udC1wcmltYXJ5LXRlYWwnLFxuICAgICAgICAgIFlFTExPVzogJ3RpZGUtZm9udC1wcmltYXJ5LXllbGxvdycsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgUFJJTUFSWTogJ3RpZGUtZm9udC1vbi1wcmltYXJ5JyxcbiAgICAgIFNFQ09OREFSWTogJ3RpZGUtZm9udC1vbi1zZWNvbmRhcnknLFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBCUkFORDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWJyYW5kJyxcbiAgICAgICAgREVGQVVMVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlJyxcbiAgICAgICAgSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWludmVyc2UnLFxuICAgICAgICBWQVJJQU5UOiAndGlkZS1mb250LW9uLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgICAgIFZBUklBTlRfSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQtaW52ZXJzZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgUk9MRToge1xuICAgICAgRElTUExBWV8xOiAndGlkZS10eXBvZ3JhcGh5LWRpc3BsYXktMScsXG4gICAgICBIRUFETElORV8xOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTEnLFxuICAgICAgSEVBRExJTkVfMjogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0yJyxcbiAgICAgIEhFQURMSU5FXzM6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMycsXG4gICAgICBUSVRMRV8xOiAndGlkZS10eXBvZ3JhcGh5LXRpdGxlLTEnLFxuICAgICAgVElUTEVfMjogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0yJyxcbiAgICAgIEJPRFlfMTogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTEnLFxuICAgICAgQk9EWV8yOiAndGlkZS10eXBvZ3JhcGh5LWJvZHktMicsXG4gICAgICBMQUJFTF8xOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTEnLFxuICAgICAgTEFCRUxfMV9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzI6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMicsXG4gICAgICBMQUJFTF8yX1NFTUlCT0xEOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTItc2VtaWJvbGQnLFxuICAgICAgTEFCRUxfMzogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0zJyxcbiAgICAgIExJTktfMTogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTEnLFxuICAgICAgTElOS18yOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMicsXG4gICAgICBMSU5LXzM6ICd0aWRlLXR5cG9ncmFwaHktbGluay0zJyxcbiAgICAgIEJVVFRPTl8xOiAndGlkZS10eXBvZ3JhcGh5LWJ1dHRvbi0xJyxcbiAgICAgIEJVVFRPTl8yOiAndGlkZS10eXBvZ3JhcGh5LWJ1dHRvbi0yJyxcbiAgICB9LFxuICAgIFNJWkU6IHtcbiAgICAgIFRXRUxWRTogJ3RpZGUtZm9udC0xMicsXG4gICAgICBGT1VSVEVFTjogJ3RpZGUtZm9udC0xNCcsXG4gICAgICBTSVhURUVOOiAndGlkZS1mb250LTE2JyxcbiAgICAgIFRXRU5UWTogJ3RpZGUtZm9udC0yMCcsXG4gICAgICBUV0VOVFlfRk9VUjogJ3RpZGUtZm9udC0yNCcsXG4gICAgICBUSElSVFlfVFdPOiAndGlkZS1mb250LTMyJyxcbiAgICB9LFxuICAgIFdFSUdIVDoge1xuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS1mb250LTQwMCcsXG4gICAgICBGSVZFX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNTAwJyxcbiAgICAgIFNJWF9IVU5EUkVEOiAndGlkZS1mb250LTYwMCcsXG4gICAgICBTRVZFTl9IVU5EUkVEOiAndGlkZS1mb250LTcwMCcsXG4gICAgfSxcbiAgfSxcbiAgR0FQOiB7XG4gICAgWkVSTzogJ3RpZGUtZ2FwLTAnLFxuICAgIFFVQVJURVI6ICd0aWRlLWdhcC0xLzQnLFxuICAgIEhBTEY6ICd0aWRlLWdhcC0xLzInLFxuICAgIE9ORTogJ3RpZGUtZ2FwLTEnLFxuICAgIFRXTzogJ3RpZGUtZ2FwLTInLFxuICAgIEZPVVI6ICd0aWRlLWdhcC00JyxcbiAgfSxcbiAgR1JJRDoge1xuICAgIEZMVUlEOiAndGlkZS1mbHVpZCcsXG4gICAgSVRFTTogJ3RpZGUtZ3JpZC1pdGVtJyxcbiAgICBMQVlPVVQ6ICd0aWRlLWdyaWQtbGF5b3V0JyxcbiAgICBYTDogJ3RpZGUtZ3JpZC14bCcsXG4gIH0sXG4gIEhFSUdIVDoge1xuICAgIEFVVE86ICd0aWRlLWhlaWdodC1hdXRvJyxcbiAgICBaRVJPOiAndGlkZS1oZWlnaHQtMCcsXG4gICAgRlVMTDogJ3RpZGUtaGVpZ2h0LWZ1bGwnLFxuICAgIE1BWF9GVUxMOiAndGlkZS1tYXgtaGVpZ2h0LWZ1bGwnLFxuICAgIE1JTl9aRVJPOiAndGlkZS1taW4taGVpZ2h0LTAnLFxuICB9LFxuICBJU09MQVRJT046IHtcbiAgICBJU09MQVRFOiAndGlkZS1pc29sYXRlJyxcbiAgfSxcbiAgTElTVF9CVUxMRVRTOiB7XG4gICAgT0ZGOiAndGlkZS1saXN0LW5vbmUnLFxuICB9LFxuICBNQVJHSU46IHtcbiAgICBCT1RUT006IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1ib3R0b20tYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tYm90dG9tLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tYm90dG9tLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWJvdHRvbS00JyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLWxlZnQtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tbGVmdC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tbGVmdC00JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tcmlnaHQtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tcmlnaHQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1yaWdodC00JyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXRvcC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi10b3AtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tdG9wLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi10b3AtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi10b3AtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXgtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4teC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4teC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4teC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teC00JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi15LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi15LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4teS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi15LTQnLFxuICAgIH0sXG4gIH0sXG4gIE9CSkVDVDoge1xuICAgIENFTlRFUjogJ3RpZGUtb2JqZWN0LWNlbnRlcicsXG4gICAgQ09OVEFJTjogJ3RpZGUtb2JqZWN0LWNvbnRhaW4nLFxuICAgIENPVkVSOiAndGlkZS1vYmplY3QtY292ZXInLFxuICAgIFNDQUxFX0RPV046ICd0aWRlLW9iamVjdC1zY2FsZS1kb3duJyxcbiAgfSxcbiAgT1BBQ0lUWToge1xuICAgIERJU0FCTEVEOiAndGlkZS1vcGFjaXR5LWRpc2FibGVkJyxcbiAgICBPRkY6ICd0aWRlLW9wYWNpdHktbm9uZScsXG4gICAgT046ICd0aWRlLW9wYWNpdHknLFxuICB9LFxuICBPVkVSRkxPVzoge1xuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLXgtYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXgtaGlkZGVuJyxcbiAgICAgIFNDUk9MTDogJ3RpZGUteC1zY3JvbGwnLFxuICAgIH0sXG4gICAgWFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXh5LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14eS1oaWRkZW4nLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgQVVUTzogJ3RpZGUteS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteS1oaWRkZW4nLFxuICAgIH0sXG4gIH0sXG4gIFBBRERJTkc6IHtcbiAgICBCT1RUT006IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctYm90dG9tLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctbGVmdC00JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1yaWdodC00JyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy10b3AtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy10b3AtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy10b3AtNCcsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXgtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteC00JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmcteS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmcteS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmcteS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy15LTQnLFxuICAgIH0sXG4gIH0sXG4gIFBPSU5URVJfRVZFTlRTOiB7XG4gICAgT0ZGOiAndGlkZS1wb2ludGVyLWV2ZW50cy1ub25lJyxcbiAgICBPTjogJ3RpZGUtcG9pbnRlci1ldmVudHMnLFxuICB9LFxuICBQT1NJVElPTjoge1xuICAgIEFCU09MVVRFOiAndGlkZS1wb3NpdGlvbi1hYnNvbHV0ZScsXG4gICAgRklYRUQ6ICd0aWRlLXBvc2l0aW9uLWZpeGVkJyxcbiAgICBSRUxBVElWRTogJ3RpZGUtcG9zaXRpb24tcmVsYXRpdmUnLFxuICAgIFNUQVRJQzogJ3RpZGUtcG9zaXRpb24tc3RhdGljJyxcbiAgICBTVElDS1k6ICd0aWRlLXBvc2l0aW9uLXN0aWNreScsXG4gIH0sXG4gIFBPU0lUSU9OSU5HOiB7XG4gICAgQk9UVE9NOiAndGlkZS1ib3R0b20tMCcsXG4gICAgTEVGVDogJ3RpZGUtbGVmdC0wJyxcbiAgICBSSUdIVDogJ3RpZGUtcmlnaHQtMCcsXG4gICAgVE9QOiAndGlkZS10b3AtMCcsXG4gIH0sXG4gIFJBVElPOiB7XG4gICAgT05FX1RPX09ORTogJ3RpZGUtcmF0aW8tMS8xJyxcbiAgICBTSVhURUVOX1RPX05JTkU6ICd0aWRlLXJhdGlvLTE2LzknLFxuICAgIFRIUkVFX1RPX1RXTzogJ3RpZGUtcmF0aW8tMy8yJyxcbiAgfSxcbiAgU0NST0xMQkFSOiB7XG4gICAgT0ZGOiAndGlkZS1zY3JvbGxiYXItbm9uZScsXG4gIH0sXG4gIFNIQURPVzoge1xuICAgIElOSVRJQUw6ICd0aWRlLXNoYWRvdy1pbml0aWFsJyxcbiAgICBCT1RUT006ICd0aWRlLXNoYWRvdy1ib3R0b20nLFxuICAgIFRPUDogJ3RpZGUtc2hhZG93LXRvcCcsXG4gICAgVEVYVDogJ3RpZGUtc2hhZG93LXRleHQnLFxuICB9LFxuICBTTkFQOiB7XG4gICAgT046ICd0aWRlLXNjcm9sbC1zbmFwJyxcbiAgfSxcbiAgU05BUF9BTElHTjoge1xuICAgIFNUQVJUOiAndGlkZS1zY3JvbGwtc25hcC1zdGFydCcsXG4gIH0sXG4gIFNUUklLRVRIUk9VR0g6IHtcbiAgICBPRkY6ICd0aWRlLXN0cmlrZXRocm91Z2gtbm9uZScsXG4gICAgT046ICd0aWRlLXN0cmlrZXRocm91Z2gnLFxuICB9LFxuICBURVhUX1RSQU5TRk9STToge1xuICAgIExPV0VSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1sb3dlcicsXG4gICAgTk9ORTogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbm9uZScsXG4gICAgVVBQRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLXVwcGVyJyxcbiAgfSxcbiAgVU5ERVJMSU5FOiB7XG4gICAgSE9WRVI6IHtcbiAgICAgIE9OOiAndGlkZS11bmRlcmxpbmUtaG92ZXInLFxuICAgICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtaG92ZXItbm9uZScsXG4gICAgfSxcbiAgICBSRVNUOiB7XG4gICAgICBPTjogJ3RpZGUtdW5kZXJsaW5lJyxcbiAgICAgIE9GRjogJ3RpZGUtdW5kZXJsaW5lLW5vbmUnLFxuICAgIH0sXG4gIH0sXG4gIFVTRVJfU0VMRUNUOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtdXNlci1zZWxlY3QtaW5pdGlhbCcsXG4gICAgTk9ORTogJ3RpZGUtdXNlci1zZWxlY3Qtbm9uZScsXG4gIH0sXG4gIFZJU0lCSUxJVFk6IHtcbiAgICBPRkY6ICd0aWRlLXZpc2libGUtbm9uZScsXG4gICAgT046ICd0aWRlLXZpc2libGUnLFxuICB9LFxuICBXSElURVNQQUNFX1dSQVA6IHtcbiAgICBPRkY6ICd0aWRlLXdoaXRlc3BhY2Utbm93cmFwJyxcbiAgfSxcbiAgV0lEVEg6IHtcbiAgICBBVVRPOiAndGlkZS13aWR0aC1hdXRvJyxcbiAgICBGVUxMOiAndGlkZS13aWR0aC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LXdpZHRoLWZ1bGwnLFxuICAgIE1JTl9aRVJPOiAndGlkZS1taW4td2lkdGgtMCcsXG4gICAgU1RSRVRDSDogJ3RpZGUtd2lkdGgtc3RyZXRjaCcsXG4gICAgWkVSTzogJ3RpZGUtd2lkdGgtMCcsXG4gIH0sXG4gIFpfSU5ERVg6IHtcbiAgICBJTklUSUFMOiAndGlkZS16LWluZGV4LWluaXRpYWwnLFxuICAgIE9ORTogJ3RpZGUtei1pbmRleC0xJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGRpdmlkZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlZGl2aWRlci0tZG9jcykgZm9yIFRpZGVEaXZpZGVyXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBPUklFTlRBVElPTiB9IGZyb20gJ0AvdHlwZXMvT3JpZW50YXRpb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBPcmllbnRhdGlvbiB9IGZyb20gJ0AvdHlwZXMvT3JpZW50YXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBEaXZpZGVyIGlzIGhvcml6b250YWwgb3IgdmVydGljYWwgKi9cbiAgICBvcmllbnRhdGlvbj86IE9yaWVudGF0aW9uO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgb3JpZW50YXRpb246IE9SSUVOVEFUSU9OLkhPUklaT05UQUwsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtZGl2aWRlciddXCI+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgcHJvcHMub3JpZW50YXRpb24gPT09IE9SSUVOVEFUSU9OLkhPUklaT05UQUxcbiAgICAgICAgICA/IFtDU1MuTUFSR0lOLlkuSEFMRiwgQ1NTLkJPUkRFUi5CT1RUT00uT05FLCBDU1MuV0lEVEguRlVMTF1cbiAgICAgICAgICA6IFtDU1MuTUFSR0lOLlguSEFMRiwgQ1NTLkJPUkRFUi5SSUdIVC5PTkUsIENTUy5IRUlHSFQuRlVMTF0sXG4gICAgICBdXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWRpdmlkZXIge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgUkVBTE0gPSB7XG4gIEFFUk86ICdhZXJvJyxcbiAgQVRWOiAnYXR2JyxcbiAgQk9BVE1BUlQ6ICdib2F0bWFydCcsXG4gIENZQ0xFOiAnY3ljbGUnLFxuICBFUVVJUE1FTlQ6ICdlcXVpcG1lbnQnLFxuICBQV0M6ICdwd2MnLFxuICBSVjogJ3J2JyxcbiAgU05PVzogJ3Nub3cnLFxuICBUUlVDSzogJ3RydWNrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFJlYWxtS2V5ID0ga2V5b2YgdHlwZW9mIFJFQUxNO1xuZXhwb3J0IHR5cGUgUmVhbG0gPSAodHlwZW9mIFJFQUxNKVtSZWFsbUtleV07XG4iLCJleHBvcnQgY29uc3QgU0laRSA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZSA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuXG5leHBvcnQgY29uc3QgU0laRV9CVVRUT04gPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBTTUFMTDogJ3NtYWxsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFNpemVCdXR0b24gPSAodHlwZW9mIFNJWkUpW2tleW9mIHR5cGVvZiBTSVpFXTtcbiIsImNvbnN0IGNhcGl0YWxpemVGaXJzdCA9IChzdHJpbmc6IHN0cmluZykgPT4ge1xuICByZXR1cm4gc3RyaW5nLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyaW5nLnNsaWNlKDEpO1xufTtcblxuY29uc3QgZm9ybWF0Q2FtZWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoL15bXFxzXy1dLywgJycpXG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQsIGluZGV4KSA9PiAoaW5kZXggPT09IDAgPyB3b3JkIDogd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRLZWJhYkNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJy0nKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRMYWJlbCA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGxhYmVsTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgIGZhbHNlOiAnTm8nLFxuICAgIHRydWU6ICdZZXMnLFxuICB9O1xuICByZXR1cm4gT2JqZWN0Lmhhc093bihsYWJlbE1hcCwgdmFsdWUpID8gbGFiZWxNYXBbdmFsdWVdIDogdmFsdWU7XG59O1xuXG5jb25zdCBmb3JtYXROdW1iZXIgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBvdXRwdXQgPSBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInID8gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnJyk7XG4gIGxldCBkaWdpdHMgPSBvdXRwdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICBpZiAoTnVtYmVyKGRpZ2l0cykpIHtcbiAgICAgIG91dHB1dCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdChOdW1iZXIoZGlnaXRzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dCA9ICcwJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UGFzY2FsQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQaG9uZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBTdHJpbmcoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcbiAgZGlnaXRzID0gZGlnaXRzLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG5cbiAgc3dpdGNoIChkaWdpdHMubGVuZ3RoKSB7XG4gICAgY2FzZSA3OlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzKX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAzKX0tJHtkaWdpdHMuc2xpY2UoMywgNil9LSR7ZGlnaXRzLnNsaWNlKDYpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDExOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDEpfS0ke2RpZ2l0cy5zbGljZSgxLCA0KX0tJHtkaWdpdHMuc2xpY2UoNCwgNyl9LSR7ZGlnaXRzLnNsaWNlKDcpfWA7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgb3V0cHV0ID0gZGlnaXRzO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UHJpY2UgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0ID8gZm9ybWF0TnVtYmVyKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnMCcpO1xuICByZXR1cm4gYCQke291dHB1dH1gO1xufTtcblxuY29uc3QgZm9ybWF0UXVvdGVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ1wiJykgJiYgdmFsdWUuZW5kc1dpdGgoJ1wiJykpIHtcbiAgICByZXR1cm4gdmFsdWUuc2xpY2UoMSwgLTEpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuY29uc3QgZm9ybWF0U2VudGVuY2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgc2VudGVuY2VDYXNlID0gaW5wdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBsb3dlckNhc2UgPSBpbnB1dFxuICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKTtcblxuICAgIHNlbnRlbmNlQ2FzZSA9IGxvd2VyQ2FzZS5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgbG93ZXJDYXNlLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIHNlbnRlbmNlQ2FzZTtcbn07XG5cbmNvbnN0IGZvcm1hdFNuYWtlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnXycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFRpdGxlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcgJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VXJsRnJvbVJvb3QgPSAodXJsOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgdXJsRm9ybWF0dGVkID0gdXJsLnNwbGl0KCcuY29tLycpO1xuXG4gIHJldHVybiB1cmxGb3JtYXR0ZWQubGVuZ3RoID4gMSA/IGAvJHt1cmxGb3JtYXR0ZWRbMV19YCA6IHVybDtcbn07XG5cbmNvbnN0IGZvcm1hdFdlaWdodCA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJHtvdXRwdXR9IGxic2A7XG59O1xuXG5jb25zdCBnZXRBcnRpY2xlID0gKG5vdW46IHN0cmluZywgaXNQbHVyYWwgPSBmYWxzZSwgaXNEZWZpbml0ZSA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IHZvd2VscyA9IFsnYScsICdlJywgJ2knLCAnbycsICd1J107XG4gIGNvbnN0IGlzVm93ZWxMZWFkaW5nID0gdm93ZWxzLmluY2x1ZGVzKG5vdW4uY2hhckF0KDApKTtcblxuICByZXR1cm4gaXNEZWZpbml0ZSA/ICd0aGUnIDogaXNQbHVyYWwgPyAnc29tZScgOiBpc1Zvd2VsTGVhZGluZyA/ICdhbicgOiAnYSc7XG59O1xuXG5jb25zdCBwcmljZVRvTnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKE51bWJlci5pc05hTihOdW1iZXIodmFsdWUpKSkge1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnJCcsICcnKTtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLywvZywgJycpO1xuICB9XG4gIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xufTtcblxuY29uc3QgdW5mb3JtYXRQcmljZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQucmVwbGFjZSgvXFwkL2csICcnKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgcmV0dXJuIGAke291dHB1dH1gO1xufTtcblxuZXhwb3J0IHtcbiAgY2FwaXRhbGl6ZUZpcnN0LFxuICBmb3JtYXRDYW1lbENhc2UsXG4gIGZvcm1hdEtlYmFiQ2FzZSxcbiAgZm9ybWF0TGFiZWwsXG4gIGZvcm1hdE51bWJlcixcbiAgZm9ybWF0UGFzY2FsQ2FzZSxcbiAgZm9ybWF0UGhvbmUsXG4gIGZvcm1hdFByaWNlLFxuICBmb3JtYXRRdW90ZXMsXG4gIGZvcm1hdFNlbnRlbmNlQ2FzZSxcbiAgZm9ybWF0U25ha2VDYXNlLFxuICBmb3JtYXRUaXRsZUNhc2UsXG4gIGZvcm1hdFVybEZyb21Sb290LFxuICBmb3JtYXRXZWlnaHQsXG4gIGdldEFydGljbGUsXG4gIHByaWNlVG9OdW1iZXIsXG4gIHVuZm9ybWF0UHJpY2UsXG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaWNvbiBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpY29uLS1kb2NzKSBmb3IgVGlkZUljb25cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGRlZmluZUFzeW5jQ29tcG9uZW50LCBtYXJrUmF3LCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBSRUFMTSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXRQYXNjYWxDYXNlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFNpemUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogSWNvbiAqL1xuICAgIGljb246IEljb247XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBpY29uIGRpbWVuc2lvbnMgKi9cbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcblxuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGVmaW5lQXN5bmNDb21wb25lbnQoKCkgPT4ge1xuICAgICAgICBpZiAocmVhbG1Gb2xkZXIpIHtcbiAgICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL3JlYWxtLyR7cmVhbG1Gb2xkZXJ9L0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvaWNvbnMvSWNvbiR7bmFtZX0uc3ZnP2NvbXBvbmVudGApO1xuICAgICAgfSk7XG5cbiAgICAgIGlubmVyU1ZHLnZhbHVlID0gbWFya1Jhdyhjb21wb25lbnQpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaWNvbicsIHByb3BzLnNpemUsIENTUy5GTEVYLlNIUklOSy5PRkZdXCI+XG4gICAgPENvbXBvbmVudFxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgICA6ZGF0YS1pY29uPVwiaWNvblwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIDppcz1cImlubmVyU1ZHXCJcbiAgICAgIHYtaWY9XCJpbm5lclNWR1wiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGU+XG4gIC50aWRlLWljb24ge1xuICAgIHdpZHRoOiAxLjVyZW07XG4gICAgaGVpZ2h0OiAxLjVyZW07XG4gIH1cblxuICAudGlkZS1pY29uLnNtYWxsIHtcbiAgICB3aWR0aDogMS4yNXJlbTtcbiAgICBoZWlnaHQ6IDEuMjVyZW07XG4gIH1cblxuICAudGlkZS1pY29uIHN2ZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHR5cGUgeyBSZWFsbUtleSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuXG5leHBvcnQgY29uc3QgSUNPTiA9IHtcbiAgQUNDT1VOVF9CQUxBTkNFOiAnYWNjb3VudC1iYWxhbmNlJyxcbiAgQUNVVEU6ICdhY3V0ZScsXG4gIEFERDogJ2FkZCcsXG4gIEFJX0RFU0NSSVBUSU9OOiAnYWktZGVzY3JpcHRpb24nLFxuICBBTElHTl9TUEFDRV9FVkVOOiAnYWxpZ24tc3BhY2UtZXZlbicsXG4gIEFQUExFX1BBWTogJ2FwcGxlLXBheScsXG4gIEFSUk9XX0JBQ0s6ICdhcnJvdy1iYWNrJyxcbiAgQVJST1dfQ1lDTEU6ICdhcnJvdy1jeWNsZScsXG4gIEFSUk9XX0ZPUldBUkQ6ICdhcnJvdy1mb3J3YXJkJyxcbiAgQVJST1dfUklHSFQ6ICdhcnJvdy1yaWdodCcsXG4gIEFSUk9XX1VQOiAnYXJyb3ctdXAnLFxuICBBU1NJR05NRU5UOiAnYXNzaWdubWVudCcsXG4gIEFUVEFDSF9NT05FWTogJ2F0dGFjaC1tb25leScsXG4gIEFVVE9fUkVORVc6ICdhdXRvLXJlbmV3JyxcbiAgQVdBUkRfU1RBUjogJ2F3YXJkLXN0YXInLFxuICBCRUQ6ICdiZWQnLFxuICBCT0xUOiAnYm9sdCcsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBCVU5LSE9VU0U6ICdidW5raG91c2UnLFxuICBDQUxDVUxBVEU6ICdjYWxjdWxhdGUnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDQUxMX1FVQUxJVFk6ICdjYWxsLXF1YWxpdHknLFxuICBDQVJfUkVOVEFMOiAnY2FyLXJlbnRhbCcsXG4gIENIRUNLOiAnY2hlY2snLFxuICBDSEVWUk9OX0xFRlQ6ICdjaGV2cm9uLWxlZnQnLFxuICBDSEVWUk9OX1JJR0hUOiAnY2hldnJvbi1yaWdodCcsXG4gIENMRUFSOiAnY2xlYXInLFxuICBDTE9TRTogJ2Nsb3NlJyxcbiAgQ09OVFJBQ1Q6ICdjb250cmFjdCcsXG4gIENSQVNIOiAnY3Jhc2gnLFxuICBEQVNIQk9BUkRfQ1VTVE9NSVpFOiAnZGFzaGJvYXJkLWN1c3RvbWl6ZScsXG4gIERFTEVURTogJ2RlbGV0ZScsXG4gIERJQU1PTkQ6ICdkaWFtb25kJyxcbiAgRElSRUNUSU9OU19CT0FUOiAnZGlyZWN0aW9ucy1ib2F0JyxcbiAgRE9NQUlOOiAnZG9tYWluJyxcbiAgRFJBRlQ6ICdkcmFmdCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRU5HSU5FOiAnZW5naW5lJyxcbiAgRU5HSU5FRVJJTkc6ICdlbmdpbmVlcmluZycsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBFWFBBTkRfQ09OVEVOVDogJ2V4cGFuZC1jb250ZW50JyxcbiAgRVhQQU5EX0xFU1M6ICdleHBhbmQtbGVzcycsXG4gIEVYUEFORF9NT1JFOiAnZXhwYW5kLW1vcmUnLFxuICBGQUNFQk9PSzogJ2ZhY2Vib29rJyxcbiAgRkFWT1JJVEU6ICdmYXZvcml0ZScsXG4gIEZBVk9SSVRFX0ZJTExFRDogJ2Zhdm9yaXRlLWZpbGxlZCcsXG4gIEZMQUc6ICdmbGFnJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHQVM6ICdnYXMnLFxuICBHQVZFTDogJ2dhdmVsJyxcbiAgR0VBUlM6ICdnZWFycycsXG4gIEdMT0JFX0xPQ0FUSU9OX1BJTjogJ2dsb2JlLWxvY2F0aW9uLXBpbicsXG4gIEdPT0dMRTogJ2dvb2dsZScsXG4gIEdPT0dMRV9QQVk6ICdnb29nbGUtcGF5JyxcbiAgR1JJRDogJ2dyaWQnLFxuICBIQU5EU0hBS0U6ICdoYW5kc2hha2UnLFxuICBIQU5EWU1BTjogJ2hhbmR5bWFuJyxcbiAgSEVJR0hUOiAnaGVpZ2h0JyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElORk9STUFUSU9OOiAnaW5mb3JtYXRpb24nLFxuICBJTlNFUlRfVEVYVDogJ2luc2VydC10ZXh0JyxcbiAgSU5TVEFHUkFNOiAnaW5zdGFncmFtJyxcbiAgSU9TX1NIQVJFOiAnaW9zLXNoYXJlJyxcbiAgTEFZT1VUOiAnbGF5b3V0JyxcbiAgTEVWRUxMSU5HX0pBQ0s6ICdsZXZlbGxpbmctamFjaycsXG4gIExJTktFRF9JTjogJ2xpbmtlZCBpbicsXG4gIExPQ0FMX1NISVBQSU5HOiAnbG9jYWwtc2hpcHBpbmcnLFxuICBMT0NLOiAnbG9jaycsXG4gIE1BSUw6ICdtYWlsJyxcbiAgTU9WRTogJ21vdmUnLFxuICBNRU5VOiAnbWVudScsXG4gIE1PTkVZX0JBRzogJ21vbmV5LWJhZycsXG4gIE1PUkVfSE9SSVo6ICdtb3JlLWhvcml6JyxcbiAgTk9USUZJQ0FUSU9OUzogJ25vdGlmaWNhdGlvbnMnLFxuICBPRE9NRVRFUjogJ29kb21ldGVyJyxcbiAgT1BFTl9JTl9ORVc6ICdvcGVuLWluLW5ldycsXG4gIFBBTEVUVEU6ICdwYWxldHRlJyxcbiAgUEFZUEFMOiAncGF5cGFsJyxcbiAgUEVSU09OOiAncGVyc29uJyxcbiAgUEVSU09OX1NFQVJDSDogJ3BlcnNvbi1zZWFyY2gnLFxuICBQSE9UT19DQU1FUkE6ICdwaG90by1jYW1lcmEnLFxuICBQSU5URVJFU1Q6ICdwaW50ZXJlc3QnLFxuICBQTEFZX0FSUk9XOiAncGxheS1hcnJvdycsXG4gIFBPTElDWTogJ3BvbGljeScsXG4gIFBPV0VSOiAncG93ZXInLFxuICBQT1dFUl9PRkY6ICdwb3dlci1vZmYnLFxuICBQUklPUklUWV9ISUdIOiAncHJpb3JpdHktaGlnaCcsXG4gIFJFTU9WRTogJ3JlbW92ZScsXG4gIFJFUVVFU1RfUVVPVEU6ICdyZXF1ZXN0LXF1b3RlJyxcbiAgUkVTRVRfV1JFTkNIOiAncmVzZXQtd3JlbmNoJyxcbiAgUk9BRDogJ3JvYWQnLFxuICBST1VOREVEX0NPUk5FUjogJ3JvdW5kZWQtY29ybmVyJyxcbiAgUlVMRVI6ICdydWxlcicsXG4gIFNBSUxJTkc6ICdzYWlsaW5nJyxcbiAgU0NIT09MOiAnc2Nob29sJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgU0VBVElORzogJ3NlYXRpbmcnLFxuICBTRUxMOiAnc2VsbCcsXG4gIFNFTlNPUlM6ICdzZW5zb3JzJyxcbiAgU0VUVElOR1M6ICdzZXR0aW5ncycsXG4gIFNIQVJFOiAnc2hhcmUnLFxuICBTSElFTERfQ0hFQ0s6ICdzaGllbGQtY2hlY2snLFxuICBTSE9QUElOR19DQVJUOiAnc2hvcHBpbmctY2FydCcsXG4gIFNMRUVQUzogJ3NsZWVwcycsXG4gIFNNUzogJ3NtcycsXG4gIFNOT1dGTEFLRTogJ3Nub3dmbGFrZScsXG4gIFNUQVI6ICdzdGFyJyxcbiAgU1RBUl9GSUxMRUQ6ICdzdGFyLWZpbGxlZCcsXG4gIFNUQVJfSEFMRjogJ3N0YXItaGFsZicsXG4gIFNVTU1BUklaRTogJ3N1bW1hcml6ZScsXG4gIFNXQVBfSE9SSVo6ICdzd2FwLWhvcml6JyxcbiAgU1dBUF9WRVJUOiAnc3dhcC12ZXJ0JyxcbiAgVEhSRUVfRF9ST1RBVElPTjogJ3RocmVlLWQtcm90YXRpb24nLFxuICBUSFVNQl9VUDogJ3RodW1iLXVwJyxcbiAgVFJFTkRJTkdfRE9XTjogJ3RyZW5kaW5nLWRvd24nLFxuICBUUk9QSFk6ICd0cm9waHknLFxuICBUVU5FOiAndHVuZScsXG4gIFRXSVRURVI6ICd0d2l0dGVyJyxcbiAgVU1CUkVMTEE6ICd1bWJyZWxsYScsXG4gIFZFUklGSUVEOiAndmVyaWZpZWQnLFxuICBWSURFT0NBTTogJ3ZpZGVvY2FtJyxcbiAgVklFV19JTl9BUjogJ3ZpZXctaW4tYXInLFxuICBWSVNJQklMSVRZOiAndmlzaWJpbGl0eScsXG4gIFZPTFVNRV9PRkY6ICd2b2x1bWUtb2ZmJyxcbiAgVk9MVU1FX09OOiAndm9sdW1lLW9uJyxcbiAgV0FSRUhPVVNFOiAnd2FyZWhvdXNlJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBXQVRFUjogJ3dhdGVyJyxcbiAgV0VJR0hUOiAnd2VpZ2h0JyxcbiAgV0lEVEg6ICd3aWR0aCcsXG4gIFdPUktTUEFDRV9QUkVNSVVNOiAnd29ya3NwYWNlLXByZW1pdW0nLFxuICBXUkVOQ0g6ICd3cmVuY2gnLFxuICBZT1VUVUJFOiAneW91dHViZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgSUNPTl9SRUFMTSA9IHtcbiAgQUVSTzoge1xuICAgIEZMSUdIVDogJ2Flcm8tZmxpZ2h0JyxcbiAgICBIRUxJQ09QVEVSOiAnYWVyby1oZWxpY29wdGVyJyxcbiAgICBNT0RFX0ZBTjogJ2Flcm8tbW9kZS1mYW4nLFxuICAgIFBMQU5FX0NPTlRSQUlMUzogJ2Flcm8tcGxhbmUtY29udHJhaWxzJyxcbiAgfSxcbiAgQVRWOiB7XG4gICAgQVRWOiAnYXR2LWF0dicsXG4gICAgRFVORV9CVUdHWTogJ2F0di1kdW5lLWJ1Z2d5JyxcbiAgICBHT0xGX0NBUlQ6ICdhdHYtZ29sZi1jYXJ0JyxcbiAgICBHT19LQVJUOiAnYXR2LWdvLWthcnQnLFxuICAgIFNBTkRfUkFJTDogJ2F0di1zYW5kLXJhaWwnLFxuICAgIFNJREVfQllfU0lERTogJ2F0di1zaWRlLWJ5LXNpZGUnLFxuICAgIFRSQUlMRVI6ICdhdHYtdHJhaWxlcicsXG4gIH0sXG4gIEJPQVRNQVJUOiB7XG4gICAgUFdDOiAnYm9hdG1hcnQtcHdjJyxcbiAgICBUUkFJTEVSOiAnYm9hdG1hcnQtdHJhaWxlcicsXG4gIH0sXG4gIENZQ0xFOiB7XG4gICAgTU9UT1JDWUNMRTogJ2N5Y2xlLW1vdG9yY3ljbGUnLFxuICAgIFRSQUlMRVI6ICdjeWNsZS10cmFpbGVyJyxcbiAgfSxcbiAgUFdDOiB7XG4gICAgUFdDOiAncHdjLXB3YycsXG4gICAgU05PV01PQklMRTogJ3B3Yy1zbm93bW9iaWxlJyxcbiAgICBUUkFJTEVSOiAncHdjLXRyYWlsZXInLFxuICB9LFxuICBSVjoge1xuICAgIENMQVNTX0E6ICdydi1jbGFzcy1hJyxcbiAgICBDTEFTU19COiAncnYtY2xhc3MtYicsXG4gICAgQ0xBU1NfQzogJ3J2LWNsYXNzLWMnLFxuICAgIERFU1RJTkFUSU9OX1RSQUlMRVI6ICdydi1kZXN0aW5hdGlvbi10cmFpbGVyJyxcbiAgICBGSUZUSF9XSEVFTDogJ3J2LWZpZnRoLXdoZWVsJyxcbiAgICBGSVNIX0hPVVNFOiAncnYtZmlzaC1ob3VzZScsXG4gICAgUEFSS19NT0RFTDogJ3J2LXBhcmstbW9kZWwnLFxuICAgIFBPUF9VUF9DQU1QRVI6ICdydi1wb3AtdXAtY2FtcGVyJyxcbiAgICBURUFSRFJPUF9UUkFJTEVSOiAncnYtdGVhcmRyb3AtdHJhaWxlcicsXG4gICAgVFJBVkVMX1RSQUlMRVI6ICdydi10cmF2ZWwtdHJhaWxlcicsXG4gICAgVFJVQ0tfQ0FNUEVSOiAncnYtdHJ1Y2stY2FtcGVyJyxcbiAgfSxcbiAgU05PVzoge1xuICAgIE1PVE9SQ1lDTEU6ICdzbm93LW1vdG9yY3ljbGUnLFxuICAgIFBXQzogJ3Nub3ctcHdjJyxcbiAgICBTSURFX0JZX1NJREU6ICdzbm93LXNpZGUtYnktc2lkZScsXG4gICAgU05PV01PQklMRTogJ3Nub3ctc25vd21vYmlsZScsXG4gICAgVFJBSUxFUjogJ3Nub3ctdHJhaWxlcicsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG50eXBlIFJlYWxtS2V5c1dpdGhJY29ucyA9IEV4dHJhY3Q8UmVhbG1LZXksIGtleW9mIHR5cGVvZiBJQ09OX1JFQUxNPjtcbnR5cGUgUmVhbG1JY29uID0ge1xuICBbUmVhbG1LZXkgaW4gUmVhbG1LZXlzV2l0aEljb25zXTogKHR5cGVvZiBJQ09OX1JFQUxNKVtSZWFsbUtleV1ba2V5b2YgKHR5cGVvZiBJQ09OX1JFQUxNKVtSZWFsbUtleV1dO1xufVtSZWFsbUtleXNXaXRoSWNvbnNdO1xuXG50eXBlIEdsb2JhbEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcblxuZXhwb3J0IHR5cGUgSWNvbiA9IEdsb2JhbEljb24gfCBSZWFsbUljb247XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBhY2NvcmRpb24gaXRlbSBpbnRlbmRlZCB0byBiZSB1c2VkIGluIG5hdmlnYXRpb24gbWVudXMgcmVsYXRpbmcgdG8gYWNjb3JkaW9uIGRyb3Bkb3ducy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWFjY29yZGlvbml0ZW0tLWRvY3MpIGZvciBUaWRlQWNjb3JkaW9uSXRlbVxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlRGl2aWRlciBmcm9tICdAL2NvbXBvbmVudHMvVGlkZURpdmlkZXIudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgYWNjb3JkaW9uIGl0ZW0gKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGluY2x1ZGUgYm90dG9tIGRpdmlkZXIgKi9cbiAgICBoYXNCb3R0b21EaXZpZGVyPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gaW5jbHVkZSB0b3AgZGl2aWRlciAqL1xuICAgIGhhc1RvcERpdmlkZXI/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBzaG93IFwiKG9wdGlvbmFsKVwiIGluZGljYXRvciBhZnRlciBsYWJlbCAqL1xuICAgIGlzT3B0aW9uYWw/OiBib29sZWFuO1xuXG4gICAgLyoqIFRoZSBsYWJlbCBvZiB0aGUgYWNjb3JkaW9uIGl0ZW0gKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGhhc0JvdHRvbURpdmlkZXI6IGZhbHNlLFxuICAgIGhhc1RvcERpdmlkZXI6IGZhbHNlLFxuICAgIGlzT3B0aW9uYWw6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBpc0V4cGFuZGVkID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBoYW5kbGVUb2dnbGVDbGljayA9ICgpID0+IHtcbiAgICBpZiAocHJvcHMuZGlzYWJsZWQpIHJldHVybjtcbiAgICBpc0V4cGFuZGVkLnZhbHVlID0gIWlzRXhwYW5kZWQudmFsdWU7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuZGlzYWJsZWQsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgaXNFeHBhbmRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWl0ZW0nXVwiPlxuICAgIDxUaWRlRGl2aWRlciB2LWlmPVwiaGFzVG9wRGl2aWRlclwiIC8+XG5cbiAgICA8YnV0dG9uXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFjY29yZGlvbi1oZWFkJyxcbiAgICAgICAgQ1NTLkFMSUdOLlguTEVGVCxcbiAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIGRpc2FibGVkID8gW0NTUy5PUEFDSVRZLkRJU0FCTEVELCBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXSA6IFtdLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVUb2dnbGVDbGlja1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTERdXCI+XG4gICAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJpc09wdGlvbmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgIChvcHRpb25hbClcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImlzRXhwYW5kZWQgPyBJQ09OLkVYUEFORF9MRVNTIDogSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWJvZHknLCBpc0V4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnLCBDU1MuRElTUExBWS5HUklEXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLk9WRVJGTE9XLlkuSElEREVOLCBDU1MuTUFSR0lOLlkuT05FLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cImhhc0JvdHRvbURpdmlkZXJcIiAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFjY29yZGlvbi1pdGVtIHtcbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICB9XG5cbiAgLnRpZGUtYWNjb3JkaW9uLWJvZHkge1xuICAgIHRyYW5zaXRpb246IGdyaWQtdGVtcGxhdGUtcm93cyB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtYWNjb3JkaW9uLWJvZHkuZXhwYW5kZWQge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogbWlubWF4KDBweCwgMWZyKTtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmNvbGxhcHNlZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW5tYXgoMHB4LCAwZnIpO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IEVMRU1FTlQgPSB7XG4gIEJVVFRPTjogJ2J1dHRvbicsXG4gIExJTks6ICdhJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBFTEVNRU5UX0JST0FEID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBESVY6ICdkaXYnLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFbGVtZW50ID0gKHR5cGVvZiBFTEVNRU5UKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF07XG5leHBvcnQgdHlwZSBFbGVtZW50QnJvYWQgPSAodHlwZW9mIEVMRU1FTlRfQlJPQUQpW2tleW9mIHR5cGVvZiBFTEVNRU5UX0JST0FEXTtcbiIsImltcG9ydCB7IGluamVjdCwgcHJvdmlkZSB9IGZyb20gJ3Z1ZSc7XG5cbmltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuXG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5cbnR5cGUgVGlkZUNvbmZpZyA9IHtcbiAgbGlua0NvbXBvbmVudDogQ29tcG9uZW50IHwgdHlwZW9mIEVMRU1FTlQuTElOSztcbn07XG5cbmNvbnN0IHRpZGVDb25maWdEZWZhdWx0czogVGlkZUNvbmZpZyA9IHsgbGlua0NvbXBvbmVudDogRUxFTUVOVC5MSU5LIH07XG5cbmNvbnN0IENPTkZJR19LRVkgPSBTeW1ib2woJ3RpZGUtY29uZmlnJyk7XG5cbmV4cG9ydCBjb25zdCBwcm92aWRlVGlkZUNvbmZpZyA9IChjb25maWc6IFBhcnRpYWw8VGlkZUNvbmZpZz4gPSB7fSkgPT4ge1xuICBjb25zdCBjb25maWdXaXRoRGVmYXVsdHM6IFRpZGVDb25maWcgPSB7IC4uLnRpZGVDb25maWdEZWZhdWx0cywgLi4uY29uZmlnIH07XG5cbiAgcHJvdmlkZTxUaWRlQ29uZmlnPihDT05GSUdfS0VZLCBjb25maWdXaXRoRGVmYXVsdHMpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVRpZGVDb25maWcgPSAoKSA9PiB7XG4gIHJldHVybiBpbmplY3Q8VGlkZUNvbmZpZz4oQ09ORklHX0tFWSwgdGlkZUNvbmZpZ0RlZmF1bHRzKTtcbn07XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyB1c2VUaWRlQ29uZmlnIH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlQ29uZmlnJztcblxuICBjb25zdCB7IGxpbmtDb21wb25lbnQgfSA9IHVzZVRpZGVDb25maWcoKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnQgOmlzPVwibGlua0NvbXBvbmVudFwiPlxuICAgIDxzbG90IC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuZXhwb3J0IGNvbnN0IFBSSU9SSVRZID0ge1xuICBQUklNQVJZOiAncHJpbWFyeScsXG4gIFNFQ09OREFSWTogJ3NlY29uZGFyeScsXG4gIFRFUlRJQVJZOiAndGVydGlhcnknLFxuICBRVUFURVJOQVJZOiAncXVhdGVybmFyeScsXG4gIEZMT0FUSU5HOiAnZmxvYXRpbmcnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUHJpb3JpdHkgPSAodHlwZW9mIFBSSU9SSVRZKVtrZXlvZiB0eXBlb2YgUFJJT1JJVFldO1xuIiwiZXhwb3J0IGNvbnN0IFRBUkdFVCA9IHtcbiAgQkxBTks6ICdfYmxhbmsnLFxuICBTRUxGOiB1bmRlZmluZWQsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUYXJnZXQgPSAodHlwZW9mIFRBUkdFVClba2V5b2YgdHlwZW9mIFRBUkdFVF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGljb24gYnV0dG9uIGNvbXBvbmVudCB3aXRoIHZhcmlvdXMgc3R5bGluZyBvcHRpb25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYnV0dG9uaWNvbi0tZG9jcykgZm9yIFRpZGVCdXR0b25JY29uXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgUHJpb3JpdHkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHR5cGUgeyBCdXR0b25UeXBlIH0gZnJvbSAnQC90eXBlcy9UeXBlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIGNsaWNrYWJpbGl0eSAoQnV0dG9uIG9ubHkpICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIEhUTUwgdGFnIHR5cGUgKi9cbiAgICBlbGVtZW50PzogRWxlbWVudDtcblxuICAgIC8qKiBVUkwgdG8gb3BlbiAoTGluayBvbmx5KSAqL1xuICAgIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKiogSWNvbiB0byBzaG93ICovXG4gICAgaWNvbjogSWNvbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdGFyZ2V0IGEgbmV3IGJyb3dzZXIgdGFiIChMaW5rIG9ubHkpICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgdmlzdWFsIHByb21pbmVuY2UgKi9cbiAgICBwcmlvcml0eT86IFByaW9yaXR5O1xuXG4gICAgLyoqIEFwcGxpZXMgdHlwZSBhdHRyaWJ1dGUgdG8gSFRNTCBlbGVtZW50ICovXG4gICAgdHlwZT86IEJ1dHRvblR5cGU7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZWxlbWVudDogRUxFTUVOVC5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb246IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gICAgcHJpb3JpdHk6IFBSSU9SSVRZLlBSSU1BUlksXG4gICAgdHlwZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCB0eXBlQXR0cmlidXRlID0gY29tcHV0ZWQ8c3RyaW5nIHwgdW5kZWZpbmVkPigoKSA9PlxuICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OID8gcHJvcHMudHlwZSA/PyBFTEVNRU5ULkJVVFRPTiA6IHVuZGVmaW5lZFxuICApO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmFyaWEtbGFiZWw9XCJpY29uXCJcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24taWNvbicsXG4gICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLFxuICAgICAgYHRpZGUtYnV0dG9uLSR7cHJpb3JpdHl9YCxcbiAgICAgIGVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IFtDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGXSA6ICcnLFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cImVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OICYmIGRpc2FibGVkXCJcbiAgICA6aHJlZj1cImVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyAmJiBocmVmID8gaHJlZiA6IHVuZGVmaW5lZFwiXG4gICAgOnRhcmdldD1cImVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyAmJiBpc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6dHlwZT1cInR5cGVBdHRyaWJ1dGVcIlxuICAgIDppcz1cInJvb3RFbGVtZW50XCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmljb249XCJpY29uXCJcbiAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICB2LWlmPVwiaWNvblwiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBsaW5rIGVsZW1lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVsaW5rLS1kb2NzKSBmb3IgVGlkZUxpbmtcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBIVE1MIHRhZyB0eXBlICovXG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG5cbiAgICAvKiogVVJMIHRvIG9wZW4gKExpbmsgb25seSkgKi9cbiAgICBocmVmPzogc3RyaW5nO1xuXG4gICAgLyoqIEljb24gdG8gbGVmdCBvZiBsYWJlbCAqL1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcblxuICAgIC8qKiBTaXplIG9mIHRoZSBpY29ucyAqL1xuICAgIGljb25TaXplPzogU2l6ZTtcblxuICAgIC8qKiBJY29uIHRvIHJpZ2h0IG9mIGxhYmVsICovXG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdGFyZ2V0IGEgbmV3IGJyb3dzZXIgdGFiIChMaW5rIG9ubHkpICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIExpbmsgdGV4dCAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogSGlkZXMgdGhlIHVuZGVybGluZSB1bnRpbCBob3ZlcmVkLCBkZS1lbXBoYXNpemluZyB0aGUgbGluayAqL1xuICAgIHN1YnRsZT86IGJvb2xlYW47XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlbGVtZW50OiBFTEVNRU5ULkxJTkssXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaWNvblNpemU6IFNJWkUuU01BTEwsXG4gICAgaWNvblRyYWlsaW5nOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgc3VidGxlOiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gSW50ZXJuYWxCYXNlTGluayA6IHByb3BzLmVsZW1lbnQpKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1saW5rJyxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORSxcbiAgICAgIENTUy5BTElHTi5YLkxFRlQsXG4gICAgICBzdWJ0bGUgPyBbQ1NTLlVOREVSTElORS5SRVNULk9GRiwgQ1NTLlVOREVSTElORS5IT1ZFUi5PTl0gOiBbQ1NTLlVOREVSTElORS5SRVNULk9OLCBDU1MuVU5ERVJMSU5FLkhPVkVSLk9GRl0sXG4gICAgXVwiXG4gICAgOmhyZWY9XCJwcm9wcy5ocmVmXCJcbiAgICA6dGFyZ2V0PVwicHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOnR5cGU9XCJlbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IEVMRU1FTlQuQlVUVE9OIDogdW5kZWZpbmVkXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssIENTUy5BTElHTi5ZLk1JRERMRSwgQ1NTLk1BUkdJTi5SSUdIVC5RVUFSVEVSLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXVwiXG4gICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIDpzaXplPVwiaWNvblNpemVcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAvPlxuXG4gICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5BTElHTi5ZLk1JRERMRV1cIj5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9zcGFuPlxuXG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLCBDU1MuQUxJR04uWS5NSURETEUsIENTUy5NQVJHSU4uTEVGVC5RVUFSVEVSLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXVwiXG4gICAgICA6aWNvbj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgICA6c2l6ZT1cImljb25TaXplXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbiIsImV4cG9ydCBjb25zdCBBTEVSVCA9IHtcbiAgRVJST1I6ICdlcnJvcicsXG4gIElORk86ICdpbmZvJyxcbiAgU1VDQ0VTUzogJ3N1Y2Nlc3MnLFxuICBXQVJOSU5HOiAnd2FybmluZycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBBbGVydCA9ICh0eXBlb2YgQUxFUlQpW2tleW9mIHR5cGVvZiBBTEVSVF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBhbGVydCBjb21wb25lbnQgd2l0aCBjdXN0b21pemFibGUgY29udGVudCBhbmQgYmVoYXZpb3IuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVhbGVydC0tZG9jcykgZm9yIFRpZGVBbGVydFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ29tbWVudCwgY29tcHV0ZWQsIHVzZVNsb3RzIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlTGluay52dWUnO1xuICBpbXBvcnQgeyBBTEVSVCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBBbGVydCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIENhbGwgVG8gQWN0aW9uIHRoYXQgcmVuZGVycyBhcyBhIFRpZGVMaW5rOyBjbGlja2luZyBlbWl0cyBhIHNlcGFyYXRlIGBjbGlja2AgZXZlbnQgKi9cbiAgICBjdGFMYWJlbD86IHN0cmluZztcblxuICAgIC8qKiBIZWFkaW5nIHRleHQgKi9cbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgQWxlcnQgY2FuIGJlIGNsb3NlZCBieSB0aGUgdXNlciAqL1xuICAgIGlzRGlzbWlzc2libGU/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgQWxlcnQgaXMgYW4gb3ZlcmxheSBvciBkaXNwbGFjZXMgY29udGVudCAqL1xuICAgIGlzVG9hc3Q/OiBib29sZWFuO1xuXG4gICAgLyoqIEFsZXJ0IHR5cGUgKi9cbiAgICB0eXBlPzogQWxlcnQ7XG4gIH07XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICdjbG9zZScpOiB2b2lkO1xuICAgIChldmVudDogJ2N0YUNsaWNrJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjdGFMYWJlbDogdW5kZWZpbmVkLFxuICAgIGhlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIGlzVG9hc3Q6IGZhbHNlLFxuICAgIHR5cGU6IEFMRVJULklORk8sXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcbiAgY29uc3Qgc2xvdHMgPSB1c2VTbG90cygpO1xuICBjb25zdCBoYXNCb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG5vZGVzID0gc2xvdHMuZGVmYXVsdD8uKCk7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuIG5vZGVzLnNvbWUoXG4gICAgICAobm9kZSkgPT4gbm9kZS50eXBlICE9PSBDb21tZW50ICYmICh0eXBlb2Ygbm9kZS5jaGlsZHJlbiAhPT0gJ3N0cmluZycgfHwgbm9kZS5jaGlsZHJlbi50cmltKCkubGVuZ3RoID4gMClcbiAgICApO1xuICB9KTtcblxuICBjb25zdCBpY29uVHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IpIHJldHVybiBJQ09OLlBSSU9SSVRZX0hJR0g7XG4gICAgaWYgKHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MpIHJldHVybiBJQ09OLkNIRUNLO1xuICAgIGlmIChwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HKSByZXR1cm4gSUNPTi5XQVJOSU5HO1xuICAgIHJldHVybiBJQ09OLklORk9STUFUSU9OO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBwcm9wcy50eXBlLFxuICAgICAgJ3RpZGUtYWxlcnQnLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5FUlJPUiA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuRVJST1IsIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkVSUk9SXSA6ICcnLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuSU5GTywgQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuSU5GT10gOiAnJyxcbiAgICAgICFwcm9wcy5pc1RvYXN0ICYmIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1NcbiAgICAgICAgPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLlNVQ0NFU1MsIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlNVQ0NFU1NdXG4gICAgICAgIDogJycsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HXG4gICAgICAgID8gW0NTUy5CRy5HTE9CQUwuU1VSRkFDRS5XQVJOSU5HLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5XQVJOSU5HXVxuICAgICAgICA6ICcnLFxuICAgICAgcHJvcHMuaXNUb2FzdCA/IFtDU1MuQkcuU0VDT05EQVJZLCBDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlksIENTUy5TSEFET1cuQk9UVE9NXSA6IENTUy5CT1JERVIuTEVGVC5UV08sXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWljb24nLFxuICAgICAgICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRSxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5JTkZPLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5TVUNDRVNTLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5XQVJOSU5HLFxuICAgICAgXVwiXG4gICAgICB2LWlmPVwiIXByb3BzLmlzVG9hc3RcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImljb25UeXBlXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWhlYWRpbmcnLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uUk9XLFxuICAgICAgICAhaGFzQm9keSA/IFtDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLk1BUkdJTi5SSUdIVC5IQUxGXSA6ICcnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXCI+e3sgcHJvcHMuaGVhZGluZyB9fTwvc3Bhbj5cblxuICAgICAgPFRpZGVMaW5rXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxJTktfMl1cIlxuICAgICAgICA6ZWxlbWVudD1cIkVMRU1FTlQuQlVUVE9OXCJcbiAgICAgICAgOmxhYmVsPVwicHJvcHMuY3RhTGFiZWxcIlxuICAgICAgICBAY2xpY2s9XCJlbWl0KCdjdGFDbGljaycpXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsICYmICFoYXNCb2R5XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hbGVydC1jbG9zZScsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiZW1pdCgnY2xvc2UnKVwiXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgYWxlcnRcIlxuICAgICAgdi1pZj1cImlzRGlzbWlzc2libGVcIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1ib2R5JywgQ1NTLkZPTlQuUk9MRS5CT0RZXzIsICFwcm9wcy5pc1RvYXN0ICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgIDxzbG90IC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uVE9QLkhBTEZdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsICYmIGhhc0JvZHlcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUxpbmtcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MSU5LXzJdXCJcbiAgICAgICAgICA6ZWxlbWVudD1cIkVMRU1FTlQuQlVUVE9OXCJcbiAgICAgICAgICA6bGFiZWw9XCJwcm9wcy5jdGFMYWJlbFwiXG4gICAgICAgICAgQGNsaWNrPVwiZW1pdCgnY3RhQ2xpY2snKVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFsZXJ0IHtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgJ2ljb24gaGVhZGluZyBjbG9zZSdcbiAgICAgICcuIGJvZHkgLic7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIHZhcigtLXRpZGUtc2FmZS1mcikgYXV0bztcbiAgICBncmlkLWNvbHVtbi1nYXA6IHZhcigtLXRpZGUtc3BhY2luZy0xXFwvMik7XG4gICAgbWF4LXdpZHRoOiB2YXIoLS10aWRlLW1heC13aWR0aCwgNjQwcHgpO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaWNvbiB7XG4gICAgZ3JpZC1hcmVhOiBpY29uO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaGVhZGluZyB7XG4gICAgZ3JpZC1hcmVhOiBoZWFkaW5nO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtY2xvc2Uge1xuICAgIGdyaWQtYXJlYTogY2xvc2U7XG4gIH1cblxuICAudGlkZS1hbGVydC1ib2R5IHtcbiAgICBncmlkLWFyZWE6IGJvZHk7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9DT0xPUiA9IHtcbiAgQkxBQ0s6ICdibGFjaycsXG4gIEJMVUU6ICdibHVlJyxcbiAgR1JFRU46ICdncmVlbicsXG4gIExJTUU6ICdsaW1lJyxcbiAgT1JBTkdFOiAnb3JhbmdlJyxcbiAgUFVSUExFOiAncHVycGxlJyxcbiAgUkVEOiAncmVkJyxcbiAgU0FMTU9OOiAnc2FsbW9uJyxcbiAgVEVBTDogJ3RlYWwnLFxuICBZRUxMT1c6ICd5ZWxsb3cnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBREdFX0NPTE9SX0RFVEFJTFM6IFJlY29yZDxcbiAgQmFkZ2VDb2xvcixcbiAge1xuICAgIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gICAgaWNvbkNvbG9yOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIFtCQURHRV9DT0xPUi5CTEFDS106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5ISUdILFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICB9LFxuICBbQkFER0VfQ09MT1IuQkxVRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuQkxVRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkJMVUUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5HUkVFTl06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuR1JFRU4sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5HUkVFTixcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkxJTUVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkxJTUUsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5MSU1FLFxuICB9LFxuICBbQkFER0VfQ09MT1IuT1JBTkdFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5PUkFOR0UsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5PUkFOR0UsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5QVVJQTEVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlBVUlBMRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlBVUlBMRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlJFRF06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuUkVELFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuUkVELFxuICB9LFxuICBbQkFER0VfQ09MT1IuU0FMTU9OXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5TQUxNT04sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5TQUxNT04sXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5URUFMXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5URUFMLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuVEVBTCxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLllFTExPV106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuWUVMTE9XLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuWUVMTE9XLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IEJBREdFX1RSVVNURUQgPSB7XG4gIFlFQVJTXzEwOiAnMTAnLFxuICBZRUFSU18xNTogJzE1JyxcbiAgWUVBUlNfMjA6ICcyMCcsXG4gIFlFQVJTXzI1OiAnMjUnLFxuICBZRUFSU18zMDogJzMwJyxcbiAgWUVBUlNfMzU6ICczNScsXG4gIFlFQVJTXzU6ICc1Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEJhZGdlQ29sb3IgPSAodHlwZW9mIEJBREdFX0NPTE9SKVtrZXlvZiB0eXBlb2YgQkFER0VfQ09MT1JdO1xuZXhwb3J0IHR5cGUgQmFkZ2VUcnVzdGVkWWVhcnMgPSAodHlwZW9mIEJBREdFX1RSVVNURUQpW2tleW9mIHR5cGVvZiBCQURHRV9UUlVTVEVEXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgYmFkZ2UgY29tcG9uZW50IHdpdGggY3VzdG9taXphYmxlIGNvbnRlbnQgYW5kIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYmFkZ2UtLWRvY3MpIGZvciBUaWRlQmFkZ2VcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQkFER0VfQ09MT1JfREVUQUlMUyB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBCYWRnZUNvbG9yIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGljaCBjb2xvciBvcHRpb24gdG8gYWRvcHQgKGlmIGFueSkgKi9cbiAgICBjb2xvcj86IEJhZGdlQ29sb3I7XG5cbiAgICAvKiogSWNvbiB0byBsZWZ0IG9mIGxhYmVsICovXG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkaXNwbGF5IHRoZSBcIkZsb2F0aW5nXCIgdmFyaWFudCBzdHlsZXMgKi9cbiAgICBpc0Zsb2F0aW5nPzogYm9vbGVhbjtcblxuICAgIC8qKiBCYWRnZSB0ZXh0ICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNvbG9yOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc0Zsb2F0aW5nOiBmYWxzZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UnLFxuICAgICAgcHJvcHMuaXNGbG9hdGluZyB8fCBwcm9wcy5jb2xvciA/IFtDU1MuQkcuU1VSRkFDRS5GTE9BVElORywgQ1NTLlNIQURPVy5CT1RUT01dIDogW0NTUy5CRy5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlguSEFMRixcbiAgICAgIHByb3BzLmNvbG9yICYmIFtDU1MuQk9SREVSLkxFRlQuVFdPLCBCQURHRV9DT0xPUl9ERVRBSUxTW3Byb3BzLmNvbG9yXS5ib3JkZXJDb2xvcl0sXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkYsIHByb3BzLmNvbG9yICYmIEJBREdFX0NPTE9SX0RFVEFJTFNbcHJvcHMuY29sb3JdLmljb25Db2xvcl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkVMTElQU0lTXVwiPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHRydXN0ZWQgcGFydG5lciBiYWRnZSBjb21wb25lbnQgd2l0aCBwcmVzZXQgeWVhcnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGViYWRnZXRydXN0ZWRwYXJ0bmVyLS1kb2NzKSBmb3IgVGlkZUJhZGdlVHJ1c3RlZFBhcnRuZXJcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQkFER0VfVFJVU1RFRCB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQmFkZ2VUcnVzdGVkWWVhcnMgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBOdW1iZXIgb2YgeWVhcnMgdG8gZGlzcGxheSBpbiB0aGUgdHJ1c3RlZCBwYXJ0bmVyIGJhZGdlICovXG4gICAgeWVhcnM/OiBCYWRnZVRydXN0ZWRZZWFycztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHllYXJzOiBCQURHRV9UUlVTVEVELllFQVJTXzUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJhZGdlLXRydXN0ZWQtcGFydG5lcicsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkJSQU5ELFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkVMTElQU0lTLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgXVwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICA6aWNvbj1cIklDT04uQVdBUkRfU1RBUlwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5FTExJUFNJU11cIj5cbiAgICAgIDxzcGFuPnt7IHByb3BzLnllYXJzIH19IHllYXIgdHJ1c3RlZCBwYXJ0bmVyPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+PC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgYmFkZ2UgY29tcG9uZW50IGZvciBpbmRpY2F0aW5nIGEgdmVyaWZpZWQgdmVoaWNsZS5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJhZGdldmVyaWZpZWR2ZWhpY2xlLS1kb2NzKSBmb3IgVGlkZUJhZGdlVmVyaWZpZWRWZWhpY2xlXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UtdmVyaWZpZWQtdmVoaWNsZScsXG4gICAgICBDU1MuQkcuU0VDT05EQVJZLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlguSEFMRixcbiAgICAgIENTUy5FTExJUFNJUyxcbiAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLlZFUklGSUVEXCJcbiAgICAvPlxuXG4gICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5FTExJUFNJU11cIj5WZXJpZmllZCB2ZWhpY2xlPC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWljb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWluZm8tcHJpbWFyeSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHNldCBvZiBicmVhZGNydW1icyBmb3IgbmF2aWdhdGlvbiBwdXJwb3Nlcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJyZWFkY3J1bWJzLS1kb2NzKSBmb3IgVGlkZUJyZWFkQ3J1bWJzXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQnJlYWRDcnVtYiB9IGZyb20gJ0AvdHlwZXMvQnJlYWRDcnVtYic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogQW4gYXJyYXkgb2YgbGFiZWxzIGFuZCBvcHRpb25hbCBVUkxzIHRvIGRpc3BsYXkgZm9yIGVhY2ggYnJlYWQgY3J1bWIuICovXG4gICAgYnJlYWRDcnVtYnM6IEJyZWFkQ3J1bWJbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGJyZWFkQ3J1bWJzOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHVsIDpjbGFzcz1cIlsndGlkZS1icmVhZC1jcnVtYnMnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgIDx0ZW1wbGF0ZVxuICAgICAgOmtleT1cImNydW1iLmxhYmVsXCJcbiAgICAgIHYtZm9yPVwiKGNydW1iLCBpbmRleCkgaW4gcHJvcHMuYnJlYWRDcnVtYnNcIlxuICAgID5cbiAgICAgIDxsaSA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5CT0RZXzJdXCI+XG4gICAgICAgIDxJbnRlcm5hbEJhc2VMaW5rXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTElOS18yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICA6ZGF0YS10cmFjaz1cImNydW1iLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgICAgIDpocmVmPVwiY3J1bWIudXJsXCJcbiAgICAgICAgICB2LWlmPVwiY3J1bWIudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNydW1iLmxhYmVsIH19XG4gICAgICAgIDwvSW50ZXJuYWxCYXNlTGluaz5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIDpkYXRhLXRyYWNrPVwiY3J1bWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICAgICAgdi1lbHNlXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjcnVtYi5sYWJlbCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgdi1pZj1cInByb3BzLmJyZWFkQ3J1bWJzICYmIGluZGV4IDwgcHJvcHMuYnJlYWRDcnVtYnMubGVuZ3RoIC0gMVwiPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6aWNvbj1cIklDT04uQVJST1dfUklHSFRcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvdWw+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBidXR0b24gY29tcG9uZW50IHdpdGggdmFyaW91cyBzdHlsaW5nIG9wdGlvbnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVidXR0b24tLWRvY3MpIGZvciBUaWRlQnV0dG9uXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSwgU0laRV9CVVRUT04gfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFByaW9yaXR5IH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZUJ1dHRvbiB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB0eXBlIHsgQnV0dG9uVHlwZSB9IGZyb20gJ0AvdHlwZXMvVHlwZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyBjbGlja2FiaWxpdHkgKEJ1dHRvbiBvbmx5KSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBIVE1MIHRhZyB0eXBlICovXG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG5cbiAgICAvKiogVVJMIHRvIG9wZW4gKExpbmsgb25seSkgKi9cbiAgICBocmVmPzogc3RyaW5nO1xuXG4gICAgLyoqIEljb24gdG8gbGVmdCBvZiBsYWJlbCAqL1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcblxuICAgIC8qKiBJY29uIHRvIHJpZ2h0IG9mIGxhYmVsICovXG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdGFyZ2V0IGEgbmV3IGJyb3dzZXIgdGFiIChMaW5rIG9ubHkpICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIEJ1dHRvbiB0ZXh0ICovXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHZpc3VhbCBwcm9taW5lbmNlICovXG4gICAgcHJpb3JpdHk/OiBFeGNsdWRlPFByaW9yaXR5LCB0eXBlb2YgUFJJT1JJVFkuRkxPQVRJTkc+O1xuXG4gICAgLyoqIERldGVybWluZXMgcmVuZGVyZWQgc2l6ZSAqL1xuICAgIHNpemU/OiBTaXplQnV0dG9uO1xuXG4gICAgLyoqIEFwcGxpZXMgdHlwZSBhdHRyaWJ1dGUgdG8gSFRNTCBlbGVtZW50ICovXG4gICAgdHlwZT86IEJ1dHRvblR5cGU7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZWxlbWVudDogRUxFTUVOVC5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaWNvblRyYWlsaW5nOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcHJpb3JpdHk6IFBSSU9SSVRZLlBSSU1BUlksXG4gICAgc2l6ZTogU0laRV9CVVRUT04uTEFSR0UsXG4gICAgdHlwZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCB0eXBlQXR0cmlidXRlID0gY29tcHV0ZWQ8c3RyaW5nIHwgdW5kZWZpbmVkPigoKSA9PlxuICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OID8gcHJvcHMudHlwZSA/PyBFTEVNRU5ULkJVVFRPTiA6IHVuZGVmaW5lZFxuICApO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uJyxcbiAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRCxcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QQURESU5HLlguVFdPLFxuICAgICAgYHRpZGUtYnV0dG9uLSR7cHJpb3JpdHl9YCxcbiAgICAgIGVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IFtDU1MuRElTUExBWS5JTkxJTkVfRkxFWCwgQ1NTLlVOREVSTElORS5SRVNULk9GRl0gOiBbQ1NTLkRJU1BMQVkuRkxFWF0sXG4gICAgICBzaXplID09PSBTSVpFX0JVVFRPTi5TTUFMTFxuICAgICAgICA/IFtDU1MuRk9OVC5ST0xFLkJVVFRPTl8yLCBDU1MuUEFERElORy5ZLkhBTEZdXG4gICAgICAgIDogW0NTUy5GT05ULlJPTEUuQlVUVE9OXzEsIENTUy5QQURESU5HLlkuT05FXSxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJlbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiAmJiBkaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJlbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgaHJlZiA/IGhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0YXJnZXQ9XCJlbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOnR5cGU9XCJ0eXBlQXR0cmlidXRlXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgOnNpemU9XCJzaXplID09PSBTSVpFX0JVVFRPTi5MQVJHRSA/IFNJWkUuTEFSR0UgOiBTSVpFLlNNQUxMXCJcbiAgICAgIHYtaWY9XCJpY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIHt7IGxhYmVsIH19XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwiaWNvblRyYWlsaW5nXCJcbiAgICAgIDpzaXplPVwic2l6ZSA9PT0gU0laRV9CVVRUT04uTEFSR0UgPyBTSVpFLkxBUkdFIDogU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGJ1dHRvbiBjb21wb25lbnQgZm9yIHVzZSBpbiBwYWdpbmF0aW9uIHB1cnBvc2VzLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYnV0dG9ucGFnaW5hdGlvbi0tZG9jcykgZm9yIFRpZGVCdXR0b25QYWdpbmF0aW9uXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCwgRUxFTUVOVF9CUk9BRCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnRCcm9hZCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgUGFnaW5hdGlvbiBCdXR0b24gaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBkaXNwbGF5ZWQgcGFnZSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBIVE1MIHRhZyB0eXBlICovXG4gICAgZWxlbWVudD86IEVsZW1lbnRCcm9hZDtcblxuICAgIC8qKiBVUkwgdG8gb3BlbjxiciAvPihMaW5rIG9ubHkpICovXG4gICAgaHJlZj86IHN0cmluZztcblxuICAgIC8qKiBCdXR0b24gdGV4dCAqL1xuICAgIGxhYmVsOiBzdHJpbmcgfCBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZWxlbWVudDogRUxFTUVOVF9CUk9BRC5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uLWljb24nLFxuICAgICAgW0NTUy5ESVNQTEFZLklOTElORV9CTE9DSywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgQ1NTLlBBRERJTkcuRlVMTC5IQUxGXSxcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuTElOSyA/IFtDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGXSA6ICcnLFxuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5ESVYgPyBbQ1NTLkNVUlNPUi5QT0lOVEVSXSA6ICcnLFxuICAgICAgW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfM10sXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5CVVRUT04gJiYgcHJvcHMuZGlzYWJsZWRcIlxuICAgIDpocmVmPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5MSU5LICYmIHByb3BzLmhyZWYgPyBwcm9wcy5ocmVmIDogdW5kZWZpbmVkXCJcbiAgICA6dHlwZT1cImVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuQlVUVE9OID8gRUxFTUVOVF9CUk9BRC5CVVRUT04gOiB1bmRlZmluZWRcIlxuICAgIDppcz1cInJvb3RFbGVtZW50XCJcbiAgPlxuICAgIDxzcGFuIDpjbGFzcz1cIlsnbGFiZWwnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSXVwiPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L3NwYW4+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYnV0dG9uLWljb24sXG4gIC50aWRlLWxpbmstYXMtYnV0dG9uLWljb24ge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtd2hpdGUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRpZGUtd2hpdGUpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXNlY29uZGFyeSk7XG4gIH1cblxuICAudGlkZS1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKTpob3ZlcixcbiAgLnRpZGUtbGluay1hcy1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1pY29uOmRpc2FibGVkLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uOmRpc2FibGVkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1pY29uIC5sYWJlbCxcbiAgLnRpZGUtbGluay1hcy1idXR0b24taWNvbiAubGFiZWwge1xuICAgIHdpZHRoOiAxLjVyZW07XG4gICAgaGVpZ2h0OiAxLjVyZW07XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGJ1dHRvbiBjb21wb25lbnQgZm9yIHVzZSB0byBzYXZlIGl0ZW1zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYnV0dG9uc2F2ZS0tZG9jcykgZm9yIFRpZGVCdXR0b25TYXZlXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgY29uc3QgaXNUb3VjaGVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaXNTYXZlZCA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgd2F0Y2goXG4gICAgaXNTYXZlZCxcbiAgICAoKSA9PiB7XG4gICAgICBpZiAoIWlzVG91Y2hlZC52YWx1ZSkgaXNUb3VjaGVkLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiBmYWxzZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiWyd0aWRlLWJ1dHRvbi1zYXZlJywgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLCBpc1NhdmVkICYmICdzYXZlZCddXCJcbiAgICBAY2xpY2s9XCJpc1NhdmVkID0gIWlzU2F2ZWRcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPGRpdiA6Y2xhc3M9XCJbJ2hlYXJ0LWNvbnRhaW5lcicsIENTUy5ESVNQTEFZLkZMRVgsIGlzU2F2ZWQgJiYgaXNUb3VjaGVkICYmICdhbmltYXRlLWhlYXJ0YmVhdCddXCI+XG4gICAgICA8c3ZnXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1idXR0b24tc2F2ZS1pY29uJywgQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgICAgaGVpZ2h0PVwiMzJcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgd2lkdGg9XCIzMlwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIDpjbGFzcz1cIlsnaGVhcnQtZmlsbGVkJywgaXNTYXZlZCA/IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlJFRCA6ICdmaWxsZWQtdHJhbnNwYXJlbnQnXVwiXG4gICAgICAgICAgZD1cIm0xMiAyMS0xLjQ1LTEuM2MtMS42ODMzLTEuNTE2Ny0zLjA3NS0yLjgyNS00LjE3NS0zLjkyNS0xLjEtMS4xLTEuOTc1LTIuMDg3NS0yLjYyNS0yLjk2MjUtLjY1LS44NzUtMS4xMDQyLTEuNjc5Mi0xLjM2MjUtMi40MTI1QzIuMTI5MiA5LjY2NjcgMiA4LjkxNjcgMiA4LjE1YzAtMS41NjY3LjUyNS0yLjg3NSAxLjU3NS0zLjkyNUM0LjYyNSAzLjE3NSA1LjkzMzMgMi42NSA3LjUgMi42NWMuODY2NyAwIDEuNjkxNy4xODMzIDIuNDc1LjU1Ljc4MzMuMzY2NyAxLjQ1ODMuODgzMyAyLjAyNSAxLjU1LjU2NjctLjY2NjcgMS4yNDE3LTEuMTgzMyAyLjAyNS0xLjU1Ljc4MzMtLjM2NjcgMS42MDgzLS41NSAyLjQ3NS0uNTUgMS41NjY3IDAgMi44NzUuNTI1IDMuOTI1IDEuNTc1QzIxLjQ3NSA1LjI3NSAyMiA2LjU4MzMgMjIgOC4xNWMwIC43NjY3LS4xMjkyIDEuNTE2Ny0uMzg3NSAyLjI1LS4yNTgzLjczMzMtLjcxMjUgMS41Mzc1LTEuMzYyNSAyLjQxMjVzLTEuNTI1IDEuODYyNS0yLjYyNSAyLjk2MjVjLTEuMSAxLjEtMi40OTE3IDIuNDA4My00LjE3NSAzLjkyNUwxMiAyMVpcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgOmNsYXNzPVwiWydoZWFydC1vdXRsaW5lJywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5JTlZFUlNFXVwiXG4gICAgICAgICAgZD1cIm0xMiAyMS0xLjQ1LTEuM2MtMS42ODMzLTEuNTE2Ny0zLjA3NS0yLjgyNS00LjE3NS0zLjkyNS0xLjEtMS4xLTEuOTc1LTIuMDg3NS0yLjYyNS0yLjk2MjUtLjY1LS44NzUtMS4xMDQyLTEuNjc5Mi0xLjM2MjUtMi40MTI1QzIuMTI5MiA5LjY2NjcgMiA4LjkxNjcgMiA4LjE1YzAtMS41NjY3LjUyNS0yLjg3NSAxLjU3NS0zLjkyNUM0LjYyNSAzLjE3NSA1LjkzMzMgMi42NSA3LjUgMi42NWMuODY2NyAwIDEuNjkxNy4xODMzIDIuNDc1LjU1Ljc4MzMuMzY2NyAxLjQ1ODMuODgzMyAyLjAyNSAxLjU1LjU2NjctLjY2NjcgMS4yNDE3LTEuMTgzMyAyLjAyNS0xLjU1Ljc4MzMtLjM2NjcgMS42MDgzLS41NSAyLjQ3NS0uNTUgMS41NjY3IDAgMi44NzUuNTI1IDMuOTI1IDEuNTc1QzIxLjQ3NSA1LjI3NSAyMiA2LjU4MzMgMjIgOC4xNWMwIC43NjY3LS4xMjkyIDEuNTE2Ny0uMzg3NSAyLjI1LS4yNTgzLjczMzMtLjcxMjUgMS41Mzc1LTEuMzYyNSAyLjQxMjVzLTEuNTI1IDEuODYyNS0yLjYyNSAyLjk2MjVjLTEuMSAxLjEtMi40OTE3IDIuNDA4My00LjE3NSAzLjkyNUwxMiAyMVptMC0yLjdjMS42LTEuNDMzMyAyLjkxNjctMi42NjI1IDMuOTUtMy42ODc1czEuODUtMS45MTY3IDIuNDUtMi42NzVjLjYtLjc1ODMgMS4wMTY3LTEuNDMzMyAxLjI1LTIuMDI1LjIzMzMtLjU5MTcuMzUtMS4xNzkyLjM1LTEuNzYyNSAwLTEtLjMzMzMtMS44MzMzLTEtMi41LS42NjY3LS42NjY3LTEuNS0xLTIuNS0xLS43ODMzIDAtMS41MDgzLjIyMDgtMi4xNzUuNjYyNUMxMy42NTgzIDUuNzU0MiAxMy4yIDYuMzE2NyAxMi45NSA3aC0xLjljLS4yNS0uNjgzMy0uNzA4My0xLjI0NTgtMS4zNzUtMS42ODc1UzguMjgzMyA0LjY1IDcuNSA0LjY1Yy0xIDAtMS44MzMzLjMzMzMtMi41IDEtLjY2NjcuNjY2Ny0xIDEuNS0xIDIuNSAwIC41ODMzLjExNjcgMS4xNzA4LjM1IDEuNzYyNS4yMzMzLjU5MTcuNjUgMS4yNjY3IDEuMjUgMi4wMjVzMS40MTY3IDEuNjUgMi40NSAyLjY3NVMxMC40IDE2Ljg2NjcgMTIgMTguM1pcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLmhlYXJ0LWNvbnRhaW5lciB7XG4gICAgLS1yb3RhdGUtZHVyaW5nLWhlYXJ0LWJlYXQ6IDlkZWc7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMykpO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtZHVyYXRpb24tMzAwKSB2YXIoLS10aWRlLWVhc2luZy1lYXNlLW91dCk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBzY2FsZTtcbiAgICByb3RhdGU6IDBkZWc7XG4gIH1cblxuICAuaGVhcnQtY29udGFpbmVyLmFuaW1hdGUtaGVhcnRiZWF0IHtcbiAgICBhbmltYXRpb246IGhlYXJ0QmVhdCB2YXIoLS10aWRlLWR1cmF0aW9uLTE1MCk7XG4gICAgYW5pbWF0aW9uLWRpcmVjdGlvbjogYWx0ZXJuYXRlO1xuICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDQ7XG4gIH1cblxuICAuaGVhcnQtY29udGFpbmVyOmFjdGl2ZSB7XG4gICAgc2NhbGU6IDAuOTtcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS10aWRlLWR1cmF0aW9uLTc1KTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1zYXZlLWljb24ge1xuICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgfVxuXG4gIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgLmhlYXJ0LWNvbnRhaW5lciB7XG4gICAgICAtLXJvdGF0ZS1kdXJpbmctaGVhcnQtYmVhdDogMGRlZztcbiAgICB9XG5cbiAgICAudGlkZS1idXR0b24tc2F2ZTp3aGVyZSg6aG92ZXIsIDpmb2N1cy12aXNpYmxlKSAuaGVhcnQtY29udGFpbmVyIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDlkZWcpO1xuICAgIH1cbiAgfVxuXG4gIC5oZWFydC1maWxsZWQge1xuICAgIHNjYWxlOiAwLjk4NTsgLyogYXZvaWQgaGFpcmxpbmUgYm9yZGVyIHJlbmRlciBpc3N1ZSAqL1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10aWRlLWR1cmF0aW9uLTc1KSB2YXIoLS10aWRlLWVhc2luZy1saW5lYXIpO1xuICB9XG5cbiAgLmZpbGxlZC10cmFuc3BhcmVudCB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgfVxuXG4gIEBrZXlmcmFtZXMgaGVhcnRCZWF0IHtcbiAgICBmcm9tIHtcbiAgICAgIHNjYWxlOiAxO1xuICAgICAgcm90YXRlOiAwZGVnO1xuICAgIH1cbiAgICB0byB7XG4gICAgICBzY2FsZTogMS4yNTtcbiAgICAgIHJvdGF0ZTogdmFyKC0tcm90YXRlLWR1cmluZy1oZWFydC1iZWF0KTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHNlZ21lbnRlZCBidXR0b24gY29tcG9uZW50IGZvciBuYXZpZ2F0aW9uIHB1cnBvc2VzLlxuICAgKlxuICAgKiBQb3dlcmVkIGJ5IG5hdGl2ZSBpbnB1dFt0eXBlPVwicmFkaW9cIl0gdW5kZXIgdGhlIGhvb2QgZm9yIGVuaGFuY2VkIGFjY2Vzc2liaWxpdHkuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVidXR0b25zZWdtZW50ZWQtLWRvY3MpIGZvciBUaWRlQnV0dG9uU2VnbWVudGVkXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgdXNlSWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBTZXRzIGxhYmVsIGFuZCBjYWxsYmFjayBmb3IgZWFjaCB0YWIgKi9cbiAgICB0YWJzOiBUYWJbXSB8IHJlYWRvbmx5IFRhYltdO1xuXG4gICAgLyoqIE9wdHMgaW4gYXMgYSBuYXRpdmUgSFRNTCBmb3JtIGZpZWxkIHdpdGggdGhpcyBuYW1lLiAqL1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICBjb25zdCBjdXJyZW50SW5kZXggPSBkZWZpbmVNb2RlbDxudW1iZXI+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgdW5pcXVlSWQgPSB1c2VJZCgpO1xuXG4gIGNvbnN0IGlucHV0Rm9ybUF0dHJpYnV0ZSA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5uYW1lID8gdW5kZWZpbmVkIDogJ25vbmUnKSk7XG4gIGNvbnN0IGlucHV0TmFtZUF0dHJpYnV0ZSA9IGNvbXB1dGVkKCgpID0+IHByb3BzLm5hbWUgPz8gdW5pcXVlSWQpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbi1zZWdtZW50ZWQnLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5BVVRPLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICAgIF1cIlxuICAgIHJvbGU9XCJyYWRpb2dyb3VwXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1idXR0b24tc2VnbWVudGVkLXRhYicsXG4gICAgICAgIGluZGV4ID09PSBjdXJyZW50SW5kZXhcbiAgICAgICAgICA/IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsIENTUy5TSEFET1cuQk9UVE9NXVxuICAgICAgICAgIDogWydpbmFjdGl2ZScsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICAgIENTUy5BTElHTi5YLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLlRXTyxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJVVFRPTl8xLFxuICAgICAgICBDU1MuUEFERElORy5YLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICAgIENTUy5XSURUSC5BVVRPLFxuICAgICAgXVwiXG4gICAgICA6ZGF0YS10cmFjaz1cInRhYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgIDprZXk9XCJ0YWIubGFiZWxcIlxuICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gdGFic1wiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIDpjaGVja2VkPVwiaW5kZXggPT09IGN1cnJlbnRJbmRleFwiXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1zY3JlZW4tcmVhZGVyLW9ubHknXVwiXG4gICAgICAgIDpmb3JtPVwiaW5wdXRGb3JtQXR0cmlidXRlXCJcbiAgICAgICAgOm5hbWU9XCJpbnB1dE5hbWVBdHRyaWJ1dGVcIlxuICAgICAgICA6dmFsdWU9XCJpbmRleFwiXG4gICAgICAgIEBjaGFuZ2U9XCJjdXJyZW50SW5kZXggPSBpbmRleFwiXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAvPlxuXG4gICAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXVwiPlxuICAgICAgICB7eyB0YWIubGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMl9TRU1JQk9MRF1cIlxuICAgICAgICB2LWlmPVwidGFiLmNvdW50ICYmIHRhYi5jb3VudCA+IDBcIlxuICAgICAgPlxuICAgICAgICAoe3sgdGFiLmNvdW50IH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYnV0dG9uLXNlZ21lbnRlZCB7XG4gICAgbWF4LXdpZHRoOiAyMy4zcmVtO1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIH1cblxuICAudGlkZS1idXR0b24tc2VnbWVudGVkOmhhcyg6Zm9jdXMtdmlzaWJsZSkge1xuICAgIG91dGxpbmU6IGF1dG87XG4gIH1cblxuICAuaW5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLmluYWN0aXZlOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWRlZmF1bHQpO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRZUEVfQ0FSRCA9IHtcbiAgQUNUSU9OQUJMRTogJ2FjdGlvbicsXG4gIElORk9STUFUSU9OQUw6ICdpbmZvcm1hdGlvbmFsJyxcbiAgU0VMRUNUQUJMRTogJ3NlbGVjdCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBDYXJkVHlwZSA9ICh0eXBlb2YgVFlQRV9DQVJEKVtrZXlvZiB0eXBlb2YgVFlQRV9DQVJEXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgY2FyZCBjb21wb25lbnQgd2l0aCBhIGhlYWRpbmcsIGRlc2NyaXB0aW9uLCBhbmQgb3B0aW9uYWwgaWNvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNhcmQtLWRvY3MpIGZvciBUaWRlQ2FyZFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgVFlQRV9DQVJEIH0gZnJvbSAnQC90eXBlcy9DYXJkJztcbiAgaW1wb3J0IHsgRUxFTUVOVF9CUk9BRCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBDYXJkVHlwZSB9IGZyb20gJ0AvdHlwZXMvQ2FyZCc7XG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudEJyb2FkIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBPcHRpb25hbCBkZXNjcmlwdGlvbiB0ZXh0IGRpc3BsYXllZCBiZWxvdyB0aGUgaGVhZGluZyAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBtYWluIGhlYWRpbmcgb2YgdGhlIGNhcmQuICovXG4gICAgaGVhZGluZzogc3RyaW5nO1xuXG4gICAgLyoqIE9wdGlvbmFsIGljb24gZGlzcGxheWVkIG9uIHRoZSBjYXJkLiAqL1xuICAgIGljb24/OiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgQ2FyZCBpcyBzZWxlY3RlZCAoZm9yIHNlbGVjdGFibGUgY2FyZHMpLiAqL1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBUeXBlIG9mIHRoZSBjYXJkICovXG4gICAgdHlwZT86IENhcmRUeXBlO1xuXG4gICAgLyoqIFVSTCB0byBuYXZpZ2F0ZSB0byBvbiBjbGljay4gKi9cbiAgICBocmVmPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbjogdW5kZWZpbmVkLFxuICAgIHNlbGVjdGVkOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVFlQRV9DQVJELklORk9STUFUSU9OQUwsXG4gIH0pO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQ8RWxlbWVudEJyb2FkIHwgdHlwZW9mIEludGVybmFsQmFzZUxpbms+KCgpID0+XG4gICAgcHJvcHMuaHJlZiA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy50eXBlID09PSBUWVBFX0NBUkQuSU5GT1JNQVRJT05BTCA/IEVMRU1FTlRfQlJPQUQuRElWIDogRUxFTUVOVF9CUk9BRC5CVVRUT05cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jYXJkJyxcbiAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgIENTUy5BTElHTi5YLkxFRlQsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgdHlwZSAhPT0gVFlQRV9DQVJELklORk9STUFUSU9OQUwgJiYgJ2hvdmVyYWJsZScsXG4gICAgICB0eXBlID09PSBUWVBFX0NBUkQuU0VMRUNUQUJMRSAmJiBzZWxlY3RlZCAmJiAnc2VsZWN0ZWQnLFxuICAgIF1cIlxuICAgIDpocmVmPVwiaHJlZlwiXG4gICAgOnR5cGU9XCJyb290RWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5CVVRUT04gPyBFTEVNRU5UX0JST0FELkJVVFRPTiA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiaWNvblwiXG4gICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cImljb25cIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuQVhJUzIuU1RBUlQsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuSEFMRl1cIj5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICB7eyBoZWFkaW5nIH19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cImRlc2NyaXB0aW9uXCJcbiAgICAgID5cbiAgICAgICAge3sgZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNhcmQuaG92ZXJhYmxlOm5vdCguc2VsZWN0ZWQpOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLXJlc3QpO1xuICB9XG4gIC50aWRlLWNhcmQuc2VsZWN0ZWQge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgY2Fyb3VzZWwgY29tcG9uZW50IHdpdGggbmF2aWdhdGlvbiBjb250cm9scyBhbmQgc2xpZGUgaW5kaWNhdG9ycy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNhcm91c2VsLS1kb2NzKSBmb3IgVGlkZUNhcm91c2VsXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIGluZGljYXRvciBkb3RzIG92ZXJsYXk8YnIgLz4oT25seSB2YWxpZCB3aXRoIGZ1bGwgd2lkdGggY2FyZHMpICovXG4gICAgaGFzRG90cz86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgb24tcGFnZSBvciBmbG9hdGluZyBjYXJvdXNlbCAqL1xuICAgIGlzRmxvYXRpbmc/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgZm9udCByb2xlIHVzZWQgZm9yIHRpdGxlIGRpc3BsYXkgKi9cbiAgICBpc0hlYWRsaW5lMT86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIG9uLXBhZ2UgYnV0dG9ucyBzaG91bGQgYmUgaGlkZGVuIHVudGlsIGhvdmVyICovXG4gICAgaXNIaWRlYXdheUJ1dHRvbnM/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBzY3JvbGwgYnkgcGFnZSBvciBieSBpbmRpdmlkdWFsIHNsaWRlICovXG4gICAgaXNTY3JvbGxCeVBhZ2U/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIG1heCBudW1iZXIgb2YgaW5kaWNhdG9yIGRvdHMgdG8gZGlzcGxheSBhdCBhIGdpdmVuIHRpbWUgKi9cbiAgICBtYXhEb3RzPzogbnVtYmVyO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIHRleHQgZGlzcGxheWVkIHRvIHRoZSByaWdodCBvZiB0aGUgdGl0bGUgKi9cbiAgICBzdWJ0aXRsZT86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSB0aXRsZSB0ZXh0IGRpc3BsYXllZCBhYm92ZSB0aGUgY2Fyb3VzZWwgKi9cbiAgICB0aXRsZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhhc0RvdHM6IHVuZGVmaW5lZCxcbiAgICBpc0Zsb2F0aW5nOiBmYWxzZSxcbiAgICBpc0hlYWRsaW5lMTogZmFsc2UsXG4gICAgaXNIaWRlYXdheUJ1dHRvbnM6IHRydWUsXG4gICAgaXNTY3JvbGxCeVBhZ2U6IHRydWUsXG4gICAgbWF4RG90czogNSxcbiAgICBzdWJ0aXRsZTogdW5kZWZpbmVkLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXNJblZpZXc6IG51bWJlcltdKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgY2Fyb3VzZWxSZWYgPSByZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgY29udGFpbmVyUmVmID0gcmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBjdXJyZW50UGFnZUluZGV4ID0gcmVmPG51bWJlcj4oMCk7XG4gIGNvbnN0IGRvdHNSZWYgPSByZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgZnJhbWVXaWR0aCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBpc0ZpcnN0U2xpZGUgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IGlzTGFzdFNsaWRlID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2hvd0J1dHRvbnMgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IHNsaWRlT2JzZXJ2ZXIgPSByZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2xpZGVzID0gcmVmPEhUTUxFbGVtZW50W10+KFtdKTtcbiAgY29uc3Qgc2xpZGVzSW5WaWV3ID0gcmVmPG51bWJlcltdPihbXSk7XG4gIGNvbnN0IHNsb3RPYnNlcnZlciA9IHJlZjxNdXRhdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHRvdWNoU3RhcnQgPSByZWY8VG91Y2ggfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IHNsaWRlc0luVmlld0NvdW50ID0gcmVmPG51bWJlcj4oMSk7XG5cbiAgY29uc3QgY3VycmVudFBhZ2UgPSBjb21wdXRlZCgoKSA9PiBjdXJyZW50UGFnZUluZGV4LnZhbHVlICsgMSk7XG4gIGNvbnN0IGRvdENvbnRhaW5lcldpZHRoID0gY29tcHV0ZWQoKCkgPT4gZG90Q291bnRWaXNpYmxlLnZhbHVlICogZG90V2lkdGggKyAoZG90Q291bnRWaXNpYmxlLnZhbHVlIC0gMSkgKiBkb3RHYXApO1xuICBjb25zdCBkb3RDb3VudFZpc2libGUgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMubWF4RG90cyA+IHRvdGFsUGFnZXMudmFsdWUgPyB0b3RhbFBhZ2VzLnZhbHVlIDogcHJvcHMubWF4RG90cykpO1xuICBjb25zdCB0b3RhbFBhZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghc2xpZGVzLnZhbHVlLmxlbmd0aCkgcmV0dXJuIDA7XG4gICAgaWYgKCFwcm9wcy5pc1Njcm9sbEJ5UGFnZSkgcmV0dXJuIHNsaWRlcy52YWx1ZS5sZW5ndGg7XG5cbiAgICBjb25zdCBxdW90aWVudCA9IE1hdGguZmxvb3Ioc2xpZGVzLnZhbHVlLmxlbmd0aCAvIHNsaWRlc0luVmlld0NvdW50LnZhbHVlKTtcbiAgICBjb25zdCByZW1haW5kZXIgPSBzbGlkZXMudmFsdWUubGVuZ3RoICUgc2xpZGVzSW5WaWV3Q291bnQudmFsdWU7XG5cbiAgICByZXR1cm4gcmVtYWluZGVyID8gcXVvdGllbnQgKyAxIDogcXVvdGllbnQ7XG4gIH0pO1xuXG4gIGNvbnN0IGRvdEdhcDogbnVtYmVyID0gODtcbiAgY29uc3QgZG90V2lkdGg6IG51bWJlciA9IDg7XG4gIGxldCBzY3JvbGxUaW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3QgZ2V0RG90Q2xhc3MgPSAoZG90SW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGxldCBjbGFzc05hbWUgPSAnJztcblxuICAgIGlmIChkb3RJbmRleCA9PT0gY3VycmVudFBhZ2VJbmRleC52YWx1ZSkgY2xhc3NOYW1lID0gJ3RpZGUtY2Fyb3VzZWwtZG90LWFjdGl2ZSc7XG4gICAgaWYgKE1hdGguYWJzKGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgLSBkb3RJbmRleCkgPT09IDEpIGNsYXNzTmFtZSA9ICd0aWRlLWNhcm91c2VsLWRvdC1uZWlnaGJvcic7XG5cbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9O1xuXG4gIGNvbnN0IGdldElzRWxlbWVudFdpdGhpbkNvbnRhaW5lciA9IChlbGVtZW50OiBIVE1MRWxlbWVudCwgY29udGFpbmVyOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY29udGFpbmVyUmlnaHQgPSBjb250YWluZXJSZWN0LmxlZnQgKyBjb250YWluZXJSZWN0LndpZHRoO1xuICAgIGNvbnN0IGVsZW1lbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBlbGVtZW50UmlnaHQgPSBlbGVtZW50UmVjdC5sZWZ0ICsgZWxlbWVudFJlY3Qud2lkdGg7XG5cbiAgICByZXR1cm4gZWxlbWVudFJpZ2h0IDw9IGNvbnRhaW5lclJpZ2h0ICYmIGVsZW1lbnRSZWN0LmxlZnQgPj0gY29udGFpbmVyUmVjdC5sZWZ0O1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRvdWNoRW5kID0gKGV2ZW50OiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgaWYgKCF0b3VjaFN0YXJ0LnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCB0b3VjaEVuZCA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdO1xuICAgIGNvbnN0IGRlbHRhWCA9IHRvdWNoU3RhcnQudmFsdWUuY2xpZW50WCAtIHRvdWNoRW5kLmNsaWVudFg7XG4gICAgY29uc3QgZGVsdGFZID0gdG91Y2hFbmQuY2xpZW50WSAtIHRvdWNoU3RhcnQudmFsdWUuY2xpZW50WTtcblxuICAgIGlmIChNYXRoLmFicyhkZWx0YVgpID4gTWF0aC5hYnMoZGVsdGFZKSkgc2Nyb2xsQnlEZWx0YShkZWx0YVgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRvdWNoU3RhcnQgPSAoZXZlbnQ6IFRvdWNoRXZlbnQpID0+IHtcbiAgICB0b3VjaFN0YXJ0LnZhbHVlID0gZXZlbnQudG91Y2hlc1swXTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVXaGVlbCA9IChldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgIGNvbnN0IGlzU2hpZnRLZXlEb3duID0gZXZlbnQuc2hpZnRLZXk7XG4gICAgY29uc3QgaXNXaGVlbCA9IE1hdGguYWJzKGV2ZW50LmRlbHRhWSkgPj0gODA7XG5cbiAgICBpZiAoaXNXaGVlbCAmJiAhaXNTaGlmdEtleURvd24pIHJldHVybjtcbiAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjbGVhclRpbWVvdXQoc2Nyb2xsVGltZW91dCk7XG5cbiAgICBzY3JvbGxUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKGlzV2hlZWwpIHtcbiAgICAgICAgc2Nyb2xsQnlEZWx0YShldmVudC5kZWx0YVkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gc2xpZGVzLnZhbHVlW3NsaWRlc0luVmlldy52YWx1ZVswXV0/Lm9mZnNldExlZnQgfHwgMDtcblxuICAgICAgICBzY3JvbGxUb09mZnNldChvZmZzZXQpO1xuICAgICAgfVxuICAgIH0sIDEwMCk7XG4gIH07XG5cbiAgY29uc3QgbWVhc3VyZURvbSA9ICgpID0+IHtcbiAgICBpZiAoIWNvbnRhaW5lclJlZi52YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29udGVudFdpZHRoLnZhbHVlID0gY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFdpZHRoO1xuICAgIGZyYW1lV2lkdGgudmFsdWUgPSBjb250YWluZXJSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgc2hvd0J1dHRvbnMudmFsdWUgPSBjb250ZW50V2lkdGgudmFsdWUgPiBmcmFtZVdpZHRoLnZhbHVlO1xuXG4gICAgc2xpZGVzSW5WaWV3Q291bnQudmFsdWUgPSBzbGlkZXMudmFsdWUuZmlsdGVyKChzbGlkZSkgPT5cbiAgICAgIGdldElzRWxlbWVudFdpdGhpbkNvbnRhaW5lcihzbGlkZSwgY29udGFpbmVyUmVmLnZhbHVlIGFzIEhUTUxFbGVtZW50KVxuICAgICkubGVuZ3RoO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbGlkZXMgPSAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3Q6IGNhcm91c2VsUmVmPy52YWx1ZSxcbiAgICAgIHJvb3RNYXJnaW46ICcwcHggMXB4IDBweCAwcHgnLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgIH07XG5cbiAgICBzbGlkZU9ic2VydmVyLnZhbHVlID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICBsZXQgc2xpZGVzQWRkZWRUb1ZpZXc6IG51bWJlcltdID0gW107XG5cbiAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGVJbmRleCA9IHNsaWRlcy52YWx1ZS5pbmRleE9mKGVudHJ5LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgc2xpZGVzQWRkZWRUb1ZpZXcucHVzaChzbGlkZUluZGV4KTtcbiAgICAgICAgICBzbGlkZXNJblZpZXcudmFsdWUucHVzaChzbGlkZUluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzbGlkZXNJblZpZXcudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuZmlsdGVyKChzbGlkZSkgPT4gc2xpZGUgIT09IHNsaWRlSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICAgIH0pO1xuXG4gICAgICBpc0ZpcnN0U2xpZGUudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuaW5jbHVkZXMoMCk7XG4gICAgICBpc0xhc3RTbGlkZS52YWx1ZSA9IHNsaWRlc0luVmlldy52YWx1ZS5pbmNsdWRlcyhzbGlkZXMudmFsdWUubGVuZ3RoIC0gMSk7XG5cbiAgICAgIGlmIChzbGlkZXNBZGRlZFRvVmlldy5sZW5ndGggPiAwKSBlbWl0KCdzbGlkZXNBZGRlZFRvVmlldycsIHNsaWRlc0FkZGVkVG9WaWV3KTtcbiAgICB9LCBvcHRpb25zKTtcblxuICAgIHNsaWRlcy52YWx1ZS5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgaWYgKHNsaWRlT2JzZXJ2ZXIudmFsdWUpIHNsaWRlT2JzZXJ2ZXIudmFsdWUub2JzZXJ2ZShjaGlsZCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb2JzZXJ2ZVNsb3QgPSAoKSA9PiB7XG4gICAgY29uc3Qgb2JzZXJ2ZXJDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcblxuICAgICAgc2xpZGVzLnZhbHVlID0gQXJyYXkuZnJvbShjb250YWluZXJSZWYudmFsdWUuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG4gICAgICBvYnNlcnZlU2xpZGVzKCk7XG4gICAgfTtcblxuICAgIHNsb3RPYnNlcnZlci52YWx1ZSA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG9ic2VydmVyQ2FsbGJhY2spO1xuXG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSkgc2xvdE9ic2VydmVyLnZhbHVlLm9ic2VydmUoY29udGFpbmVyUmVmLnZhbHVlLCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBzY3JvbGxCeURlbHRhID0gKGRlbHRhOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBpc1Njcm9sbGluZ0xlZnQgPSBkZWx0YSA8IDA7XG5cbiAgICBpZiAoaXNTY3JvbGxpbmdMZWZ0KSB7XG4gICAgICBwcm9wcy5pc1Njcm9sbEJ5UGFnZSA/IHNob3dQcmV2aW91c1BhZ2UoKSA6IHNob3dQcmV2aW91c1NsaWRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3BzLmlzU2Nyb2xsQnlQYWdlID8gc2hvd05leHRQYWdlKCkgOiBzaG93TmV4dFNsaWRlKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHNjcm9sbFRvT2Zmc2V0ID0gKHRhcmdldDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgY29uc3QgaXNTY3JvbGxpbmdMZWZ0ID0gdGFyZ2V0IDw9IGNvbnRhaW5lclJlZi52YWx1ZS5zY3JvbGxMZWZ0O1xuXG4gICAgY3VycmVudFBhZ2VJbmRleC52YWx1ZSA9IGlzU2Nyb2xsaW5nTGVmdCA/IGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgLSAxIDogY3VycmVudFBhZ2VJbmRleC52YWx1ZSArIDE7XG5cbiAgICBjb250YWluZXJSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgbGVmdDogdGFyZ2V0LFxuICAgIH0pO1xuICAgIHVwZGF0ZURvdHMoaXNTY3JvbGxpbmdMZWZ0KTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFBhZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDAgfHwgaXNMYXN0U2xpZGUudmFsdWUpIHJldHVybjtcblxuICAgIGNvbnN0IG5leHRTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlW3NsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggLSAxXSArIDE7XG4gICAgY29uc3Qgb2Zmc2V0ID0gc2xpZGVzLnZhbHVlW25leHRTbGlkZV0/Lm9mZnNldExlZnQ7XG5cbiAgICBzY3JvbGxUb09mZnNldChvZmZzZXQpO1xuICB9O1xuXG4gIGNvbnN0IHNob3dQcmV2aW91c1BhZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDAgfHwgaXNGaXJzdFNsaWRlLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1NsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbMF0gLSBzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoO1xuICAgIGNvbnN0IG9mZnNldCA9IHNsaWRlcy52YWx1ZVtwcmV2aW91c1NsaWRlXT8ub2Zmc2V0TGVmdCB8fCAwO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQob2Zmc2V0KTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFNsaWRlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXh0U2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPiAxID8gc2xpZGVzSW5WaWV3LnZhbHVlWzFdIDogc2xpZGVzSW5WaWV3LnZhbHVlWzBdICsgMTtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KHNsaWRlcy52YWx1ZVtuZXh0U2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHNob3dQcmV2aW91c1NsaWRlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1NsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbMF0gLSAxO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW3ByZXZpb3VzU2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZURvdHMgPSAoaXNTY3JvbGxpbmdMZWZ0OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKCFkb3RzUmVmLnZhbHVlIHx8IGRvdENvdW50VmlzaWJsZS52YWx1ZSA+PSB0b3RhbFBhZ2VzLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCBpc09kZERvdENvdW50ID0gZG90Q291bnRWaXNpYmxlLnZhbHVlICUgMiAhPT0gMDtcbiAgICBjb25zdCBjZW50ZXJEb3QgPVxuICAgICAgaXNPZGREb3RDb3VudCB8fCBpc1Njcm9sbGluZ0xlZnRcbiAgICAgICAgPyBNYXRoLmZsb29yKGRvdENvdW50VmlzaWJsZS52YWx1ZSAvIDIpICsgMVxuICAgICAgICA6IE1hdGguZmxvb3IoZG90Q291bnRWaXNpYmxlLnZhbHVlIC8gMik7XG5cbiAgICBkb3RzUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IGN1cnJlbnRQYWdlLnZhbHVlIDwgY2VudGVyRG90ID8gMCA6IChjdXJyZW50UGFnZS52YWx1ZSAtIGNlbnRlckRvdCkgKiAoZG90V2lkdGggKyBkb3RHYXApLFxuICAgIH0pO1xuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgc2xpZGVzLnZhbHVlID0gQXJyYXkuZnJvbShjb250YWluZXJSZWYudmFsdWUuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG5cbiAgICBtZWFzdXJlRG9tKCk7XG4gICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIG9ic2VydmVTbG90KCk7XG5cbiAgICBpZiAod2luZG93KSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZURvbSk7XG4gICAgfVxuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgc2xpZGVPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHNsb3RPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNhcm91c2VsJyxcbiAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5PTkUsXG4gICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgXVwiXG4gICAgcmVmPVwiY2Fyb3VzZWxSZWZcIlxuICA+XG4gICAgPHNlY3Rpb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBwcm9wcy50aXRsZSA/IENTUy5BWElTMS5CRVRXRUVOIDogQ1NTLkFYSVMxLkVORCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgIHYtaWY9XCIoIXByb3BzLmlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnMpIHx8IHByb3BzLnRpdGxlXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwicHJvcHMudGl0bGVcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW2lzSGVhZGxpbmUxID8gQ1NTLkZPTlQuUk9MRS5IRUFETElORV8xIDogQ1NTLkZPTlQuUk9MRS5IRUFETElORV8yXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuc3VidGl0bGVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMuc3VidGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5PTkVdXCJcbiAgICAgICAgdi1pZj1cIiFwcm9wcy5pc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNGaXJzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5URVJUSUFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93UHJldmlvdXNQYWdlKCkgOiBzaG93UHJldmlvdXNTbGlkZSgpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0xhc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dOZXh0UGFnZSgpIDogc2hvd05leHRTbGlkZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzbG90IG5hbWU9XCJtaXNjXCIgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLkRJU1BMQVkuRkxFWF1cIj5cbiAgICAgIDx1bFxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtY29udGFpbmVyJyxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5HQVAuT05FLFxuICAgICAgICAgIENTUy5MSVNUX0JVTExFVFMuT0ZGLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YLlNDUk9MTCxcbiAgICAgICAgICBDU1MuU0NST0xMQkFSLk9GRixcbiAgICAgICAgICBDU1MuU05BUC5PTixcbiAgICAgICAgXVwiXG4gICAgICAgIHJlZj1cImNvbnRhaW5lclJlZlwiXG4gICAgICAgIEB0b3VjaGVuZD1cImhhbmRsZVRvdWNoRW5kXCJcbiAgICAgICAgQHRvdWNoc3RhcnQucGFzc2l2ZT1cImhhbmRsZVRvdWNoU3RhcnRcIlxuICAgICAgICBAd2hlZWw9XCJoYW5kbGVXaGVlbFwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L3VsPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTSxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgICAgQ1NTLk1BUkdJTi5CT1RUT00uSEFMRixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cImhhc0RvdHMgJiYgdG90YWxQYWdlcyA+IDFcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiWyd0aWRlLWNhcm91c2VsLWRvdHMtY29udGFpbmVyJ11cIlxuICAgICAgICAgIDpzdHlsZT1cIntcbiAgICAgICAgICAgIHdpZHRoOiBgJHtkb3RDb250YWluZXJXaWR0aH1weGAsXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICd0aWRlLWNhcm91c2VsLWRvdHMnLFxuICAgICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgICBDU1MuQVhJUzEuU1RBUlQsXG4gICAgICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlguU0NST0xMLFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgICBDU1MuU0NST0xMQkFSLk9GRixcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgcmVmPVwiZG90c1JlZlwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtZG90JyxcbiAgICAgICAgICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICAgICAgICAgIENTUy5IRUlHSFQuWkVSTyxcbiAgICAgICAgICAgICAgICBDU1MuV0lEVEguWkVSTyxcbiAgICAgICAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgICAgICAgZ2V0RG90Q2xhc3MoaW5kZXgpLFxuICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgOmtleT1cImluZGV4XCJcbiAgICAgICAgICAgICAgdi1mb3I9XCIoXywgaW5kZXgpIGluIHRvdGFsUGFnZXNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXknLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuVE9QLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBwcm9wcy5pc0hpZGVhd2F5QnV0dG9ucyA/ICdoaWRlYXdheScgOiAnJyxcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJpc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uTEVGVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzRmlyc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93UHJldmlvdXNQYWdlKCkgOiBzaG93UHJldmlvdXNTbGlkZSgpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzTGFzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93TmV4dFBhZ2UoKSA6IHNob3dOZXh0U2xpZGUoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkuaGlkZWF3YXkge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbDpob3ZlciAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheS5oaWRlYXdheSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWRvdCB7XG4gICAgd2lkdGg6IDhweDtcbiAgICBoZWlnaHQ6IDhweDtcbiAgICBvcGFjaXR5OiAwLjc1O1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC41KTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWwtZG90LW5laWdoYm9yIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNzUpO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWwtZG90LWFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgQG1lZGlhIChwb2ludGVyOiBjb2Fyc2UpIHtcbiAgICAudGlkZS1jYXJvdXNlbCAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgY2hpcCBhY3Rpb24gYnV0dG9uIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gbmF2aWdhdGlvbiBtZW51cyByZWxhdGluZyB0byBzZWFyY2hlcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNoaXBhY3Rpb24tLWRvY3MpIGZvciBUaWRlQ2hpcEFjdGlvblxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIEhUTUwgdGFnIHR5cGUuICovXG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG5cbiAgICAvKiogVVJMIHRvIG5hdmlnYXRlIHRvIG9uIGNsaWNrLiAqL1xuICAgIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKiogSWNvbiB0byBzaG93IGJlZm9yZSB0aGUgbGFiZWwuICovXG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byB0YXJnZXQgYSBuZXcgYnJvd3NlciB0YWIuICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIENoaXAgdGV4dC4gKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogSUNPTi5TRUFSQ0gsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNoaXAtYWN0aW9uJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxJTktfMixcbiAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgIENTUy5VTkRFUkxJTkUuUkVTVC5PRkYsXG4gICAgXVwiXG4gICAgOmhyZWY9XCJwcm9wcy5ocmVmXCJcbiAgICA6dGFyZ2V0PVwicHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOnR5cGU9XCJlbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IEVMRU1FTlQuQlVUVE9OIDogdW5kZWZpbmVkXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb24gOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiIC8+XG5cbiAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jaGlwLWFjdGlvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGNoaXAgZmlsdGVyIGNvbXBvbmVudCBmb3IgdXNlIGluIG5hdmlnYXRpb24uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVjaGlwZmlsdGVyLS1kb2NzKSBmb3IgVGlkZUNoaXBGaWx0ZXJcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBDaGlwIHRleHQuICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaXNBY3RpdmUudmFsdWUgPSAhaXNBY3RpdmUudmFsdWU7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2hpcC1maWx0ZXInLFxuICAgICAgaXNBY3RpdmVcbiAgICAgICAgPyBbJ2FjdGl2ZScsIENTUy5CRy5TRUNPTkRBUlksIENTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cbiAgICAgICAgOiBbQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICBdXCJcbiAgICBAY2xpY2s9XCJoYW5kbGVDbGlja1wiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gID5cbiAgICA8c2xvdCAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGXVwiPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMSwgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkZdXCI+XG4gICAgICAgIHt7IGxhYmVsIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLyogQm9yZGVyIG11c3QgYWx3YXlzIGV4aXN0IHRvIHByZXZlbnQgcmVzaXplIG9uIGhvdmVyIHN0YXRlLCBidXQgbWF0Y2ggYmFja2dyb3VuZCBjb2xvciBvbiByZXN0IHN0YXRlIHRvIGJsZW5kIGluLiAqL1xuICAudGlkZS1jaGlwLWZpbHRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAudGlkZS1jaGlwLWZpbHRlci5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtY2hpcC1maWx0ZXI6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgaW5wdXQgY2hpcCBjb21wb25lbnQgZm9yIHVzZSBpbiBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlY2hpcGlucHV0LS1kb2NzKSBmb3IgVGlkZUNoaXBJbnB1dFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIENoaXAgdGV4dCAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxidXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jaGlwLWlucHV0JyxcbiAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgIF1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPHNwYW4+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG5cbiAgICA8VGlkZUljb24gOmljb249XCJJQ09OLkNMT1NFXCIgLz5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jaGlwLWlucHV0IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWNoaXAtaW5wdXQ6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGNvbHVtbnMgY29tcG9uZW50IGZvciB1c2UgaW4gbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNvbHVtbnMtLWRvY3MpIGZvciBUaWRlQ29sdW1uc1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgbGFiZWwgZm9yIHRoZSBjb2x1bW5zIHNlY3Rpb24uICovXG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6ICcnLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uIGNsYXNzPVwidGlkZS1jb2x1bW5zXCI+XG4gICAgPGgyIDpjbGFzcz1cIltDU1MuTUFSR0lOLkJPVFRPTS5IQUxGXVwiPlxuICAgICAge3sgcHJvcHMuaGVhZGluZyB9fVxuICAgIDwvaDI+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLldSQVAsIENTUy5HQVAuVFdPLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24xXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24yXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24zXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb240XCIgLz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSAycmVtKSAvIDIpO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiAxMjMycHgpIHtcbiAgICAudGlkZS1jb2x1bW5zLWNvbHVtbiB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDZyZW0pIC8gNCk7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgaW5qZWN0LCBwcm92aWRlLCByZWYgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbnR5cGUgVGlkZUZvcm1Db250ZXh0ID0ge1xuICBmb3JjZVNob3dFcnJvcnM6IFJlZjxib29sZWFuPjtcbn07XG5cbmNvbnN0IEZPUk1fS0VZID0gU3ltYm9sKCd0aWRlLWZvcm0nKTtcblxuZXhwb3J0IGNvbnN0IHVzZVRpZGVGb3JtID0gKCkgPT4ge1xuICBjb25zdCBmb3JjZVNob3dFcnJvcnMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByb3ZpZGU8VGlkZUZvcm1Db250ZXh0PihGT1JNX0tFWSwgeyBmb3JjZVNob3dFcnJvcnMgfSk7XG5cbiAgY29uc3QgcmV2ZWFsVmFsaWRhdGlvbkVycm9ycyA9ICgpID0+IHtcbiAgICBmb3JjZVNob3dFcnJvcnMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIHJldHVybiB7IHJldmVhbFZhbGlkYXRpb25FcnJvcnMgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VGb3JtQ29udGV4dCA9ICgpID0+IHtcbiAgcmV0dXJuIGluamVjdDxUaWRlRm9ybUNvbnRleHQ+KEZPUk1fS0VZKTtcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGZvcm0gY29tcG9uZW50IHRvIGJlIHVzZWQgdG8gd3JhcCBmb3JtIGVsZW1lbnRzIGFuZCBoYW5kbGUgZm9ybSBzdWJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlZm9ybS0tZG9jcykgZm9yIFRpZGVGb3JtXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyB1c2VUaWRlRm9ybSB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAnc3VibWl0JywgZTogU3VibWl0RXZlbnQpOiB2b2lkO1xuICB9O1xuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgeyByZXZlYWxWYWxpZGF0aW9uRXJyb3JzIH0gPSB1c2VUaWRlRm9ybSgpO1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlOiBTdWJtaXRFdmVudCkgPT4ge1xuICAgIHJldmVhbFZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICBlbWl0KCdzdWJtaXQnLCBlKTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxmb3JtXG4gICAgQHN1Ym1pdC5wcmV2ZW50PVwiaGFuZGxlU3VibWl0XCJcbiAgICBub3ZhbGlkYXRlXG4gID5cbiAgICA8c2xvdCAvPlxuICA8L2Zvcm0+XG48L3RlbXBsYXRlPlxuIiwiZXhwb3J0IGNvbnN0IE9CSkVDVF9GSVQgPSB7XG4gIENPTlRBSU46ICdjb250YWluJyxcbiAgQ09WRVI6ICdjb3ZlcicsXG4gIFNDQUxFX0RPV046ICdzY2FsZS1kb3duJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9iamVjdEZpdCA9ICh0eXBlb2YgT0JKRUNUX0ZJVClba2V5b2YgdHlwZW9mIE9CSkVDVF9GSVRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaW1hZ2UgY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW1hZ2UtLWRvY3MpIGZvciBUaWRlSW1hZ2VcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IE9CSkVDVF9GSVQgfSBmcm9tICdAL3R5cGVzL0ltYWdlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgT2JqZWN0Rml0IH0gZnJvbSAnQC90eXBlcy9JbWFnZSc7XG4gIGltcG9ydCB0eXBlIHsgU291cmNlIH0gZnJvbSAnQC90eXBlcy9Tb3VyY2UnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIFRleHQgZGlzcGxheSB3aGVuIGltYWdlIGNhbid0IGJlIGxvYWRlZC4gKi9cbiAgICBhbHQ/OiBzdHJpbmc7XG5cbiAgICAvKiogQXBwbHkgYSBcImhlaWdodFwiIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJuYWwgaW1hZ2UgdGFnIChpbmNsdWRpbmcgdW5pdCkuICovXG4gICAgaGVpZ2h0Pzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkZWxheSBsb2FkaW5nIHVudGlsIGltYWdlIGlzIGluIHZpZXdwb3J0LiAqL1xuICAgIGlzTGF6eT86IGJvb2xlYW47XG5cbiAgICAvKiogQ29udHJvbHMgaG93IHRoZSBpbWFnZSBzY2FsZXMgd2l0aGluIGl0cyBib3gsIGVmZmVjdGl2ZSBvbmx5IHdoZW4gaW1hZ2Ugc2l6ZSBkaWZmZXJzIGZyb20gaXRzIGludHJpbnNpYyBkaW1lbnNpb25zLiAqL1xuICAgIG9iamVjdEZpdD86IE9iamVjdEZpdDtcblxuICAgIC8qKiBEZXRlcm1pbmVzIGltYWdlIHNvdXJjZXMgYnkgYnJlYWtwb2ludC4gKi9cbiAgICBzb3VyY2VzPzogU291cmNlW107XG5cbiAgICAvKiogSW1hZ2UgVVJMLiAqL1xuICAgIHNyYz86IHN0cmluZztcblxuICAgIC8qKiBBcHBseSBhIFwid2lkdGhcIiBhdHRyaWJ1dGUgdG8gdGhlIGludGVybmFsIGltYWdlIHRhZyAoaW5jbHVkaW5nIHVuaXQpLiAqL1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBoZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgb2JqZWN0Rml0OiBPQkpFQ1RfRklULkNPVkVSLFxuICAgIHNvdXJjZXM6ICgpID0+IFtdLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHBpY3R1cmUgPSByZWYoKTtcbiAgY29uc3QgaW1nID0gcmVmKCk7XG5cbiAgY29uc3QgaW1hZ2VEZWZhdWx0ID0gJ2h0dHBzOi8vY2RuLXN0YXRpYy50aWxhYnMuaW8vbWFya2V0cGxhY2UvY29tbW9uL2ltYWdlLWNvbWluZy1zb29uLnN2Zyc7XG5cbiAgY29uc3Qgb2JqZWN0Rml0Q2xhc3NOYW1lID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgc3dpdGNoIChwcm9wcy5vYmplY3RGaXQpIHtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5DT05UQUlOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT05UQUlOO1xuICAgICAgY2FzZSBPQkpFQ1RfRklULkNPVkVSOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT1ZFUjtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5TQ0FMRV9ET1dOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5TQ0FMRV9ET1dOO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIE9CSkVDVF9GSVQuQ09WRVI7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBzZXRJbWFnZUZyb21EZWZhdWx0ID0gKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRTcmMgPSBpbWcudmFsdWU/LmN1cnJlbnRTcmM7XG4gICAgY29uc3Qgc291cmNlcyA9IHBpY3R1cmUudmFsdWU/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NvdXJjZScpID8/IFtdO1xuXG4gICAgaWYgKCFjdXJyZW50U3JjKSByZXR1cm47XG5cbiAgICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IG5ldyBVUkwoc291cmNlLnNyY3NldCwgd2luZG93LmxvY2F0aW9uLmhyZWYpLmhyZWY7XG5cbiAgICAgIGlmIChyZXNvbHZlZCA9PT0gY3VycmVudFNyYykge1xuICAgICAgICBzb3VyY2UucmVtb3ZlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGltZy52YWx1ZT8uZ2V0QXR0cmlidXRlKCdzcmMnKSAhPT0gaW1hZ2VEZWZhdWx0KSB7XG4gICAgICBpbWcudmFsdWUuc3JjID0gaW1hZ2VEZWZhdWx0O1xuICAgIH1cbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxwaWN0dXJlXG4gICAgOmNsYXNzPVwiWyd0aWRlLWltYWdlJywgQ1NTLkRJU1BMQVkuQkxPQ0tdXCJcbiAgICByZWY9XCJwaWN0dXJlXCJcbiAgPlxuICAgIDxzb3VyY2VcbiAgICAgIDprZXk9XCJzb3VyY2Uuc3Jjc2V0XCJcbiAgICAgIDptZWRpYT1cImAobWluLXdpZHRoOiR7c291cmNlLm1lZGlhfXB4KWBcIlxuICAgICAgOnNyY3NldD1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgdi1mb3I9XCJzb3VyY2UgaW4gcHJvcHMuc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxpbWdcbiAgICAgIDphbHQ9XCJhbHRcIlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbWFnZS1pbWcnLFxuICAgICAgICAhcHJvcHMud2lkdGggJiYgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICFwcm9wcy5oZWlnaHQgJiYgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICBDU1MuT0JKRUNULkNFTlRFUixcbiAgICAgICAgb2JqZWN0Rml0Q2xhc3NOYW1lLFxuICAgICAgXVwiXG4gICAgICA6ZmV0Y2hwcmlvcml0eT1cImlzTGF6eSA/IHVuZGVmaW5lZCA6ICdoaWdoJ1wiXG4gICAgICA6aGVpZ2h0PVwicHJvcHMuaGVpZ2h0XCJcbiAgICAgIDpsb2FkaW5nPVwicHJvcHMuaXNMYXp5ID8gJ2xhenknIDogJ2VhZ2VyJ1wiXG4gICAgICByZWY9XCJpbWdcIlxuICAgICAgOnNyYz1cInNyYyA/PyBpbWFnZURlZmF1bHRcIlxuICAgICAgOndpZHRoPVwicHJvcHMud2lkdGhcIlxuICAgICAgQGVycm9yPVwic2V0SW1hZ2VGcm9tRGVmYXVsdFwiXG4gICAgLz5cbiAgPC9waWN0dXJlPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW1hZ2UtaW1nIHtcbiAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaW1hZ2UgYmFja2dyb3VuZCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbWFnZWJhY2tncm91bmQtLWRvY3MpIGZvciBUaWRlSW1hZ2VCYWNrZ3JvdW5kXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUltYWdlIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlJztcbiAgaW1wb3J0IHsgT0JKRUNUX0ZJVCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBTb3VyY2UgfSBmcm9tICdAL3R5cGVzL1NvdXJjZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogVGV4dCBkaXNwbGF5IHdoZW4gaW1hZ2UgY2FuJ3QgYmUgbG9hZGVkLiAqL1xuICAgIGFsdD86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGVsYXkgbG9hZGluZyB1bnRpbCBpbWFnZSBpcyBpbiB2aWV3cG9ydC4gKi9cbiAgICBpc0xhenk/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgaW1hZ2Ugc291cmNlcyBieSBicmVha3BvaW50LiAqL1xuICAgIHNvdXJjZXM/OiBTb3VyY2VbXTtcblxuICAgIC8qKiBJbWFnZSBVUkwuICovXG4gICAgc3JjPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgc291cmNlczogKCkgPT4gW10sXG4gICAgc3JjOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW1hZ2UtYmFja2dyb3VuZCcsIENTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTiwgQ1NTLklTT0xBVElPTi5JU09MQVRFXVwiPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJbWFnZVxuICAgICAgICA6YWx0PVwicHJvcHMuYWx0XCJcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuSEVJR0hULkZVTExdXCJcbiAgICAgICAgOmlzLWxhenk9XCJwcm9wcy5pc0xhenlcIlxuICAgICAgICA6b2JqZWN0LWZpdD1cIk9CSkVDVF9GSVQuQ09WRVJcIlxuICAgICAgICA6c291cmNlcz1cInByb3BzLnNvdXJjZXNcIlxuICAgICAgICA6c3JjPVwicHJvcHMuc3JjXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8c2xvdCAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIDpkZWVwKC50aWRlLWltYWdlKSB7XG4gICAgei1pbmRleDogLTE7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBpbmRpY2F0b3IgY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW5kaWNhdG9yLS1kb2NzKSBmb3IgVGlkZUluZGljYXRvclxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIEluZGljYXRvciB0ZXh0ICovXG4gICAgbGFiZWw/OiBzdHJpbmcgfCBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbmRpY2F0b3InLFxuICAgICAgcHJvcHMubGFiZWwgPyAnJyA6ICdkb3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLFxuICAgICAgQ1NTLkFMSUdOLlguQ0VOVEVSLFxuICAgICAgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIHByb3BzLmxhYmVsICYmIHByb3BzLmxhYmVsLnRvU3RyaW5nKCkubGVuZ3RoID4gMSA/IFtDU1MuUEFERElORy5YLkhBTEZdIDogW10sXG4gICAgICBwcm9wcy5sYWJlbFxuICAgICAgICA/IFtDU1MuUE9TSVRJT04uUkVMQVRJVkUsIENTUy5GT05ULlJPTEUuTEFCRUxfMywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5JTlZFUlNFXVxuICAgICAgICA6IFtDU1MuQk9SREVSLkZVTEwuT05FXSxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1pbmRpY2F0b3ItbGFiZWwnXVwiXG4gICAgICB2LWlmPVwicHJvcHMubGFiZWxcIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5kaWNhdG9yOm5vdCguZG90KSB7XG4gICAgbWluLXdpZHRoOiAxcmVtO1xuICAgIG1pbi1oZWlnaHQ6IDFyZW07XG4gIH1cblxuICAudGlkZS1pbmRpY2F0b3IuZG90IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtZ3JheS0xMDApO1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgfVxuXG4gIC50aWRlLWluZGljYXRvci1sYWJlbCB7XG4gICAgLyogVXNlIGJvdHRvbS13ZWlnaHRpbmcgdG8gb2Zmc2V0IHRoZSBtYXRoZW1hdGljYWwgY2VudGVyIHRvIHRoZSBvcHRpY2FsIGNlbnRlci4gKi9cbiAgICBtYXJnaW4tdG9wOiAtMXB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaW5wdXQgc3VwcG9ydGluZyB0ZXh0IGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0c3VwcG9ydGluZ3RleHQtLWRvY3MpIGZvciBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzRXJyb3I6IGJvb2xlYW47XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICB9O1xuICBkZWZpbmVQcm9wczxQcm9wcz4oKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMyxcbiAgICAgIGlzRXJyb3IgPyBbQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLkVSUk9SXSA6IFtDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaXNFcnJvclwiXG4gICAgLz5cblxuICAgIDxkaXY+XG4gICAgICB7eyBtZXNzYWdlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbiIsImltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkxlbmd0aCwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuZXhwb3J0IGNvbnN0IGVycm9yTWVzc2FnZURlZmF1bHQgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgdmFsdWUnO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVElPTl9SRVNVTFQgPSB7XG4gIE5PX0VSUk9SOiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH0sXG4gIFJFUVVJUkVEOiB7XG4gICAgbWVzc2FnZTogJ1BsZWFzZSBmaWxsIG91dCB0aGlzIGZpZWxkJyxcbiAgICB2YWxpZDogZmFsc2UsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHAsIG1lc3NhZ2U/OiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdDogVmFsaWRhdGlvblJlc3VsdCA9IFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlID8/IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpID0+IHtcbiAgY29uc3QgaXNFbXB0eUFuZFVucmVxdWlyZWQgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgIXJlcXVpcmVkO1xuICBjb25zdCBpc1Rvb0xvbmcgPSBtYXhsZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4bGVuZ3RoO1xuICBjb25zdCBpc1Rvb1Nob3J0ID0gIWlzRW1wdHlBbmRVbnJlcXVpcmVkICYmIG1pbmxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5sZW5ndGg7XG4gIHJldHVybiAhaXNUb29TaG9ydCAmJiAhaXNUb29Mb25nO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCA9ICh7XG4gIGVycm9yRnJvbVByb3BzLFxuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQsXG4gIHZhbGlkYXRvcnMsXG4gIHZhbHVlLFxufToge1xuICBlcnJvckZyb21Qcm9wczogc3RyaW5nO1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU6IFJlZjxzdHJpbmc+O1xufSk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuICBpZiAoZXJyb3JGcm9tUHJvcHMgIT09ICcnKVxuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiBlcnJvckZyb21Qcm9wcyxcbiAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICB9O1xuXG4gIC8vIGN1c3RvbSB2YWxpZGF0b3IgcHJvcCBlcnJvcnMgZnJvbSBoYXZlIHNlY29uZCBoaWdoZXN0IHByZWNlZGVuY2VcbiAgaWYgKHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZS52YWx1ZSA/PyAnJywgdmFsaWRhdG9ycyk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIC8vIGFsbCBvdGhlciBwcm9wLWJhc2VkIGVycm9ycyBjb21lIGxhc3RcbiAgaWYgKHJlcXVpcmVkICYmIHZhbHVlLnZhbHVlPy50cmltKCkgPT09ICcnKSB7XG4gICAgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULlJFUVVJUkVEO1xuICB9XG5cbiAgaWYgKG1heGxlbmd0aCB8fCBtaW5sZW5ndGgpIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0aW9uID0gdmFsaWRhdGVMZW5ndGgoe1xuICAgICAgbWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgfSk7XG5cbiAgICBpZiAoIWxlbmd0aFZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiBsZW5ndGhWYWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuICByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1I7XG59O1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVMZW5ndGggPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG5cbiAgcmVzcG9uc2UudmFsaWQgPSBnZXRGaWVsZExlbmd0aElzVmFsaWQoe1xuICAgIG1heGxlbmd0aCxcbiAgICBtaW5sZW5ndGgsXG4gICAgcmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuXG4gIGlmIChyZXNwb25zZS52YWxpZCkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gIHJlc3BvbnNlLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VEZWZhdWx0O1xuXG4gIGlmIChtYXhsZW5ndGggJiYgbWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBFbnRlciBhIHZhbHVlIGJldHdlZW4gJHtmb3JtYXROdW1iZXIobWlubGVuZ3RoKX0gYW5kICR7Zm9ybWF0TnVtYmVyKG1heGxlbmd0aCl9IGNoYXJhY3RlcnNgO1xuICB9IGVsc2UgaWYgKG1heGxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgVXNlICR7Zm9ybWF0TnVtYmVyKG1heGxlbmd0aCl9IGNoYXJhY3RlcnMgb3IgZmV3ZXJgO1xuICB9IGVsc2UgaWYgKG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgRW50ZXIgYXQgbGVhc3QgJHtmb3JtYXROdW1iZXIobWlubGVuZ3RoKX0gY2hhcmFjdGVyc2A7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nLCB2YWxpZGF0b3JzOiAoKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQpW10pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0b3IodmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGlucHV0IGNoZWNrYm94IGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0Y2hlY2tib3gtLWRvY3MpIGZvciBUaWRlSW5wdXRDaGVja2JveFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxUIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgQ2hlY2tib3ggc3RhdGUgaXMgaW50ZXJhY3RhYmxlICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIE92ZXJyaWRlcyB0aGUgZGVmYXVsdCBlcnJvciBtZXNzYWdlIGFuZCB2YWxpZCBzdGF0ZSAqL1xuICAgIGVycm9yPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBDaGVja2JveCBpcyBpbmRldGVybWluYXRlICovXG4gICAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XG5cbiAgICAvKiogVW5pcXVlIElEIGF0dHJpYnV0ZSAodG8gYmluZCBDaGVja2JveCBsYWJlbCB0byBpbnB1dCkgKi9cbiAgICBpbnB1dElkPzogc3RyaW5nO1xuXG4gICAgLyoqIExhYmVsIGNvbnRlbnQgKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIE5hbWUgYXR0cmlidXRlICovXG4gICAgbmFtZT86IHN0cmluZztcblxuICAgIC8qKiBQYXJlbnRoZXRpY2FsIHJlc3BvbnNlIGNvdW50ICovXG4gICAgbnVtYmVyPzogbnVtYmVyO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBpbnB1dCBpcyByZXF1aXJlZCAqL1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogJycsXG4gICAgaW5kZXRlcm1pbmF0ZTogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIHZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG5cbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlIHx8IHByb3BzLmluZGV0ZXJtaW5hdGUpO1xuICBjb25zdCBzaG93RXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGhhc0Vycm9yRnJvbVByb3AudmFsdWUpIHJldHVybiB0cnVlO1xuICAgIGlmICghaXNWYWxpZGF0aW5nLnZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFlcnJvclJlZi52YWx1ZS52YWxpZDtcbiAgfSk7XG4gIGNvbnN0IGhhc0Vycm9yRnJvbVByb3AgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5lcnJvciAhPT0gJycpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSk7XG5cbiAgY29uc3QgZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0ID0gKCk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGlmIChwcm9wcy5lcnJvciAhPT0gJycpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXNzYWdlOiBwcm9wcy5lcnJvcixcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICBpZiAoIXByb3BzLnJlcXVpcmVkIHx8IGlzQ2hlY2tlZC52YWx1ZSkgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xuICAgIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5SRVFVSVJFRDtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRDaGVja2JveFZhbGlkYXRpb25SZXN1bHQoKTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgbW9kZWxWYWx1ZSxcbiAgICAoKSA9PiB7XG4gICAgICBpZiAobW9kZWxWYWx1ZS52YWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBmb3JtQ29udGV4dD8uZm9yY2VTaG93RXJyb3JzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgIGVycm9yUmVmLFxuICAgICgpID0+IHtcbiAgICAgIGVtaXQoJ3ZhbGlkJywgZXJyb3JSZWYudmFsdWUudmFsaWQpO1xuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlLCBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtY2hlY2tib3gnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVJdXCI+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5VU0VSX1NFTEVDVC5OT05FLFxuICAgICAgICBzaG93RXJyb3IgPyBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuRVJST1IgOiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIGRpc2FibGVkID8gW0NTUy5PUEFDSVRZLkRJU0FCTEVELCBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXSA6IFtDU1MuQ1VSU09SLlBPSU5URVJdLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIDpjaGVja2VkPVwiaXNDaGVja2VkXCJcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLXNjcmVlbi1yZWFkZXItb25seSddXCJcbiAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20nLFxuICAgICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICBpc0NoZWNrZWRcbiAgICAgICAgICAgID8gW3Nob3dFcnJvciA/IENTUy5CRy5HTE9CQUwuUFJJTUFSWS5FUlJPUiA6IFtDU1MuQkcuU0VDT05EQVJZLCBDU1MuQk9SREVSLkNPTE9SLkhJR0hdXVxuICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgc2hvd0Vycm9yXG4gICAgICAgICAgICAgICAgICA/IFtDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5FUlJPUiwgQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLkVSUk9SXVxuICAgICAgICAgICAgICAgICAgOiBbQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlldXCJcbiAgICAgICAgICA6aWNvbj1cImluZGV0ZXJtaW5hdGUgPyBJQ09OLlJFTU9WRSA6IElDT04uQ0hFQ0tcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgICAgdi1pZj1cImlzQ2hlY2tlZFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkdST1cuT04sIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuPnt7IGZvcm1hdHRlZExhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJudW1iZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgKHt7IGZvcm1hdE51bWJlcihudW1iZXIpIH19KVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICBpcy1lcnJvclxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1jaGVja2JveCB7XG4gICAgYWxpZ24tc2VsZjogc3RhcnQ7XG4gIH1cblxuICAudGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuXG4gIGxhYmVsOmhhcyhpbnB1dDpmb2N1cy12aXNpYmxlKSB7XG4gICAgb3V0bGluZTogYXV0bztcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0Q2hlY2tib3gudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbmRldGVybWluYXRlPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGluZGV0ZXJtaW5hdGU6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuY2hlY2tlZCB8fCBwcm9wcy5pbmRldGVybWluYXRlKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1jaGVja2JveCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgZGlzYWJsZWQgPyBbJ2Rpc2FibGVkJywgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl0gOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgXVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiaXNDaGVja2VkXCJcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5OT05FXVwiXG4gICAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICA6bmFtZT1cInByb3BzLm5hbWVcIlxuICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgQGNsaWNrLnByZXZlbnRcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGlzQ2hlY2tlZCA/IFtDU1MuQk9SREVSLkNPTE9SLkhJR0gsIENTUy5CRy5TRUNPTkRBUlldIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICAgIGlzQ2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVwiXG4gICAgICAgIDppY29uPVwicHJvcHMuaW5kZXRlcm1pbmF0ZSA/IElDT04uUkVNT1ZFIDogSUNPTi5DSEVDS1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJpc0NoZWNrZWRcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgQGNsaWNrLnByZXZlbnRcbiAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgPlxuICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5udW1iZXJcIlxuICAgICAgPlxuICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKHByb3BzLm51bWJlcikgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1jaGVja2JveC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGlucHV0IHJhZGlvIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0cmFkaW8tLWRvY3MpIGZvciBUaWRlSW5wdXRSYWRpb1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW5wdXQgaXMgaW50ZXJhY3RhYmxlICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIFVuaXF1ZSBJRCBhdHRyaWJ1dGUgKHRvIGJpbmQgaW5wdXQgbGFiZWwgdG8gaW5wdXQpICovXG4gICAgaW5wdXRJZD86IHN0cmluZztcblxuICAgIC8qKiBMYWJlbCBjb250ZW50ICovXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBOYW1lIGF0dHJpYnV0ZSAqL1xuICAgIG5hbWU6IHN0cmluZztcblxuICAgIC8qKiBQYXJlbnRoZXRpY2FsIHJlc3BvbnNlIGNvdW50ICovXG4gICAgbnVtYmVyPzogbnVtYmVyO1xuXG4gICAgLyoqIFZhbHVlIGF0dHJpYnV0ZSAqL1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gcHJvcHMudmFsdWUpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGxhYmVsXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8nLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuVVNFUl9TRUxFQ1QuTk9ORSxcbiAgICAgIHByb3BzLmRpc2FibGVkID8gW0NTUy5PUEFDSVRZLkRJU0FCTEVELCBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXSA6IFtDU1MuQ1VSU09SLlBPSU5URVJdLFxuICAgIF1cIlxuICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNsYXNzPVwiWyd0aWRlLXNjcmVlbi1yZWFkZXItb25seSddXCJcbiAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICA6dmFsdWU9XCJ2YWx1ZVwiXG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8tY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBpc0NoZWNrZWQgPyBbQ1NTLkJPUkRFUi5DT0xPUi5ISUdIXSA6IFtDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFRdLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXJhZGlvLWNoZWNrJywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgaXNDaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkdST1cuT04sIENTUy5BWElTMS5CRVRXRUVOLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIj5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2xhYmVsPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jaGVjayB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICB9XG5cbiAgbGFiZWw6aGFzKGlucHV0OmZvY3VzLXZpc2libGUpIHtcbiAgICBvdXRsaW5lOiBhdXRvO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRSYWRpby52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgY2hlY2tlZCA9IHJlZihwcm9wcy5jaGVja2VkKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5jaGVja2VkLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IGNoZWNrZWQudmFsdWUpIHtcbiAgICAgICAgY2hlY2tlZC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1yYWRpbycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICBwcm9wcy5kaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgIF1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImNoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgbmFtZT1cIlwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXJhZGlvLWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgY2hlY2tlZCA/IENTUy5CT1JERVIuQ09MT1IuSElHSCA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICAgIGNoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8tY2hlY2snLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBwcm9wcy5jaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5udW1iZXJcIlxuICAgICAgPlxuICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKHByb3BzLm51bWJlcikgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1yYWRpby5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWNoZWNrIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBmb3JtYXROdW1iZXIsIGZvcm1hdFBob25lLCBmb3JtYXRQcmljZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmV4cG9ydCB0eXBlIEZvcm1hdHRlZCA9IHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfCBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgRk9STUFUID0ge1xuICBOVU1CRVI6IGZvcm1hdE51bWJlcixcbiAgUEhPTkU6IGZvcm1hdFBob25lLFxuICBQUklDRTogZm9ybWF0UHJpY2UsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRk9STUFUX1JFR0VYID0ge1xuICBhbHBoYTogL15bYS16QS1aXSskL2csXG4gIGFscGhhTnVtYmVyT3JFbXB0eTogL14kfF5bYS16MC05XSskL2ksXG4gIGFscGhhU3BhY2U6IC9eW2EtekEtWiBdKyQvZyxcbiAgZW1haWw6XG4gICAgL14oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoPyEoPzpbYS16QS1aMC05LV0rXFwuKSooPzx0bGQ+W2EtekEtWl17Mix9KVxcLlxcazx0bGQ+JCkoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXF0pfCgoW2EtekEtWjAtOS1dK1xcLikrW2EtekEtWl17Mix9KSkkLyxcbiAgbnVtYmVyRm9ybWF0dGVkOiAvXiR8KD89LileXFwkPygoWzEtOV1bMC05XXswLDJ9KCxbMC05XXszfSkqKXwwKT8oXFwuWzAtOV17MSwyfSk/JC8sXG4gIHBob25lOiAvXig/OlxcZHszfS1cXGR7M30tXFxkezR9fFxcZHsxfS1cXGR7M30tXFxkezN9LVxcZHs0fSk/JC8sXG4gIHByaWNlOiAvKD89LileXFwkPygoWzEtOV1bMC05XXswLDJ9KCxbMC05XXszfSkqKXwwKT8oXFwuWzAtOV17MSwyfSk/JC8sXG4gIHppcDogL15cXGR7NX0kLyxcbn07XG4iLCJpbXBvcnQgeyBGT1JNQVRfUkVHRVggfSBmcm9tICdAL3R5cGVzL0Zvcm1hdHRlZCc7XG5pbXBvcnQgeyBjaGVja0Zvcm1hdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVE9SID0ge1xuICBBTFBIQV9OVU1CRVJfRU1QVFk6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5hbHBoYU51bWJlck9yRW1wdHkpLFxuICBBTFBIQV9TUEFDRTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhU3BhY2UpLFxuICBFTUFJTDogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmVtYWlsLCAnRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIChlLmcuIG5hbWVAZXhhbXBsZS5jb20pJyksXG4gIE5VTUJFUjogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLm51bWJlckZvcm1hdHRlZCwgJ0VudGVyIGEgdmFsaWQgbnVtYmVyJyksXG4gIFBIT05FOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVgucGhvbmUsICdFbnRlciBhIHZhbGlkIHBob25lIG51bWJlcicpLFxuICBaSVA6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC56aXAsICdFbnRlciBhIHZhbGlkIFppcCBjb2RlJyksXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uRXJyb3IgPSBzdHJpbmcgfCBib29sZWFuO1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblJlc3VsdCA9IHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB2YWxpZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25MZW5ndGggPSB7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgdmFsdWU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRvciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0O1xuXG5leHBvcnQgY29uc3QgRVJST1JfRElTUExBWSA9IHtcbiAgRUFHRVI6ICdlYWdlcicsXG4gIExBWlk6ICdsYXp5Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEVycm9yRGlzcGxheSA9ICh0eXBlb2YgRVJST1JfRElTUExBWSlba2V5b2YgdHlwZW9mIEVSUk9SX0RJU1BMQVldO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBzZWxlY3QgaW5wdXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBmb3Jtcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0c2VsZWN0LS1kb2NzKSBmb3IgVGlkZUlucHV0U2VsZWN0XG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB1c2VJZCwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24sIFNlbGVjdE9wdGlvbkdyb3VwIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuICBpbXBvcnQgdHlwZSB7IEVycm9yRGlzcGxheSwgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIFNlbGVjdCBpcyBpbnRlcmFjdGFibGUgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2UgYW5kIHZhbGlkIHN0YXRlICovXG4gICAgZXJyb3I/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGVycm9ycyBkaXNwbGF5IHByaW9yIHRvIGJsdXIgKi9cbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG5cbiAgICAvKiogTGFiZWwgY29udGVudCAqL1xuICAgIGxhYmVsPzogc3RyaW5nO1xuXG4gICAgLyoqIE5hbWUgYXR0cmlidXRlICovXG4gICAgbmFtZT86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIGdyb3VwZWQgdmFsdWVzIGZvdW5kIGluc2lkZSBTZWxlY3QgKi9cbiAgICBvcHRncm91cHM/OiAoU2VsZWN0T3B0aW9uIHwgU2VsZWN0T3B0aW9uR3JvdXApW10gfCByZWFkb25seSAoU2VsZWN0T3B0aW9uIHwgU2VsZWN0T3B0aW9uR3JvdXApW107XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB1bmdyb3VwZWQgdmFsdWVzIGZvdW5kIGluc2lkZSBTZWxlY3QgKi9cbiAgICBvcHRpb25zPzogU2VsZWN0T3B0aW9uW10gfCByZWFkb25seSBTZWxlY3RPcHRpb25bXTtcblxuICAgIC8qKiBQcmVmaXggY29udGVudCAqL1xuICAgIHByZWZpeD86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgU2VsZWN0IGlzIHJlcXVpcmVkICovXG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIFN1ZmZpeCBjb250ZW50ICovXG4gICAgc3VmZml4Pzogc3RyaW5nO1xuXG4gICAgLyoqIEV4cGxhaW5lciB0ZXh0IGJlbmVhdGggaW5wdXQgKi9cbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogJycsXG4gICAgZXJyb3JEaXNwbGF5OiBFUlJPUl9ESVNQTEFZLkxBWlksXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG9wdGdyb3VwczogdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM6IHVuZGVmaW5lZCxcbiAgICBwcmVmaXg6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VmZml4OiB1bmRlZmluZWQsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIGlzVmFsaWQ6IGJvb2xlYW4pOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgaW5wdXRJZCA9IHVzZUlkKCk7XG4gIGNvbnN0IGlzVmFsaWRhdGluZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHNlbGVjdEVsZW1lbnQgPSByZWY8SFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IHNob3dFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaGFzRXJyb3JGcm9tUHJvcC52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkYXRpbmcudmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIWVycm9yUmVmLnZhbHVlLnZhbGlkO1xuICB9KTtcbiAgY29uc3QgaGFzRXJyb3JGcm9tUHJvcCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmVycm9yICE9PSAnJyk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT0gbnVsbCB8fCBtb2RlbFZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IChzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSkgfHwgcHJvcHMuc3VwcG9ydGluZ1RleHQpO1xuXG4gIGNvbnN0IGV4cGFuZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJyk7XG4gICAgc2VsZWN0RWxlbWVudD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkVBR0VSKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5MQVpZKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBlcnJvclJlZi52YWx1ZSA9IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCh7XG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWx1ZTogbW9kZWxWYWx1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgc2hvd0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiAnJyxcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIF1cIlxuICAgICAgQGNsaWNrPVwiZXhwYW5kT3B0aW9uc1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTklORy5MRUZULFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5UT1AuSEFMRixcbiAgICAgICAgICAgIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5XSURUSC5GVUxMLCBDU1MuR0FQLkhBTEZdXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLk1BUkdJTi5MRUZULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRiwgbGFiZWwgJiYgQ1NTLk1BUkdJTi5UT1AuT05FXVwiXG4gICAgICAgICAgICB2LWlmPVwicHJlZml4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBwcmVmaXggfX1cbiAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5IQUxGLFxuICAgICAgICAgICAgICBDU1MuUEFERElORy5UT1AuT05FLFxuICAgICAgICAgICAgICBDU1MuUEFERElORy5SSUdIVC5UV08sXG4gICAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICAgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCxcbiAgICAgICAgICAgICAgcHJlZml4ID8gQ1NTLlBBRERJTkcuTEVGVC5aRVJPIDogQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZWY9XCJzZWxlY3RFbGVtZW50XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIm9wdGdyb3VwIGluIG9wdGdyb3Vwc1wiPlxuICAgICAgICAgICAgICA8b3B0Z3JvdXBcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwiYGdyb3VwLSR7KG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbH1gXCJcbiAgICAgICAgICAgICAgICA6bGFiZWw9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgICB2LWlmPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9vcHRncm91cD5cblxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgOmtleT1cImBvcHRpb24tJHsob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZX1gXCJcbiAgICAgICAgICAgICAgICA6c2VsZWN0ZWQ9XCJtb2RlbFZhbHVlID09PSAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgIDpzZWxlY3RlZD1cIm1vZGVsVmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBvcHRpb25zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuUklHSFQsXG4gICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgQ1NTLk1BUkdJTi5SSUdIVC5UV08sXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBsYWJlbCAmJiBDU1MuTUFSR0lOLlRPUC5PTkUsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwic3VmZml4XCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gOmNsYXNzPVwiQ1NTLlBBRERJTkcuUklHSFQuT05FXCI+XG4gICAgICAgICAge3sgc3VmZml4IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgcHJpY2VUb051bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmltcG9ydCB0eXBlIHsgU3RyaW5nSW5wdXQgfSBmcm9tICdAL3R5cGVzL0Zvcm1EZXByZWNhdGVkJztcbmltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRpb25MZW5ndGgsIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbkRlcHJlY2F0ZWQnO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbnR5cGUgUmFuZ2VEYXRhID0ge1xuICBtaW46IG51bWJlciB8IG51bGw7XG4gIG1heDogbnVtYmVyIHwgbnVsbDtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGVycm9yTWVzc2FnZURlZmF1bHQgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgdmFsdWUuJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3Qgbm9FcnJvciA9IHtcbiAgbWVzc2FnZTogJycsXG4gIHZhbGlkOiB0cnVlLFxufSBhcyBSZWFkb25seTxWYWxpZGF0aW9uUmVzdWx0PjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHApID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IG5vRXJyb3I7XG5cbiAgICBpZiAoIXZhbHVlLnRyaW0oKS5tYXRjaChmb3JtYXQpKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVycm9yTWVzc2FnZSA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuICBpZiAodHlwZW9mIGVycm9yRnJvbVByb3BzID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21Qcm9wcy5sZW5ndGggPiAwKSByZXR1cm4gZXJyb3JGcm9tUHJvcHM7XG5cbiAgcmV0dXJuIHR5cGVvZiBlcnJvckZyb21SZWYgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVJlZi5sZW5ndGggPiAwID8gZXJyb3JGcm9tUmVmIDogZXJyb3JNZXNzYWdlRGVmYXVsdDtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZpZWxkSGFzRXJyb3IgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+XG4gIGVycm9yRnJvbVByb3BzICE9PSBmYWxzZSB8fCBlcnJvckZyb21SZWYgIT09IGZhbHNlO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpID0+IHtcbiAgY29uc3QgaXNFbXB0eUFuZFVucmVxdWlyZWQgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgIXJlcXVpcmVkO1xuICBjb25zdCBpc1Rvb0xvbmcgPSBtYXhsZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4bGVuZ3RoO1xuICBjb25zdCBpc1Rvb1Nob3J0ID0gIWlzRW1wdHlBbmRVbnJlcXVpcmVkICYmIG1pbmxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5sZW5ndGg7XG5cbiAgcmV0dXJuICFpc1Rvb1Nob3J0ICYmICFpc1Rvb0xvbmc7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRNYXhSYW5nZUlzVmFsaWQgPSAoeyBtaW4gfTogUGljazxSYW5nZURhdGEsICdtaW4nPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01heDogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWF4ID0gIWlzTmFOKG5ld01heCkgPyBuZXdNYXggOiBudWxsO1xuICAgIGlmIChtaW4gJiYgbmV3TWF4KSB7XG4gICAgICBpZiAobmV3TWF4ID49IG1pbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBncmVhdGVyIHRoYW4gbWluYCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE1pblJhbmdlSXNWYWxpZCA9ICh7IG1heCB9OiBQaWNrPFJhbmdlRGF0YSwgJ21heCc+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWluOiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNaW4gPSAhaXNOYU4obmV3TWluKSA/IG5ld01pbiA6IG51bGw7XG4gICAgaWYgKG1heCAmJiBuZXdNaW4pIHtcbiAgICAgIGlmIChuZXdNaW4gPD0gbWF4KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGxlc3MgdGhhbiBtYXhgLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0T3B0aW9uc0Zyb21TdHJpbmdzID0gKHN0cmluZ3M6IHN0cmluZ1tdKSA9PlxuICBzdHJpbmdzLm1hcChcbiAgICAob3B0aW9uKSA9PlxuICAgICAgKHtcbiAgICAgICAgbGFiZWw6IG9wdGlvbixcbiAgICAgICAgdmFsdWU6IG9wdGlvbixcbiAgICAgIH0gYXMgU2VsZWN0T3B0aW9uKVxuICApO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gPSAoe1xuICBlcnJvcixcbiAgZXJyb3JGcm9tUHJvcHMsXG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCA9IGZhbHNlLFxuICB2YWxpZGF0b3JzLFxuICB2YWx1ZSxcbn06IHtcbiAgZXJyb3I6IFJlZjxWYWxpZGF0aW9uRXJyb3I+O1xuICBlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yO1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIHZhbHVlPzogUmVmPHN0cmluZyB8IHVuZGVmaW5lZD47XG59KSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG5cbiAgZXJyb3IudmFsdWUgPSBlcnJvckZyb21Qcm9wcyA/IGVycm9yRnJvbVByb3BzIDogZmFsc2U7XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlUHJvcGVydHkodmFsdWU/LnZhbHVlIHx8ICcnLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSB2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiAobWF4bGVuZ3RoIHx8IG1pbmxlbmd0aCkpIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0aW9uID0gdmFsaWRhdGVMZW5ndGgoe1xuICAgICAgbWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB2YWx1ZTogdmFsdWU/LnZhbHVlIHx8ICcnLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGhWYWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IGxlbmd0aFZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmllbGRzRnJvbVJlZnMoZmllbGRzOiB7IFtrZXk6IHN0cmluZ106IFJlZjxTdHJpbmdJbnB1dCB8IG51bGw+IH0pIHtcbiAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZHMpIHtcbiAgICBpZiAoZmllbGRzW2tleV0udmFsdWU/LnJlcXVpcmVkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkc1trZXldLnZhbHVlPy52YWx1ZTtcbiAgICAgIHZhbGlkID0gdmFsaWQgJiYgISF2YWx1ZSAmJiB2YWx1ZS50cmltKCkgIT09ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yID0gZmllbGRzW2tleV0udmFsdWU/LmVycm9yO1xuICAgIHZhbGlkID0gdmFsaWQgJiYgIWVycm9yO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUxlbmd0aCA9ICh7XG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCA9IGZhbHNlLFxuICB2YWx1ZSxcbn06IFZhbGlkYXRpb25MZW5ndGgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG5cbiAgcmVzcG9uc2UudmFsaWQgPSBnZXRGaWVsZExlbmd0aElzVmFsaWQoe1xuICAgIG1heGxlbmd0aCxcbiAgICBtaW5sZW5ndGgsXG4gICAgcmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuXG4gIGlmIChyZXNwb25zZS52YWxpZCkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gIHJlc3BvbnNlLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VEZWZhdWx0O1xuXG4gIGlmIChtYXhsZW5ndGggJiYgbWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7bWlubGVuZ3RofSBhbmQgJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWF4bGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBtb3JlIHRoYW4gJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBsZXNzIHRoYW4gJHttaW5sZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlOiBzdHJpbmcsIHZhbGlkYXRvcnM6ICgodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdClbXSk6IFZhbGlkYXRpb25SZXN1bHQge1xuICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRvcih2YWx1ZSk7XG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xufVxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0U2VsZWN0LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RGaWVsZCB9IGZyb20gJ0AvdHlwZXMvRmllbGREZXByZWNhdGVkJztcbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24sIFNlbGVjdE9wdGlvbkdyb3VwIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUHJvcHMgZXh0ZW5kcyBTZWxlY3RGaWVsZCB7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfVxuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgcmVxdWlyZWQgPSByZWYocHJvcHMucmVxdWlyZWQpO1xuICBjb25zdCB2YWx1ZSA9IHJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcikpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcblxuICBjb25zdCBleHBhbmRPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpO1xuICAgIGlucHV0Py52YWx1ZT8uZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHsgZXJyb3IsIHZhbHVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXNlbGVjdCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogJycsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImV4cGFuZE9wdGlvbnNcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgICBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCJvcHRncm91cCBpbiBwcm9wcy5vcHRncm91cHNcIj5cbiAgICAgICAgICAgIDxvcHRncm91cFxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICA6bGFiZWw9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgdi1pZj1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIChvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L29wdGdyb3VwPlxuXG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICA6c2VsZWN0ZWQ9XCJ2YWx1ZSA9PT0gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgOnZhbHVlPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikubGFiZWwgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIG9wdGlvbnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRFWFRfSU5QVVRfVFlQRSA9IHtcbiAgREFURTogJ2RhdGUnLFxuICBEQVRFVElNRV9MT0NBTDogJ2RhdGV0aW1lLWxvY2FsJyxcbiAgRU1BSUw6ICdlbWFpbCcsXG4gIE1PTlRIOiAnbW9udGgnLFxuICBOVU1CRVI6ICdudW1iZXInLFxuICBQQVNTV09SRDogJ3Bhc3N3b3JkJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgVEVMOiAndGVsJyxcbiAgVEVYVDogJ3RleHQnLFxuICBUSU1FOiAndGltZScsXG4gIFVSTDogJ3VybCcsXG4gIFdFRUs6ICd3ZWVrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRleHRJbnB1dFR5cGUgPSAodHlwZW9mIFRFWFRfSU5QVVRfVFlQRSlba2V5b2YgdHlwZW9mIFRFWFRfSU5QVVRfVFlQRV07XG5cbmV4cG9ydCBjb25zdCBJTlBVVF9NT0RFID0ge1xuICBERUNJTUFMOiAnZGVjaW1hbCcsXG4gIEVNQUlMOiAnZW1haWwnLFxuICBOVU1FUklDOiAnbnVtZXJpYycsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFRFTDogJ3RlbCcsXG4gIFRFWFQ6ICd0ZXh0JyxcbiAgVVJMOiAndXJsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIElucHV0TW9kZSA9ICh0eXBlb2YgSU5QVVRfTU9ERSlba2V5b2YgdHlwZW9mIElOUFVUX01PREVdO1xuIiwiaW1wb3J0IHsgSU5QVVRfTU9ERSwgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuXG5pbXBvcnQgdHlwZSB7IElucHV0TW9kZSwgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcblxuZXhwb3J0IGNvbnN0IGdldFRleHRJbnB1dE1vZGUgPSAodHlwZTogVGV4dElucHV0VHlwZSwgaW5wdXRtb2RlPzogSW5wdXRNb2RlKTogSW5wdXRNb2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGlucHV0bW9kZSkgcmV0dXJuIGlucHV0bW9kZTtcblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5URUw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5URUw7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuU0VBUkNIOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuU0VBUkNIO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLk5VTUJFUjpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLk5VTUVSSUM7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuRU1BSUw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5FTUFJTDtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5VUkw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5VUkw7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdGV4dCBpbnB1dCBpbnRlbmRlZCB0byBiZSB1c2VkIGluIGZvcm1zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW5wdXR0ZXh0LS1kb2NzKSBmb3IgVGlkZUlucHV0VGV4dFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHsgRVJST1JfRElTUExBWSB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG4gIGltcG9ydCB7IGdldFRleHRJbnB1dE1vZGUgfSBmcm9tICdAL3V0aWxpdGllcy9mb3Jtcyc7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxULCBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IEZvcm1WYWx1ZVRyYW5zZm9ybWVyIH0gZnJvbSAnQC90eXBlcy9Gb3JtJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBJbnB1dE1vZGUsIFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgRXJyb3JEaXNwbGF5LCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBicm93c2VyIGF0dGVtcHRzIHRvIGF1dG9jb21wbGV0ZSAqL1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGlucHV0IGlzIGludGVyYWN0YWJsZSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBPdmVycmlkZXMgdGhlIGRlZmF1bHQgZXJyb3IgbWVzc2FnZSBhbmQgdmFsaWQgc3RhdGUgKi9cbiAgICBlcnJvcj86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgZXJyb3JzIGRpc3BsYXkgcHJpb3IgdG8gYmx1ciAqL1xuICAgIGVycm9yRGlzcGxheT86IEVycm9yRGlzcGxheTtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBjbGVhci9yZXNldCBidXR0b24gaXMgc2hvd24gZm9yIHRoZSBpbnB1dCAqL1xuICAgIGhhc0NsZWFyPzogYm9vbGVhbjtcblxuICAgIC8qKiBJY29uIGF0IGxlZnQgb2YgaW5wdXQgdmFsdWUgKi9cbiAgICBpY29uTGVhZGluZz86IEljb247XG5cbiAgICAvKiogVW5pcXVlIElEIGF0dHJpYnV0ZSAodG8gYmluZCBpbnB1dCBsYWJlbCB0byBpbnB1dCkgKi9cbiAgICBpbnB1dElkPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIGlucHV0IGVkaXRpbmcgZmVhdHVyZXMgb2ZmZXJlZCBieSB0aGUgYnJvd3NlciAqL1xuICAgIGlucHV0bW9kZT86IElucHV0TW9kZTtcblxuICAgIC8qKiBMYWJlbCBjb250ZW50ICovXG4gICAgbGFiZWw/OiBzdHJpbmc7XG5cbiAgICAvKiogQXBwbGllcyBhIG1heGltdW0gY2hhcmFjdGVyIGNvdW50IHRvIHRoZSBpbnB1dCAqL1xuICAgIG1heGxlbmd0aD86IG51bWJlcjtcblxuICAgIC8qKiBBcHBsaWVzIGEgbWluaW11bSBjaGFyYWN0ZXIgY291bnQgdG8gdGhlIGlucHV0ICovXG4gICAgbWlubGVuZ3RoPzogbnVtYmVyO1xuXG4gICAgLyoqIE5hbWUgYXR0cmlidXRlICovXG4gICAgbmFtZT86IHN0cmluZztcblxuICAgIC8qKiBJbnB1dCBwcmVmaXggKi9cbiAgICBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGlucHV0IGlzIHJlcXVpcmVkICovXG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIElucHV0IHN1ZmZpeCAoaS5lLiB1bml0cykgKi9cbiAgICBzdWZmaXg/OiBzdHJpbmc7XG5cbiAgICAvKiogRXhwbGFpbmVyIHRleHQgYmVuZWF0aCBpbnB1dCAqL1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgdGV4dCBmb3JtYXR0aW5nIGFwcGxpZWQgdG8gaW5wdXQgdmFsdWUgdXBvbiBpbnZva2luZyByZWxldmFudCBsaXN0ZW5lciBldmVudChzKSAqL1xuICAgIHRyYW5zZm9ybVZhbHVlPzogRm9ybVZhbHVlVHJhbnNmb3JtZXI7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgdHlwZShzKSBvZiB2YWx1ZXMgZXhwZWN0ZWQgYnkgdGhlIGlucHV0ICovXG4gICAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBtZXRob2QocykgdXNlZCB0byBjaGVjayBmb3IgdmFsaWQgaW5wdXQgdmFsdWUgdXBvbiBpbnZva2luZyByZWxldmFudCBsaXN0ZW5lciBldmVudChzKSAqL1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBoYXNDbGVhcjogZmFsc2UsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgaW5wdXRtb2RlOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdHJhbnNmb3JtVmFsdWU6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBURVhUX0lOUFVUX1RZUEUuVEVYVCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpbnB1dEVsZW1lbnQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBzaG93UGFzc3dvcmQgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpbnB1dE1vZGVBdHRyaWJ1dGUgPSBjb21wdXRlZDxJbnB1dE1vZGUgfCB1bmRlZmluZWQ+KCgpID0+IGdldFRleHRJbnB1dE1vZGUocHJvcHMudHlwZSwgcHJvcHMuaW5wdXRtb2RlKSk7XG4gIGNvbnN0IGlucHV0VHlwZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEICYmIHNob3dQYXNzd29yZC52YWx1ZSA9PT0gdHJ1ZSA/IFRFWFRfSU5QVVRfVFlQRS5URVhUIDogcHJvcHMudHlwZVxuICApO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PSBudWxsIHx8IG1vZGVsVmFsdWUudmFsdWUgPT09ICcnKTtcbiAgY29uc3Qgc2hvdWxkU2hvd0NsZWFyQnV0dG9uID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gcHJvcHMuaGFzQ2xlYXIgJiYgbW9kZWxWYWx1ZS52YWx1ZSAmJiBwcm9wcy50eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcbiAgKTtcbiAgY29uc3Qgc2hvdWxkU2hvd1Bhc3N3b3JkQnV0dG9uID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gKHNob3dFcnJvci52YWx1ZSAmJiBlcnJvclJlZi52YWx1ZS5tZXNzYWdlKSB8fCBwcm9wcy5zdXBwb3J0aW5nVGV4dCk7XG5cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgbW9kZWxWYWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0RWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWVsZENsaWNrID0gKCkgPT4ge1xuICAgIGlucHV0RWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBwcmV2ZW50SW5wdXRGb2N1c0xvc3NPbk1vdXNlZG93biA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFoYXNGb2N1cy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChlLnRhcmdldCAhPT0gaW5wdXRFbGVtZW50LnZhbHVlKSBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgIFttb2RlbFZhbHVlLCAoKSA9PiBwcm9wcy50cmFuc2Zvcm1WYWx1ZV0sXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKCFwcm9wcy50cmFuc2Zvcm1WYWx1ZSkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBkaWdpdHMgPSBtb2RlbFZhbHVlLnZhbHVlPy5tYXRjaCgvXFxkL2cpPy5qb2luKCcnKSB8fCB1bmRlZmluZWQ7XG4gICAgICBtb2RlbFZhbHVlLnZhbHVlID0gZGlnaXRzID8gcHJvcHMudHJhbnNmb3JtVmFsdWUoZGlnaXRzKSA6ICcnO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtdGV4dCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBzaG93RXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWZpZWxkJyxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgc2hvdWxkU2hvd0NsZWFyQnV0dG9uID8gW0NTUy5QQURESU5HLlJJR0hULkhBTEYsIENTUy5QQURESU5HLkxFRlQuT05FXSA6IFtDU1MuUEFERElORy5YLk9ORV0sXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlRmllbGRDbGlja1wiXG4gICAgICBAbW91c2Vkb3duPVwicHJldmVudElucHV0Rm9jdXNMb3NzT25Nb3VzZWRvd25cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtcHJlZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJwcmVmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJlZml4IH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1sYWJlbCcsXG4gICAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICA6YXV0b2NvbXBsZXRlPVwiYXV0b2NvbXBsZXRlID8gJ29uJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdXCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIDppbnB1dG1vZGU9XCJpbnB1dE1vZGVBdHRyaWJ1dGVcIlxuICAgICAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZWY9XCJpbnB1dEVsZW1lbnRcIlxuICAgICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgOnR5cGU9XCJpbnB1dFR5cGVcIlxuICAgICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtc3VmZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJzdWZmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc3VmZml4IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xlYXJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdi1pZj1cInNob3VsZFNob3dDbGVhckJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cInNob3dQYXNzd29yZCA9ICFzaG93UGFzc3dvcmRcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdi1pZj1cInNob3VsZFNob3dQYXNzd29yZEJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5WSVNJQklMSVRZXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9sYWJlbD5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQ6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQgaW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFRleHQudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBGb3JtVmFsdWVUcmFuc2Zvcm1lciB9IGZyb20gJ0AvdHlwZXMvRm9ybURlcHJlY2F0ZWQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGhhc0NsZWFyPzogYm9vbGVhbjtcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdHJhbnNmb3JtVmFsdWU/OiBGb3JtVmFsdWVUcmFuc2Zvcm1lcjtcbiAgICB0eXBlPzogVGV4dElucHV0VHlwZTtcbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhdXRvY29tcGxldGU6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaGFzQ2xlYXI6IGZhbHNlLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHRyYW5zZm9ybVZhbHVlOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVEVYVF9JTlBVVF9UWVBFLlRFWFQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHNob3dQYXNzd29yZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzQ2xlYXIgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5oYXNDbGVhciAmJiB2YWx1ZS52YWx1ZSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuICBjb25zdCBpbnB1dFR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCAmJiBzaG93UGFzc3dvcmQudmFsdWUgPT09IHRydWUgPyBURVhUX0lOUFVUX1RZUEUuVEVYVCA6IHByb3BzLnR5cGVcbiAgKTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBoYW5kbGVWYWxpZGF0aW9uKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXQgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLnRyYW5zZm9ybVZhbHVlKSB7XG4gICAgICBjb25zdCBkaWdpdHMgPSB2YWx1ZS52YWx1ZT8ubWF0Y2goL1xcZC9nKT8uam9pbignJykgfHwgdW5kZWZpbmVkO1xuXG4gICAgICB2YWx1ZS52YWx1ZSA9IGRpZ2l0cyA/IHByb3BzLnRyYW5zZm9ybVZhbHVlKGRpZ2l0cykgOiAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVZhbHVlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHVwZGF0ZVZhbHVlLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC10ZXh0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1maWVsZCcsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBoYXNDbGVhciA/IFtDU1MuUEFERElORy5SSUdIVC5IQUxGLCBDU1MuUEFERElORy5MRUZULk9ORV0gOiBbQ1NTLlBBRERJTkcuWC5PTkVdLFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtcHJlZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByZWZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcmVmaXggfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWxhYmVsJyxcbiAgICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmF1dG9jb21wbGV0ZT1cImF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIDp0eXBlPVwiaW5wdXRUeXBlXCJcbiAgICAgICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIEBpbnB1dD1cImhhbmRsZUlucHV0XCJcbiAgICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1zdWZmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwic3VmZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHN1ZmZpeCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsZWFyXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHYtaWY9XCJoYXNDbGVhciAmJiB0eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHYtaWY9XCJ0eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uVklTSUJJTElUWVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0IGlucHV0IHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHRleHRhcmVhIGlucHV0IGludGVuZGVkIHRvIGJlIHVzZWQgaW4gZm9ybXMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbnB1dHRleHRhcmVhLS1kb2NzKSBmb3IgVGlkZUlucHV0VGV4dGFyZWFcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBFcnJvckRpc3BsYXksIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2UgYW5kIHZhbGlkIHN0YXRlICovXG4gICAgZXJyb3I/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGVycm9ycyBkaXNwbGF5IHByaW9yIHRvIGJsdXIgKi9cbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG5cbiAgICAvKiogVW5pcXVlIElEIGF0dHJpYnV0ZSAodG8gYmluZCBpbnB1dCBsYWJlbCB0byBpbnB1dCkgKi9cbiAgICBpbnB1dElkPzogc3RyaW5nO1xuXG4gICAgLyoqIExhYmVsIGNvbnRlbnQgKi9cbiAgICBsYWJlbD86IHN0cmluZztcblxuICAgIC8qKiBBcHBsaWVzIGEgbWF4aW11bSBjaGFyYWN0ZXIgY291bnQgdG8gdGhlIGlucHV0ICovXG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIEFwcGxpZXMgYSBtaW5pbXVtIGNoYXJhY3RlciBjb3VudCB0byB0aGUgaW5wdXQgKi9cbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogTmFtZSBhdHRyaWJ1dGUgKi9cbiAgICBuYW1lPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBpbnB1dCBpcyByZXF1aXJlZCAqL1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSBoZWlnaHQgb2YgdGhlIGlucHV0ICovXG4gICAgcm93cz86IG51bWJlcjtcblxuICAgIC8qKiBFeHBsYWluZXIgdGV4dCBiZW5lYXRoIGlucHV0ICovXG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBtZXRob2QocykgdXNlZCB0byBjaGVjayBmb3IgdmFsaWQgaW5wdXQgdmFsdWUgdXBvbiBpbnZva2luZyByZWxldmFudCBsaXN0ZW5lciBldmVudChzKSAqL1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHJvd3M6IDgsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCB0ZXh0YXJlYUVsZW1lbnQgPSByZWY8SFRNTFRleHRBcmVhRWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiAoc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpIHx8IHByb3BzLnN1cHBvcnRpbmdUZXh0KTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWVsZENsaWNrID0gKCkgPT4ge1xuICAgIHRleHRhcmVhRWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBwcmV2ZW50VGV4dGFyZWFGb2N1c0xvc3NPbk1vdXNlZG93biA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFoYXNGb2N1cy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChlLnRhcmdldCAhPT0gdGV4dGFyZWFFbGVtZW50LnZhbHVlKSBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHRhcmVhJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBzaG93RXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUZpZWxkQ2xpY2tcIlxuICAgICAgQG1vdXNlZG93bj1cInByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1sYWJlbCcsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0ssIENTUy5GT05ULlJPTEUuQk9EWV8xLCBDU1MuUEFERElORy5YLk9ORSwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICByZWY9XCJ0ZXh0YXJlYUVsZW1lbnRcIlxuICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgIDpyb3dzPVwicm93c1wiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6aXMtZXJyb3I9XCJzaG93RXJyb3JcIlxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEgdGV4dGFyZWEge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRUZXh0YXJlYS52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICByb3dzPzogbnVtYmVyO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZChcbiAgICAoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKVxuICApO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycgfHwgdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIXZhbHVlLnZhbHVlKSB7XG4gICAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIHJldHVybiBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHtcbiAgICBlcnJvcixcbiAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0YXJlYScsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgaGFzRXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLkxFRlQuT05FLFxuICAgICAgICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwnLFxuICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0ssIENTUy5XSURUSC5GVUxMLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICA6cm93cz1cInJvd3NcIlxuICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgZ2VuZXJpYyBtZW51IGl0ZW0gaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBuYXZpZ2F0aW9uIG1lbnVzIG9yIGRyb3Bkb3ducy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZW1lbnVpdGVtLS1kb2NzKSBmb3IgVGlkZU1lbnVJdGVtXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBUaGUgZWxlbWVudCB0byByZW5kZXIgdGhlIHJvb3QgZWxlbWVudCBhcy4gKi9cbiAgICBlbGVtZW50PzogRWxlbWVudDtcblxuICAgIC8qKiBUaGUgaHJlZiBhdHRyaWJ1dGUgdG8gYXBwbHkgd2hlbiB0aGUgZWxlbWVudCBpcyBhIGxpbmsuICovXG4gICAgaHJlZj86IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRvIG9wZW4gbGluayBpbiBhIG5ldyB0YWIuICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIEljb24gdG8gc2hvdyBhZnRlciB0aGUgbGFiZWwuICovXG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcblxuICAgIC8qKiBUaGUgbGFiZWwgdG8gYmUgZGlzcGxheWVkLiAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uVHJhaWxpbmc6IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLW1lbnUtaXRlbScsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuWkVSTyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5VTkRFUkxJTkUuUkVTVC5PRkYsXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICBdXCJcbiAgICA6aHJlZj1cImhyZWZcIlxuICAgIDp0YXJnZXQ9XCJpc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwiZWxlbWVudFwiXG4gID5cbiAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cblxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uTEVGVC5BVVRPXVwiXG4gICAgICA6aWNvbj1cImljb25UcmFpbGluZ1wiXG4gICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgdi1pZj1cImljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1tZW51LWl0ZW0ge1xuICAgIGhlaWdodDogNDBweDtcbiAgfVxuXG4gIC50aWRlLW1lbnUtaXRlbTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG48L3N0eWxlPlxuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgQlJFQUtQT0lOVCA9IHtcbiAgU006ICdzbScsXG4gIE1EOiAnbWQnLFxuICBMRzogJ2xnJyxcbiAgWEw6ICd4bCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgTUVESUEgPSB7XG4gIFNNOiA3NjgsXG4gIE1EOiA5OTIsXG4gIExHOiAxMjMyLFxuICBYTDogMTkyMCxcbn07XG5cbmV4cG9ydCB0eXBlIEJyZWFrcG9pbnQgPSAodHlwZW9mIEJSRUFLUE9JTlQpW2tleW9mIHR5cGVvZiBCUkVBS1BPSU5UXTtcbmV4cG9ydCB0eXBlIE1lZGlhID0gKHR5cGVvZiBNRURJQSlba2V5b2YgdHlwZW9mIE1FRElBXTtcbiIsImltcG9ydCB7IG5leHRUaWNrIH0gZnJvbSAndnVlJztcblxuLyoqXG4gKiBEaXJlY3RseSBtb2RpZmllcyB0aGUgYDxib2R5PmAgZWxlbWVudCB0byBhcHBseSBvciByZW1vdmUgc2Nyb2xsIGxvY2suXG4gKiBXaGVuIGBmYWxzZWAgaXMgcHJvdmlkZWQsIGl0IG9ubHkgdW5sb2NrcyBzY3JvbGwgaWYgdGhlcmUgYXJlIG5vIG9wZW5cbiAqIEhUTUwgZGlhbG9nIGVsZW1lbnRzLlxuICovXG5leHBvcnQgY29uc3Qgc2V0U2Nyb2xsTG9jayA9IGFzeW5jIChpc0xvY2tlZDogYm9vbGVhbikgPT4ge1xuICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAvLyBjb25zdCBCT0RZX0xPQ0tfQ0xBU1MgPSAnYm9keS1zY3JvbGwtbG9jayc7XG5cbiAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XG5cbiAgaWYgKGlzTG9ja2VkKSB7XG4gICAgaWYgKCFib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kpIHtcbiAgICAgIGNvbnN0IHNjcm9sbFkgPSB3aW5kb3cuc2Nyb2xsWTtcblxuICAgICAgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZID0gc2Nyb2xsWS50b1N0cmluZygpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYXZlZC1zY3JvbGwteScsIGAke3Njcm9sbFl9cHhgKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ2luc2V0JywgJzAnKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ21hcmdpbi10b3AnLCBgY2FsYygwcHggLSB2YXIoLS1zYXZlZC1zY3JvbGwteSwgMHB4KSlgKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93LXknLCAnc2Nyb2xsJyk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsICdmaXhlZCcpO1xuXG4gICAgICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAgICAgLy8gYm9keS5jbGFzc0xpc3QuYWRkKEJPRFlfTE9DS19DTEFTUyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGF3YWl0IG5leHRUaWNrKCk7XG4gICAgaWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaWFsb2dbb3Blbl0nKSkge1xuICAgICAgY29uc3Qgc2F2ZWRTY3JvbGxZID0gcGFyc2VJbnQoYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZIHx8ICcwJyk7XG5cbiAgICAgIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gICAgICAvLyBib2R5LmNsYXNzTGlzdC5yZW1vdmUoQk9EWV9MT0NLX0NMQVNTKTtcblxuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnaW5zZXQnKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ21hcmdpbi10b3AnKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ292ZXJmbG93LXknKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3Bvc2l0aW9uJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15Jyk7XG5cbiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICAgIGJlaGF2aW9yOiAnYXV0bycsXG4gICAgICAgIHRvcDogc2F2ZWRTY3JvbGxZLFxuICAgICAgfSk7XG5cbiAgICAgIGRlbGV0ZSBib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1k7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgVE9QX0xBWUVSX0lEID0gJ3RpZGUtdG9wLWxheWVyJztcblxuZXhwb3J0IGNvbnN0IGluaXRGYXV4VG9wTGF5ZXIgPSAoKSA9PiB7XG4gIGxldCB0b3BMYXllciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFRPUF9MQVlFUl9JRCk7XG4gIGlmICghdG9wTGF5ZXIpIHtcbiAgICB0b3BMYXllciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRvcExheWVyLmlkID0gVE9QX0xBWUVSX0lEO1xuICAgIHRvcExheWVyLnNldEF0dHJpYnV0ZSgnZGF0YS1jc3Mtc2NvcGUnLCAnJyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b3BMYXllcik7XG4gIH1cbiAgdG9wTGF5ZXIuc3R5bGUuaXNvbGF0aW9uID0gJ2lzb2xhdGUnO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgbW9kYWwgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9yIG9wdGlvbnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVtb2RhbC0tZG9jcykgZm9yIFRpZGVNb2RhbFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgbmV4dFRpY2ssIG9uQmVmb3JlTW91bnQsIG9uQmVmb3JlVW5tb3VudCwgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJSRUFLUE9JTlQgfSBmcm9tICdAL3R5cGVzL0JyZWFrcG9pbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIsIHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqXG4gICAgICogQ2FsbGVkIGJlZm9yZSB0aGUgbW9kYWwgY2xvc2VzLlxuICAgICAqXG4gICAgICogUmV0dXJuIGBmYWxzZWAgdG8gY2FuY2VsIHRoZSBjbG9zZSBldmVudC5cbiAgICAgKi9cbiAgICBiZWZvcmVDbG9zZT86ICgpID0+IHZvaWQgfCBib29sZWFuIHwgUHJvbWlzZTx2b2lkIHwgYm9vbGVhbj47XG4gICAgLyoqIENvbnRyb2xzIGRpc3BsYXkgb2YgdGhlIGJhY2sgYnV0dG9uLiAqL1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gICAgLyoqIENvbnRyb2xzIHdoZXRoZXIgdGhlIG1vZGFsIGNhbiBiZSBkaXNtaXNzZWQgd2l0aCBhIGNsb3NlIGJ1dHRvbiBvciBvdGhlciBnZXN0dXJlcy4gKi9cbiAgICBpc0Rpc21pc3NpYmxlPzogYm9vbGVhbjtcbiAgICAvKiogVGhlIHRpdGxlIHRvIGRpc3BsYXkgaW4gdGhlIG1vZGFsJ3MgaGVhZGVyLiAqL1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIC8qKiBDdXN0b20gb3ZlcnJpZGUgdG8gdGhlIG1vZGFsJ3Mgd2lkdGggY29uc3RyYWludC4gSW5jbHVkZSB1bml0cy4gKi9cbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGJlZm9yZUNsb3NlOiB1bmRlZmluZWQsXG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kYWxDb250ZW50OiBSZWY8SFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG4gIGNvbnN0IG1vZGFsRGlhbG9nOiBSZWY8SFRNTERpYWxvZ0VsZW1lbnQgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG5cbiAgY29uc3QgaXNPcGVuID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBtb2RhbERpYWxvZy52YWx1ZT8uc2hvd01vZGFsKCk7XG4gICAgc2V0U2Nyb2xsTG9jayh0cnVlKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgbW9kYWxEaWFsb2cudmFsdWU/LmNsb3NlKCk7XG4gICAgc2V0U2Nyb2xsTG9jayhmYWxzZSk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsQ29udGVudFRvVG9wID0gKCkgPT4ge1xuICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgIGlmICghbW9kYWxDb250ZW50LnZhbHVlKSByZXR1cm47XG4gICAgICBtb2RhbENvbnRlbnQudmFsdWUuc2Nyb2xsVG9wID0gMDtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBjbG9zZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAocHJvcHMuYmVmb3JlQ2xvc2UpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb3BzLmJlZm9yZUNsb3NlKCk7XG4gICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSkgcmV0dXJuO1xuICAgIH1cblxuICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzRGlzbWlzc2libGUpIGNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXNjYXBlS2V5ZG93biA9IChlOiBFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAocHJvcHMuaXNEaXNtaXNzaWJsZSkgY2xvc2UoKTtcbiAgfTtcblxuICB3YXRjaChpc09wZW4sICgpID0+IHtcbiAgICBpZiAoIW1vZGFsRGlhbG9nLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICAgIHNjcm9sbENvbnRlbnRUb1RvcCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIG9uQmVmb3JlTW91bnQoKCkgPT4ge1xuICAgIGluaXRGYXV4VG9wTGF5ZXIoKTtcbiAgfSk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAoaXNPcGVuLnZhbHVlKSB7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgIH1cbiAgfSk7XG5cbiAgb25CZWZvcmVVbm1vdW50KCgpID0+IHtcbiAgICBpZiAoaXNPcGVuLnZhbHVlKSB7XG4gICAgICBpc09wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSgpO1xuICAgIH1cbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8VGVsZXBvcnQgOnRvPVwiYCMke1RPUF9MQVlFUl9JRH1gXCI+XG4gICAgPGRpYWxvZ1xuICAgICAgOmNsYXNzPVwiWyd0aWRlLW1vZGFsJywgQ1NTLkJHLklOSVRJQUwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLldJRFRILkZVTEwsIENTUy5PVkVSRkxPVy5YWS5ISURERU5dXCJcbiAgICAgIHJlZj1cIm1vZGFsRGlhbG9nXCJcbiAgICAgIDpzdHlsZT1cInsgJy0tbW9kYWwtd2lkdGgnOiB3aWR0aCB9XCJcbiAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgICBAY2xvc2UucHJldmVudFxuICAgICAgQGtleWRvd24uZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5ZG93blwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtbW9kYWwtYm9keScsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5PTkUsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gICAgICAgICAgQ1NTLlNIQURPVy5UT1AsXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgQ1NTLldJRFRILk1BWF9GVUxMLFxuICAgICAgICAgIENTUy53aXRoQnJlYWtwb2ludChbQ1NTLlNIQURPVy5CT1RUT01dLCBCUkVBS1BPSU5ULlNNKSxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxoZWFkZXJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1tb2RhbC1oZWFkZXInLFxuICAgICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICAgIENTUy5CT1JERVIuQk9UVE9NLk9ORSxcbiAgICAgICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlkuT05FLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgICAgQ1NTLlpfSU5ERVguT05FLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiZW1pdCgnYmFjaycpXCJcbiAgICAgICAgICAgIHRpdGxlPVwiQmFja1wiXG4gICAgICAgICAgICB2LWlmPVwiaXNCYWNrQnV0dG9uXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgICAgdi10ZXh0PVwidGl0bGVcIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImNsb3NlXCJcbiAgICAgICAgICAgIHYtaWY9XCJpc0Rpc21pc3NpYmxlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtbW9kYWwtY29udGVudCcsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlkuQVVUTyxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlkuVFdPLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgcmVmPVwibW9kYWxDb250ZW50XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxmb290ZXJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1tb2RhbC1mb290ZXInLFxuICAgICAgICAgICAgQ1NTLkFYSVMxLkVORCxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgICBDU1MuR0FQLlRXTyxcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlkuT05FLFxuICAgICAgICAgICAgQ1NTLlNIQURPVy5UT1AsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cIiRzbG90cy5mb290ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiIC8+XG4gICAgICAgIDwvZm9vdGVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaWFsb2c+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1tb2RhbCB7XG4gICAgLS1tb2RhbC1wYWRkaW5nLXg6IDIwcHg7XG4gICAgbWF4LXdpZHRoOiB1bnNldDtcbiAgICBtYXgtaGVpZ2h0OiB1bnNldDtcbiAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB9XG4gIC50aWRlLW1vZGFsW29wZW5dIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gIH1cbiAgLnRpZGUtbW9kYWw6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gIH1cbiAgQHN0YXJ0aW5nLXN0eWxlIHtcbiAgICAudGlkZS1tb2RhbFtvcGVuXSB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIH1cbiAgICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gICAgfVxuICB9XG4gIC50aWRlLW1vZGFsLWJvZHkge1xuICAgIHdpZHRoOiB2YXIoLS1tb2RhbC13aWR0aCwgNTc2cHgpO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIHZhcigtLXRpZGUtc3BhY2luZy0yKSk7XG4gIH1cblxuICAudGlkZS1tb2RhbC1oZWFkZXIsXG4gIC50aWRlLW1vZGFsLWZvb3RlciB7XG4gICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLW1vZGFsLXBhZGRpbmcteCk7XG4gIH1cbiAgLnRpZGUtbW9kYWwtY29udGVudCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpIHZhcigtLXRpZGUtc2FmZS1mcikgdmFyKC0tbW9kYWwtcGFkZGluZy14KTtcbiAgfVxuICA6d2hlcmUoLnRpZGUtbW9kYWwtY29udGVudCk6ZGVlcCg+IDp3aGVyZSgqKSkge1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICB9XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgfVxuICB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC50aWRlLW1vZGFsIHtcbiAgICAgIC0tbW9kYWwtcGFkZGluZy14OiB2YXIoLS10aWRlLXNwYWNpbmctMik7XG4gICAgfVxuICAgIC50aWRlLW1vZGFsLWJvZHkge1xuICAgICAgbWF4LWhlaWdodDogODUlO1xuICAgICAgYm90dG9tOiBpbml0aWFsO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlQnV0dG9uUGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvblBhZ2luYXRpb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIHBhZ2VUb3RhbDogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgY3VycmVudEluZGV4ID0gZGVmaW5lTW9kZWw8bnVtYmVyPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHBhZ2luYXRpb25CdXR0b25zID0gY29tcHV0ZWQoKCkgPT4gbmV3IEFycmF5KHByb3BzLnBhZ2VUb3RhbCkuZmlsbCgnJykubWFwKChlbXB0eSwgaW5kZXgpID0+IGluZGV4ICsgMSkpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjdXJyZW50SW5kZXgudmFsdWUgPSBpbmRleDtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVQcmV2aW91c0NsaWNrID0gKCkgPT4ge1xuICAgIGN1cnJlbnRJbmRleC52YWx1ZS0tO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU5leHRDbGljayA9ICgpID0+IHtcbiAgICBjdXJyZW50SW5kZXgudmFsdWUrKztcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uXG4gICAgOmNsYXNzPVwiWyd0aWRlLXBhZ2luYXRpb24nLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiXG4gID5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpkaXNhYmxlZD1cImN1cnJlbnRJbmRleCA8PSAxXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVQcmV2aW91c0NsaWNrXCJcbiAgICAvPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgICAgPGxpXG4gICAgICAgIDprZXk9XCJwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgdi1mb3I9XCJwYWdpbmF0aW9uQnV0dG9uIGluIHBhZ2luYXRpb25CdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25QYWdpbmF0aW9uXG4gICAgICAgICAgOmRpc2FibGVkPVwiY3VycmVudEluZGV4ID09PSBwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgICA6bGFiZWw9XCJwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhwYWdpbmF0aW9uQnV0dG9uKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpkaXNhYmxlZD1cImN1cnJlbnRJbmRleCA+PSBwYWdpbmF0aW9uQnV0dG9uc1twYWdpbmF0aW9uQnV0dG9ucy5sZW5ndGggLSAxXVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZU5leHRDbGlja1wiXG4gICAgLz5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cbiIsIi8qKlxuICogQ3VzdG9tIHBvc2l0aW9uaW5nIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3ZpcnR1YWwtZWxlbWVudHNcbiAqL1xuXG5jb25zdCBzaWRlcyA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J107XG5jb25zdCBhbGlnbm1lbnRzID0gWydzdGFydCcsICdlbmQnXTtcbmNvbnN0IHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovc2lkZXMucmVkdWNlKChhY2MsIHNpZGUpID0+IGFjYy5jb25jYXQoc2lkZSwgc2lkZSArIFwiLVwiICsgYWxpZ25tZW50c1swXSwgc2lkZSArIFwiLVwiICsgYWxpZ25tZW50c1sxXSksIFtdKTtcbmNvbnN0IG1pbiA9IE1hdGgubWluO1xuY29uc3QgbWF4ID0gTWF0aC5tYXg7XG5jb25zdCByb3VuZCA9IE1hdGgucm91bmQ7XG5jb25zdCBmbG9vciA9IE1hdGguZmxvb3I7XG5jb25zdCBjcmVhdGVDb29yZHMgPSB2ID0+ICh7XG4gIHg6IHYsXG4gIHk6IHZcbn0pO1xuY29uc3Qgb3Bwb3NpdGVTaWRlTWFwID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuY29uc3Qgb3Bwb3NpdGVBbGlnbm1lbnRNYXAgPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZnVuY3Rpb24gY2xhbXAoc3RhcnQsIHZhbHVlLCBlbmQpIHtcbiAgcmV0dXJuIG1heChzdGFydCwgbWluKHZhbHVlLCBlbmQpKTtcbn1cbmZ1bmN0aW9uIGV2YWx1YXRlKHZhbHVlLCBwYXJhbSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocGFyYW0pIDogdmFsdWU7XG59XG5mdW5jdGlvbiBnZXRTaWRlKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQXhpcyhheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneCcgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBeGlzTGVuZ3RoKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbn1cbmZ1bmN0aW9uIGdldFNpZGVBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5jbHVkZXMoZ2V0U2lkZShwbGFjZW1lbnQpKSA/ICd5JyA6ICd4Jztcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KSB7XG4gIHJldHVybiBnZXRPcHBvc2l0ZUF4aXMoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSk7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpIHtcbiAgaWYgKHJ0bCA9PT0gdm9pZCAwKSB7XG4gICAgcnRsID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYWxpZ25tZW50QXhpcyk7XG4gIGxldCBtYWluQWxpZ25tZW50U2lkZSA9IGFsaWdubWVudEF4aXMgPT09ICd4JyA/IGFsaWdubWVudCA9PT0gKHJ0bCA/ICdlbmQnIDogJ3N0YXJ0JykgPyAncmlnaHQnIDogJ2xlZnQnIDogYWxpZ25tZW50ID09PSAnc3RhcnQnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgaWYgKHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdID4gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXSkge1xuICAgIG1haW5BbGlnbm1lbnRTaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpO1xuICB9XG4gIHJldHVybiBbbWFpbkFsaWdubWVudFNpZGUsIGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKV07XG59XG5mdW5jdGlvbiBnZXRFeHBhbmRlZFBsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGNvbnN0IG9wcG9zaXRlUGxhY2VtZW50ID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgcmV0dXJuIFtnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpLCBvcHBvc2l0ZVBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQob3Bwb3NpdGVQbGFjZW1lbnQpXTtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBhbGlnbm1lbnQgPT4gb3Bwb3NpdGVBbGlnbm1lbnRNYXBbYWxpZ25tZW50XSk7XG59XG5mdW5jdGlvbiBnZXRTaWRlTGlzdChzaWRlLCBpc1N0YXJ0LCBydGwpIHtcbiAgY29uc3QgbHIgPSBbJ2xlZnQnLCAncmlnaHQnXTtcbiAgY29uc3QgcmwgPSBbJ3JpZ2h0JywgJ2xlZnQnXTtcbiAgY29uc3QgdGIgPSBbJ3RvcCcsICdib3R0b20nXTtcbiAgY29uc3QgYnQgPSBbJ2JvdHRvbScsICd0b3AnXTtcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgaWYgKHJ0bCkgcmV0dXJuIGlzU3RhcnQgPyBybCA6IGxyO1xuICAgICAgcmV0dXJuIGlzU3RhcnQgPyBsciA6IHJsO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gdGIgOiBidDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFtdO1xuICB9XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKHBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZGlyZWN0aW9uLCBydGwpIHtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGxldCBsaXN0ID0gZ2V0U2lkZUxpc3QoZ2V0U2lkZShwbGFjZW1lbnQpLCBkaXJlY3Rpb24gPT09ICdzdGFydCcsIHJ0bCk7XG4gIGlmIChhbGlnbm1lbnQpIHtcbiAgICBsaXN0ID0gbGlzdC5tYXAoc2lkZSA9PiBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnQpO1xuICAgIGlmIChmbGlwQWxpZ25tZW50KSB7XG4gICAgICBsaXN0ID0gbGlzdC5jb25jYXQobGlzdC5tYXAoZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpc3Q7XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgc2lkZSA9PiBvcHBvc2l0ZVNpZGVNYXBbc2lkZV0pO1xufVxuZnVuY3Rpb24gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIC4uLnBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4gdHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSA6IHtcbiAgICB0b3A6IHBhZGRpbmcsXG4gICAgcmlnaHQ6IHBhZGRpbmcsXG4gICAgYm90dG9tOiBwYWRkaW5nLFxuICAgIGxlZnQ6IHBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9ID0gcmVjdDtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgdG9wOiB5LFxuICAgIGxlZnQ6IHgsXG4gICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICBib3R0b206IHkgKyBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmV4cG9ydCB7IGFsaWdubWVudHMsIGNsYW1wLCBjcmVhdGVDb29yZHMsIGV2YWx1YXRlLCBleHBhbmRQYWRkaW5nT2JqZWN0LCBmbG9vciwgZ2V0QWxpZ25tZW50LCBnZXRBbGlnbm1lbnRBeGlzLCBnZXRBbGlnbm1lbnRTaWRlcywgZ2V0QXhpc0xlbmd0aCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBeGlzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0UGFkZGluZ09iamVjdCwgZ2V0U2lkZSwgZ2V0U2lkZUF4aXMsIG1heCwgbWluLCBwbGFjZW1lbnRzLCByZWN0VG9DbGllbnRSZWN0LCByb3VuZCwgc2lkZXMgfTtcbiIsImltcG9ydCB7IGdldFNpZGVBeGlzLCBnZXRBbGlnbm1lbnRBeGlzLCBnZXRBeGlzTGVuZ3RoLCBnZXRTaWRlLCBnZXRBbGlnbm1lbnQsIGV2YWx1YXRlLCBnZXRQYWRkaW5nT2JqZWN0LCByZWN0VG9DbGllbnRSZWN0LCBtaW4sIGNsYW1wLCBwbGFjZW1lbnRzLCBnZXRBbGlnbm1lbnRTaWRlcywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlUGxhY2VtZW50LCBnZXRFeHBhbmRlZFBsYWNlbWVudHMsIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMsIHNpZGVzLCBtYXgsIGdldE9wcG9zaXRlQXhpcyB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5leHBvcnQgeyByZWN0VG9DbGllbnRSZWN0IH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzJztcblxuZnVuY3Rpb24gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoX3JlZiwgcGxhY2VtZW50LCBydGwpIHtcbiAgbGV0IHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmdcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IHNpZGVBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50QXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25MZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gc2lkZUF4aXMgPT09ICd5JztcbiAgY29uc3QgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGZsb2F0aW5nLndpZHRoIC8gMjtcbiAgY29uc3QgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBmbG9hdGluZy5oZWlnaHQgLyAyO1xuICBjb25zdCBjb21tb25BbGlnbiA9IHJlZmVyZW5jZVthbGlnbkxlbmd0aF0gLyAyIC0gZmxvYXRpbmdbYWxpZ25MZW5ndGhdIC8gMjtcbiAgbGV0IGNvb3JkcztcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBmbG9hdGluZy5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54IC0gZmxvYXRpbmcud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnlcbiAgICAgIH07XG4gIH1cbiAgc3dpdGNoIChnZXRBbGlnbm1lbnQocGxhY2VtZW50KSkge1xuICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSAtPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdlbmQnOlxuICAgICAgY29vcmRzW2FsaWdubWVudEF4aXNdICs9IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBjb29yZHM7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIGdpdmVuIHJlZmVyZW5jZSBlbGVtZW50LlxuICpcbiAqIFRoaXMgZXhwb3J0IGRvZXMgbm90IGhhdmUgYW55IGBwbGF0Zm9ybWAgaW50ZXJmYWNlIGxvZ2ljLiBZb3Ugd2lsbCBuZWVkIHRvXG4gKiB3cml0ZSBvbmUgZm9yIHRoZSBwbGF0Zm9ybSB5b3UgYXJlIHVzaW5nIEZsb2F0aW5nIFVJIHdpdGguXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IGFzeW5jIChyZWZlcmVuY2UsIGZsb2F0aW5nLCBjb25maWcpID0+IHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICBtaWRkbGV3YXJlID0gW10sXG4gICAgcGxhdGZvcm1cbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgdmFsaWRNaWRkbGV3YXJlID0gbWlkZGxld2FyZS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZmxvYXRpbmcpKTtcbiAgbGV0IHJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmcsXG4gICAgc3RyYXRlZ3lcbiAgfSk7XG4gIGxldCB7XG4gICAgeCxcbiAgICB5XG4gIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgcGxhY2VtZW50LCBydGwpO1xuICBsZXQgc3RhdGVmdWxQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gIGxldCBtaWRkbGV3YXJlRGF0YSA9IHt9O1xuICBsZXQgcmVzZXRDb3VudCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsaWRNaWRkbGV3YXJlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIGZuXG4gICAgfSA9IHZhbGlkTWlkZGxld2FyZVtpXTtcbiAgICBjb25zdCB7XG4gICAgICB4OiBuZXh0WCxcbiAgICAgIHk6IG5leHRZLFxuICAgICAgZGF0YSxcbiAgICAgIHJlc2V0XG4gICAgfSA9IGF3YWl0IGZuKHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgaW5pdGlhbFBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5LFxuICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICBmbG9hdGluZ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHggPSBuZXh0WCAhPSBudWxsID8gbmV4dFggOiB4O1xuICAgIHkgPSBuZXh0WSAhPSBudWxsID8gbmV4dFkgOiB5O1xuICAgIG1pZGRsZXdhcmVEYXRhID0ge1xuICAgICAgLi4ubWlkZGxld2FyZURhdGEsXG4gICAgICBbbmFtZV06IHtcbiAgICAgICAgLi4ubWlkZGxld2FyZURhdGFbbmFtZV0sXG4gICAgICAgIC4uLmRhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChyZXNldCAmJiByZXNldENvdW50IDw9IDUwKSB7XG4gICAgICByZXNldENvdW50Kys7XG4gICAgICBpZiAodHlwZW9mIHJlc2V0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAocmVzZXQucGxhY2VtZW50KSB7XG4gICAgICAgICAgc3RhdGVmdWxQbGFjZW1lbnQgPSByZXNldC5wbGFjZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc2V0LnJlY3RzKSB7XG4gICAgICAgICAgcmVjdHMgPSByZXNldC5yZWN0cyA9PT0gdHJ1ZSA/IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICBmbG9hdGluZyxcbiAgICAgICAgICAgIHN0cmF0ZWd5XG4gICAgICAgICAgfSkgOiByZXNldC5yZWN0cztcbiAgICAgICAgfVxuICAgICAgICAoe1xuICAgICAgICAgIHgsXG4gICAgICAgICAgeVxuICAgICAgICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHN0YXRlZnVsUGxhY2VtZW50LCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGkgPSAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICBzdHJhdGVneSxcbiAgICBtaWRkbGV3YXJlRGF0YVxuICB9O1xufTtcblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRldGVjdE92ZXJmbG93KHN0YXRlLCBvcHRpb25zKSB7XG4gIHZhciBfYXdhaXQkcGxhdGZvcm0kaXNFbGU7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGF0Zm9ybSxcbiAgICByZWN0cyxcbiAgICBlbGVtZW50cyxcbiAgICBzdHJhdGVneVxuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHtcbiAgICBib3VuZGFyeSA9ICdjbGlwcGluZ0FuY2VzdG9ycycsXG4gICAgcm9vdEJvdW5kYXJ5ID0gJ3ZpZXdwb3J0JyxcbiAgICBlbGVtZW50Q29udGV4dCA9ICdmbG9hdGluZycsXG4gICAgYWx0Qm91bmRhcnkgPSBmYWxzZSxcbiAgICBwYWRkaW5nID0gMFxuICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgY29uc3QgYWx0Q29udGV4dCA9IGVsZW1lbnRDb250ZXh0ID09PSAnZmxvYXRpbmcnID8gJ3JlZmVyZW5jZScgOiAnZmxvYXRpbmcnO1xuICBjb25zdCBlbGVtZW50ID0gZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICBjb25zdCBjbGlwcGluZ0NsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KGF3YWl0IHBsYXRmb3JtLmdldENsaXBwaW5nUmVjdCh7XG4gICAgZWxlbWVudDogKChfYXdhaXQkcGxhdGZvcm0kaXNFbGUgPSBhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQoZWxlbWVudCkpKSAhPSBudWxsID8gX2F3YWl0JHBsYXRmb3JtJGlzRWxlIDogdHJ1ZSkgPyBlbGVtZW50IDogZWxlbWVudC5jb250ZXh0RWxlbWVudCB8fCAoYXdhaXQgKHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnRzLmZsb2F0aW5nKSkpLFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9KSk7XG4gIGNvbnN0IHJlY3QgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/IHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3RzLmZsb2F0aW5nLndpZHRoLFxuICAgIGhlaWdodDogcmVjdHMuZmxvYXRpbmcuaGVpZ2h0XG4gIH0gOiByZWN0cy5yZWZlcmVuY2U7XG4gIGNvbnN0IG9mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBvZmZzZXRTY2FsZSA9IChhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkpID8gKGF3YWl0IChwbGF0Zm9ybS5nZXRTY2FsZSA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0U2NhbGUob2Zmc2V0UGFyZW50KSkpIHx8IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfSA6IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfTtcbiAgY29uc3QgZWxlbWVudENsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0ID8gYXdhaXQgcGxhdGZvcm0uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe1xuICAgIGVsZW1lbnRzLFxuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0pIDogcmVjdCk7XG4gIHJldHVybiB7XG4gICAgdG9wOiAoY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wKSAvIG9mZnNldFNjYWxlLnksXG4gICAgYm90dG9tOiAoZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSAvIG9mZnNldFNjYWxlLnksXG4gICAgbGVmdDogKGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCkgLyBvZmZzZXRTY2FsZS54LFxuICAgIHJpZ2h0OiAoZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0KSAvIG9mZnNldFNjYWxlLnhcbiAgfTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBvcHRpb25zID0+ICh7XG4gIG5hbWU6ICdhcnJvdycsXG4gIG9wdGlvbnMsXG4gIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgY29uc3Qge1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBwbGFjZW1lbnQsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHMsXG4gICAgICBtaWRkbGV3YXJlRGF0YVxuICAgIH0gPSBzdGF0ZTtcbiAgICAvLyBTaW5jZSBgZWxlbWVudGAgaXMgcmVxdWlyZWQsIHdlIGRvbid0IFBhcnRpYWw8PiB0aGUgdHlwZS5cbiAgICBjb25zdCB7XG4gICAgICBlbGVtZW50LFxuICAgICAgcGFkZGluZyA9IDBcbiAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpIHx8IHt9O1xuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgeCxcbiAgICAgIHlcbiAgICB9O1xuICAgIGNvbnN0IGF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gICAgY29uc3QgbGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChheGlzKTtcbiAgICBjb25zdCBhcnJvd0RpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnQpO1xuICAgIGNvbnN0IGlzWUF4aXMgPSBheGlzID09PSAneSc7XG4gICAgY29uc3QgbWluUHJvcCA9IGlzWUF4aXMgPyAndG9wJyA6ICdsZWZ0JztcbiAgICBjb25zdCBtYXhQcm9wID0gaXNZQXhpcyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICBjb25zdCBjbGllbnRQcm9wID0gaXNZQXhpcyA/ICdjbGllbnRIZWlnaHQnIDogJ2NsaWVudFdpZHRoJztcbiAgICBjb25zdCBlbmREaWZmID0gcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gKyByZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBjb29yZHNbYXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIGNvbnN0IHN0YXJ0RGlmZiA9IGNvb3Jkc1theGlzXSAtIHJlY3RzLnJlZmVyZW5jZVtheGlzXTtcbiAgICBjb25zdCBhcnJvd09mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50KSk7XG4gICAgbGV0IGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGFycm93T2Zmc2V0UGFyZW50W2NsaWVudFByb3BdIDogMDtcblxuICAgIC8vIERPTSBwbGF0Zm9ybSBjYW4gcmV0dXJuIGB3aW5kb3dgIGFzIHRoZSBgb2Zmc2V0UGFyZW50YC5cbiAgICBpZiAoIWNsaWVudFNpemUgfHwgIShhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQoYXJyb3dPZmZzZXRQYXJlbnQpKSkpIHtcbiAgICAgIGNsaWVudFNpemUgPSBlbGVtZW50cy5mbG9hdGluZ1tjbGllbnRQcm9wXSB8fCByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIH1cbiAgICBjb25zdCBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjtcblxuICAgIC8vIElmIHRoZSBwYWRkaW5nIGlzIGxhcmdlIGVub3VnaCB0aGF0IGl0IGNhdXNlcyB0aGUgYXJyb3cgdG8gbm8gbG9uZ2VyIGJlXG4gICAgLy8gY2VudGVyZWQsIG1vZGlmeSB0aGUgcGFkZGluZyBzbyB0aGF0IGl0IGlzIGNlbnRlcmVkLlxuICAgIGNvbnN0IGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiAtIDE7XG4gICAgY29uc3QgbWluUGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21pblByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcbiAgICBjb25zdCBtYXhQYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWF4UHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuXG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBmbG9hdGluZyBlbGVtZW50IGlmIHRoZSBjZW50ZXJcbiAgICAvLyBwb2ludCBpcyBvdXRzaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50J3MgYm91bmRzLlxuICAgIGNvbnN0IG1pbiQxID0gbWluUGFkZGluZztcbiAgICBjb25zdCBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLSBtYXhQYWRkaW5nO1xuICAgIGNvbnN0IGNlbnRlciA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyICsgY2VudGVyVG9SZWZlcmVuY2U7XG4gICAgY29uc3Qgb2Zmc2V0ID0gY2xhbXAobWluJDEsIGNlbnRlciwgbWF4KTtcblxuICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGwgZW5vdWdoIHRoYXQgdGhlIGFycm93J3MgcGFkZGluZyBjYXVzZXMgaXQgdG9cbiAgICAvLyB0byBwb2ludCB0byBub3RoaW5nIGZvciBhbiBhbGlnbmVkIHBsYWNlbWVudCwgYWRqdXN0IHRoZSBvZmZzZXQgb2YgdGhlXG4gICAgLy8gZmxvYXRpbmcgZWxlbWVudCBpdHNlbGYuIFRvIGVuc3VyZSBgc2hpZnQoKWAgY29udGludWVzIHRvIHRha2UgYWN0aW9uLFxuICAgIC8vIGEgc2luZ2xlIHJlc2V0IGlzIHBlcmZvcm1lZCB3aGVuIHRoaXMgaXMgdHJ1ZS5cbiAgICBjb25zdCBzaG91bGRBZGRPZmZzZXQgPSAhbWlkZGxld2FyZURhdGEuYXJyb3cgJiYgZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT0gbnVsbCAmJiBjZW50ZXIgIT09IG9mZnNldCAmJiByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSAvIDIgLSAoY2VudGVyIDwgbWluJDEgPyBtaW5QYWRkaW5nIDogbWF4UGFkZGluZykgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgPCAwO1xuICAgIGNvbnN0IGFsaWdubWVudE9mZnNldCA9IHNob3VsZEFkZE9mZnNldCA/IGNlbnRlciA8IG1pbiQxID8gY2VudGVyIC0gbWluJDEgOiBjZW50ZXIgLSBtYXggOiAwO1xuICAgIHJldHVybiB7XG4gICAgICBbYXhpc106IGNvb3Jkc1theGlzXSArIGFsaWdubWVudE9mZnNldCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgW2F4aXNdOiBvZmZzZXQsXG4gICAgICAgIGNlbnRlck9mZnNldDogY2VudGVyIC0gb2Zmc2V0IC0gYWxpZ25tZW50T2Zmc2V0LFxuICAgICAgICAuLi4oc2hvdWxkQWRkT2Zmc2V0ICYmIHtcbiAgICAgICAgICBhbGlnbm1lbnRPZmZzZXRcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICByZXNldDogc2hvdWxkQWRkT2Zmc2V0XG4gICAgfTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50LCBhdXRvQWxpZ25tZW50LCBhbGxvd2VkUGxhY2VtZW50cykge1xuICBjb25zdCBhbGxvd2VkUGxhY2VtZW50c1NvcnRlZEJ5QWxpZ25tZW50ID0gYWxpZ25tZW50ID8gWy4uLmFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCksIC4uLmFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT09IGFsaWdubWVudCldIDogYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRTaWRlKHBsYWNlbWVudCkgPT09IHBsYWNlbWVudCk7XG4gIHJldHVybiBhbGxvd2VkUGxhY2VtZW50c1NvcnRlZEJ5QWxpZ25tZW50LmZpbHRlcihwbGFjZW1lbnQgPT4ge1xuICAgIGlmIChhbGlnbm1lbnQpIHtcbiAgICAgIHJldHVybiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSA9PT0gYWxpZ25tZW50IHx8IChhdXRvQWxpZ25tZW50ID8gZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSAhPT0gcGxhY2VtZW50IDogZmFsc2UpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG59XG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXV0b1BsYWNlbWVudCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRhdXRvUCwgX21pZGRsZXdhcmVEYXRhJGF1dG9QMiwgX3BsYWNlbWVudHNUaGF0Rml0T25FO1xuICAgICAgY29uc3Qge1xuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBhbGlnbm1lbnQsXG4gICAgICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cyxcbiAgICAgICAgYXV0b0FsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHMkMSA9IGFsaWdubWVudCAhPT0gdW5kZWZpbmVkIHx8IGFsbG93ZWRQbGFjZW1lbnRzID09PSBwbGFjZW1lbnRzID8gZ2V0UGxhY2VtZW50TGlzdChhbGlnbm1lbnQgfHwgbnVsbCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIDogYWxsb3dlZFBsYWNlbWVudHM7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gKChfbWlkZGxld2FyZURhdGEkYXV0b1AgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QLmluZGV4KSB8fCAwO1xuICAgICAgY29uc3QgY3VycmVudFBsYWNlbWVudCA9IHBsYWNlbWVudHMkMVtjdXJyZW50SW5kZXhdO1xuICAgICAgaWYgKGN1cnJlbnRQbGFjZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBhbGlnbm1lbnRTaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKGN1cnJlbnRQbGFjZW1lbnQsIHJlY3RzLCBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSkpO1xuXG4gICAgICAvLyBNYWtlIGBjb21wdXRlQ29vcmRzYCBzdGFydCBmcm9tIHRoZSByaWdodCBwbGFjZS5cbiAgICAgIGlmIChwbGFjZW1lbnQgIT09IGN1cnJlbnRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRzJDFbMF1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50T3ZlcmZsb3dzID0gW292ZXJmbG93W2dldFNpZGUoY3VycmVudFBsYWNlbWVudCldLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1swXV0sIG92ZXJmbG93W2FsaWdubWVudFNpZGVzWzFdXV07XG4gICAgICBjb25zdCBhbGxPdmVyZmxvd3MgPSBbLi4uKCgoX21pZGRsZXdhcmVEYXRhJGF1dG9QMiA9IG1pZGRsZXdhcmVEYXRhLmF1dG9QbGFjZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXV0b1AyLm92ZXJmbG93cykgfHwgW10pLCB7XG4gICAgICAgIHBsYWNlbWVudDogY3VycmVudFBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzOiBjdXJyZW50T3ZlcmZsb3dzXG4gICAgICB9XTtcbiAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4ICsgMV07XG5cbiAgICAgIC8vIFRoZXJlIGFyZSBtb3JlIHBsYWNlbWVudHMgdG8gY2hlY2suXG4gICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UgPSBhbGxPdmVyZmxvd3MubWFwKGQgPT4ge1xuICAgICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQoZC5wbGFjZW1lbnQpO1xuICAgICAgICByZXR1cm4gW2QucGxhY2VtZW50LCBhbGlnbm1lbnQgJiYgY3Jvc3NBeGlzID9cbiAgICAgICAgLy8gQ2hlY2sgYWxvbmcgdGhlIG1haW5BeGlzIGFuZCBtYWluIGNyb3NzQXhpcyBzaWRlLlxuICAgICAgICBkLm92ZXJmbG93cy5zbGljZSgwLCAyKS5yZWR1Y2UoKGFjYywgdikgPT4gYWNjICsgdiwgMCkgOlxuICAgICAgICAvLyBDaGVjayBvbmx5IHRoZSBtYWluQXhpcy5cbiAgICAgICAgZC5vdmVyZmxvd3NbMF0sIGQub3ZlcmZsb3dzXTtcbiAgICAgIH0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHNUaGF0Rml0T25FYWNoU2lkZSA9IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZS5maWx0ZXIoZCA9PiBkWzJdLnNsaWNlKDAsXG4gICAgICAvLyBBbGlnbmVkIHBsYWNlbWVudHMgc2hvdWxkIG5vdCBjaGVjayB0aGVpciBvcHBvc2l0ZSBjcm9zc0F4aXNcbiAgICAgIC8vIHNpZGUuXG4gICAgICBnZXRBbGlnbm1lbnQoZFswXSkgPyAyIDogMykuZXZlcnkodiA9PiB2IDw9IDApKTtcbiAgICAgIGNvbnN0IHJlc2V0UGxhY2VtZW50ID0gKChfcGxhY2VtZW50c1RoYXRGaXRPbkUgPSBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGVbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfcGxhY2VtZW50c1RoYXRGaXRPbkVbMF0pIHx8IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZVswXVswXTtcbiAgICAgIGlmIChyZXNldFBsYWNlbWVudCAhPT0gcGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRJbmRleCArIDEsXG4gICAgICAgICAgICBvdmVyZmxvd3M6IGFsbE92ZXJmbG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2ZsaXAnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXJyb3csIF9taWRkbGV3YXJlRGF0YSRmbGlwO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgaW5pdGlhbFBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IHRydWUsXG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50czogc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzLFxuICAgICAgICBmYWxsYmFja1N0cmF0ZWd5ID0gJ2Jlc3RGaXQnLFxuICAgICAgICBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uID0gJ25vbmUnLFxuICAgICAgICBmbGlwQWxpZ25tZW50ID0gdHJ1ZSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gICAgICAvLyBJZiBhIHJlc2V0IGJ5IHRoZSBhcnJvdyB3YXMgY2F1c2VkIGR1ZSB0byBhbiBhbGlnbm1lbnQgb2Zmc2V0IGJlaW5nXG4gICAgICAvLyBhZGRlZCwgd2Ugc2hvdWxkIHNraXAgYW55IGxvZ2ljIG5vdyBzaW5jZSBgZmxpcCgpYCBoYXMgYWxyZWFkeSBkb25lIGl0c1xuICAgICAgLy8gd29yay5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjU0OSNpc3N1ZWNvbW1lbnQtMTcxOTYwMTY0M1xuICAgICAgaWYgKChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpbml0aWFsU2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhpbml0aWFsUGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzQmFzZVBsYWNlbWVudCA9IGdldFNpZGUoaW5pdGlhbFBsYWNlbWVudCkgPT09IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gICAgICBjb25zdCBmYWxsYmFja1BsYWNlbWVudHMgPSBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgfHwgKGlzQmFzZVBsYWNlbWVudCB8fCAhZmxpcEFsaWdubWVudCA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChpbml0aWFsUGxhY2VtZW50KV0gOiBnZXRFeHBhbmRlZFBsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgaGFzRmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9IGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gIT09ICdub25lJztcbiAgICAgIGlmICghc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzICYmIGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24pIHtcbiAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzLnB1c2goLi4uZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhpbml0aWFsUGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uLCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsYWNlbWVudHMgPSBbaW5pdGlhbFBsYWNlbWVudCwgLi4uZmFsbGJhY2tQbGFjZW1lbnRzXTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBvdmVyZmxvd3MgPSBbXTtcbiAgICAgIGxldCBvdmVyZmxvd3NEYXRhID0gKChfbWlkZGxld2FyZURhdGEkZmxpcCA9IG1pZGRsZXdhcmVEYXRhLmZsaXApID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkZmxpcC5vdmVyZmxvd3MpIHx8IFtdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbc2lkZV0pO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IHNpZGVzID0gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKTtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbc2lkZXNbMF1dLCBvdmVyZmxvd1tzaWRlc1sxXV0pO1xuICAgICAgfVxuICAgICAgb3ZlcmZsb3dzRGF0YSA9IFsuLi5vdmVyZmxvd3NEYXRhLCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzXG4gICAgICB9XTtcblxuICAgICAgLy8gT25lIG9yIG1vcmUgc2lkZXMgaXMgb3ZlcmZsb3dpbmcuXG4gICAgICBpZiAoIW92ZXJmbG93cy5ldmVyeShzaWRlID0+IHNpZGUgPD0gMCkpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRmbGlwMiwgX292ZXJmbG93c0RhdGEkZmlsdGVyO1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoKChfbWlkZGxld2FyZURhdGEkZmxpcDIgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAyLmluZGV4KSB8fCAwKSArIDE7XG4gICAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzW25leHRJbmRleF07XG4gICAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgICAgLy8gVHJ5IG5leHQgcGxhY2VtZW50IGFuZCByZS1ydW4gdGhlIGxpZmVjeWNsZS5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBpbmRleDogbmV4dEluZGV4LFxuICAgICAgICAgICAgICBvdmVyZmxvd3M6IG92ZXJmbG93c0RhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmlyc3QsIGZpbmQgdGhlIGNhbmRpZGF0ZXMgdGhhdCBmaXQgb24gdGhlIG1haW5BeGlzIHNpZGUgb2Ygb3ZlcmZsb3csXG4gICAgICAgIC8vIHRoZW4gZmluZCB0aGUgcGxhY2VtZW50IHRoYXQgZml0cyB0aGUgYmVzdCBvbiB0aGUgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgbGV0IHJlc2V0UGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlciA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4gZC5vdmVyZmxvd3NbMF0gPD0gMCkuc29ydCgoYSwgYikgPT4gYS5vdmVyZmxvd3NbMV0gLSBiLm92ZXJmbG93c1sxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIucGxhY2VtZW50O1xuXG4gICAgICAgIC8vIE90aGVyd2lzZSBmYWxsYmFjay5cbiAgICAgICAgaWYgKCFyZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHN3aXRjaCAoZmFsbGJhY2tTdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnYmVzdEZpdCc6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YXIgX292ZXJmbG93c0RhdGEkZmlsdGVyMjtcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZW1lbnQgPSAoX292ZXJmbG93c0RhdGEkZmlsdGVyMiA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoZC5wbGFjZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNpZGVBeGlzID09PSBpbml0aWFsU2lkZUF4aXMgfHxcbiAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgYmlhcyB0byB0aGUgYHlgIHNpZGUgYXhpcyBkdWUgdG8gaG9yaXpvbnRhbFxuICAgICAgICAgICAgICAgICAgICAvLyByZWFkaW5nIGRpcmVjdGlvbnMgZmF2b3JpbmcgZ3JlYXRlciB3aWR0aC5cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFNpZGVBeGlzID09PSAneSc7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KS5tYXAoZCA9PiBbZC5wbGFjZW1lbnQsIGQub3ZlcmZsb3dzLmZpbHRlcihvdmVyZmxvdyA9PiBvdmVyZmxvdyA+IDApLnJlZHVjZSgoYWNjLCBvdmVyZmxvdykgPT4gYWNjICsgb3ZlcmZsb3csIDApXSkuc29ydCgoYSwgYikgPT4gYVsxXSAtIGJbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyMlswXTtcbiAgICAgICAgICAgICAgICBpZiAocGxhY2VtZW50KSB7XG4gICAgICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2luaXRpYWxQbGFjZW1lbnQnOlxuICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGxhY2VtZW50ICE9PSByZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0KSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiBvdmVyZmxvdy50b3AgLSByZWN0LmhlaWdodCxcbiAgICByaWdodDogb3ZlcmZsb3cucmlnaHQgLSByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogb3ZlcmZsb3cuYm90dG9tIC0gcmVjdC5oZWlnaHQsXG4gICAgbGVmdDogb3ZlcmZsb3cubGVmdCAtIHJlY3Qud2lkdGhcbiAgfTtcbn1cbmZ1bmN0aW9uIGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvdmVyZmxvdykge1xuICByZXR1cm4gc2lkZXMuc29tZShzaWRlID0+IG92ZXJmbG93W3NpZGVdID49IDApO1xufVxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIGhpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW4gYXBwbGljYWJsZSBzaXR1YXRpb25zLCBzdWNoIGFzXG4gKiB3aGVuIGl0IGlzIG5vdCBpbiB0aGUgc2FtZSBjbGlwcGluZyBjb250ZXh0IGFzIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9oaWRlXG4gKi9cbmNvbnN0IGhpZGUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2hpZGUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3RyYXRlZ3kgPSAncmVmZXJlbmNlSGlkZGVuJyxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgc3dpdGNoIChzdHJhdGVneSkge1xuICAgICAgICBjYXNlICdyZWZlcmVuY2VIaWRkZW4nOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICBlbGVtZW50Q29udGV4dDogJ3JlZmVyZW5jZSdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5yZWZlcmVuY2UpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbk9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlSGlkZGVuOiBpc0FueVNpZGVGdWxseUNsaXBwZWQob2Zmc2V0cylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2VzY2FwZWQnOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3RzLmZsb2F0aW5nKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBlc2NhcGVkT2Zmc2V0czogb2Zmc2V0cyxcbiAgICAgICAgICAgICAgICBlc2NhcGVkOiBpc0FueVNpZGVGdWxseUNsaXBwZWQob2Zmc2V0cylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ1JlY3QocmVjdHMpIHtcbiAgY29uc3QgbWluWCA9IG1pbiguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LmxlZnQpKTtcbiAgY29uc3QgbWluWSA9IG1pbiguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnRvcCkpO1xuICBjb25zdCBtYXhYID0gbWF4KC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgY29uc3QgbWF4WSA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LmJvdHRvbSkpO1xuICByZXR1cm4ge1xuICAgIHg6IG1pblgsXG4gICAgeTogbWluWSxcbiAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgaGVpZ2h0OiBtYXhZIC0gbWluWVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0UmVjdHNCeUxpbmUocmVjdHMpIHtcbiAgY29uc3Qgc29ydGVkUmVjdHMgPSByZWN0cy5zbGljZSgpLnNvcnQoKGEsIGIpID0+IGEueSAtIGIueSk7XG4gIGNvbnN0IGdyb3VwcyA9IFtdO1xuICBsZXQgcHJldlJlY3QgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNvcnRlZFJlY3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcmVjdCA9IHNvcnRlZFJlY3RzW2ldO1xuICAgIGlmICghcHJldlJlY3QgfHwgcmVjdC55IC0gcHJldlJlY3QueSA+IHByZXZSZWN0LmhlaWdodCAvIDIpIHtcbiAgICAgIGdyb3Vwcy5wdXNoKFtyZWN0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3Vwc1tncm91cHMubGVuZ3RoIC0gMV0ucHVzaChyZWN0KTtcbiAgICB9XG4gICAgcHJldlJlY3QgPSByZWN0O1xuICB9XG4gIHJldHVybiBncm91cHMubWFwKHJlY3QgPT4gcmVjdFRvQ2xpZW50UmVjdChnZXRCb3VuZGluZ1JlY3QocmVjdCkpKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnaW5saW5lJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgZWxlbWVudHMsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIC8vIEEgTW91c2VFdmVudCdzIGNsaWVudHtYLFl9IGNvb3JkcyBjYW4gYmUgdXAgdG8gMiBwaXhlbHMgb2ZmIGFcbiAgICAgIC8vIENsaWVudFJlY3QncyBib3VuZHMsIGRlc3BpdGUgdGhlIGV2ZW50IGxpc3RlbmVyIGJlaW5nIHRyaWdnZXJlZC4gQVxuICAgICAgLy8gcGFkZGluZyBvZiAyIHNlZW1zIHRvIGhhbmRsZSB0aGlzIGlzc3VlLlxuICAgICAgY29uc3Qge1xuICAgICAgICBwYWRkaW5nID0gMixcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG5hdGl2ZUNsaWVudFJlY3RzID0gQXJyYXkuZnJvbSgoYXdhaXQgKHBsYXRmb3JtLmdldENsaWVudFJlY3RzID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyhlbGVtZW50cy5yZWZlcmVuY2UpKSkgfHwgW10pO1xuICAgICAgY29uc3QgY2xpZW50UmVjdHMgPSBnZXRSZWN0c0J5TGluZShuYXRpdmVDbGllbnRSZWN0cyk7XG4gICAgICBjb25zdCBmYWxsYmFjayA9IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KG5hdGl2ZUNsaWVudFJlY3RzKSk7XG4gICAgICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgICAgIGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIHR3byByZWN0cyBhbmQgdGhleSBhcmUgZGlzam9pbmVkLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID09PSAyICYmIGNsaWVudFJlY3RzWzBdLmxlZnQgPiBjbGllbnRSZWN0c1sxXS5yaWdodCAmJiB4ICE9IG51bGwgJiYgeSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgcmVjdCBpbiB3aGljaCB0aGUgcG9pbnQgaXMgZnVsbHkgaW5zaWRlLlxuICAgICAgICAgIHJldHVybiBjbGllbnRSZWN0cy5maW5kKHJlY3QgPT4geCA+IHJlY3QubGVmdCAtIHBhZGRpbmdPYmplY3QubGVmdCAmJiB4IDwgcmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHQgJiYgeSA+IHJlY3QudG9wIC0gcGFkZGluZ09iamVjdC50b3AgJiYgeSA8IHJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20pIHx8IGZhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlcmUgYXJlIDIgb3IgbW9yZSBjb25uZWN0ZWQgcmVjdHMuXG4gICAgICAgIGlmIChjbGllbnRSZWN0cy5sZW5ndGggPj0gMikge1xuICAgICAgICAgIGlmIChnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneScpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0UmVjdCA9IGNsaWVudFJlY3RzWzBdO1xuICAgICAgICAgICAgY29uc3QgbGFzdFJlY3QgPSBjbGllbnRSZWN0c1tjbGllbnRSZWN0cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IGlzVG9wID0gZ2V0U2lkZShwbGFjZW1lbnQpID09PSAndG9wJztcbiAgICAgICAgICAgIGNvbnN0IHRvcCA9IGZpcnN0UmVjdC50b3A7XG4gICAgICAgICAgICBjb25zdCBib3R0b20gPSBsYXN0UmVjdC5ib3R0b207XG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gaXNUb3AgPyBmaXJzdFJlY3QubGVmdCA6IGxhc3RSZWN0LmxlZnQ7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IGlzVG9wID8gZmlyc3RSZWN0LnJpZ2h0IDogbGFzdFJlY3QucmlnaHQ7XG4gICAgICAgICAgICBjb25zdCB3aWR0aCA9IHJpZ2h0IC0gbGVmdDtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpc0xlZnRTaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpID09PSAnbGVmdCc7XG4gICAgICAgICAgY29uc3QgbWF4UmlnaHQgPSBtYXgoLi4uY2xpZW50UmVjdHMubWFwKHJlY3QgPT4gcmVjdC5yaWdodCkpO1xuICAgICAgICAgIGNvbnN0IG1pbkxlZnQgPSBtaW4oLi4uY2xpZW50UmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gICAgICAgICAgY29uc3QgbWVhc3VyZVJlY3RzID0gY2xpZW50UmVjdHMuZmlsdGVyKHJlY3QgPT4gaXNMZWZ0U2lkZSA/IHJlY3QubGVmdCA9PT0gbWluTGVmdCA6IHJlY3QucmlnaHQgPT09IG1heFJpZ2h0KTtcbiAgICAgICAgICBjb25zdCB0b3AgPSBtZWFzdXJlUmVjdHNbMF0udG9wO1xuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IG1lYXN1cmVSZWN0c1ttZWFzdXJlUmVjdHMubGVuZ3RoIC0gMV0uYm90dG9tO1xuICAgICAgICAgIGNvbnN0IGxlZnQgPSBtaW5MZWZ0O1xuICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gbWF4UmlnaHQ7XG4gICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgY29uc3QgaGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICBib3R0b20sXG4gICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICB5OiB0b3BcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc2V0UmVjdHMgPSBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICByZWZlcmVuY2U6IHtcbiAgICAgICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3RcbiAgICAgICAgfSxcbiAgICAgICAgZmxvYXRpbmc6IGVsZW1lbnRzLmZsb2F0aW5nLFxuICAgICAgICBzdHJhdGVneVxuICAgICAgfSk7XG4gICAgICBpZiAocmVjdHMucmVmZXJlbmNlLnggIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLnggfHwgcmVjdHMucmVmZXJlbmNlLnkgIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLnkgfHwgcmVjdHMucmVmZXJlbmNlLndpZHRoICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS53aWR0aCB8fCByZWN0cy5yZWZlcmVuY2UuaGVpZ2h0ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHJlc2V0UmVjdHNcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuLy8gRm9yIHR5cGUgYmFja3dhcmRzLWNvbXBhdGliaWxpdHksIHRoZSBgT2Zmc2V0T3B0aW9uc2AgdHlwZSB3YXMgYWxzb1xuLy8gRGVyaXZhYmxlLlxuXG5hc3luYyBmdW5jdGlvbiBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgcGxhY2VtZW50LFxuICAgIHBsYXRmb3JtLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBzdGF0ZTtcbiAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5JztcbiAgY29uc3QgbWFpbkF4aXNNdWx0aSA9IFsnbGVmdCcsICd0b3AnXS5pbmNsdWRlcyhzaWRlKSA/IC0xIDogMTtcbiAgY29uc3QgY3Jvc3NBeGlzTXVsdGkgPSBydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMTtcbiAgY29uc3QgcmF3VmFsdWUgPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICBsZXQge1xuICAgIG1haW5BeGlzLFxuICAgIGNyb3NzQXhpcyxcbiAgICBhbGlnbm1lbnRBeGlzXG4gIH0gPSB0eXBlb2YgcmF3VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZSxcbiAgICBjcm9zc0F4aXM6IDAsXG4gICAgYWxpZ25tZW50QXhpczogbnVsbFxuICB9IDoge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZS5tYWluQXhpcyB8fCAwLFxuICAgIGNyb3NzQXhpczogcmF3VmFsdWUuY3Jvc3NBeGlzIHx8IDAsXG4gICAgYWxpZ25tZW50QXhpczogcmF3VmFsdWUuYWxpZ25tZW50QXhpc1xuICB9O1xuICBpZiAoYWxpZ25tZW50ICYmIHR5cGVvZiBhbGlnbm1lbnRBeGlzID09PSAnbnVtYmVyJykge1xuICAgIGNyb3NzQXhpcyA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyBhbGlnbm1lbnRBeGlzICogLTEgOiBhbGlnbm1lbnRBeGlzO1xuICB9XG4gIHJldHVybiBpc1ZlcnRpY2FsID8ge1xuICAgIHg6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpLFxuICAgIHk6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aVxuICB9IDoge1xuICAgIHg6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aSxcbiAgICB5OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aVxuICB9O1xufVxuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IDA7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnb2Zmc2V0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJG9mZnNlLCBfbWlkZGxld2FyZURhdGEkYXJyb3c7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IGRpZmZDb29yZHMgPSBhd2FpdCBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucyk7XG5cbiAgICAgIC8vIElmIHRoZSBwbGFjZW1lbnQgaXMgdGhlIHNhbWUgYW5kIHRoZSBhcnJvdyBjYXVzZWQgYW4gYWxpZ25tZW50IG9mZnNldFxuICAgICAgLy8gdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNoYW5nZSB0aGUgcG9zaXRpb25pbmcgY29vcmRpbmF0ZXMuXG4gICAgICBpZiAocGxhY2VtZW50ID09PSAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZS5wbGFjZW1lbnQpICYmIChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggKyBkaWZmQ29vcmRzLngsXG4gICAgICAgIHk6IHkgKyBkaWZmQ29vcmRzLnksXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5kaWZmQ29vcmRzLFxuICAgICAgICAgIHBsYWNlbWVudFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2hpZnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBsaW1pdGVyID0ge1xuICAgICAgICAgIGZuOiBfcmVmID0+IHtcbiAgICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH0gPSBfcmVmO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRTaWRlQXhpcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRPcHBvc2l0ZUF4aXMoY3Jvc3NBeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IG1haW5BeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IG1haW5BeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IG1haW5BeGlzQ29vcmQgKyBvdmVyZmxvd1ttaW5TaWRlXTtcbiAgICAgICAgY29uc3QgbWF4ID0gbWFpbkF4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBtYWluQXhpc0Nvb3JkID0gY2xhbXAobWluLCBtYWluQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IGNyb3NzQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IGNyb3NzQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gY2xhbXAobWluLCBjcm9zc0F4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxpbWl0ZWRDb29yZHMgPSBsaW1pdGVyLmZuKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5saW1pdGVkQ29vcmRzLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgeDogbGltaXRlZENvb3Jkcy54IC0geCxcbiAgICAgICAgICB5OiBsaW1pdGVkQ29vcmRzLnkgLSB5LFxuICAgICAgICAgIGVuYWJsZWQ6IHtcbiAgICAgICAgICAgIFttYWluQXhpc106IGNoZWNrTWFpbkF4aXMsXG4gICAgICAgICAgICBbY3Jvc3NBeGlzXTogY2hlY2tDcm9zc0F4aXNcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgb3B0aW9ucyxcbiAgICBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBtaWRkbGV3YXJlRGF0YVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBvZmZzZXQgPSAwLFxuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGNvbnN0IHJhd09mZnNldCA9IGV2YWx1YXRlKG9mZnNldCwgc3RhdGUpO1xuICAgICAgY29uc3QgY29tcHV0ZWRPZmZzZXQgPSB0eXBlb2YgcmF3T2Zmc2V0ID09PSAnbnVtYmVyJyA/IHtcbiAgICAgICAgbWFpbkF4aXM6IHJhd09mZnNldCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwXG4gICAgICB9IDoge1xuICAgICAgICBtYWluQXhpczogMCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwLFxuICAgICAgICAuLi5yYXdPZmZzZXRcbiAgICAgIH07XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW21haW5BeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dIC0gY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGlmIChtYWluQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBtYWluQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAobWFpbkF4aXNDb29yZCA+IGxpbWl0TWF4KSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJG9mZnNlMjtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICAgICAgY29uc3QgaXNPcmlnaW5TaWRlID0gWyd0b3AnLCAnbGVmdCddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWluID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgKGlzT3JpZ2luU2lkZSA/ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlW2Nyb3NzQXhpc10pIHx8IDAgOiAwKSArIChpc09yaWdpblNpZGUgPyAwIDogY29tcHV0ZWRPZmZzZXQuY3Jvc3NBeGlzKTtcbiAgICAgICAgY29uc3QgbGltaXRNYXggPSByZWN0cy5yZWZlcmVuY2VbY3Jvc3NBeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dICsgKGlzT3JpZ2luU2lkZSA/IDAgOiAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZTIgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UyW2Nyb3NzQXhpc10pIHx8IDApIC0gKGlzT3JpZ2luU2lkZSA/IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyA6IDApO1xuICAgICAgICBpZiAoY3Jvc3NBeGlzQ29vcmQgPCBsaW1pdE1pbikge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAoY3Jvc3NBeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNYXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NpemUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfc3RhdGUkbWlkZGxld2FyZURhdGEsIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YTI7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBhcHBseSA9ICgpID0+IHt9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNZQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5JztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodFxuICAgICAgfSA9IHJlY3RzLmZsb2F0aW5nO1xuICAgICAgbGV0IGhlaWdodFNpZGU7XG4gICAgICBsZXQgd2lkdGhTaWRlO1xuICAgICAgaWYgKHNpZGUgPT09ICd0b3AnIHx8IHNpZGUgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGhlaWdodFNpZGUgPSBzaWRlO1xuICAgICAgICB3aWR0aFNpZGUgPSBhbGlnbm1lbnQgPT09ICgoYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKSA/ICdzdGFydCcgOiAnZW5kJykgPyAnbGVmdCcgOiAncmlnaHQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGhTaWRlID0gc2lkZTtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyAndG9wJyA6ICdib3R0b20nO1xuICAgICAgfVxuICAgICAgY29uc3QgbWF4aW11bUNsaXBwaW5nSGVpZ2h0ID0gaGVpZ2h0IC0gb3ZlcmZsb3cudG9wIC0gb3ZlcmZsb3cuYm90dG9tO1xuICAgICAgY29uc3QgbWF4aW11bUNsaXBwaW5nV2lkdGggPSB3aWR0aCAtIG92ZXJmbG93LmxlZnQgLSBvdmVyZmxvdy5yaWdodDtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0ID0gbWluKGhlaWdodCAtIG92ZXJmbG93W2hlaWdodFNpZGVdLCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVXaWR0aCA9IG1pbih3aWR0aCAtIG92ZXJmbG93W3dpZHRoU2lkZV0sIG1heGltdW1DbGlwcGluZ1dpZHRoKTtcbiAgICAgIGNvbnN0IG5vU2hpZnQgPSAhc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQ7XG4gICAgICBsZXQgYXZhaWxhYmxlSGVpZ2h0ID0gb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQ7XG4gICAgICBsZXQgYXZhaWxhYmxlV2lkdGggPSBvdmVyZmxvd0F2YWlsYWJsZVdpZHRoO1xuICAgICAgaWYgKChfc3RhdGUkbWlkZGxld2FyZURhdGEgPSBzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdCkgIT0gbnVsbCAmJiBfc3RhdGUkbWlkZGxld2FyZURhdGEuZW5hYmxlZC54KSB7XG4gICAgICAgIGF2YWlsYWJsZVdpZHRoID0gbWF4aW11bUNsaXBwaW5nV2lkdGg7XG4gICAgICB9XG4gICAgICBpZiAoKF9zdGF0ZSRtaWRkbGV3YXJlRGF0YTIgPSBzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdCkgIT0gbnVsbCAmJiBfc3RhdGUkbWlkZGxld2FyZURhdGEyLmVuYWJsZWQueSkge1xuICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQ7XG4gICAgICB9XG4gICAgICBpZiAobm9TaGlmdCAmJiAhYWxpZ25tZW50KSB7XG4gICAgICAgIGNvbnN0IHhNaW4gPSBtYXgob3ZlcmZsb3cubGVmdCwgMCk7XG4gICAgICAgIGNvbnN0IHhNYXggPSBtYXgob3ZlcmZsb3cucmlnaHQsIDApO1xuICAgICAgICBjb25zdCB5TWluID0gbWF4KG92ZXJmbG93LnRvcCwgMCk7XG4gICAgICAgIGNvbnN0IHlNYXggPSBtYXgob3ZlcmZsb3cuYm90dG9tLCAwKTtcbiAgICAgICAgaWYgKGlzWUF4aXMpIHtcbiAgICAgICAgICBhdmFpbGFibGVXaWR0aCA9IHdpZHRoIC0gMiAqICh4TWluICE9PSAwIHx8IHhNYXggIT09IDAgPyB4TWluICsgeE1heCA6IG1heChvdmVyZmxvdy5sZWZ0LCBvdmVyZmxvdy5yaWdodCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGhlaWdodCAtIDIgKiAoeU1pbiAhPT0gMCB8fCB5TWF4ICE9PSAwID8geU1pbiArIHlNYXggOiBtYXgob3ZlcmZsb3cudG9wLCBvdmVyZmxvdy5ib3R0b20pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgYXBwbHkoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYXZhaWxhYmxlV2lkdGgsXG4gICAgICAgIGF2YWlsYWJsZUhlaWdodFxuICAgICAgfSk7XG4gICAgICBjb25zdCBuZXh0RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudHMuZmxvYXRpbmcpO1xuICAgICAgaWYgKHdpZHRoICE9PSBuZXh0RGltZW5zaW9ucy53aWR0aCB8fCBoZWlnaHQgIT09IG5leHREaW1lbnNpb25zLmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICByZWN0czogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHNoaWZ0LCBzaXplIH07XG4iLCJmdW5jdGlvbiBoYXNXaW5kb3coKSB7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbn1cbmZ1bmN0aW9uIGdldE5vZGVOYW1lKG5vZGUpIHtcbiAgaWYgKGlzTm9kZShub2RlKSkge1xuICAgIHJldHVybiAobm9kZS5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuICAvLyBNb2NrZWQgbm9kZXMgaW4gdGVzdGluZyBlbnZpcm9ubWVudHMgbWF5IG5vdCBiZSBpbnN0YW5jZXMgb2YgTm9kZS4gQnlcbiAgLy8gcmV0dXJuaW5nIGAjZG9jdW1lbnRgIGFuIGluZmluaXRlIGxvb3Agd29uJ3Qgb2NjdXIuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjMxN1xuICByZXR1cm4gJyNkb2N1bWVudCc7XG59XG5mdW5jdGlvbiBnZXRXaW5kb3cobm9kZSkge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgcmV0dXJuIChub2RlID09IG51bGwgfHwgKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB8fCB3aW5kb3c7XG59XG5mdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQobm9kZSkge1xuICB2YXIgX3JlZjtcbiAgcmV0dXJuIChfcmVmID0gKGlzTm9kZShub2RlKSA/IG5vZGUub3duZXJEb2N1bWVudCA6IG5vZGUuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZWYuZG9jdW1lbnRFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNOb2RlKHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgTm9kZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuTm9kZTtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkhUTUxFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNTaGFkb3dSb290KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkgfHwgdHlwZW9mIFNoYWRvd1Jvb3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLlNoYWRvd1Jvb3Q7XG59XG5mdW5jdGlvbiBpc092ZXJmbG93RWxlbWVudChlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICBvdmVyZmxvdyxcbiAgICBvdmVyZmxvd1gsXG4gICAgb3ZlcmZsb3dZLFxuICAgIGRpc3BsYXlcbiAgfSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW58Y2xpcC8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCkgJiYgIVsnaW5saW5lJywgJ2NvbnRlbnRzJ10uaW5jbHVkZXMoZGlzcGxheSk7XG59XG5mdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpO1xufVxuZnVuY3Rpb24gaXNUb3BMYXllcihlbGVtZW50KSB7XG4gIHJldHVybiBbJzpwb3BvdmVyLW9wZW4nLCAnOm1vZGFsJ10uc29tZShzZWxlY3RvciA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBlbGVtZW50Lm1hdGNoZXMoc2VsZWN0b3IpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gaXNDb250YWluaW5nQmxvY2soZWxlbWVudE9yQ3NzKSB7XG4gIGNvbnN0IHdlYmtpdCA9IGlzV2ViS2l0KCk7XG4gIGNvbnN0IGNzcyA9IGlzRWxlbWVudChlbGVtZW50T3JDc3MpID8gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50T3JDc3MpIDogZWxlbWVudE9yQ3NzO1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdHJhbnNmb3Jtcy0yLyNpbmRpdmlkdWFsLXRyYW5zZm9ybXNcbiAgcmV0dXJuIFsndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZScsICdzY2FsZScsICdyb3RhdGUnLCAncGVyc3BlY3RpdmUnXS5zb21lKHZhbHVlID0+IGNzc1t2YWx1ZV0gPyBjc3NbdmFsdWVdICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgKGNzcy5jb250YWluZXJUeXBlID8gY3NzLmNvbnRhaW5lclR5cGUgIT09ICdub3JtYWwnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5iYWNrZHJvcEZpbHRlciA/IGNzcy5iYWNrZHJvcEZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5maWx0ZXIgPyBjc3MuZmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgWyd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlJywgJ3NjYWxlJywgJ3JvdGF0ZScsICdwZXJzcGVjdGl2ZScsICdmaWx0ZXInXS5zb21lKHZhbHVlID0+IChjc3Mud2lsbENoYW5nZSB8fCAnJykuaW5jbHVkZXModmFsdWUpKSB8fCBbJ3BhaW50JywgJ2xheW91dCcsICdzdHJpY3QnLCAnY29udGVudCddLnNvbWUodmFsdWUgPT4gKGNzcy5jb250YWluIHx8ICcnKS5pbmNsdWRlcyh2YWx1ZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgbGV0IGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgaWYgKGlzQ29udGFpbmluZ0Jsb2NrKGN1cnJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSBpZiAoaXNUb3BMYXllcihjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoY3VycmVudE5vZGUpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gaXNXZWJLaXQoKSB7XG4gIGlmICh0eXBlb2YgQ1NTID09PSAndW5kZWZpbmVkJyB8fCAhQ1NTLnN1cHBvcnRzKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBDU1Muc3VwcG9ydHMoJy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyJywgJ25vbmUnKTtcbn1cbmZ1bmN0aW9uIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShub2RlKSB7XG4gIHJldHVybiBbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShub2RlKSk7XG59XG5mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufVxuZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KSB7XG4gIGlmIChpc0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbFgsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhcmVudE5vZGUobm9kZSkge1xuICBpZiAoZ2V0Tm9kZU5hbWUobm9kZSkgPT09ICdodG1sJykge1xuICAgIHJldHVybiBub2RlO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9XG4gIC8vIFN0ZXAgaW50byB0aGUgc2hhZG93IERPTSBvZiB0aGUgcGFyZW50IG9mIGEgc2xvdHRlZCBub2RlLlxuICBub2RlLmFzc2lnbmVkU2xvdCB8fFxuICAvLyBET00gRWxlbWVudCBkZXRlY3RlZC5cbiAgbm9kZS5wYXJlbnROb2RlIHx8XG4gIC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWQuXG4gIGlzU2hhZG93Um9vdChub2RlKSAmJiBub2RlLmhvc3QgfHxcbiAgLy8gRmFsbGJhY2suXG4gIGdldERvY3VtZW50RWxlbWVudChub2RlKTtcbiAgcmV0dXJuIGlzU2hhZG93Um9vdChyZXN1bHQpID8gcmVzdWx0Lmhvc3QgOiByZXN1bHQ7XG59XG5mdW5jdGlvbiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKG5vZGUpO1xuICBpZiAoaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudCA/IG5vZGUub3duZXJEb2N1bWVudC5ib2R5IDogbm9kZS5ib2R5O1xuICB9XG4gIGlmIChpc0hUTUxFbGVtZW50KHBhcmVudE5vZGUpICYmIGlzT3ZlcmZsb3dFbGVtZW50KHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIHBhcmVudE5vZGU7XG4gIH1cbiAgcmV0dXJuIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKHBhcmVudE5vZGUpO1xufVxuZnVuY3Rpb24gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMobm9kZSwgbGlzdCwgdHJhdmVyc2VJZnJhbWVzKSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50MjtcbiAgaWYgKGxpc3QgPT09IHZvaWQgMCkge1xuICAgIGxpc3QgPSBbXTtcbiAgfVxuICBpZiAodHJhdmVyc2VJZnJhbWVzID09PSB2b2lkIDApIHtcbiAgICB0cmF2ZXJzZUlmcmFtZXMgPSB0cnVlO1xuICB9XG4gIGNvbnN0IHNjcm9sbGFibGVBbmNlc3RvciA9IGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKG5vZGUpO1xuICBjb25zdCBpc0JvZHkgPSBzY3JvbGxhYmxlQW5jZXN0b3IgPT09ICgoX25vZGUkb3duZXJEb2N1bWVudDIgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50Mi5ib2R5KTtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KHNjcm9sbGFibGVBbmNlc3Rvcik7XG4gIGlmIChpc0JvZHkpIHtcbiAgICBjb25zdCBmcmFtZUVsZW1lbnQgPSBnZXRGcmFtZUVsZW1lbnQod2luKTtcbiAgICByZXR1cm4gbGlzdC5jb25jYXQod2luLCB3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzT3ZlcmZsb3dFbGVtZW50KHNjcm9sbGFibGVBbmNlc3RvcikgPyBzY3JvbGxhYmxlQW5jZXN0b3IgOiBbXSwgZnJhbWVFbGVtZW50ICYmIHRyYXZlcnNlSWZyYW1lcyA/IGdldE92ZXJmbG93QW5jZXN0b3JzKGZyYW1lRWxlbWVudCkgOiBbXSk7XG4gIH1cbiAgcmV0dXJuIGxpc3QuY29uY2F0KHNjcm9sbGFibGVBbmNlc3RvciwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoc2Nyb2xsYWJsZUFuY2VzdG9yLCBbXSwgdHJhdmVyc2VJZnJhbWVzKSk7XG59XG5mdW5jdGlvbiBnZXRGcmFtZUVsZW1lbnQod2luKSB7XG4gIHJldHVybiB3aW4ucGFyZW50ICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZih3aW4ucGFyZW50KSA/IHdpbi5mcmFtZUVsZW1lbnQgOiBudWxsO1xufVxuXG5leHBvcnQgeyBnZXRDb21wdXRlZFN0eWxlLCBnZXRDb250YWluaW5nQmxvY2ssIGdldERvY3VtZW50RWxlbWVudCwgZ2V0RnJhbWVFbGVtZW50LCBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvciwgZ2V0Tm9kZU5hbWUsIGdldE5vZGVTY3JvbGwsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBnZXRQYXJlbnROb2RlLCBnZXRXaW5kb3csIGlzQ29udGFpbmluZ0Jsb2NrLCBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQsIGlzTGFzdFRyYXZlcnNhYmxlTm9kZSwgaXNOb2RlLCBpc092ZXJmbG93RWxlbWVudCwgaXNTaGFkb3dSb290LCBpc1RhYmxlRWxlbWVudCwgaXNUb3BMYXllciwgaXNXZWJLaXQgfTtcbiIsImltcG9ydCB7IHJlY3RUb0NsaWVudFJlY3QsIGRldGVjdE92ZXJmbG93IGFzIGRldGVjdE92ZXJmbG93JDEsIG9mZnNldCBhcyBvZmZzZXQkMSwgYXV0b1BsYWNlbWVudCBhcyBhdXRvUGxhY2VtZW50JDEsIHNoaWZ0IGFzIHNoaWZ0JDEsIGZsaXAgYXMgZmxpcCQxLCBzaXplIGFzIHNpemUkMSwgaGlkZSBhcyBoaWRlJDEsIGFycm93IGFzIGFycm93JDEsIGlubGluZSBhcyBpbmxpbmUkMSwgbGltaXRTaGlmdCBhcyBsaW1pdFNoaWZ0JDEsIGNvbXB1dGVQb3NpdGlvbiBhcyBjb21wdXRlUG9zaXRpb24kMSB9IGZyb20gJ0BmbG9hdGluZy11aS9jb3JlJztcbmltcG9ydCB7IHJvdW5kLCBjcmVhdGVDb29yZHMsIG1heCwgbWluLCBmbG9vciB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5pbXBvcnQgeyBnZXRDb21wdXRlZFN0eWxlLCBpc0hUTUxFbGVtZW50LCBpc0VsZW1lbnQsIGdldFdpbmRvdywgaXNXZWJLaXQsIGdldEZyYW1lRWxlbWVudCwgZ2V0Tm9kZVNjcm9sbCwgZ2V0RG9jdW1lbnRFbGVtZW50LCBpc1RvcExheWVyLCBnZXROb2RlTmFtZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBnZXRQYXJlbnROb2RlLCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzQ29udGFpbmluZ0Jsb2NrLCBpc1RhYmxlRWxlbWVudCwgZ2V0Q29udGFpbmluZ0Jsb2NrIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5leHBvcnQgeyBnZXRPdmVyZmxvd0FuY2VzdG9ycyB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuXG5mdW5jdGlvbiBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpIHtcbiAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgLy8gSW4gdGVzdGluZyBlbnZpcm9ubWVudHMsIHRoZSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBwcm9wZXJ0aWVzIGFyZSBlbXB0eVxuICAvLyBzdHJpbmdzIGZvciBTVkcgZWxlbWVudHMsIHJldHVybmluZyBOYU4uIEZhbGxiYWNrIHRvIGAwYCBpbiB0aGlzIGNhc2UuXG4gIGxldCB3aWR0aCA9IHBhcnNlRmxvYXQoY3NzLndpZHRoKSB8fCAwO1xuICBsZXQgaGVpZ2h0ID0gcGFyc2VGbG9hdChjc3MuaGVpZ2h0KSB8fCAwO1xuICBjb25zdCBoYXNPZmZzZXQgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBvZmZzZXRXaWR0aCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0V2lkdGggOiB3aWR0aDtcbiAgY29uc3Qgb2Zmc2V0SGVpZ2h0ID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRIZWlnaHQgOiBoZWlnaHQ7XG4gIGNvbnN0IHNob3VsZEZhbGxiYWNrID0gcm91bmQod2lkdGgpICE9PSBvZmZzZXRXaWR0aCB8fCByb3VuZChoZWlnaHQpICE9PSBvZmZzZXRIZWlnaHQ7XG4gIGlmIChzaG91bGRGYWxsYmFjaykge1xuICAgIHdpZHRoID0gb2Zmc2V0V2lkdGg7XG4gICAgaGVpZ2h0ID0gb2Zmc2V0SGVpZ2h0O1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICQ6IHNob3VsZEZhbGxiYWNrXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVud3JhcEVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gIWlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgOiBlbGVtZW50O1xufVxuXG5mdW5jdGlvbiBnZXRTY2FsZShlbGVtZW50KSB7XG4gIGNvbnN0IGRvbUVsZW1lbnQgPSB1bndyYXBFbGVtZW50KGVsZW1lbnQpO1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZG9tRWxlbWVudCkpIHtcbiAgICByZXR1cm4gY3JlYXRlQ29vcmRzKDEpO1xuICB9XG4gIGNvbnN0IHJlY3QgPSBkb21FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZG9tRWxlbWVudCk7XG4gIGxldCB4ID0gKCQgPyByb3VuZChyZWN0LndpZHRoKSA6IHJlY3Qud2lkdGgpIC8gd2lkdGg7XG4gIGxldCB5ID0gKCQgPyByb3VuZChyZWN0LmhlaWdodCkgOiByZWN0LmhlaWdodCkgLyBoZWlnaHQ7XG5cbiAgLy8gMCwgTmFOLCBvciBJbmZpbml0eSBzaG91bGQgYWx3YXlzIGZhbGxiYWNrIHRvIDEuXG5cbiAgaWYgKCF4IHx8ICFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB4ID0gMTtcbiAgfVxuICBpZiAoIXkgfHwgIU51bWJlci5pc0Zpbml0ZSh5KSkge1xuICAgIHkgPSAxO1xuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmNvbnN0IG5vT2Zmc2V0cyA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb29yZHMoMCk7XG5mdW5jdGlvbiBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBpZiAoIWlzV2ViS2l0KCkgfHwgIXdpbi52aXN1YWxWaWV3cG9ydCkge1xuICAgIHJldHVybiBub09mZnNldHM7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCxcbiAgICB5OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wXG4gIH07XG59XG5mdW5jdGlvbiBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGVsZW1lbnQsIGlzRml4ZWQsIGZsb2F0aW5nT2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cbiAgaWYgKCFmbG9hdGluZ09mZnNldFBhcmVudCB8fCBpc0ZpeGVkICYmIGZsb2F0aW5nT2Zmc2V0UGFyZW50ICE9PSBnZXRXaW5kb3coZWxlbWVudCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzRml4ZWQ7XG59XG5cbmZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpbmNsdWRlU2NhbGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGVTY2FsZSA9IGZhbHNlO1xuICB9XG4gIGlmIChpc0ZpeGVkU3RyYXRlZ3kgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWRTdHJhdGVneSA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBpZiAoaW5jbHVkZVNjYWxlKSB7XG4gICAgaWYgKG9mZnNldFBhcmVudCkge1xuICAgICAgaWYgKGlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShlbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IHNob3VsZEFkZFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpID8gZ2V0VmlzdWFsT2Zmc2V0cyhkb21FbGVtZW50KSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgbGV0IHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgdmlzdWFsT2Zmc2V0cy54KSAvIHNjYWxlLng7XG4gIGxldCB5ID0gKGNsaWVudFJlY3QudG9wICsgdmlzdWFsT2Zmc2V0cy55KSAvIHNjYWxlLnk7XG4gIGxldCB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGggLyBzY2FsZS54O1xuICBsZXQgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQgLyBzY2FsZS55O1xuICBpZiAoZG9tRWxlbWVudCkge1xuICAgIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhkb21FbGVtZW50KTtcbiAgICBjb25zdCBvZmZzZXRXaW4gPSBvZmZzZXRQYXJlbnQgJiYgaXNFbGVtZW50KG9mZnNldFBhcmVudCkgPyBnZXRXaW5kb3cob2Zmc2V0UGFyZW50KSA6IG9mZnNldFBhcmVudDtcbiAgICBsZXQgY3VycmVudFdpbiA9IHdpbjtcbiAgICBsZXQgY3VycmVudElGcmFtZSA9IGdldEZyYW1lRWxlbWVudChjdXJyZW50V2luKTtcbiAgICB3aGlsZSAoY3VycmVudElGcmFtZSAmJiBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0V2luICE9PSBjdXJyZW50V2luKSB7XG4gICAgICBjb25zdCBpZnJhbWVTY2FsZSA9IGdldFNjYWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgaWZyYW1lUmVjdCA9IGN1cnJlbnRJRnJhbWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgbGVmdCA9IGlmcmFtZVJlY3QubGVmdCArIChjdXJyZW50SUZyYW1lLmNsaWVudExlZnQgKyBwYXJzZUZsb2F0KGNzcy5wYWRkaW5nTGVmdCkpICogaWZyYW1lU2NhbGUueDtcbiAgICAgIGNvbnN0IHRvcCA9IGlmcmFtZVJlY3QudG9wICsgKGN1cnJlbnRJRnJhbWUuY2xpZW50VG9wICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ1RvcCkpICogaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKj0gaWZyYW1lU2NhbGUueDtcbiAgICAgIHkgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHdpZHRoICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICBoZWlnaHQgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKz0gbGVmdDtcbiAgICAgIHkgKz0gdG9wO1xuICAgICAgY3VycmVudFdpbiA9IGdldFdpbmRvdyhjdXJyZW50SUZyYW1lKTtcbiAgICAgIGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH0pO1xufVxuXG4vLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4vLyBpbmNvcnJlY3QgZm9yIFJUTC5cbmZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCwgcmVjdCkge1xuICBjb25zdCBsZWZ0U2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xuICBpZiAoIXJlY3QpIHtcbiAgICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGxlZnRTY3JvbGw7XG4gIH1cbiAgcmV0dXJuIHJlY3QubGVmdCArIGxlZnRTY3JvbGw7XG59XG5cbmZ1bmN0aW9uIGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwsIGlnbm9yZVNjcm9sbGJhclgpIHtcbiAgaWYgKGlnbm9yZVNjcm9sbGJhclggPT09IHZvaWQgMCkge1xuICAgIGlnbm9yZVNjcm9sbGJhclggPSBmYWxzZTtcbiAgfVxuICBjb25zdCBodG1sUmVjdCA9IGRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgeCA9IGh0bWxSZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIChpZ25vcmVTY3JvbGxiYXJYID8gMCA6XG4gIC8vIFJUTCA8Ym9keT4gc2Nyb2xsYmFyLlxuICBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCwgaHRtbFJlY3QpKTtcbiAgY29uc3QgeSA9IGh0bWxSZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3A7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgdG9wTGF5ZXIgPSBlbGVtZW50cyA/IGlzVG9wTGF5ZXIoZWxlbWVudHMuZmxvYXRpbmcpIDogZmFsc2U7XG4gIGlmIChvZmZzZXRQYXJlbnQgPT09IGRvY3VtZW50RWxlbWVudCB8fCB0b3BMYXllciAmJiBpc0ZpeGVkKSB7XG4gICAgcmV0dXJuIHJlY3Q7XG4gIH1cbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBsZXQgc2NhbGUgPSBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IG9mZnNldHMgPSBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50KTtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9XG4gIH1cbiAgY29uc3QgaHRtbE9mZnNldCA9IGRvY3VtZW50RWxlbWVudCAmJiAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQgPyBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCB0cnVlKSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogcmVjdC53aWR0aCAqIHNjYWxlLngsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAqIHNjYWxlLnksXG4gICAgeDogcmVjdC54ICogc2NhbGUueCAtIHNjcm9sbC5zY3JvbGxMZWZ0ICogc2NhbGUueCArIG9mZnNldHMueCArIGh0bWxPZmZzZXQueCxcbiAgICB5OiByZWN0LnkgKiBzY2FsZS55IC0gc2Nyb2xsLnNjcm9sbFRvcCAqIHNjYWxlLnkgKyBvZmZzZXRzLnkgKyBodG1sT2Zmc2V0LnlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdHMoZWxlbWVudCkge1xuICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmdldENsaWVudFJlY3RzKCkpO1xufVxuXG4vLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlLlxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KTtcbiAgY29uc3QgYm9keSA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5ib2R5O1xuICBjb25zdCB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5LnNjcm9sbFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKTtcbiAgY29uc3QgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keS5zY3JvbGxIZWlnaHQsIGJvZHkuY2xpZW50SGVpZ2h0KTtcbiAgbGV0IHggPSAtc2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICBjb25zdCB5ID0gLXNjcm9sbC5zY3JvbGxUb3A7XG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKSAtIHdpZHRoO1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgbGV0IHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgbGV0IGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICBsZXQgeCA9IDA7XG4gIGxldCB5ID0gMDtcbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgY29uc3QgdmlzdWFsVmlld3BvcnRCYXNlZCA9IGlzV2ViS2l0KCk7XG4gICAgaWYgKCF2aXN1YWxWaWV3cG9ydEJhc2VkIHx8IHZpc3VhbFZpZXdwb3J0QmFzZWQgJiYgc3RyYXRlZ3kgPT09ICdmaXhlZCcpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbi8vIFJldHVybnMgdGhlIGlubmVyIGNsaWVudCByZWN0LCBzdWJ0cmFjdGluZyBzY3JvbGxiYXJzIGlmIHByZXNlbnQuXG5mdW5jdGlvbiBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgY29uc3QgdG9wID0gY2xpZW50UmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgY29uc3QgbGVmdCA9IGNsaWVudFJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdDtcbiAgY29uc3Qgc2NhbGUgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0U2NhbGUoZWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IHdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aCAqIHNjYWxlLng7XG4gIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0ICogc2NhbGUueTtcbiAgY29uc3QgeCA9IGxlZnQgKiBzY2FsZS54O1xuICBjb25zdCB5ID0gdG9wICogc2NhbGUueTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpIHtcbiAgbGV0IHJlY3Q7XG4gIGlmIChjbGlwcGluZ0FuY2VzdG9yID09PSAndmlld3BvcnQnKSB7XG4gICAgcmVjdCA9IGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSk7XG4gIH0gZWxzZSBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ2RvY3VtZW50Jykge1xuICAgIHJlY3QgPSBnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKTtcbiAgfSBlbHNlIGlmIChpc0VsZW1lbnQoY2xpcHBpbmdBbmNlc3RvcikpIHtcbiAgICByZWN0ID0gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpO1xuICAgIHJlY3QgPSB7XG4gICAgICB4OiBjbGlwcGluZ0FuY2VzdG9yLnggLSB2aXN1YWxPZmZzZXRzLngsXG4gICAgICB5OiBjbGlwcGluZ0FuY2VzdG9yLnkgLSB2aXN1YWxPZmZzZXRzLnksXG4gICAgICB3aWR0aDogY2xpcHBpbmdBbmNlc3Rvci53aWR0aCxcbiAgICAgIGhlaWdodDogY2xpcHBpbmdBbmNlc3Rvci5oZWlnaHRcbiAgICB9O1xuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHJlY3QpO1xufVxuZnVuY3Rpb24gaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIHN0b3BOb2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICBpZiAocGFyZW50Tm9kZSA9PT0gc3RvcE5vZGUgfHwgIWlzRWxlbWVudChwYXJlbnROb2RlKSB8fCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUocGFyZW50Tm9kZSkucG9zaXRpb24gPT09ICdmaXhlZCcgfHwgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKHBhcmVudE5vZGUsIHN0b3BOb2RlKTtcbn1cblxuLy8gQSBcImNsaXBwaW5nIGFuY2VzdG9yXCIgaXMgYW4gYG92ZXJmbG93YCBlbGVtZW50IHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBjaGlsZCBlbGVtZW50cy4gVGhpcyByZXR1cm5zIGFsbCBjbGlwcGluZyBhbmNlc3RvcnNcbi8vIG9mIHRoZSBnaXZlbiBlbGVtZW50IHVwIHRoZSB0cmVlLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIGNhY2hlKSB7XG4gIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlLmdldChlbGVtZW50KTtcbiAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gIH1cbiAgbGV0IHJlc3VsdCA9IGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnQsIFtdLCBmYWxzZSkuZmlsdGVyKGVsID0+IGlzRWxlbWVudChlbCkgJiYgZ2V0Tm9kZU5hbWUoZWwpICE9PSAnYm9keScpO1xuICBsZXQgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICBjb25zdCBlbGVtZW50SXNGaXhlZCA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCc7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gZ2V0UGFyZW50Tm9kZShlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcbiAgd2hpbGUgKGlzRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Tm9kZSk7XG4gICAgY29uc3QgY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgPSBpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSk7XG4gICAgaWYgKCFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHNob3VsZERyb3BDdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmICFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA6ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlICYmIFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmNsdWRlcyhjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZS5wb3NpdGlvbikgfHwgaXNPdmVyZmxvd0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgY3VycmVudE5vZGUpO1xuICAgIGlmIChzaG91bGREcm9wQ3VycmVudE5vZGUpIHtcbiAgICAgIC8vIERyb3Agbm9uLWNvbnRhaW5pbmcgYmxvY2tzLlxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihhbmNlc3RvciA9PiBhbmNlc3RvciAhPT0gY3VycmVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWNvcmQgbGFzdCBjb250YWluaW5nIGJsb2NrIGZvciBuZXh0IGl0ZXJhdGlvbi5cbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZTtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICBjYWNoZS5zZXQoZWxlbWVudCwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgYW5jZXN0b3JzLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50LFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ0FuY2VzdG9ycycgPyBpc1RvcExheWVyKGVsZW1lbnQpID8gW10gOiBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgdGhpcy5fYykgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICBjb25zdCBjbGlwcGluZ0FuY2VzdG9ycyA9IFsuLi5lbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMsIHJvb3RCb3VuZGFyeV07XG4gIGNvbnN0IGZpcnN0Q2xpcHBpbmdBbmNlc3RvciA9IGNsaXBwaW5nQW5jZXN0b3JzWzBdO1xuICBjb25zdCBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ0FuY2VzdG9ycy5yZWR1Y2UoKGFjY1JlY3QsIGNsaXBwaW5nQW5jZXN0b3IpID0+IHtcbiAgICBjb25zdCByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgZmlyc3RDbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiBjbGlwcGluZ1JlY3QucmlnaHQgLSBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICBoZWlnaHQ6IGNsaXBwaW5nUmVjdC5ib3R0b20gLSBjbGlwcGluZ1JlY3QudG9wLFxuICAgIHg6IGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIHk6IGNsaXBwaW5nUmVjdC50b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGVsZW1lbnQsIG9mZnNldFBhcmVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBpc0ZpeGVkID0gc3RyYXRlZ3kgPT09ICdmaXhlZCc7XG4gIGNvbnN0IHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIC8vIElmIHRoZSA8Ym9keT4gc2Nyb2xsYmFyIGFwcGVhcnMgb24gdGhlIGxlZnQgKGUuZy4gUlRMIHN5c3RlbXMpLiBVc2VcbiAgICAgIC8vIEZpcmVmb3ggd2l0aCBsYXlvdXQuc2Nyb2xsYmFyLnNpZGUgPSAzIGluIGFib3V0OmNvbmZpZyB0byB0ZXN0IHRoaXMuXG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IHggPSByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCAtIGh0bWxPZmZzZXQueDtcbiAgY29uc3QgeSA9IHJlY3QudG9wICsgc2Nyb2xsLnNjcm9sbFRvcCAtIG9mZnNldHMueSAtIGh0bWxPZmZzZXQueTtcbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc1N0YXRpY1Bvc2l0aW9uZWQoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYyc7XG59XG5cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocG9seWZpbGwpIHtcbiAgICByZXR1cm4gcG9seWZpbGwoZWxlbWVudCk7XG4gIH1cbiAgbGV0IHJhd09mZnNldFBhcmVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50O1xuXG4gIC8vIEZpcmVmb3ggcmV0dXJucyB0aGUgPGh0bWw+IGVsZW1lbnQgYXMgdGhlIG9mZnNldFBhcmVudCBpZiBpdCdzIG5vbi1zdGF0aWMsXG4gIC8vIHdoaWxlIENocm9tZSBhbmQgU2FmYXJpIHJldHVybiB0aGUgPGJvZHk+IGVsZW1lbnQuIFRoZSA8Ym9keT4gZWxlbWVudCBtdXN0XG4gIC8vIGJlIHVzZWQgdG8gcGVyZm9ybSB0aGUgY29ycmVjdCBjYWxjdWxhdGlvbnMgZXZlbiBpZiB0aGUgPGh0bWw+IGVsZW1lbnQgaXNcbiAgLy8gbm9uLXN0YXRpYy5cbiAgaWYgKGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSA9PT0gcmF3T2Zmc2V0UGFyZW50KSB7XG4gICAgcmF3T2Zmc2V0UGFyZW50ID0gcmF3T2Zmc2V0UGFyZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuICByZXR1cm4gcmF3T2Zmc2V0UGFyZW50O1xufVxuXG4vLyBHZXRzIHRoZSBjbG9zZXN0IGFuY2VzdG9yIHBvc2l0aW9uZWQgZWxlbWVudC4gSGFuZGxlcyBzb21lIGVkZ2UgY2FzZXMsXG4vLyBzdWNoIGFzIHRhYmxlIGFuY2VzdG9ycyBhbmQgY3Jvc3MgYnJvd3NlciBidWdzLlxuZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKGlzVG9wTGF5ZXIoZWxlbWVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIGxldCBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICAgIHdoaWxlIChzdmdPZmZzZXRQYXJlbnQgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICBpZiAoaXNFbGVtZW50KHN2Z09mZnNldFBhcmVudCkgJiYgIWlzU3RhdGljUG9zaXRpb25lZChzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHJldHVybiBzdmdPZmZzZXRQYXJlbnQ7XG4gICAgICB9XG4gICAgICBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKHN2Z09mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIHJldHVybiB3aW47XG4gIH1cbiAgbGV0IG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpO1xuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCwgcG9seWZpbGwpO1xuICB9XG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgaXNMYXN0VHJhdmVyc2FibGVOb2RlKG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkgJiYgIWlzQ29udGFpbmluZ0Jsb2NrKG9mZnNldFBhcmVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbjtcbn1cblxuY29uc3QgZ2V0RWxlbWVudFJlY3RzID0gYXN5bmMgZnVuY3Rpb24gKGRhdGEpIHtcbiAgY29uc3QgZ2V0T2Zmc2V0UGFyZW50Rm4gPSB0aGlzLmdldE9mZnNldFBhcmVudCB8fCBnZXRPZmZzZXRQYXJlbnQ7XG4gIGNvbnN0IGdldERpbWVuc2lvbnNGbiA9IHRoaXMuZ2V0RGltZW5zaW9ucztcbiAgY29uc3QgZmxvYXRpbmdEaW1lbnNpb25zID0gYXdhaXQgZ2V0RGltZW5zaW9uc0ZuKGRhdGEuZmxvYXRpbmcpO1xuICByZXR1cm4ge1xuICAgIHJlZmVyZW5jZTogZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZGF0YS5yZWZlcmVuY2UsIGF3YWl0IGdldE9mZnNldFBhcmVudEZuKGRhdGEuZmxvYXRpbmcpLCBkYXRhLnN0cmF0ZWd5KSxcbiAgICBmbG9hdGluZzoge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICB3aWR0aDogZmxvYXRpbmdEaW1lbnNpb25zLndpZHRoLFxuICAgICAgaGVpZ2h0OiBmbG9hdGluZ0RpbWVuc2lvbnMuaGVpZ2h0XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gaXNSVEwoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5kaXJlY3Rpb24gPT09ICdydGwnO1xufVxuXG5jb25zdCBwbGF0Zm9ybSA9IHtcbiAgY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QsXG4gIGdldERvY3VtZW50RWxlbWVudCxcbiAgZ2V0Q2xpcHBpbmdSZWN0LFxuICBnZXRPZmZzZXRQYXJlbnQsXG4gIGdldEVsZW1lbnRSZWN0cyxcbiAgZ2V0Q2xpZW50UmVjdHMsXG4gIGdldERpbWVuc2lvbnMsXG4gIGdldFNjYWxlLFxuICBpc0VsZW1lbnQsXG4gIGlzUlRMXG59O1xuXG5mdW5jdGlvbiByZWN0c0FyZUVxdWFsKGEsIGIpIHtcbiAgcmV0dXJuIGEueCA9PT0gYi54ICYmIGEueSA9PT0gYi55ICYmIGEud2lkdGggPT09IGIud2lkdGggJiYgYS5oZWlnaHQgPT09IGIuaGVpZ2h0O1xufVxuXG4vLyBodHRwczovL3NhbXRob3IuYXUvMjAyMS9vYnNlcnZpbmctZG9tL1xuZnVuY3Rpb24gb2JzZXJ2ZU1vdmUoZWxlbWVudCwgb25Nb3ZlKSB7XG4gIGxldCBpbyA9IG51bGw7XG4gIGxldCB0aW1lb3V0SWQ7XG4gIGNvbnN0IHJvb3QgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgdmFyIF9pbztcbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAoX2lvID0gaW8pID09IG51bGwgfHwgX2lvLmRpc2Nvbm5lY3QoKTtcbiAgICBpbyA9IG51bGw7XG4gIH1cbiAgZnVuY3Rpb24gcmVmcmVzaChza2lwLCB0aHJlc2hvbGQpIHtcbiAgICBpZiAoc2tpcCA9PT0gdm9pZCAwKSB7XG4gICAgICBza2lwID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aHJlc2hvbGQgPT09IHZvaWQgMCkge1xuICAgICAgdGhyZXNob2xkID0gMTtcbiAgICB9XG4gICAgY2xlYW51cCgpO1xuICAgIGNvbnN0IGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbiA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3Qge1xuICAgICAgbGVmdCxcbiAgICAgIHRvcCxcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0XG4gICAgfSA9IGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbjtcbiAgICBpZiAoIXNraXApIHtcbiAgICAgIG9uTW92ZSgpO1xuICAgIH1cbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5zZXRUb3AgPSBmbG9vcih0b3ApO1xuICAgIGNvbnN0IGluc2V0UmlnaHQgPSBmbG9vcihyb290LmNsaWVudFdpZHRoIC0gKGxlZnQgKyB3aWR0aCkpO1xuICAgIGNvbnN0IGluc2V0Qm90dG9tID0gZmxvb3Iocm9vdC5jbGllbnRIZWlnaHQgLSAodG9wICsgaGVpZ2h0KSk7XG4gICAgY29uc3QgaW5zZXRMZWZ0ID0gZmxvb3IobGVmdCk7XG4gICAgY29uc3Qgcm9vdE1hcmdpbiA9IC1pbnNldFRvcCArIFwicHggXCIgKyAtaW5zZXRSaWdodCArIFwicHggXCIgKyAtaW5zZXRCb3R0b20gKyBcInB4IFwiICsgLWluc2V0TGVmdCArIFwicHhcIjtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbixcbiAgICAgIHRocmVzaG9sZDogbWF4KDAsIG1pbigxLCB0aHJlc2hvbGQpKSB8fCAxXG4gICAgfTtcbiAgICBsZXQgaXNGaXJzdFVwZGF0ZSA9IHRydWU7XG4gICAgZnVuY3Rpb24gaGFuZGxlT2JzZXJ2ZShlbnRyaWVzKSB7XG4gICAgICBjb25zdCByYXRpbyA9IGVudHJpZXNbMF0uaW50ZXJzZWN0aW9uUmF0aW87XG4gICAgICBpZiAocmF0aW8gIT09IHRocmVzaG9sZCkge1xuICAgICAgICBpZiAoIWlzRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gcmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmF0aW8pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGNsaXBwZWQsIHRoZSByYXRpbyBpcyAwLiBUaHJvdHRsZSB0aGUgcmVmcmVzaFxuICAgICAgICAgIC8vIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCBvZiB1cGRhdGVzLlxuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVmcmVzaChmYWxzZSwgMWUtNyk7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmcmVzaChmYWxzZSwgcmF0aW8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmF0aW8gPT09IDEgJiYgIXJlY3RzQXJlRXF1YWwoZWxlbWVudFJlY3RGb3JSb290TWFyZ2luLCBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSkge1xuICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgZXZlbiB0aG91Z2ggdGhlIHJhdGlvIGlzIHJlcG9ydGVkIGFzIDEsIHRoZVxuICAgICAgICAvLyBlbGVtZW50IGlzIG5vdCBhY3R1YWxseSBmdWxseSB3aXRoaW4gdGhlIEludGVyc2VjdGlvbk9ic2VydmVyJ3Mgcm9vdFxuICAgICAgICAvLyBhcmVhIGFueW1vcmUuIFRoaXMgY2FuIGhhcHBlbiB1bmRlciBwZXJmb3JtYW5jZSBjb25zdHJhaW50cy4gVGhpcyBtYXlcbiAgICAgICAgLy8gYmUgYSBidWcgaW4gdGhlIGJyb3dzZXIncyBJbnRlcnNlY3Rpb25PYnNlcnZlciBpbXBsZW1lbnRhdGlvbi4gVG9cbiAgICAgICAgLy8gd29yayBhcm91bmQgdGhpcywgd2UgY29tcGFyZSB0aGUgZWxlbWVudCdzIGJvdW5kaW5nIHJlY3Qgbm93IHdpdGhcbiAgICAgICAgLy8gd2hhdCBpdCB3YXMgYXQgdGhlIHRpbWUgd2UgY3JlYXRlZCB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuIElmIHRoZXlcbiAgICAgICAgLy8gYXJlIG5vdCBlcXVhbCB0aGVuIHRoZSBlbGVtZW50IG1vdmVkLCBzbyB3ZSByZWZyZXNoLlxuICAgICAgICByZWZyZXNoKCk7XG4gICAgICB9XG4gICAgICBpc0ZpcnN0VXBkYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT2xkZXIgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCBhIGBkb2N1bWVudGAgYXMgdGhlIHJvb3QgYW5kIHdpbGwgdGhyb3cgYW5cbiAgICAvLyBlcnJvci5cbiAgICB0cnkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAvLyBIYW5kbGUgPGlmcmFtZT5zXG4gICAgICAgIHJvb3Q6IHJvb3Qub3duZXJEb2N1bWVudFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlvLm9ic2VydmUoZWxlbWVudCk7XG4gIH1cbiAgcmVmcmVzaCh0cnVlKTtcbiAgcmV0dXJuIGNsZWFudXA7XG59XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgbGF5b3V0U2hpZnQgPSB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgYW5pbWF0aW9uRnJhbWUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVmZXJlbmNlRWwgPSB1bndyYXBFbGVtZW50KHJlZmVyZW5jZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihyZWZlcmVuY2VFbCA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZUVsKSA6IFtdKSwgLi4uZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZmxvYXRpbmcpXSA6IFtdO1xuICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlXG4gICAgfSk7XG4gICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgfSk7XG4gIGNvbnN0IGNsZWFudXBJbyA9IHJlZmVyZW5jZUVsICYmIGxheW91dFNoaWZ0ID8gb2JzZXJ2ZU1vdmUocmVmZXJlbmNlRWwsIHVwZGF0ZSkgOiBudWxsO1xuICBsZXQgcmVvYnNlcnZlRnJhbWUgPSAtMTtcbiAgbGV0IHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihfcmVmID0+IHtcbiAgICAgIGxldCBbZmlyc3RFbnRyeV0gPSBfcmVmO1xuICAgICAgaWYgKGZpcnN0RW50cnkgJiYgZmlyc3RFbnRyeS50YXJnZXQgPT09IHJlZmVyZW5jZUVsICYmIHJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIC8vIFByZXZlbnQgdXBkYXRlIGxvb3BzIHdoZW4gdXNpbmcgdGhlIGBzaXplYCBtaWRkbGV3YXJlLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzE3NDBcbiAgICAgICAgcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmVvYnNlcnZlRnJhbWUpO1xuICAgICAgICByZW9ic2VydmVGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9yZXNpemVPYnNlcnZlcjtcbiAgICAgICAgICAoX3Jlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZSgpO1xuICAgIH0pO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiAhYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUocmVmZXJlbmNlRWwpO1xuICAgIH1cbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAhcmVjdHNBcmVFcXVhbChwcmV2UmVmUmVjdCwgbmV4dFJlZlJlY3QpKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gICAgcHJldlJlZlJlY3QgPSBuZXh0UmVmUmVjdDtcbiAgICBmcmFtZUlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZyYW1lTG9vcCk7XG4gIH1cbiAgdXBkYXRlKCk7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgdmFyIF9yZXNpemVPYnNlcnZlcjI7XG4gICAgYW5jZXN0b3JzLmZvckVhY2goYW5jZXN0b3IgPT4ge1xuICAgICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlKTtcbiAgICAgIGFuY2VzdG9yUmVzaXplICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSk7XG4gICAgfSk7XG4gICAgY2xlYW51cElvID09IG51bGwgfHwgY2xlYW51cElvKCk7XG4gICAgKF9yZXNpemVPYnNlcnZlcjIgPSByZXNpemVPYnNlcnZlcikgPT0gbnVsbCB8fCBfcmVzaXplT2JzZXJ2ZXIyLmRpc2Nvbm5lY3QoKTtcbiAgICByZXNpemVPYnNlcnZlciA9IG51bGw7XG4gICAgaWYgKGFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZUlkKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5jb25zdCBkZXRlY3RPdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93JDE7XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHBsYWNlbWVudCBieSB0cmFuc2xhdGluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGVcbiAqIHNwZWNpZmllZCBheGVzLlxuICogQSBudW1iZXIgKHNob3J0aGFuZCBmb3IgYG1haW5BeGlzYCBvciBkaXN0YW5jZSksIG9yIGFuIGF4ZXMgY29uZmlndXJhdGlvblxuICogb2JqZWN0IG1heSBiZSBwYXNzZWQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gKi9cbmNvbnN0IG9mZnNldCA9IG9mZnNldCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IGF1dG9QbGFjZW1lbnQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgc2hpZnRpbmcgaXQgaW4gb3JkZXIgdG9cbiAqIGtlZXAgaXQgaW4gdmlldyB3aGVuIGl0IHdpbGwgb3ZlcmZsb3cgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0XG4gKi9cbmNvbnN0IHNoaWZ0ID0gc2hpZnQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmbGlwJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0aGF0IGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IOKAlFxuICogZm9yIGluc3RhbmNlLCBwcmV2ZW50IGl0IGZyb20gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5IG9yIG1hdGNoIHRoZVxuICogd2lkdGggb2YgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NpemVcbiAqL1xuY29uc3Qgc2l6ZSA9IHNpemUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIGhpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW4gYXBwbGljYWJsZSBzaXR1YXRpb25zLCBzdWNoIGFzXG4gKiB3aGVuIGl0IGlzIG5vdCBpbiB0aGUgc2FtZSBjbGlwcGluZyBjb250ZXh0IGFzIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9oaWRlXG4gKi9cbmNvbnN0IGhpZGUgPSBoaWRlJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gYXJyb3ckMTtcblxuLyoqXG4gKiBQcm92aWRlcyBpbXByb3ZlZCBwb3NpdGlvbmluZyBmb3IgaW5saW5lIHJlZmVyZW5jZSBlbGVtZW50cyB0aGF0IGNhbiBzcGFuXG4gKiBvdmVyIG11bHRpcGxlIGxpbmVzLCBzdWNoIGFzIGh5cGVybGlua3Mgb3IgcmFuZ2Ugc2VsZWN0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbmxpbmVcbiAqL1xuY29uc3QgaW5saW5lID0gaW5saW5lJDE7XG5cbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSBsaW1pdFNoaWZ0JDE7XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIGdpdmVuIHJlZmVyZW5jZSBlbGVtZW50LlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSAocmVmZXJlbmNlLCBmbG9hdGluZywgb3B0aW9ucykgPT4ge1xuICAvLyBUaGlzIGNhY2hlcyB0aGUgZXhwZW5zaXZlIGBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnNgIGZ1bmN0aW9uIHNvIHRoYXRcbiAgLy8gbXVsdGlwbGUgbGlmZWN5Y2xlIHJlc2V0cyByZS11c2UgdGhlIHNhbWUgcmVzdWx0LiBJdCBvbmx5IGxpdmVzIGZvciBhXG4gIC8vIHNpbmdsZSBjYWxsLiBJZiBvdGhlciBmdW5jdGlvbnMgYmVjb21lIGV4cGVuc2l2ZSwgd2UgY2FuIGFkZCB0aGVtIGFzIHdlbGwuXG4gIGNvbnN0IGNhY2hlID0gbmV3IE1hcCgpO1xuICBjb25zdCBtZXJnZWRPcHRpb25zID0ge1xuICAgIHBsYXRmb3JtLFxuICAgIC4uLm9wdGlvbnNcbiAgfTtcbiAgY29uc3QgcGxhdGZvcm1XaXRoQ2FjaGUgPSB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucy5wbGF0Zm9ybSxcbiAgICBfYzogY2FjaGVcbiAgfTtcbiAgcmV0dXJuIGNvbXB1dGVQb3NpdGlvbiQxKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLFxuICAgIHBsYXRmb3JtOiBwbGF0Zm9ybVdpdGhDYWNoZVxuICB9KTtcbn07XG5cbmV4cG9ydCB7IGFycm93LCBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcGxhdGZvcm0sIHNoaWZ0LCBzaXplIH07XG4iLCJpbXBvcnQgeyBhcnJvdyBhcyBhcnJvdyQxLCBjb21wdXRlUG9zaXRpb24gfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmV4cG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcGxhdGZvcm0sIHNoaWZ0LCBzaXplIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBpc05vZGUsIGdldE5vZGVOYW1lIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyB1bnJlZiwgY29tcHV0ZWQsIHJlZiwgc2hhbGxvd1JlZiwgd2F0Y2gsIGdldEN1cnJlbnRTY29wZSwgb25TY29wZURpc3Bvc2UsIHNoYWxsb3dSZWFkb25seSB9IGZyb20gJ3Z1ZS1kZW1pJztcblxuZnVuY3Rpb24gaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSh0YXJnZXQpIHtcbiAgcmV0dXJuIHRhcmdldCAhPSBudWxsICYmIHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnICYmICckZWwnIGluIHRhcmdldDtcbn1cbmZ1bmN0aW9uIHVud3JhcEVsZW1lbnQodGFyZ2V0KSB7XG4gIGlmIChpc0NvbXBvbmVudFB1YmxpY0luc3RhbmNlKHRhcmdldCkpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGFyZ2V0LiRlbDtcbiAgICByZXR1cm4gaXNOb2RlKGVsZW1lbnQpICYmIGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnI2NvbW1lbnQnID8gbnVsbCA6IGVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gdG9WYWx1ZShzb3VyY2UpIHtcbiAgcmV0dXJuIHR5cGVvZiBzb3VyY2UgPT09ICdmdW5jdGlvbicgPyBzb3VyY2UoKSA6IHVucmVmKHNvdXJjZSk7XG59XG5cbi8qKlxuICogUG9zaXRpb25zIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc3VjaCB0aGF0IGl0IGlzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBhcnJvdyBvcHRpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmZ1bmN0aW9uIGFycm93KG9wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXJyb3cnLFxuICAgIG9wdGlvbnMsXG4gICAgZm4oYXJncykge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHVud3JhcEVsZW1lbnQodG9WYWx1ZShvcHRpb25zLmVsZW1lbnQpKTtcbiAgICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycm93JDEoe1xuICAgICAgICBlbGVtZW50LFxuICAgICAgICBwYWRkaW5nOiBvcHRpb25zLnBhZGRpbmdcbiAgICAgIH0pLmZuKGFyZ3MpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RFBSKGVsZW1lbnQpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgY29uc3Qgd2luID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgcmV0dXJuIHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG59XG5cbmZ1bmN0aW9uIHJvdW5kQnlEUFIoZWxlbWVudCwgdmFsdWUpIHtcbiAgY29uc3QgZHByID0gZ2V0RFBSKGVsZW1lbnQpO1xuICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIGRwcikgLyBkcHI7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBuZXh0IHRvIGEgcmVmZXJlbmNlIGVsZW1lbnQgd2hlbiBpdCBpcyBnaXZlbiBhIGNlcnRhaW4gQ1NTIHBvc2l0aW9uaW5nIHN0cmF0ZWd5LlxuICogQHBhcmFtIHJlZmVyZW5jZSBUaGUgcmVmZXJlbmNlIHRlbXBsYXRlIHJlZi5cbiAqIEBwYXJhbSBmbG9hdGluZyBUaGUgZmxvYXRpbmcgdGVtcGxhdGUgcmVmLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIGZsb2F0aW5nIG9wdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdnVlXG4gKi9cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiA9IG9wdGlvbnMud2hpbGVFbGVtZW50c01vdW50ZWQ7XG4gIGNvbnN0IG9wZW5PcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlO1xuICAgIHJldHVybiAoX3RvVmFsdWUgPSB0b1ZhbHVlKG9wdGlvbnMub3BlbikpICE9IG51bGwgPyBfdG9WYWx1ZSA6IHRydWU7XG4gIH0pO1xuICBjb25zdCBtaWRkbGV3YXJlT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4gdG9WYWx1ZShvcHRpb25zLm1pZGRsZXdhcmUpKTtcbiAgY29uc3QgcGxhY2VtZW50T3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTI7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTIgPSB0b1ZhbHVlKG9wdGlvbnMucGxhY2VtZW50KSkgIT0gbnVsbCA/IF90b1ZhbHVlMiA6ICdib3R0b20nO1xuICB9KTtcbiAgY29uc3Qgc3RyYXRlZ3lPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlMztcbiAgICByZXR1cm4gKF90b1ZhbHVlMyA9IHRvVmFsdWUob3B0aW9ucy5zdHJhdGVneSkpICE9IG51bGwgPyBfdG9WYWx1ZTMgOiAnYWJzb2x1dGUnO1xuICB9KTtcbiAgY29uc3QgdHJhbnNmb3JtT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTQ7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTQgPSB0b1ZhbHVlKG9wdGlvbnMudHJhbnNmb3JtKSkgIT0gbnVsbCA/IF90b1ZhbHVlNCA6IHRydWU7XG4gIH0pO1xuICBjb25zdCByZWZlcmVuY2VFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gdW53cmFwRWxlbWVudChyZWZlcmVuY2UudmFsdWUpKTtcbiAgY29uc3QgZmxvYXRpbmdFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gdW53cmFwRWxlbWVudChmbG9hdGluZy52YWx1ZSkpO1xuICBjb25zdCB4ID0gcmVmKDApO1xuICBjb25zdCB5ID0gcmVmKDApO1xuICBjb25zdCBzdHJhdGVneSA9IHJlZihzdHJhdGVneU9wdGlvbi52YWx1ZSk7XG4gIGNvbnN0IHBsYWNlbWVudCA9IHJlZihwbGFjZW1lbnRPcHRpb24udmFsdWUpO1xuICBjb25zdCBtaWRkbGV3YXJlRGF0YSA9IHNoYWxsb3dSZWYoe30pO1xuICBjb25zdCBpc1Bvc2l0aW9uZWQgPSByZWYoZmFsc2UpO1xuICBjb25zdCBmbG9hdGluZ1N0eWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsU3R5bGVzID0ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LnZhbHVlLFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgdG9wOiAnMCdcbiAgICB9O1xuICAgIGlmICghZmxvYXRpbmdFbGVtZW50LnZhbHVlKSB7XG4gICAgICByZXR1cm4gaW5pdGlhbFN0eWxlcztcbiAgICB9XG4gICAgY29uc3QgeFZhbCA9IHJvdW5kQnlEUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB4LnZhbHVlKTtcbiAgICBjb25zdCB5VmFsID0gcm91bmRCeURQUihmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHkudmFsdWUpO1xuICAgIGlmICh0cmFuc2Zvcm1PcHRpb24udmFsdWUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmluaXRpYWxTdHlsZXMsXG4gICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoXCIgKyB4VmFsICsgXCJweCwgXCIgKyB5VmFsICsgXCJweClcIixcbiAgICAgICAgLi4uKGdldERQUihmbG9hdGluZ0VsZW1lbnQudmFsdWUpID49IDEuNSAmJiB7XG4gICAgICAgICAgd2lsbENoYW5nZTogJ3RyYW5zZm9ybSdcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogc3RyYXRlZ3kudmFsdWUsXG4gICAgICBsZWZ0OiB4VmFsICsgXCJweFwiLFxuICAgICAgdG9wOiB5VmFsICsgXCJweFwiXG4gICAgfTtcbiAgfSk7XG4gIGxldCB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXA7XG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAocmVmZXJlbmNlRWxlbWVudC52YWx1ZSA9PSBudWxsIHx8IGZsb2F0aW5nRWxlbWVudC52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9wZW4gPSBvcGVuT3B0aW9uLnZhbHVlO1xuICAgIGNvbXB1dGVQb3NpdGlvbihyZWZlcmVuY2VFbGVtZW50LnZhbHVlLCBmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHtcbiAgICAgIG1pZGRsZXdhcmU6IG1pZGRsZXdhcmVPcHRpb24udmFsdWUsXG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudE9wdGlvbi52YWx1ZSxcbiAgICAgIHN0cmF0ZWd5OiBzdHJhdGVneU9wdGlvbi52YWx1ZVxuICAgIH0pLnRoZW4ocG9zaXRpb24gPT4ge1xuICAgICAgeC52YWx1ZSA9IHBvc2l0aW9uLng7XG4gICAgICB5LnZhbHVlID0gcG9zaXRpb24ueTtcbiAgICAgIHN0cmF0ZWd5LnZhbHVlID0gcG9zaXRpb24uc3RyYXRlZ3k7XG4gICAgICBwbGFjZW1lbnQudmFsdWUgPSBwb3NpdGlvbi5wbGFjZW1lbnQ7XG4gICAgICBtaWRkbGV3YXJlRGF0YS52YWx1ZSA9IHBvc2l0aW9uLm1pZGRsZXdhcmVEYXRhO1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgZmxvYXRpbmcgZWxlbWVudCdzIHBvc2l0aW9uIG1heSBiZSByZWNvbXB1dGVkIHdoaWxlIGl0J3MgY2xvc2VkXG4gICAgICAgKiBidXQgc3RpbGwgbW91bnRlZCAoc3VjaCBhcyB3aGVuIHRyYW5zaXRpb25pbmcgb3V0KS4gVG8gZW5zdXJlXG4gICAgICAgKiBgaXNQb3NpdGlvbmVkYCB3aWxsIGJlIGBmYWxzZWAgaW5pdGlhbGx5IG9uIHRoZSBuZXh0IG9wZW4sIGF2b2lkXG4gICAgICAgKiBzZXR0aW5nIGl0IHRvIGB0cnVlYCB3aGVuIGBvcGVuID09PSBmYWxzZWAgKG11c3QgYmUgc3BlY2lmaWVkKS5cbiAgICAgICAqL1xuICAgICAgaXNQb3NpdGlvbmVkLnZhbHVlID0gb3BlbiAhPT0gZmFsc2U7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBpZiAodHlwZW9mIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwKCk7XG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGF0dGFjaCgpIHtcbiAgICBjbGVhbnVwKCk7XG4gICAgaWYgKHdoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVmZXJlbmNlRWxlbWVudC52YWx1ZSAhPSBudWxsICYmIGZsb2F0aW5nRWxlbWVudC52YWx1ZSAhPSBudWxsKSB7XG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPSB3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbihyZWZlcmVuY2VFbGVtZW50LnZhbHVlLCBmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHVwZGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIGlmICghb3Blbk9wdGlvbi52YWx1ZSkge1xuICAgICAgaXNQb3NpdGlvbmVkLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdhdGNoKFttaWRkbGV3YXJlT3B0aW9uLCBwbGFjZW1lbnRPcHRpb24sIHN0cmF0ZWd5T3B0aW9uLCBvcGVuT3B0aW9uXSwgdXBkYXRlLCB7XG4gICAgZmx1c2g6ICdzeW5jJ1xuICB9KTtcbiAgd2F0Y2goW3JlZmVyZW5jZUVsZW1lbnQsIGZsb2F0aW5nRWxlbWVudF0sIGF0dGFjaCwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIHdhdGNoKG9wZW5PcHRpb24sIHJlc2V0LCB7XG4gICAgZmx1c2g6ICdzeW5jJ1xuICB9KTtcbiAgaWYgKGdldEN1cnJlbnRTY29wZSgpKSB7XG4gICAgb25TY29wZURpc3Bvc2UoY2xlYW51cCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiBzaGFsbG93UmVhZG9ubHkoeCksXG4gICAgeTogc2hhbGxvd1JlYWRvbmx5KHkpLFxuICAgIHN0cmF0ZWd5OiBzaGFsbG93UmVhZG9ubHkoc3RyYXRlZ3kpLFxuICAgIHBsYWNlbWVudDogc2hhbGxvd1JlYWRvbmx5KHBsYWNlbWVudCksXG4gICAgbWlkZGxld2FyZURhdGE6IHNoYWxsb3dSZWFkb25seShtaWRkbGV3YXJlRGF0YSksXG4gICAgaXNQb3NpdGlvbmVkOiBzaGFsbG93UmVhZG9ubHkoaXNQb3NpdGlvbmVkKSxcbiAgICBmbG9hdGluZ1N0eWxlcyxcbiAgICB1cGRhdGVcbiAgfTtcbn1cblxuZXhwb3J0IHsgYXJyb3csIHVzZUZsb2F0aW5nIH07XG4iLCJleHBvcnQgY29uc3QgaXNDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQsIGVsZW1lbnRzOiBIVE1MRWxlbWVudCB8IEhUTUxFbGVtZW50W10pOiBib29sZWFuID0+IHtcbiAgY29uc3QgdGFyZ2V0cyA9IEFycmF5LmlzQXJyYXkoZWxlbWVudHMpID8gZWxlbWVudHMgOiBbZWxlbWVudHNdO1xuICByZXR1cm4gIXRhcmdldHMuc29tZSgoZWwpID0+IGVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSk7XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBwb3BvdmVyIGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIGRpc3BsYXlpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXBvcG92ZXItLWRvY3MpIGZvciBUaWRlUG9wb3ZlclxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgb2Zmc2V0IGFzIG9mZnNldE1pZGRsZXdhcmUsIHNoaWZ0LCB1c2VGbG9hdGluZyB9IGZyb20gJ0BmbG9hdGluZy11aS92dWUnO1xuICBpbXBvcnQgeyBjb21wdXRlZCwgb25CZWZvcmVNb3VudCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgaXNDbGlja091dHNpZGUgfSBmcm9tICdAL3V0aWxpdGllcy9ldmVudCc7XG4gIGltcG9ydCB7IFRPUF9MQVlFUl9JRCwgaW5pdEZhdXhUb3BMYXllciB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZpZXdwb3J0JztcblxuICBpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgSFRNTCBub2RlIG92ZXIgd2hpY2ggdGhlIFBvcG92ZXIgd2lsbCBhcHBlYXIgKi9cbiAgICBhbmNob3JJZDogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgc3BhY2luZyBiZXR3ZWVuIFBvcG92ZXIgYW5kIGFuY2hvciBub2RlICovXG4gICAgb2Zmc2V0PzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgb2Zmc2V0OiAxNixcbiAgfSk7XG5cbiAgY29uc3QgYW5jaG9yOiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3QgZmxvYXRpbmc6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCByb290OiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3QgaXNIb3ZlcmVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaXNUb2dnbGVkT3BlbiA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlzVG91Y2hEZXZpY2UgPSByZWYoZmFsc2UpO1xuICBjb25zdCBtaWRkbGV3YXJlID0gcmVmKFthdXRvUGxhY2VtZW50KCksIG9mZnNldE1pZGRsZXdhcmUoeyBtYWluQXhpczogcHJvcHMub2Zmc2V0IH0pLCBzaGlmdCh7IHBhZGRpbmc6IDE2IH0pXSk7XG5cbiAgY29uc3QgaXNTaG93UG9wb3ZlciA9IGNvbXB1dGVkKCgpID0+IGlzSG92ZXJlZC52YWx1ZSB8fCBpc1RvZ2dsZWRPcGVuLnZhbHVlKTtcblxuICBjb25zdCB7IGZsb2F0aW5nU3R5bGVzIH0gPSB1c2VGbG9hdGluZyhhbmNob3IsIGZsb2F0aW5nLCB7XG4gICAgbWlkZGxld2FyZSxcbiAgICBzdHJhdGVneTogJ2ZpeGVkJyxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUgfHwgIWZsb2F0aW5nLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGlzQ2xpY2tPdXRzaWRlKGUsIFthbmNob3IudmFsdWUsIGZsb2F0aW5nLnZhbHVlXSkpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIgPSAoKSA9PiB7XG4gICAgaWYgKGlzVG91Y2hEZXZpY2UudmFsdWUpIHJldHVybjtcbiAgICBpc0hvdmVyZWQudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlID0gKCkgPT4ge1xuICAgIGlmIChpc1RvdWNoRGV2aWNlLnZhbHVlKSByZXR1cm47XG4gICAgaXNIb3ZlcmVkLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudFRvdWNoU3RhcnQgPSAoKSA9PiB7XG4gICAgaXNUb3VjaERldmljZS52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlzVG9nZ2xlZE9wZW4udmFsdWUpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIGlzSG92ZXJlZC52YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGhhbmRsZUFuY2hvckVsZW1lbnRUb3VjaFN0YXJ0LCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIpO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUpO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayk7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUpIHJldHVybiBudWxsO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgaGFuZGxlQW5jaG9yRWxlbWVudFRvdWNoU3RhcnQpO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyKTtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlKTtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93biA9IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhZGRPcGVuTGlzdGVuZXJzVG9Sb290ID0gKCkgPT4ge1xuICAgIGlmICghcm9vdC52YWx1ZSkgcmV0dXJuO1xuICAgIHJvb3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrLCB0cnVlKTtcbiAgICByb290LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24pO1xuICB9O1xuXG4gIGNvbnN0IHJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCA9ICgpID0+IHtcbiAgICBpZiAoIXJvb3QudmFsdWUpIHJldHVybjtcbiAgICByb290LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljaywgdHJ1ZSk7XG4gICAgcm9vdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duKTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVBbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGFuY2hvci52YWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByb3BzLmFuY2hvcklkKTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBpc1RvZ2dsZWRPcGVuLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIGFkZE9wZW5MaXN0ZW5lcnNUb1Jvb3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCgpO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5hbmNob3JJZCxcbiAgICAoKSA9PiB7XG4gICAgICByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCgpO1xuICAgICAgdXBkYXRlQW5jaG9yRWxlbWVudCgpO1xuICAgICAgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50KCk7XG4gICAgfVxuICApO1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBtaWRkbGV3YXJlLnZhbHVlID0gW2F1dG9QbGFjZW1lbnQoKSwgb2Zmc2V0TWlkZGxld2FyZSh7IG1haW5BeGlzOiBwcm9wcy5vZmZzZXQgfSksIHNoaWZ0KHsgcGFkZGluZzogMTYgfSldO1xuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgdXBkYXRlQW5jaG9yRWxlbWVudCgpO1xuICAgIHJvb3QudmFsdWUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50KCk7XG4gIH0pO1xuXG4gIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCgpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8VHJhbnNpdGlvbj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLXBvcG92ZXInLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8yLFxuICAgICAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5TSEFET1cuQk9UVE9NLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwiZmxvYXRpbmdcIlxuICAgICAgICA6c3R5bGU9XCJ7IC4uLmZsb2F0aW5nU3R5bGVzIH1cIlxuICAgICAgICB2LXNob3c9XCJpc1Nob3dQb3BvdmVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvVHJhbnNpdGlvbj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXBvcG92ZXIge1xuICAgIG1heC13aWR0aDogMjU2cHg7XG4gIH1cbiAgLnYtZW50ZXItZnJvbSxcbiAgLnYtbGVhdmUtdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgLnYtZW50ZXItYWN0aXZlLFxuICAudi1sZWF2ZS1hY3RpdmUge1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuICAudi1lbnRlci10byxcbiAgLnYtbGVhdmUtZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgcmF0aW5nIGNvbXBvbmVudCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBkaXNwbGF5aW5nIGFuZCBzZWxlY3RpbmcgYSByYXRpbmcuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVyYXRpbmctLWRvY3MpIGZvciBUaWRlUmF0aW5nXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgdGhlIHRleHQgZGlzcGxheWVkIGJlbG93IHRoZSB0aXRsZSAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqIE1heGltdW0gcmF0aW5nIHZhbHVlIC8gTnVtYmVyIG9mIHNlZ21lbnRzICovXG4gICAgbWF4UmF0aW5nPzogbnVtYmVyO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkaXNwbGF5IHRoZSBjdXJyZW50IHJhdGluZyB2YWx1ZSAqL1xuICAgIHNob3dSYXRpbmc/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIHRpdGxlIHRleHQgZGlzcGxheWVkIGFib3ZlIHRoZSByYXRpbmcgY29tcG9uZW50ICovXG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLFxuICAgIG1heFJhdGluZzogMTAsXG4gICAgc2hvd1JhdGluZzogZmFsc2UsXG4gICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgcmF0aW5nVmFsdWUgPSBkZWZpbmVNb2RlbDxudW1iZXI+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3Qgc2VnbWVudHMgPSBjb21wdXRlZCgoKSA9PiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBwcm9wcy5tYXhSYXRpbmcgfSwgKF8sIGluZGV4KSA9PiBpbmRleCArIDEpKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChzZWdtZW50OiBudW1iZXIpID0+IHtcbiAgICByYXRpbmdWYWx1ZS52YWx1ZSA9IHNlZ21lbnQ7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1yYXRpbmcnLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICA8c2VjdGlvbiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLkJPVFRPTS5IQUxGXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yXVwiPlxuICAgICAgICB7eyBwcm9wcy50aXRsZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzMsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMuc2hvd1JhdGluZ1wiXG4gICAgICA+XG4gICAgICAgIHt7IHJhdGluZ1ZhbHVlIH19L3t7IHByb3BzLm1heFJhdGluZyB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxzZWN0aW9uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5CT0RZXzIsIENTUy5QQURESU5HLkJPVFRPTS5PTkUsIENTUy5PVkVSRkxPVy5YWS5ISURERU4sIENTUy5FTExJUFNJU11cIlxuICAgICAgdi1pZj1cInByb3BzLmRlc2NyaXB0aW9uXCJcbiAgICA+XG4gICAgICB7eyBwcm9wcy5kZXNjcmlwdGlvbiB9fVxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzZWN0aW9uIDpjbGFzcz1cIlsndGlkZS1yYXRpbmctYmFyJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuRkxFWC5HUk9XLk9OLCBDU1MuRkxFWC5TSFJJTksuT05dXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1yYXRpbmctc2VnbWVudCcsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICAgIENTUy5GTEVYLlNIUklOSy5PTixcbiAgICAgICAgICBDU1MuRkxFWC5CQVNJUy5aRVJPLFxuICAgICAgICAgIENTUy5CT1JERVIuRlVMTC5aRVJPLFxuICAgICAgICAgIHNlZ21lbnQgPT09IDEgJiYgWyd0aWRlLXJhdGluZy1zZWdtZW50LWZpcnN0J10sXG4gICAgICAgICAgc2VnbWVudCA9PT0gc2VnbWVudHMubGVuZ3RoICYmIFsndGlkZS1yYXRpbmctc2VnbWVudC1sYXN0J10sXG4gICAgICAgICAgc2VnbWVudCA8PSByYXRpbmdWYWx1ZSAmJiBbQ1NTLkJHLlNVUkZBQ0UuR1JBRElFTlRdLFxuICAgICAgICBdXCJcbiAgICAgICAgOmtleT1cInNlZ21lbnRcIlxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhzZWdtZW50KVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB2LWZvcj1cInNlZ21lbnQgaW4gc2VnbWVudHNcIlxuICAgICAgLz5cbiAgICA8L3NlY3Rpb24+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtcmF0aW5nLWJhciB7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICB9XG5cbiAgLnRpZGUtcmF0aW5nLXNlZ21lbnQge1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigxMiUgMCwgMTAwJSAwLCA4OCUgMTAwJSwgMCAxMDAlKTtcbiAgfVxuXG4gIC50aWRlLXJhdGluZy1zZWdtZW50LWZpcnN0IHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA5OTk5cHg7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOTk5OXB4O1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigwIDAsIDEwMCUgMCwgODglIDEwMCUsIDAgMTAwJSk7XG4gIH1cblxuICAudGlkZS1yYXRpbmctc2VnbWVudC1sYXN0IHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogOTk5OXB4O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA5OTk5cHg7XG4gICAgY2xpcC1wYXRoOiBwb2x5Z29uKDEyJSAwLCAxMDAlIDAsIDEwMCUgMTAwJSwgMCAxMDAlKTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVhbG1LZXkgfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcblxuZXhwb3J0IGNvbnN0IExPR09fSEVJR0hUID0ge1xuICBMQVJHRTogMzIsXG4gIFNNQUxMOiAyNCxcbn07XG5cbmV4cG9ydCBjb25zdCBMT0dPX1dJRFRIX0xBUkdFOiBSZWNvcmQ8UmVhbG1LZXksIG51bWJlcj4gPSB7XG4gIEFFUk86IDE0NyxcbiAgQVRWOiAxNDIsXG4gIEJPQVRNQVJUOiAxMjgsXG4gIENZQ0xFOiAxNjksXG4gIEVRVUlQTUVOVDogMTIyLFxuICBQV0M6IDE0OCxcbiAgUlY6IDEyOSxcbiAgU05PVzogMTM2LFxuICBUUlVDSzogMTQ4LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IENTU19SRUFMTV9MT0dPX1NJWkUgPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBTTUFMTDogJ3NtYWxsJyxcbn0gYXMgY29uc3Q7XG4iLCJpbXBvcnQgeyBSRUFMTSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuXG5pbXBvcnQgdHlwZSB7IFJlYWxtLCBSZWFsbUtleSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhbG1LZXlGcm9tUmVhbG0gPSAocmVhbG06IFJlYWxtKTogUmVhbG1LZXkgPT4ge1xuICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoUkVBTE0pIGFzIFtSZWFsbUtleSwgUmVhbG1dW107XG5cbiAgY29uc3QgbWF0Y2ggPSBlbnRyaWVzLmZpbmQoKGVudHJ5KTogZW50cnkgaXMgW1JlYWxtS2V5LCBSZWFsbV0gPT4ge1xuICAgIHJldHVybiBlbnRyeVsxXSA9PT0gcmVhbG07XG4gIH0pO1xuXG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1hcHBpbmcgZm9yICR7cmVhbG19IG5vdCBmb3VuZGApO1xuICB9XG5cbiAgcmV0dXJuIG1hdGNoWzBdO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgcmVhbG0gbG9nbyBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBhIHJlYWxtJ3MgbG9nby5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXJlYWxtbG9nby0tZG9jcykgZm9yIFRpZGVSZWFsbUxvZ29cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgTE9HT19IRUlHSFQsIExPR09fV0lEVEhfTEFSR0UgfSBmcm9tICdAL3R5cGVzL1JlYWxtTG9nbyc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0UmVhbG1LZXlGcm9tUmVhbG0gfSBmcm9tICdAL3V0aWxpdGllcy9yZWFsbSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWFsbSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuICBpbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGluY2x1ZGUgdGV4dCBpbiB0aGUgbG9nbyAqL1xuICAgIG1hcmtPbmx5PzogYm9vbGVhbjtcblxuICAgIC8qKiBTZXRzIHRoZSByZWFsbSBmb3IgdGhpcyBsb2dvIGluc3RhbmNlICovXG4gICAgcmVhbG06IFJlYWxtO1xuICB9O1xuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIG1hcmtPbmx5OiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3QgaW5uZXJTVkcgPSByZWY8Q29tcG9uZW50PigpO1xuXG4gIHR5cGUgQ3NzTGVuZ3RoUGl4ZWxzID0gYCR7bnVtYmVyfXB4YDtcbiAgdHlwZSBMb2dvU2l6ZSA9IHtcbiAgICBoZWlnaHQ6IENzc0xlbmd0aFBpeGVscztcbiAgICB3aWR0aDogQ3NzTGVuZ3RoUGl4ZWxzO1xuICB9O1xuXG4gIGNvbnN0IGxvZ29GdWxsID0gY29tcHV0ZWQ8TG9nb1NpemU+KCgpID0+ICh7XG4gICAgaGVpZ2h0OiBgJHtMT0dPX0hFSUdIVC5MQVJHRX1weGAsXG4gICAgd2lkdGg6IGAke0xPR09fV0lEVEhfTEFSR0VbZ2V0UmVhbG1LZXlGcm9tUmVhbG0ocHJvcHMucmVhbG0pXX1weGAsXG4gIH0pKTtcblxuICBjb25zdCBsb2dvU21hbGwgPSBjb21wdXRlZDxMb2dvU2l6ZT4oKCkgPT4ge1xuICAgIGNvbnN0IHNocmlua0ZhY3RvciA9IExPR09fSEVJR0hULlNNQUxMIC8gTE9HT19IRUlHSFQuTEFSR0U7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlaWdodDogYCR7TE9HT19IRUlHSFQuU01BTEx9cHhgLFxuICAgICAgd2lkdGg6IGAke01hdGgucm91bmQoTE9HT19XSURUSF9MQVJHRVtnZXRSZWFsbUtleUZyb21SZWFsbShwcm9wcy5yZWFsbSldICogc2hyaW5rRmFjdG9yKX1weGAsXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3QgbG9nb01hcms6IExvZ29TaXplID0ge1xuICAgIGhlaWdodDogJzMycHgnLFxuICAgIHdpZHRoOiAnMzJweCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gW3Byb3BzLm1hcmtPbmx5LCBwcm9wcy5yZWFsbV0sXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGVmaW5lQXN5bmNDb21wb25lbnQoKCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMubWFya09ubHkpIHJldHVybiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvYnJhbmRpbmcvbWFyay9tYXJrLSR7cHJvcHMucmVhbG19LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgICAgZWxzZSByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2JyYW5kaW5nL2xvZ28vbG9nby0ke3Byb3BzLnJlYWxtfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICB9KTtcbiAgICAgIGlubmVyU1ZHLnZhbHVlID0gbWFya1Jhdyhjb21wb25lbnQpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1yZWFsbS1sb2dvJywgcHJvcHMubWFya09ubHkgPyAnbWFyaycgOiAnZnVsbCddXCJcbiAgICA6c3R5bGU9XCJ7XG4gICAgICAnLS1sb2dvLWhlaWdodC1mdWxsJzogbG9nb0Z1bGwuaGVpZ2h0LFxuICAgICAgJy0tbG9nby1oZWlnaHQtbWFyayc6IGxvZ29NYXJrLmhlaWdodCxcbiAgICAgICctLWxvZ28taGVpZ2h0LXNtYWxsJzogbG9nb1NtYWxsLmhlaWdodCxcbiAgICAgICctLWxvZ28td2lkdGgtZnVsbCc6IGxvZ29GdWxsLndpZHRoLFxuICAgICAgJy0tbG9nby13aWR0aC1tYXJrJzogbG9nb01hcmsud2lkdGgsXG4gICAgICAnLS1sb2dvLXdpZHRoLXNtYWxsJzogbG9nb1NtYWxsLndpZHRoLFxuICAgIH1cIlxuICA+XG4gICAgPENvbXBvbmVudFxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtcmVhbG0tbG9nbyxcbiAgLnRpZGUtcmVhbG0tbG9nby5sYXJnZSB7XG4gICAgd2lkdGg6IHZhcigtLWxvZ28td2lkdGgtZnVsbCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1mdWxsKTtcbiAgfVxuXG4gIC50aWRlLXJlYWxtLWxvZ28uc21hbGwge1xuICAgIHdpZHRoOiB2YXIoLS1sb2dvLXdpZHRoLXNtYWxsKTtcbiAgICBoZWlnaHQ6IHZhcigtLWxvZ28taGVpZ2h0LXNtYWxsKTtcbiAgfVxuXG4gIC50aWRlLXJlYWxtLWxvZ28ubWFyayB7XG4gICAgd2lkdGg6IHZhcigtLWxvZ28td2lkdGgtbWFyayk7XG4gICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1tYXJrKTtcbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC50aWRlLXJlYWxtLWxvZ28uc20tc21hbGwge1xuICAgICAgd2lkdGg6IHZhcigtLWxvZ28td2lkdGgtc21hbGwpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1zbWFsbCk7XG4gICAgfVxuXG4gICAgLnRpZGUtcmVhbG0tbG9nby5zbS1sYXJnZSB7XG4gICAgICB3aWR0aDogdmFyKC0tbG9nby13aWR0aC1mdWxsKTtcbiAgICAgIGhlaWdodDogdmFyKC0tbG9nby1oZWlnaHQtZnVsbCk7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLnRpZGUtcmVhbG0tbG9nby5tZC1zbWFsbCB7XG4gICAgICB3aWR0aDogdmFyKC0tbG9nby13aWR0aC1zbWFsbCk7XG4gICAgICBoZWlnaHQ6IHZhcigtLWxvZ28taGVpZ2h0LXNtYWxsKTtcbiAgICB9XG5cbiAgICAudGlkZS1yZWFsbS1sb2dvLm1kLWxhcmdlIHtcbiAgICAgIHdpZHRoOiB2YXIoLS1sb2dvLXdpZHRoLWZ1bGwpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1mdWxsKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIzMnB4KSB7XG4gICAgLnRpZGUtcmVhbG0tbG9nby5sZy1zbWFsbCB7XG4gICAgICB3aWR0aDogdmFyKC0tbG9nby13aWR0aC1zbWFsbCk7XG4gICAgICBoZWlnaHQ6IHZhcigtLWxvZ28taGVpZ2h0LXNtYWxsKTtcbiAgICB9XG5cbiAgICAudGlkZS1yZWFsbS1sb2dvLmxnLWxhcmdlIHtcbiAgICAgIHdpZHRoOiB2YXIoLS1sb2dvLXdpZHRoLWZ1bGwpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1mdWxsKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTkyMHB4KSB7XG4gICAgLnRpZGUtcmVhbG0tbG9nby54bC1zbWFsbCB7XG4gICAgICB3aWR0aDogdmFyKC0tbG9nby13aWR0aC1zbWFsbCk7XG4gICAgICBoZWlnaHQ6IHZhcigtLWxvZ28taGVpZ2h0LXNtYWxsKTtcbiAgICB9XG5cbiAgICAudGlkZS1yZWFsbS1sb2dvLnhsLWxhcmdlIHtcbiAgICAgIHdpZHRoOiB2YXIoLS1sb2dvLXdpZHRoLWZ1bGwpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1mdWxsKTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IExpbmsgfSBmcm9tICdAL3R5cGVzL0xpbmsnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgICBsaW5rczogTGlua1tdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaGVhZGluZzogJycsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ0aWRlLXNlby1saW5rc1wiPlxuICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5CT1RUT00uSEFMRl1cIj5cbiAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICA8L2gyPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuR0FQLlRXTywgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLXNlby1saW5rJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuRk9OVC5ST0xFLkJPRFlfMl1cIlxuICAgICAgICA6a2V5PVwibGluay5sYWJlbFwiXG4gICAgICAgIHYtZm9yPVwibGluayBpbiBwcm9wcy5saW5rc1wiXG4gICAgICA+XG4gICAgICAgIDxJbnRlcm5hbEJhc2VMaW5rXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdXCJcbiAgICAgICAgICA6aHJlZj1cImxpbmsudXJsXCJcbiAgICAgICAgICA6dGFyZ2V0PVwibGluay5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9JbnRlcm5hbEJhc2VMaW5rPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAvKiBUT0RPOiBSZWZhY3RvciB0byBhY2NlcHQgYnJlYWtwb2ludCBwcm9wIGluIG9yZGVyIHRvIGFjY29tcGxpc2ggdGhpcyB3aXRoIG5laXRoZXIgY3VzdG9tIGJyZWFrcG9pbnRzIG5vciBkZXBlbmRlbmN5IG9uIFZpZXdwb3J0U3RvcmUuICovXG4gIC50aWRlLXNlby1saW5rIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIC50aWRlLXNlby1saW5rIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gMnJlbSkgLyAyKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIzMnB4KSB7XG4gICAgLnRpZGUtc2VvLWxpbmsge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSA2cmVtKSAvIDQpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgc2hlZXQgY29tcG9uZW50IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIGRpc3BsYXlpbmcgY29udGVudCBpbiBhIG1vZGFsLWxpa2UgbWVudSBvdmVybGF5IG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBzY3JlZW4uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVzaGVldC0tZG9jcykgZm9yIFRpZGVTaGVldFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25CZWZvcmVNb3VudCwgb25CZWZvcmVVbm1vdW50LCBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIsIHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIENvbnRyb2xzIGRpc3BsYXkgb2YgdGhlIGJhY2sgYnV0dG9uLiAqL1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gIH07XG5cbiAgd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgZGlhbG9nRWxlbWVudDogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG5cbiAgY29uc3QgaXNPcGVuID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgICBzZXRTY3JvbGxMb2NrKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5jbG9zZSgpO1xuICAgIHNldFNjcm9sbExvY2soZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGNsb3NlID0gKCkgPT4ge1xuICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFc2NhcGVLZXlkb3duID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNsb3NlKCk7XG4gIH07XG5cbiAgd2F0Y2goaXNPcGVuLCAoKSA9PiB7XG4gICAgaWYgKCFkaWFsb2dFbGVtZW50LnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgfVxuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9XG4gIH0pO1xuXG4gIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgaXNPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaWFsb2dcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1zaGVldCcsIENTUy5CRy5JTklUSUFMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5XSURUSC5GVUxMLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOXVwiXG4gICAgICByZWY9XCJkaWFsb2dFbGVtZW50XCJcbiAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgICBAY2xvc2UucHJldmVudFxuICAgICAgQGtleWRvd24uZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5ZG93blwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtc2hlZXQtYm9keScsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlRPUC5PTkUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICAgIENTUy5aX0lOREVYLk9ORSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiZW1pdCgnYmFjaycpXCJcbiAgICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImNsb3NlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICA8VGlkZURpdmlkZXIgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtc2hlZXQtY29udGVudCcsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlkuQVVUTyxcbiAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5PTkUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaWFsb2c+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1zaGVldCB7XG4gICAgLS1zaGVldC1wYWRkaW5nLXg6IHZhcigtLXRpZGUtc3BhY2luZy0xKTtcbiAgICBtYXgtd2lkdGg6IHVuc2V0O1xuICAgIG1heC1oZWlnaHQ6IHVuc2V0O1xuICAgIGp1c3RpZnktaXRlbXM6IHJpZ2h0O1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXRbb3Blbl0ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0OjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gIH1cblxuICAudGlkZS1zaGVldFtvcGVuXTo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gIH1cblxuICAudGlkZS1zaGVldC1ib2R5IHtcbiAgICBtYXgtd2lkdGg6IG1pbihjYWxjKDEwMHZ3IC0gdmFyKC0tdGlkZS1zcGFjaW5nLTIpKSwgMzExcHgpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQtY29udGVudCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1zaGVldC1wYWRkaW5nLXgpIHZhcigtLXRpZGUtc2FmZS1mcikgdmFyKC0tc2hlZXQtcGFkZGluZy14KTtcbiAgfVxuXG4gIDp3aGVyZSgudGlkZS1zaGVldC1jb250ZW50KTpkZWVwKD4gOndoZXJlKCopKSB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cblxuICBAc3RhcnRpbmctc3R5bGUge1xuICAgIC50aWRlLXNoZWV0W29wZW5dIHtcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxuXG4gICAgLnRpZGUtc2hlZXRbb3Blbl06OmJhY2tkcm9wIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgc3dpdGNoIGNvbXBvbmVudCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0b2dnbGluZyBhIGJvb2xlYW4gdmFsdWUuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVzd2l0Y2gtLWRvY3MpIGZvciBUaWRlU3dpdGNoXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgY2xpY2thYmlsaXR5ICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgaXNBY3RpdmUudmFsdWUgPSAhaXNBY3RpdmUudmFsdWU7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXN3aXRjaCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICBDU1MuRkxFWC5HUk9XLk9GRixcbiAgICAgIGlzQWN0aXZlID8gWydhY3RpdmUnLCBDU1MuQkcuU0VDT05EQVJZXSA6IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFRdLFxuICAgICAgZGlzYWJsZWQgJiYgW0NTUy5PUEFDSVRZLkRJU0FCTEVEXSxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2tcIlxuICAgIGFyaWEtbGFiZWw9XCJTd2l0Y2hcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1zd2l0Y2gtaW5kaWNhdG9yJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBpc0FjdGl2ZSA/IFsnYWN0aXZlJywgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0gOiBbQ1NTLkJHLlNFQ09OREFSWV0sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtc3dpdGNoIHtcbiAgICAtLXN3aXRjaC1pbmRpY2F0b3Itc2l6ZTogMjRweDtcbiAgICAtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luOiB2YXIoLS10aWRlLXNwYWNpbmctMVxcLzQpO1xuICAgIC0tc3dpdGNoLWJvcmRlci13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgLS1zd2l0Y2gtd2lkdGg6IGNhbGModmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSAqIDIgKyB2YXIoLS1zd2l0Y2gtaW5kaWNhdG9yLW1hcmdpbikgKiA0KTtcbiAgICAtLXN3aXRjaC1oZWlnaHQ6IGNhbGModmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSArIHZhcigtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luKSAqIDIpO1xuXG4gICAgd2lkdGg6IHZhcigtLXN3aXRjaC13aWR0aCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1zd2l0Y2gtaGVpZ2h0KTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvciB7XG4gICAgbGVmdDogdmFyKC0tc3dpdGNoLWluZGljYXRvci1tYXJnaW4pO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdCwgYm9yZGVyLWNvbG9yLCBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvci5hY3RpdmUge1xuICAgIGxlZnQ6IGNhbGMoXG4gICAgICB2YXIoLS1zd2l0Y2gtd2lkdGgpIC0gdmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSAtIHZhcigtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luKSAtIHZhcigtLXN3aXRjaC1ib3JkZXItd2lkdGgpXG4gICAgKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdGFicyBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXRhYnMtLWRvY3MpIGZvciBUaWRlVGFic1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IFRpZGVDYXJvdXNlbCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSc7XG4gIGltcG9ydCBUaWRlTGluayBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUxpbmsudnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBTZXRzIGxhYmVscyBhbmQgY2FsbGJhY2sgZm9yIGVhY2ggdGFiICovXG4gICAgdGFiczogVGFiW107XG4gIH07XG5cbiAgZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgY3VycmVudFRhYiA9IGRlZmluZU1vZGVsPG51bWJlcj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY3VycmVudFRhYi52YWx1ZSA9IGluZGV4O1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtdGFicycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5CT1JERVIuQk9UVE9NLlRXTywgQ1NTLkJPUkRFUi5DT0xPUi5MT1ddXCI+XG4gICAgPFRpZGVDYXJvdXNlbCA6aXMtZmxvYXRpbmc9XCJ0cnVlXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLlguSEFMRl1cIlxuICAgICAgICA6a2V5PVwidGFiLmxhYmVsXCJcbiAgICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gdGFic1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlTGlua1xuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGluZGV4ID09PSBjdXJyZW50VGFiID8gW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuQlJBTkRdIDogW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmVsZW1lbnQ9XCJFTEVNRU5ULkJVVFRPTlwiXG4gICAgICAgICAgOmxhYmVsPVwidGFiLmxhYmVsXCJcbiAgICAgICAgICA6c3VidGxlPVwidHJ1ZVwiXG4gICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soaW5kZXgpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3JvdW5kZWQtYm9yZGVyJywgQ1NTLk1BUkdJTi5YLkhBTEYsIGluZGV4ID09PSBjdXJyZW50VGFiICYmIFtDU1MuQkcuUFJJTUFSWV1dXCIgLz5cbiAgICAgIDwvbGk+XG4gICAgPC9UaWRlQ2Fyb3VzZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnJvdW5kZWQtYm9yZGVyIHtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10aWRlLXJhZGl1cy1mdWxsKSB2YXIoLS10aWRlLXJhZGl1cy1mdWxsKSAwIDA7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBpbmplY3QsIHByb3ZpZGUsIHJlYWRvbmx5LCByZWYgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgdHlwZSB7IFRpZGVUb2FzdCwgVGlkZVRvYXN0T21pdElkLCBUaWRlVG9hc3RlciB9IGZyb20gJ0AvdHlwZXMvVG9hc3QnO1xuXG5jb25zdCBUT0FTVEVSX0tFWSA9IFN5bWJvbCgndGlkZS10b2FzdGVyJyk7XG5cbmNvbnN0IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUyA9IHtcbiAgQUNUSU9OQUJMRTogMTAwMDAsXG4gIElORk9STUFUSU9OQUw6IDUwMDAsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgdXNlVGlkZVRvYXN0ZXIgPSAoKSA9PiB7XG4gIGNvbnN0IGluamVjdGVkID0gaW5qZWN0PFRpZGVUb2FzdGVyPihUT0FTVEVSX0tFWSk7XG4gIGlmIChpbmplY3RlZCkgcmV0dXJuIGluamVjdGVkO1xuXG4gIGNvbnN0IHRpbWVvdXRJZCA9IHJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpO1xuICBjb25zdCB0b2FzdHMgPSByZWY8VGlkZVRvYXN0W10+KFtdKTtcbiAgY29uc3QgaWQgPSByZWY8bnVtYmVyPigwKTtcblxuICBjb25zdCBhZGRUb2FzdCA9IChuZXdUb2FzdDogVGlkZVRvYXN0T21pdElkKSA9PiB7XG4gICAgaWQudmFsdWUrKztcbiAgICBjbGVhclRvYXN0cygpO1xuXG4gICAgdG9hc3RzLnZhbHVlLnB1c2goe1xuICAgICAgLi4ubmV3VG9hc3QsXG4gICAgICBpZDogYHRpZGUtdG9hc3QtJHtpZC52YWx1ZX1gLFxuICAgIH0gYXMgVGlkZVRvYXN0KTtcblxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY2FuY2VsQXV0b0Rpc21pc3MoKTtcbiAgICAgIHN0YXJ0QXV0b0Rpc21pc3MoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2xlYXJUb2FzdHMgPSAoKSA9PiB7XG4gICAgdG9hc3RzLnZhbHVlID0gW107XG4gIH07XG5cbiAgY29uc3QgY2FuY2VsQXV0b0Rpc21pc3MgPSAoKSA9PiB7XG4gICAgaWYgKHRpbWVvdXRJZC52YWx1ZSkgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3Qgc3RhcnRBdXRvRGlzbWlzcyA9ICgpID0+IHtcbiAgICBpZiAoIXRvYXN0cy52YWx1ZS5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IGF1dG9EaXNtaXNzRHVyYXRpb24gPSB0b2FzdHMudmFsdWVbMF0uYWN0aW9uXG4gICAgICA/IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUy5BQ1RJT05BQkxFXG4gICAgICA6IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUy5JTkZPUk1BVElPTkFMO1xuICAgIHRpbWVvdXRJZC52YWx1ZSA9IHNldFRpbWVvdXQoY2xlYXJUb2FzdHMsIGF1dG9EaXNtaXNzRHVyYXRpb24pO1xuICB9O1xuXG4gIGNvbnN0IHRvYXN0ZXI6IFRpZGVUb2FzdGVyID0ge1xuICAgIGFkZFRvYXN0LFxuICAgIGNhbmNlbEF1dG9EaXNtaXNzLFxuICAgIGNsZWFyVG9hc3RzLFxuICAgIHN0YXJ0QXV0b0Rpc21pc3MsXG4gICAgdG9hc3RzOiByZWFkb25seSh0b2FzdHMpLFxuICB9O1xuXG4gIHByb3ZpZGUoVE9BU1RFUl9LRVksIHRvYXN0ZXIpO1xuXG4gIHJldHVybiB0b2FzdGVyO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdG9hc3RlciBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRldG9hc3Rlci0tZG9jcykgZm9yIFRpZGVUb2FzdGVyXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyBvbkJlZm9yZU1vdW50IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUFsZXJ0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQWxlcnQudnVlJztcbiAgaW1wb3J0IHsgdXNlVGlkZVRvYXN0ZXIgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVUb2FzdGVyJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgY29uc3QgeyB0b2FzdHMsIGNsZWFyVG9hc3RzLCBjYW5jZWxBdXRvRGlzbWlzcywgc3RhcnRBdXRvRGlzbWlzcyB9ID0gdXNlVGlkZVRvYXN0ZXIoKTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtdG9hc3RlcicsXG4gICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkZJWEVELFxuICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VHJhbnNpdGlvbkdyb3VwIG5hbWU9XCJwb3BcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLXRvYXN0LXdyYXAnLFxuICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlpfSU5ERVguT05FLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uRlVMTC5PTkUsXG4gICAgICAgICAgICBDU1MuV0lEVEguU1RSRVRDSCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6a2V5PVwidG9hc3QuaWRcIlxuICAgICAgICAgIEBtb3VzZWVudGVyPVwiY2FuY2VsQXV0b0Rpc21pc3NcIlxuICAgICAgICAgIEBtb3VzZWxlYXZlPVwic3RhcnRBdXRvRGlzbWlzc1wiXG4gICAgICAgICAgdi1mb3I9XCJ0b2FzdCBpbiB0b2FzdHNcIlxuICAgICAgICA+XG4gICAgICAgICAgPFRpZGVBbGVydFxuICAgICAgICAgICAgOmN0YS1sYWJlbD1cInRvYXN0LmFjdGlvbj8ubGFiZWxcIlxuICAgICAgICAgICAgOmhlYWRpbmc9XCJ0b2FzdC5oZWFkaW5nXCJcbiAgICAgICAgICAgIDpzdHlsZT1cInsgJy0tdGlkZS1tYXgtd2lkdGgnOiAnbm9uZScgfVwiXG4gICAgICAgICAgICBAY2xvc2U9XCJjbGVhclRvYXN0c1wiXG4gICAgICAgICAgICBAY3RhLWNsaWNrPVwidG9hc3Q/LmFjdGlvbj8uY2FsbGJhY2tcIlxuICAgICAgICAgICAgaXMtZGlzbWlzc2libGVcbiAgICAgICAgICAgIGlzLXRvYXN0XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdG9hc3QuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICA8L1RpZGVBbGVydD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1RyYW5zaXRpb25Hcm91cD5cbiAgICA8L2Rpdj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC5wb3AtZW50ZXItYWN0aXZlLFxuICAucG9wLWxlYXZlLWFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5LCB0cmFuc2Zvcm0sIHRyYW5zbGF0ZTtcbiAgfVxuXG4gIC5wb3AtZW50ZXItZnJvbSB7XG4gICAgdHJhbnNsYXRlOiAxMDAlIDA7XG4gIH1cblxuICAucG9wLWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHotaW5kZXg6IDAgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5wb3AtbGVhdmUtYWN0aXZlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAudGlkZS10b2FzdC13cmFwIHtcbiAgICAgIHdpZHRoOiA0MDBweDtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iXSwibmFtZXMiOlsiT1JJRU5UQVRJT04iLCJDU1MiLCJ1dGlsaXRpZXMiLCJicmVha3BvaW50IiwidXRpbGl0eSIsIl9fZGVmYXVsdF9fIiwicHJvcHMiLCJfX3Byb3BzIiwiX29wZW5CbG9jayIsIl9jcmVhdGVFbGVtZW50QmxvY2siLCJfaG9pc3RlZF8xIiwiX2NyZWF0ZUVsZW1lbnRWTm9kZSIsIl9ub3JtYWxpemVDbGFzcyIsIl91bnJlZiIsIlJFQUxNIiwiU0laRSIsIlNJWkVfQlVUVE9OIiwiZm9ybWF0TnVtYmVyIiwiaW5wdXQiLCJvdXRwdXQiLCJkaWdpdHMiLCJmb3JtYXRQYXNjYWxDYXNlIiwid29yZCIsImZvcm1hdFBob25lIiwiZm9ybWF0UHJpY2UiLCJpbm5lclNWRyIsInJlZiIsIndhdGNoIiwiaWQiLCJuYW1lIiwicHJlZml4IiwicmVhbG1Gb2xkZXIiLCJjb21wb25lbnQiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsIl9fdmFyaWFibGVEeW5hbWljSW1wb3J0UnVudGltZUhlbHBlciIsIm1hcmtSYXciLCJfY3JlYXRlQmxvY2siLCJfcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQiLCJJQ09OIiwiSUNPTl9SRUFMTSIsImlzRXhwYW5kZWQiLCJfdXNlTW9kZWwiLCJoYW5kbGVUb2dnbGVDbGljayIsIm5ld1ZhbHVlIiwiVGlkZURpdmlkZXIiLCJfY3JlYXRlVk5vZGUiLCJUaWRlSWNvbiIsIl9yZW5kZXJTbG90IiwiX2N0eCIsIkVMRU1FTlQiLCJFTEVNRU5UX0JST0FEIiwidGlkZUNvbmZpZ0RlZmF1bHRzIiwiQ09ORklHX0tFWSIsInByb3ZpZGVUaWRlQ29uZmlnIiwiY29uZmlnIiwiY29uZmlnV2l0aERlZmF1bHRzIiwicHJvdmlkZSIsInVzZVRpZGVDb25maWciLCJpbmplY3QiLCJsaW5rQ29tcG9uZW50IiwiUFJJT1JJVFkiLCJUQVJHRVQiLCJ0eXBlQXR0cmlidXRlIiwiY29tcHV0ZWQiLCJyb290RWxlbWVudCIsIkludGVybmFsQmFzZUxpbmsiLCJfdG9EaXNwbGF5U3RyaW5nIiwiQUxFUlQiLCJlbWl0IiwiX19lbWl0Iiwic2xvdHMiLCJ1c2VTbG90cyIsImhhc0JvZHkiLCJub2RlcyIsIl9hIiwibm9kZSIsIkNvbW1lbnQiLCJpY29uVHlwZSIsIlRpZGVMaW5rIiwiVGlkZUJ1dHRvbkljb24iLCJCQURHRV9DT0xPUiIsIkJBREdFX0NPTE9SX0RFVEFJTFMiLCJCQURHRV9UUlVTVEVEIiwiX0ZyYWdtZW50IiwiY3J1bWIiLCJpbmRleCIsIl9jcmVhdGVUZXh0Vk5vZGUiLCJfaG9pc3RlZF8yIiwiaXNUb3VjaGVkIiwiaXNTYXZlZCIsIl9jYWNoZSIsIiRldmVudCIsImN1cnJlbnRJbmRleCIsInVuaXF1ZUlkIiwidXNlSWQiLCJpbnB1dEZvcm1BdHRyaWJ1dGUiLCJpbnB1dE5hbWVBdHRyaWJ1dGUiLCJfcmVuZGVyTGlzdCIsInRhYiIsIlRZUEVfQ0FSRCIsImNhcm91c2VsUmVmIiwiY29udGFpbmVyUmVmIiwiY29udGVudFdpZHRoIiwiY3VycmVudFBhZ2VJbmRleCIsImRvdHNSZWYiLCJmcmFtZVdpZHRoIiwiaXNGaXJzdFNsaWRlIiwiaXNMYXN0U2xpZGUiLCJzaG93QnV0dG9ucyIsInNsaWRlT2JzZXJ2ZXIiLCJzbGlkZXMiLCJzbGlkZXNJblZpZXciLCJzbG90T2JzZXJ2ZXIiLCJ0b3VjaFN0YXJ0Iiwic2xpZGVzSW5WaWV3Q291bnQiLCJjdXJyZW50UGFnZSIsImRvdENvbnRhaW5lcldpZHRoIiwiZG90Q291bnRWaXNpYmxlIiwiZG90V2lkdGgiLCJkb3RHYXAiLCJ0b3RhbFBhZ2VzIiwicXVvdGllbnQiLCJzY3JvbGxUaW1lb3V0IiwiZ2V0RG90Q2xhc3MiLCJkb3RJbmRleCIsImNsYXNzTmFtZSIsImdldElzRWxlbWVudFdpdGhpbkNvbnRhaW5lciIsImVsZW1lbnQiLCJjb250YWluZXIiLCJjb250YWluZXJSZWN0IiwiY29udGFpbmVyUmlnaHQiLCJlbGVtZW50UmVjdCIsImhhbmRsZVRvdWNoRW5kIiwiZXZlbnQiLCJ0b3VjaEVuZCIsImRlbHRhWCIsImRlbHRhWSIsInNjcm9sbEJ5RGVsdGEiLCJoYW5kbGVUb3VjaFN0YXJ0IiwiaGFuZGxlV2hlZWwiLCJpc1NoaWZ0S2V5RG93biIsImlzV2hlZWwiLCJvZmZzZXQiLCJzY3JvbGxUb09mZnNldCIsIm1lYXN1cmVEb20iLCJzbGlkZSIsIm9ic2VydmVTbGlkZXMiLCJvcHRpb25zIiwiZW50cmllcyIsInNsaWRlc0FkZGVkVG9WaWV3IiwiZW50cnkiLCJzbGlkZUluZGV4IiwiYSIsImIiLCJjaGlsZCIsIm9ic2VydmVTbG90Iiwib2JzZXJ2ZXJDYWxsYmFjayIsImRlbHRhIiwic2hvd1ByZXZpb3VzUGFnZSIsInNob3dQcmV2aW91c1NsaWRlIiwic2hvd05leHRQYWdlIiwic2hvd05leHRTbGlkZSIsInRhcmdldCIsImlzU2Nyb2xsaW5nTGVmdCIsInVwZGF0ZURvdHMiLCJuZXh0U2xpZGUiLCJwcmV2aW91c1NsaWRlIiwiY2VudGVyRG90Iiwib25Nb3VudGVkIiwib25Vbm1vdW50ZWQiLCJfYiIsIl9ub3JtYWxpemVTdHlsZSIsIl8iLCJpc0FjdGl2ZSIsImhhbmRsZUNsaWNrIiwiX2hvaXN0ZWRfMyIsIl9ob2lzdGVkXzQiLCJfaG9pc3RlZF81IiwiRk9STV9LRVkiLCJ1c2VUaWRlRm9ybSIsImZvcmNlU2hvd0Vycm9ycyIsInVzZUZvcm1Db250ZXh0IiwicmV2ZWFsVmFsaWRhdGlvbkVycm9ycyIsImhhbmRsZVN1Ym1pdCIsImUiLCJPQkpFQ1RfRklUIiwicGljdHVyZSIsImltZyIsImltYWdlRGVmYXVsdCIsIm9iamVjdEZpdENsYXNzTmFtZSIsInNldEltYWdlRnJvbURlZmF1bHQiLCJjdXJyZW50U3JjIiwic291cmNlcyIsInNvdXJjZSIsIl9jIiwiVGlkZUltYWdlIiwiZXJyb3JNZXNzYWdlRGVmYXVsdCIsIlZBTElEQVRJT05fUkVTVUxUIiwiY2hlY2tGb3JtYXQiLCJmb3JtYXQiLCJtZXNzYWdlIiwidmFsdWUiLCJyZXN1bHQiLCJnZXRGaWVsZExlbmd0aElzVmFsaWQiLCJtYXhsZW5ndGgiLCJtaW5sZW5ndGgiLCJyZXF1aXJlZCIsImlzRW1wdHlBbmRVbnJlcXVpcmVkIiwiaXNUb29Mb25nIiwiZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IiwiZXJyb3JGcm9tUHJvcHMiLCJ2YWxpZGF0b3JzIiwidmFsaWRhdGlvbiIsInZhbGlkYXRlUHJvcGVydHkiLCJsZW5ndGhWYWxpZGF0aW9uIiwidmFsaWRhdGVMZW5ndGgiLCJyZXNwb25zZSIsInZhbGlkYXRvciIsIm1vZGVsVmFsdWUiLCJmb3JtQ29udGV4dCIsImlzVmFsaWRhdGluZyIsImVycm9yUmVmIiwiZm9ybWF0dGVkTGFiZWwiLCJpc0NoZWNrZWQiLCJzaG93RXJyb3IiLCJoYXNFcnJvckZyb21Qcm9wIiwic3VwcG9ydGluZ1RleHRNZXNzYWdlIiwiZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0Iiwid2F0Y2hFZmZlY3QiLCJUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCIsImNoZWNrZWQiLCJvbGRWYWx1ZSIsIkZPUk1BVCIsIkZPUk1BVF9SRUdFWCIsIlZBTElEQVRPUiIsIkVSUk9SX0RJU1BMQVkiLCJoYXNGb2N1cyIsImlucHV0SWQiLCJzZWxlY3RFbGVtZW50IiwiaGFzTWluaWxhYmVsIiwiaXNFbXB0eSIsImV4cGFuZE9wdGlvbnMiLCJoYW5kbGVGb2N1cyIsImhhbmRsZUZvY3VzT3V0Iiwib3B0Z3JvdXAiLCJvcHRpb24iLCJfaG9pc3RlZF82IiwiZ2V0RXJyb3JNZXNzYWdlIiwiZXJyb3JGcm9tUmVmIiwiZ2V0RmllbGRIYXNFcnJvciIsImhhbmRsZUZpZWxkVmFsaWRhdGlvbiIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwiaGFzRXJyb3IiLCJfX2V4cG9zZSIsIlRFWFRfSU5QVVRfVFlQRSIsIklOUFVUX01PREUiLCJnZXRUZXh0SW5wdXRNb2RlIiwidHlwZSIsImlucHV0bW9kZSIsImlucHV0RWxlbWVudCIsInNob3dQYXNzd29yZCIsImlucHV0TW9kZUF0dHJpYnV0ZSIsImlucHV0VHlwZSIsInNob3VsZFNob3dDbGVhckJ1dHRvbiIsInNob3VsZFNob3dQYXNzd29yZEJ1dHRvbiIsImhhbmRsZUNsZWFyIiwiaGFuZGxlRmllbGRDbGljayIsInByZXZlbnRJbnB1dEZvY3VzTG9zc09uTW91c2Vkb3duIiwiaGFzQ2xlYXIiLCJoYW5kbGVWYWxpZGF0aW9uIiwiaGFuZGxlSW5wdXQiLCJ1cGRhdGVWYWx1ZSIsInRleHRhcmVhRWxlbWVudCIsInByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duIiwiQlJFQUtQT0lOVCIsIk1FRElBIiwic2V0U2Nyb2xsTG9jayIsImlzTG9ja2VkIiwiYm9keSIsInNjcm9sbFkiLCJuZXh0VGljayIsInNhdmVkU2Nyb2xsWSIsIlRPUF9MQVlFUl9JRCIsImluaXRGYXV4VG9wTGF5ZXIiLCJ0b3BMYXllciIsIm1vZGFsQ29udGVudCIsIm1vZGFsRGlhbG9nIiwiaXNPcGVuIiwidHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4iLCJ0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UiLCJzY3JvbGxDb250ZW50VG9Ub3AiLCJjbG9zZSIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJoYW5kbGVFc2NhcGVLZXlkb3duIiwib25CZWZvcmVNb3VudCIsIm9uQmVmb3JlVW5tb3VudCIsIl9UZWxlcG9ydCIsIiRzbG90cyIsInBhZ2luYXRpb25CdXR0b25zIiwiZW1wdHkiLCJoYW5kbGVQcmV2aW91c0NsaWNrIiwiaGFuZGxlTmV4dENsaWNrIiwicGFnaW5hdGlvbkJ1dHRvbiIsIlRpZGVCdXR0b25QYWdpbmF0aW9uIiwic2lkZXMiLCJhbGlnbm1lbnRzIiwicGxhY2VtZW50cyIsImFjYyIsInNpZGUiLCJtaW4iLCJtYXgiLCJyb3VuZCIsImZsb29yIiwiY3JlYXRlQ29vcmRzIiwidiIsIm9wcG9zaXRlU2lkZU1hcCIsIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwiY2xhbXAiLCJzdGFydCIsImVuZCIsImV2YWx1YXRlIiwicGFyYW0iLCJnZXRTaWRlIiwicGxhY2VtZW50IiwiZ2V0QWxpZ25tZW50IiwiZ2V0T3Bwb3NpdGVBeGlzIiwiYXhpcyIsImdldEF4aXNMZW5ndGgiLCJnZXRTaWRlQXhpcyIsImdldEFsaWdubWVudEF4aXMiLCJnZXRBbGlnbm1lbnRTaWRlcyIsInJlY3RzIiwicnRsIiwiYWxpZ25tZW50IiwiYWxpZ25tZW50QXhpcyIsImxlbmd0aCIsIm1haW5BbGlnbm1lbnRTaWRlIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsImV4cGFuZFBhZGRpbmdPYmplY3QiLCJwYWRkaW5nIiwiZ2V0UGFkZGluZ09iamVjdCIsInJlY3RUb0NsaWVudFJlY3QiLCJyZWN0IiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsImNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50IiwiX3JlZiIsInJlZmVyZW5jZSIsImZsb2F0aW5nIiwic2lkZUF4aXMiLCJhbGlnbkxlbmd0aCIsImlzVmVydGljYWwiLCJjb21tb25YIiwiY29tbW9uWSIsImNvbW1vbkFsaWduIiwiY29vcmRzIiwiY29tcHV0ZVBvc2l0aW9uIiwic3RyYXRlZ3kiLCJtaWRkbGV3YXJlIiwicGxhdGZvcm0iLCJ2YWxpZE1pZGRsZXdhcmUiLCJzdGF0ZWZ1bFBsYWNlbWVudCIsIm1pZGRsZXdhcmVEYXRhIiwicmVzZXRDb3VudCIsImkiLCJmbiIsIm5leHRYIiwibmV4dFkiLCJkYXRhIiwicmVzZXQiLCJkZXRlY3RPdmVyZmxvdyIsInN0YXRlIiwiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwiZWxlbWVudHMiLCJib3VuZGFyeSIsInJvb3RCb3VuZGFyeSIsImVsZW1lbnRDb250ZXh0IiwiYWx0Qm91bmRhcnkiLCJwYWRkaW5nT2JqZWN0IiwiY2xpcHBpbmdDbGllbnRSZWN0Iiwib2Zmc2V0UGFyZW50Iiwib2Zmc2V0U2NhbGUiLCJlbGVtZW50Q2xpZW50UmVjdCIsImdldFBsYWNlbWVudExpc3QiLCJhdXRvQWxpZ25tZW50IiwiYWxsb3dlZFBsYWNlbWVudHMiLCJhdXRvUGxhY2VtZW50IiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QIiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QMiIsIl9wbGFjZW1lbnRzVGhhdEZpdE9uRSIsImNyb3NzQXhpcyIsImRldGVjdE92ZXJmbG93T3B0aW9ucyIsInBsYWNlbWVudHMkMSIsIm92ZXJmbG93IiwiY3VycmVudFBsYWNlbWVudCIsImFsaWdubWVudFNpZGVzIiwiY3VycmVudE92ZXJmbG93cyIsImFsbE92ZXJmbG93cyIsIm5leHRQbGFjZW1lbnQiLCJwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UiLCJkIiwicmVzZXRQbGFjZW1lbnQiLCJjb252ZXJ0VmFsdWVUb0Nvb3JkcyIsIm1haW5BeGlzTXVsdGkiLCJjcm9zc0F4aXNNdWx0aSIsInJhd1ZhbHVlIiwibWFpbkF4aXMiLCJfbWlkZGxld2FyZURhdGEkb2Zmc2UiLCJfbWlkZGxld2FyZURhdGEkYXJyb3ciLCJkaWZmQ29vcmRzIiwic2hpZnQiLCJjaGVja01haW5BeGlzIiwiY2hlY2tDcm9zc0F4aXMiLCJsaW1pdGVyIiwibWFpbkF4aXNDb29yZCIsImNyb3NzQXhpc0Nvb3JkIiwibWluU2lkZSIsIm1heFNpZGUiLCJsaW1pdGVkQ29vcmRzIiwiaGFzV2luZG93IiwiZ2V0Tm9kZU5hbWUiLCJpc05vZGUiLCJnZXRXaW5kb3ciLCJfbm9kZSRvd25lckRvY3VtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50IiwiaXNFbGVtZW50IiwiaXNIVE1MRWxlbWVudCIsImlzU2hhZG93Um9vdCIsImlzT3ZlcmZsb3dFbGVtZW50Iiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwiZGlzcGxheSIsImdldENvbXB1dGVkU3R5bGUiLCJpc1RhYmxlRWxlbWVudCIsImlzVG9wTGF5ZXIiLCJzZWxlY3RvciIsImlzQ29udGFpbmluZ0Jsb2NrIiwiZWxlbWVudE9yQ3NzIiwid2Via2l0IiwiaXNXZWJLaXQiLCJjc3MiLCJnZXRDb250YWluaW5nQmxvY2siLCJjdXJyZW50Tm9kZSIsImdldFBhcmVudE5vZGUiLCJpc0xhc3RUcmF2ZXJzYWJsZU5vZGUiLCJnZXROb2RlU2Nyb2xsIiwiZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IiLCJwYXJlbnROb2RlIiwiZ2V0T3ZlcmZsb3dBbmNlc3RvcnMiLCJsaXN0IiwidHJhdmVyc2VJZnJhbWVzIiwiX25vZGUkb3duZXJEb2N1bWVudDIiLCJzY3JvbGxhYmxlQW5jZXN0b3IiLCJpc0JvZHkiLCJ3aW4iLCJmcmFtZUVsZW1lbnQiLCJnZXRGcmFtZUVsZW1lbnQiLCJnZXRDc3NEaW1lbnNpb25zIiwiaGFzT2Zmc2V0Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJzaG91bGRGYWxsYmFjayIsInVud3JhcEVsZW1lbnQiLCJnZXRTY2FsZSIsImRvbUVsZW1lbnQiLCIkIiwibm9PZmZzZXRzIiwiZ2V0VmlzdWFsT2Zmc2V0cyIsInNob3VsZEFkZFZpc3VhbE9mZnNldHMiLCJpc0ZpeGVkIiwiZmxvYXRpbmdPZmZzZXRQYXJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJpbmNsdWRlU2NhbGUiLCJpc0ZpeGVkU3RyYXRlZ3kiLCJjbGllbnRSZWN0Iiwic2NhbGUiLCJ2aXN1YWxPZmZzZXRzIiwib2Zmc2V0V2luIiwiY3VycmVudFdpbiIsImN1cnJlbnRJRnJhbWUiLCJpZnJhbWVTY2FsZSIsImlmcmFtZVJlY3QiLCJsZWZ0IiwidG9wIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImxlZnRTY3JvbGwiLCJnZXRIVE1MT2Zmc2V0IiwiZG9jdW1lbnRFbGVtZW50Iiwic2Nyb2xsIiwiaWdub3JlU2Nyb2xsYmFyWCIsImh0bWxSZWN0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJvZmZzZXRzIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRSZWN0IiwiaHRtbE9mZnNldCIsImdldENsaWVudFJlY3RzIiwiZ2V0RG9jdW1lbnRSZWN0IiwiaHRtbCIsImdldFZpZXdwb3J0UmVjdCIsInZpc3VhbFZpZXdwb3J0IiwidmlzdWFsVmlld3BvcnRCYXNlZCIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdBbmNlc3RvciIsImhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvciIsInN0b3BOb2RlIiwiZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzIiwiY2FjaGUiLCJjYWNoZWRSZXN1bHQiLCJlbCIsImN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIiwiZWxlbWVudElzRml4ZWQiLCJjb21wdXRlZFN0eWxlIiwiY3VycmVudE5vZGVJc0NvbnRhaW5pbmciLCJhbmNlc3RvciIsImdldENsaXBwaW5nUmVjdCIsImNsaXBwaW5nQW5jZXN0b3JzIiwiZmlyc3RDbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdSZWN0IiwiYWNjUmVjdCIsImdldERpbWVuc2lvbnMiLCJnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudCIsImlzU3RhdGljUG9zaXRpb25lZCIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJwb2x5ZmlsbCIsInJhd09mZnNldFBhcmVudCIsImdldE9mZnNldFBhcmVudCIsInN2Z09mZnNldFBhcmVudCIsImdldEVsZW1lbnRSZWN0cyIsImdldE9mZnNldFBhcmVudEZuIiwiZ2V0RGltZW5zaW9uc0ZuIiwiZmxvYXRpbmdEaW1lbnNpb25zIiwiaXNSVEwiLCJyZWN0c0FyZUVxdWFsIiwib2JzZXJ2ZU1vdmUiLCJvbk1vdmUiLCJpbyIsInRpbWVvdXRJZCIsInJvb3QiLCJjbGVhbnVwIiwiX2lvIiwicmVmcmVzaCIsInNraXAiLCJ0aHJlc2hvbGQiLCJlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4iLCJpbnNldFRvcCIsImluc2V0UmlnaHQiLCJpbnNldEJvdHRvbSIsImluc2V0TGVmdCIsImlzRmlyc3RVcGRhdGUiLCJoYW5kbGVPYnNlcnZlIiwicmF0aW8iLCJhdXRvVXBkYXRlIiwidXBkYXRlIiwiYW5jZXN0b3JTY3JvbGwiLCJhbmNlc3RvclJlc2l6ZSIsImVsZW1lbnRSZXNpemUiLCJsYXlvdXRTaGlmdCIsImFuaW1hdGlvbkZyYW1lIiwicmVmZXJlbmNlRWwiLCJhbmNlc3RvcnMiLCJjbGVhbnVwSW8iLCJyZW9ic2VydmVGcmFtZSIsInJlc2l6ZU9ic2VydmVyIiwiZmlyc3RFbnRyeSIsIl9yZXNpemVPYnNlcnZlciIsImZyYW1lSWQiLCJwcmV2UmVmUmVjdCIsImZyYW1lTG9vcCIsIm5leHRSZWZSZWN0IiwiX3Jlc2l6ZU9ic2VydmVyMiIsIm9mZnNldCQxIiwiYXV0b1BsYWNlbWVudCQxIiwic2hpZnQkMSIsIm1lcmdlZE9wdGlvbnMiLCJwbGF0Zm9ybVdpdGhDYWNoZSIsImNvbXB1dGVQb3NpdGlvbiQxIiwiaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSIsInRvVmFsdWUiLCJ1bnJlZiIsImdldERQUiIsInJvdW5kQnlEUFIiLCJkcHIiLCJ1c2VGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uIiwib3Blbk9wdGlvbiIsIl90b1ZhbHVlIiwibWlkZGxld2FyZU9wdGlvbiIsInBsYWNlbWVudE9wdGlvbiIsIl90b1ZhbHVlMiIsInN0cmF0ZWd5T3B0aW9uIiwiX3RvVmFsdWUzIiwidHJhbnNmb3JtT3B0aW9uIiwiX3RvVmFsdWU0IiwicmVmZXJlbmNlRWxlbWVudCIsImZsb2F0aW5nRWxlbWVudCIsInNoYWxsb3dSZWYiLCJpc1Bvc2l0aW9uZWQiLCJmbG9hdGluZ1N0eWxlcyIsImluaXRpYWxTdHlsZXMiLCJ4VmFsIiwieVZhbCIsIndoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCIsIm9wZW4iLCJwb3NpdGlvbiIsImF0dGFjaCIsImdldEN1cnJlbnRTY29wZSIsIm9uU2NvcGVEaXNwb3NlIiwic2hhbGxvd1JlYWRvbmx5IiwiaXNDbGlja091dHNpZGUiLCJhbmNob3IiLCJpc0hvdmVyZWQiLCJpc1RvZ2dsZWRPcGVuIiwiaXNUb3VjaERldmljZSIsIm9mZnNldE1pZGRsZXdhcmUiLCJpc1Nob3dQb3BvdmVyIiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIiLCJoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSIsImhhbmRsZUFuY2hvckVsZW1lbnRUb3VjaFN0YXJ0IiwiaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrIiwiYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50IiwicmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24iLCJhZGRPcGVuTGlzdGVuZXJzVG9Sb290IiwicmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290IiwidXBkYXRlQW5jaG9yRWxlbWVudCIsIl9UcmFuc2l0aW9uIiwicmF0aW5nVmFsdWUiLCJzZWdtZW50cyIsInNlZ21lbnQiLCJMT0dPX0hFSUdIVCIsIkxPR09fV0lEVEhfTEFSR0UiLCJDU1NfUkVBTE1fTE9HT19TSVpFIiwiZ2V0UmVhbG1LZXlGcm9tUmVhbG0iLCJyZWFsbSIsIm1hdGNoIiwibG9nb0Z1bGwiLCJsb2dvU21hbGwiLCJzaHJpbmtGYWN0b3IiLCJsb2dvTWFyayIsImxpbmsiLCJkaWFsb2dFbGVtZW50IiwiY3VycmVudFRhYiIsIlRpZGVDYXJvdXNlbCIsIlRPQVNURVJfS0VZIiwiQVVUT19ESVNNSVNTX0RVUkFUSU9OX01TIiwidXNlVGlkZVRvYXN0ZXIiLCJpbmplY3RlZCIsInRvYXN0cyIsImFkZFRvYXN0IiwibmV3VG9hc3QiLCJjbGVhclRvYXN0cyIsImNhbmNlbEF1dG9EaXNtaXNzIiwic3RhcnRBdXRvRGlzbWlzcyIsImF1dG9EaXNtaXNzRHVyYXRpb24iLCJ0b2FzdGVyIiwicmVhZG9ubHkiLCJfVHJhbnNpdGlvbkdyb3VwIiwidG9hc3QiLCJhcmdzIiwiVGlkZUFsZXJ0Il0sIm1hcHBpbmdzIjoiO0FBQU8sTUFBTUEsS0FBYztBQUFBLEVBQ3pCLFlBQVk7QUFBQSxFQUNaLFVBQVU7QUFDWixHQ0NhQyxJQUFNO0FBQUEsRUFDakIsZ0JBQWdCLENBQUNDLEdBQXFCQyxNQUM3QkQsRUFBVSxJQUFJLENBQUNFLE1BQVksR0FBR0QsQ0FBVSxJQUFJQyxDQUFPLEVBQUU7QUFBQSxFQUU5RCxPQUFPO0FBQUEsSUFDTCxHQUFHO0FBQUEsTUFDRCxRQUFRO0FBQUEsTUFDUixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixPQUFPO0FBQUEsSUFBQTtBQUFBLElBRVQsR0FBRztBQUFBLE1BQ0QsU0FBUztBQUFBLE1BQ1QsUUFBUTtBQUFBLElBQUE7QUFBQSxFQUNWO0FBQUEsRUFFRixPQUFPO0FBQUEsSUFDTCxRQUFRO0FBQUEsSUFDUixTQUFTO0FBQUEsSUFDVCxRQUFRO0FBQUEsSUFDUixLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsRUFBQTtBQUFBLEVBRVQsT0FBTztBQUFBLElBQ0wsUUFBUTtBQUFBLElBQ1IsUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLElBQ1AsU0FBUztBQUFBLEVBQUE7QUFBQSxFQUVYLElBQUk7QUFBQSxJQUNGLFFBQVE7QUFBQSxNQUNOLFNBQVM7QUFBQSxRQUNQLE9BQU87QUFBQSxRQUNQLE1BQU07QUFBQSxRQUNOLFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxNQUFBO0FBQUEsTUFFWCxTQUFTO0FBQUEsUUFDUCxPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsUUFFVCxNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsTUFBQTtBQUFBLElBQ1Y7QUFBQSxJQUVGLFNBQVM7QUFBQSxJQUNULE1BQU07QUFBQSxJQUNOLFNBQVM7QUFBQSxJQUNULFdBQVc7QUFBQSxJQUNYLFNBQVM7QUFBQSxNQUNQLFFBQVE7QUFBQSxNQUNSLE9BQU87QUFBQSxNQUNQLFNBQVM7QUFBQSxNQUNULFVBQVU7QUFBQSxNQUNWLFVBQVU7QUFBQSxNQUNWLFNBQVM7QUFBQSxNQUNULFNBQVM7QUFBQSxJQUFBO0FBQUEsSUFFWCxhQUFhO0FBQUEsTUFDWCxhQUFhO0FBQUEsTUFDYixhQUFhO0FBQUEsTUFDYixlQUFlO0FBQUEsTUFDZixjQUFjO0FBQUEsSUFBQTtBQUFBLEVBQ2hCO0FBQUEsRUFFRixRQUFRO0FBQUEsSUFDTixPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsUUFFVCxNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsTUFBQTtBQUFBLE1BRVYsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsVUFBVTtBQUFBLE1BQ1YsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLElBQUE7QUFBQSxJQUVYLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsTUFDUixPQUFPO0FBQUEsSUFBQTtBQUFBLElBRVQsUUFBUTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLElBQUE7QUFBQSxJQUVQLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxJQUFB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TUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixPQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsS0FBSztBQUFBLE1BQ0gsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLEVBQ1I7QUFBQSxFQUVGLFFBQVE7QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxJQUNQLFlBQVk7QUFBQSxFQUFBO0FBQUEsRUFFZCxTQUFTO0FBQUEsSUFDUCxVQUFVO0FBQUEsSUFDVixLQUFLO0FBQUEsSUFDTCxJQUFJO0FBQUEsRUFBQTtBQUFBLEVBRU4sVUFBVTtBQUFBLElBQ1IsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLE1BQ1IsUUFBUTtBQUFBLElBQUE7QUFBQSxJQUVWLElBQUk7QUFBQSxNQUNGLE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxJQUFBO0FBQUEsSUFFVixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsSUFBQTtBQUFBLEVBQ1Y7QUFBQSxFQUVGLFNBQVM7QUFBQSxJQUNQLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLE9BQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixLQUFLO0FBQUEsTUFDSCxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7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Q0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxtQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxrREFBQSxNQUFBLE9BQUEsc0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsa0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsa0NBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxrREFBQSxNQUFBLE9BQUEsc0NBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxtQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxnREFBQSxNQUFBLE9BQUEsb0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxt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YUFBYTtBQUFBLEVBQ2IsT0FBTztBQUFBLEVBQ1AsZ0JBQWdCO0FBQUEsRUFDaEIsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsaUJBQWlCO0FBQUEsRUFDakIsTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsZUFBZTtBQUFBLEVBQ2Ysc0JBQXNCO0FBQUEsRUFDdEIsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1Asb0JBQW9CO0FBQUEsRUFDcEIsUUFBUTtBQUFBLEVBQ1IsWUFBWTtBQUFBLEVBQ1osTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsZ0JBQWdCO0FBQUEsRUFDaEIsV0FBVztBQUFBLEVBQ1gsZ0JBQWdCO0FBQUEsRUFDaEIsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osZUFBZTtBQUFBLEVBQ2YsVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsZUFBZTtBQUFBLEVBQ2YsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsTUFBTTtBQUFBLEVBQ04sZ0JBQWdCO0FBQUEsRUFDaEIsT0FBTztBQUFB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
|
|
5386
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMvT3JpZW50YXRpb24udHMiLCIuLi9zcmMvdHlwZXMvU3R5bGVzLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZURpdmlkZXIudnVlIiwiLi4vc3JjL3R5cGVzL1JlYWxtLnRzIiwiLi4vc3JjL3R5cGVzL1NpemUudHMiLCIuLi9zcmMvdXRpbGl0aWVzL2Zvcm1hdC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSIsIi4uL3NyYy90eXBlcy9JY29uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUFjY29yZGlvbkl0ZW0udnVlIiwiLi4vc3JjL3R5cGVzL0VsZW1lbnQudHMiLCIuLi9zcmMvY29tcG9zYWJsZXMvdXNlVGlkZUNvbmZpZy50cyIsIi4uL3NyYy9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVMaW5rLnZ1ZSIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBbGVydC52dWUiLCIuLi9zcmMvdHlwZXMvQmFkZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQmFkZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVHJ1c3RlZFBhcnRuZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVmVyaWZpZWRWZWhpY2xlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCcmVhZENydW1icy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25TYXZlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25TZWdtZW50ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0NhcmQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2FyZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2Fyb3VzZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBBY3Rpb24udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBGaWx0ZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBJbnB1dC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ29sdW1ucy52dWUiLCIuLi9zcmMvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlRm9ybS52dWUiLCIuLi9zcmMvdHlwZXMvSW1hZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlQmFja2dyb3VuZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5kaWNhdG9yLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpb0RlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0Zvcm1hdHRlZC50cyIsIi4uL3NyYy90eXBlcy9WYWxpZGF0aW9uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0LnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvdHlwZXMvVGV4dElucHV0LnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3Jtcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWFEZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVNZW51SXRlbS52dWUiLCIuLi9zcmMvdHlwZXMvQnJlYWtwb2ludC50cyIsIi4uL3NyYy91dGlsaXRpZXMvdmlld3BvcnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTW9kYWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVBhZ2luYXRpb24udnVlIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS91dGlscy9kaXN0L2Zsb2F0aW5nLXVpLnV0aWxzLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvY29yZS9kaXN0L2Zsb2F0aW5nLXVpLmNvcmUubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS91dGlscy9kaXN0L2Zsb2F0aW5nLXVpLnV0aWxzLmRvbS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2RvbS9kaXN0L2Zsb2F0aW5nLXVpLmRvbS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3Z1ZS9kaXN0L2Zsb2F0aW5nLXVpLnZ1ZS5tanMiLCIuLi9zcmMvdXRpbGl0aWVzL2V2ZW50LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVBvcG92ZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVJhdGluZy52dWUiLCIuLi9zcmMvdHlwZXMvUmVhbG1Mb2dvLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9yZWFsbS50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVSZWFsbUxvZ28udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVNlb0xpbmtzLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTaGVldC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlU3dpdGNoLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUYWJzLnZ1ZSIsIi4uL3NyYy9jb21wb3NhYmxlcy91c2VUaWRlVG9hc3Rlci50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUb2FzdGVyLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgT1JJRU5UQVRJT04gPSB7XG4gIEhPUklaT05UQUw6ICdob3Jpem9udGFsJyxcbiAgVkVSVElDQUw6ICd2ZXJ0aWNhbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPcmllbnRhdGlvbiA9ICh0eXBlb2YgT1JJRU5UQVRJT04pW2tleW9mIHR5cGVvZiBPUklFTlRBVElPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmltcG9ydCB0eXBlIHsgQnJlYWtwb2ludCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG5cbmV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIHdpdGhCcmVha3BvaW50OiAodXRpbGl0aWVzOiBzdHJpbmdbXSwgYnJlYWtwb2ludDogQnJlYWtwb2ludCk6IHN0cmluZ1tdID0+IHtcbiAgICByZXR1cm4gdXRpbGl0aWVzLm1hcCgodXRpbGl0eSkgPT4gYCR7YnJlYWtwb2ludH0tJHt1dGlsaXR5fWApO1xuICB9LFxuICBBTElHTjoge1xuICAgIFg6IHtcbiAgICAgIENFTlRFUjogJ3RpZGUtdGV4dC1jZW50ZXInLFxuICAgICAgSlVTVElGWTogJ3RpZGUtdGV4dC1qdXN0aWZ5JyxcbiAgICAgIExFRlQ6ICd0aWRlLXRleHQtbGVmdCcsXG4gICAgICBSSUdIVDogJ3RpZGUtdGV4dC1yaWdodCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBJTklUSUFMOiAndGlkZS1hbGlnbi1pbml0aWFsJyxcbiAgICAgIE1JRERMRTogJ3RpZGUtYWxpZ24tbWlkZGxlJyxcbiAgICB9LFxuICB9LFxuICBBWElTMToge1xuICAgIEFST1VORDogJ3RpZGUtYXhpczEtYXJvdW5kJyxcbiAgICBCRVRXRUVOOiAndGlkZS1heGlzMS1iZXR3ZWVuJyxcbiAgICBDRU5URVI6ICd0aWRlLWF4aXMxLWNlbnRlcicsXG4gICAgRU5EOiAndGlkZS1heGlzMS1lbmQnLFxuICAgIFNUQVJUOiAndGlkZS1heGlzMS1zdGFydCcsXG4gIH0sXG4gIEFYSVMyOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMi1hcm91bmQnLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczItY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMyLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMyLXN0YXJ0JyxcbiAgICBTVFJFVENIOiAndGlkZS1heGlzMi1zdHJldGNoJyxcbiAgfSxcbiAgQkc6IHtcbiAgICBHTE9CQUw6IHtcbiAgICAgIFBSSU1BUlk6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJnLXByaW1hcnktZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1iZy1wcmltYXJ5LWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1iZy1wcmltYXJ5LXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1iZy1wcmltYXJ5LXdhcm5pbmcnLFxuICAgICAgfSxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJnLXN1cmZhY2UtZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1iZy1zdXJmYWNlLWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1iZy1zdXJmYWNlLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1iZy1zdXJmYWNlLXdhcm5pbmcnLFxuXG4gICAgICAgIEJMVUU6ICd0aWRlLWJnLXN1cmZhY2UtYmx1ZScsXG4gICAgICAgIEdSRUVOOiAndGlkZS1iZy1zdXJmYWNlLWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtYmctc3VyZmFjZS1saW1lJyxcbiAgICAgICAgT1JBTkdFOiAndGlkZS1iZy1zdXJmYWNlLW9yYW5nZScsXG4gICAgICAgIFBVUlBMRTogJ3RpZGUtYmctc3VyZmFjZS1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWJnLXN1cmZhY2UtcmVkJyxcbiAgICAgICAgU0FMTU9OOiAndGlkZS1iZy1zdXJmYWNlLXNhbG1vbicsXG4gICAgICAgIFRFQUw6ICd0aWRlLWJnLXN1cmZhY2UtdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtYmctc3VyZmFjZS15ZWxsb3cnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIElOSVRJQUw6ICd0aWRlLWJnLWluaXRpYWwnLFxuICAgIEJMVVI6ICd0aWRlLWJnLWJsdXInLFxuICAgIFBSSU1BUlk6ICd0aWRlLWJnLXByaW1hcnknLFxuICAgIFNFQ09OREFSWTogJ3RpZGUtYmctc2Vjb25kYXJ5JyxcbiAgICBTVVJGQUNFOiB7XG4gICAgICBBQ0NFTlQ6ICd0aWRlLWJnLXN1cmZhY2UtYWNjZW50JyxcbiAgICAgIEJSQU5EOiAndGlkZS1iZy1zdXJmYWNlLWJyYW5kJyxcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJnLXN1cmZhY2UnLFxuICAgICAgRkxPQVRJTkc6ICd0aWRlLWJnLXN1cmZhY2UtZmxvYXRpbmcnLFxuICAgICAgR1JBRElFTlQ6ICd0aWRlLWJnLXN1cmZhY2UtZ3JhZGllbnQnLFxuICAgICAgSU5WRVJTRTogJ3RpZGUtYmctc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgIFZBUklBTlQ6ICd0aWRlLWJnLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgfSxcbiAgICBUUkFOU1BBUkVOVDoge1xuICAgICAgT05FX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTEwMCcsXG4gICAgICBUV09fSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtMjAwJyxcbiAgICAgIFRIUkVFX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTMwMCcsXG4gICAgICBGT1VSX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTQwMCcsXG4gICAgfSxcbiAgfSxcbiAgQk9SREVSOiB7XG4gICAgQ09MT1I6IHtcbiAgICAgIEdMT0JBTDoge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYm9yZGVyLWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtYm9yZGVyLWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1ib3JkZXItc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJvcmRlci13YXJuaW5nJyxcblxuICAgICAgICBCTFVFOiAndGlkZS1ib3JkZXItYmx1ZScsXG4gICAgICAgIEdSRUVOOiAndGlkZS1ib3JkZXItZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1ib3JkZXItbGltZScsXG4gICAgICAgIE9SQU5HRTogJ3RpZGUtYm9yZGVyLW9yYW5nZScsXG4gICAgICAgIFBVUlBMRTogJ3RpZGUtYm9yZGVyLXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtYm9yZGVyLXJlZCcsXG4gICAgICAgIFNBTE1PTjogJ3RpZGUtYm9yZGVyLXNhbG1vbicsXG4gICAgICAgIFRFQUw6ICd0aWRlLWJvcmRlci10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1ib3JkZXIteWVsbG93JyxcbiAgICAgIH0sXG4gICAgICBJTklUSUFMOiAndGlkZS1ib3JkZXItY29sb3ItaW5pdGlhbCcsXG4gICAgICBERUZBVUxUOiAndGlkZS1ib3JkZXInLFxuICAgICAgRkxPQVRJTkc6ICd0aWRlLWJvcmRlci1mbG9hdGluZycsXG4gICAgICBISUdIOiAndGlkZS1ib3JkZXItaGlnaCcsXG4gICAgICBMT1c6ICd0aWRlLWJvcmRlci1sb3cnLFxuICAgICAgUFJJTUFSWTogJ3RpZGUtYm9yZGVyLXByaW1hcnknLFxuICAgIH0sXG4gICAgUkFESVVTOiB7XG4gICAgICBaRVJPOiAndGlkZS1yYWRpdXMtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1yYWRpdXMtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXJhZGl1cy0xLzInLFxuICAgICAgT05FOiAndGlkZS1yYWRpdXMtMScsXG4gICAgICBGVUxMOiAndGlkZS1yYWRpdXMtZnVsbCcsXG4gICAgfSxcbiAgICBTVFlMRToge1xuICAgICAgREFTSEVEOiAndGlkZS1ib3JkZXItZGFzaGVkJyxcbiAgICAgIFNPTElEOiAndGlkZS1ib3JkZXItc29saWQnLFxuICAgIH0sXG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItYm90dG9tLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItYm90dG9tLTInLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci0yJyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1sZWZ0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWxlZnQtMicsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1yaWdodC0yJyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXRvcC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXRvcC0yJyxcbiAgICB9LFxuICB9LFxuICBCT1hfU0laSU5HOiB7XG4gICAgQk9SREVSX0JPWDogJ3RpZGUtYm94LWJvcmRlcicsXG4gICAgQ09OVEVOVF9CT1g6ICd0aWRlLWJveC1jb250ZW50JyxcbiAgfSxcbiAgQlJFQUtfSU5TSURFOiB7XG4gICAgQVZPSURfQ09MVU1OOiAndGlkZS1icmVhay1pbnNpZGUtYXZvaWQtY29sdW1uJyxcbiAgfSxcbiAgQlJFQUtfV09SRDoge1xuICAgIE9GRjogJ3RpZGUtYnJlYWstaW5pdGlhbCcsXG4gICAgT046ICd0aWRlLWJyZWFrLXdvcmQnLFxuICB9LFxuICBDT0xVTU5TOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtY29sdW1ucy1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLWNvbHVtbnMtMScsXG4gICAgVFdPOiAndGlkZS1jb2x1bW5zLTInLFxuICAgIFRIUkVFOiAndGlkZS1jb2x1bW5zLTMnLFxuICAgIEZPVVI6ICd0aWRlLWNvbHVtbnMtNCcsXG4gIH0sXG4gIENVUlNPUjoge1xuICAgIE5PVF9BTExPV0VEOiAndGlkZS1jdXJzb3Itbm90LWFsbG93ZWQnLFxuICAgIFBPSU5URVI6ICd0aWRlLWN1cnNvci1wb2ludGVyJyxcbiAgICBURVhUOiAndGlkZS1jdXJzb3ItdGV4dCcsXG4gIH0sXG4gIERJU1BMQVk6IHtcbiAgICBCTE9DSzogJ3RpZGUtZGlzcGxheS1ibG9jaycsXG4gICAgQ09OVEVOVFM6ICd0aWRlLWRpc3BsYXktY29udGVudHMnLFxuICAgIEZMRVg6ICd0aWRlLWRpc3BsYXktZmxleCcsXG4gICAgR1JJRDogJ3RpZGUtZGlzcGxheS1ncmlkJyxcbiAgICBJTklUSUFMOiAndGlkZS1kaXNwbGF5LWluaXRpYWwnLFxuICAgIElOTElORTogJ3RpZGUtZGlzcGxheS1pbmxpbmUnLFxuICAgIElOTElORV9CTE9DSzogJ3RpZGUtZGlzcGxheS1pbmxpbmUtYmxvY2snLFxuICAgIElOTElORV9GTEVYOiAndGlkZS1kaXNwbGF5LWlubGluZS1mbGV4JyxcbiAgICBOT05FOiAndGlkZS1kaXNwbGF5LW5vbmUnLFxuICB9LFxuICBFTExJUFNJUzogJ3RpZGUtZWxsaXBzaXMnLFxuICBGTEVYOiB7XG4gICAgQkFTSVM6IHtcbiAgICAgIEFVVE86ICd0aWRlLWZsZXgtYmFzaXMtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1mbGV4LWJhc2lzLTAnLFxuICAgIH0sXG4gICAgRElSRUNUSU9OOiB7XG4gICAgICBDT0xVTU46ICd0aWRlLWZsZXgtY29sdW1uJyxcbiAgICAgIENPTFVNTl9SRVZFUlNFOiAndGlkZS1mbGV4LWNvbHVtbi1yZXZlcnNlJyxcbiAgICAgIFJPVzogJ3RpZGUtZmxleC1yb3cnLFxuICAgICAgUk9XX1JFVkVSU0U6ICd0aWRlLWZsZXgtcm93LXJldmVyc2UnLFxuICAgIH0sXG4gICAgR1JPVzoge1xuICAgICAgT0ZGOiAndGlkZS1ncm93LW5vbmUnLFxuICAgICAgT046ICd0aWRlLWdyb3cnLFxuICAgIH0sXG4gICAgU0hSSU5LOiB7XG4gICAgICBPRkY6ICd0aWRlLXNocmluay1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1zaHJpbmsnLFxuICAgIH0sXG4gICAgV1JBUDogJ3RpZGUtZmxleC13cmFwJyxcbiAgfSxcbiAgRk9OVDoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWZvbnQtZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1mb250LWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1mb250LXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1mb250LXdhcm5pbmcnLFxuXG4gICAgICAgIEJMVUU6ICd0aWRlLWZvbnQtYmx1ZScsXG4gICAgICAgIEdSRUVOOiAndGlkZS1mb250LWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtZm9udC1saW1lJyxcbiAgICAgICAgT1JBTkdFOiAndGlkZS1mb250LW9yYW5nZScsXG4gICAgICAgIFBVUlBMRTogJ3RpZGUtZm9udC1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWZvbnQtcmVkJyxcbiAgICAgICAgU0FMTU9OOiAndGlkZS1mb250LXNhbG1vbicsXG4gICAgICAgIFRFQUw6ICd0aWRlLWZvbnQtdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtZm9udC15ZWxsb3cnLFxuXG4gICAgICAgIFBSSU1BUlk6IHtcbiAgICAgICAgICBCTFVFOiAndGlkZS1mb250LXByaW1hcnktYmx1ZScsXG4gICAgICAgICAgR1JFRU46ICd0aWRlLWZvbnQtcHJpbWFyeS1ncmVlbicsXG4gICAgICAgICAgTElNRTogJ3RpZGUtZm9udC1wcmltYXJ5LWxpbWUnLFxuICAgICAgICAgIE9SQU5HRTogJ3RpZGUtZm9udC1wcmltYXJ5LW9yYW5nZScsXG4gICAgICAgICAgUFVSUExFOiAndGlkZS1mb250LXByaW1hcnktcHVycGxlJyxcbiAgICAgICAgICBSRUQ6ICd0aWRlLWZvbnQtcHJpbWFyeS1yZWQnLFxuICAgICAgICAgIFNBTE1PTjogJ3RpZGUtZm9udC1wcmltYXJ5LXNhbG1vbicsXG4gICAgICAgICAgVEVBTDogJ3RpZGUtZm9udC1wcmltYXJ5LXRlYWwnLFxuICAgICAgICAgIFlFTExPVzogJ3RpZGUtZm9udC1wcmltYXJ5LXllbGxvdycsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgUFJJTUFSWTogJ3RpZGUtZm9udC1vbi1wcmltYXJ5JyxcbiAgICAgIFNFQ09OREFSWTogJ3RpZGUtZm9udC1vbi1zZWNvbmRhcnknLFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBCUkFORDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWJyYW5kJyxcbiAgICAgICAgREVGQVVMVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlJyxcbiAgICAgICAgSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWludmVyc2UnLFxuICAgICAgICBWQVJJQU5UOiAndGlkZS1mb250LW9uLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgICAgIFZBUklBTlRfSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQtaW52ZXJzZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgUk9MRToge1xuICAgICAgRElTUExBWV8xOiAndGlkZS10eXBvZ3JhcGh5LWRpc3BsYXktMScsXG4gICAgICBIRUFETElORV8xOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTEnLFxuICAgICAgSEVBRExJTkVfMjogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0yJyxcbiAgICAgIEhFQURMSU5FXzM6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMycsXG4gICAgICBUSVRMRV8xOiAndGlkZS10eXBvZ3JhcGh5LXRpdGxlLTEnLFxuICAgICAgVElUTEVfMjogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0yJyxcbiAgICAgIEJPRFlfMTogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTEnLFxuICAgICAgQk9EWV8yOiAndGlkZS10eXBvZ3JhcGh5LWJvZHktMicsXG4gICAgICBMQUJFTF8xOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTEnLFxuICAgICAgTEFCRUxfMV9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzI6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMicsXG4gICAgICBMQUJFTF8yX1NFTUlCT0xEOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTItc2VtaWJvbGQnLFxuICAgICAgTEFCRUxfMzogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0zJyxcbiAgICAgIExJTktfMTogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTEnLFxuICAgICAgTElOS18yOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMicsXG4gICAgICBMSU5LXzM6ICd0aWRlLXR5cG9ncmFwaHktbGluay0zJyxcbiAgICAgIEJVVFRPTl8xOiAndGlkZS10eXBvZ3JhcGh5LWJ1dHRvbi0xJyxcbiAgICAgIEJVVFRPTl8yOiAndGlkZS10eXBvZ3JhcGh5LWJ1dHRvbi0yJyxcbiAgICB9LFxuICAgIFNJWkU6IHtcbiAgICAgIFRXRUxWRTogJ3RpZGUtZm9udC0xMicsXG4gICAgICBGT1VSVEVFTjogJ3RpZGUtZm9udC0xNCcsXG4gICAgICBTSVhURUVOOiAndGlkZS1mb250LTE2JyxcbiAgICAgIFRXRU5UWTogJ3RpZGUtZm9udC0yMCcsXG4gICAgICBUV0VOVFlfRk9VUjogJ3RpZGUtZm9udC0yNCcsXG4gICAgICBUSElSVFlfVFdPOiAndGlkZS1mb250LTMyJyxcbiAgICB9LFxuICAgIFdFSUdIVDoge1xuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS1mb250LTQwMCcsXG4gICAgICBGSVZFX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNTAwJyxcbiAgICAgIFNJWF9IVU5EUkVEOiAndGlkZS1mb250LTYwMCcsXG4gICAgICBTRVZFTl9IVU5EUkVEOiAndGlkZS1mb250LTcwMCcsXG4gICAgfSxcbiAgfSxcbiAgR0FQOiB7XG4gICAgWkVSTzogJ3RpZGUtZ2FwLTAnLFxuICAgIFFVQVJURVI6ICd0aWRlLWdhcC0xLzQnLFxuICAgIEhBTEY6ICd0aWRlLWdhcC0xLzInLFxuICAgIE9ORTogJ3RpZGUtZ2FwLTEnLFxuICAgIFRXTzogJ3RpZGUtZ2FwLTInLFxuICAgIEZPVVI6ICd0aWRlLWdhcC00JyxcbiAgfSxcbiAgR1JJRDoge1xuICAgIEZMVUlEOiAndGlkZS1mbHVpZCcsXG4gICAgSVRFTTogJ3RpZGUtZ3JpZC1pdGVtJyxcbiAgICBMQVlPVVQ6ICd0aWRlLWdyaWQtbGF5b3V0JyxcbiAgICBYTDogJ3RpZGUtZ3JpZC14bCcsXG4gIH0sXG4gIEhFSUdIVDoge1xuICAgIEFVVE86ICd0aWRlLWhlaWdodC1hdXRvJyxcbiAgICBaRVJPOiAndGlkZS1oZWlnaHQtMCcsXG4gICAgRlVMTDogJ3RpZGUtaGVpZ2h0LWZ1bGwnLFxuICAgIE1BWF9GVUxMOiAndGlkZS1tYXgtaGVpZ2h0LWZ1bGwnLFxuICAgIE1JTl9aRVJPOiAndGlkZS1taW4taGVpZ2h0LTAnLFxuICB9LFxuICBJU09MQVRJT046IHtcbiAgICBJU09MQVRFOiAndGlkZS1pc29sYXRlJyxcbiAgfSxcbiAgTElTVF9CVUxMRVRTOiB7XG4gICAgT0ZGOiAndGlkZS1saXN0LW5vbmUnLFxuICB9LFxuICBNQVJHSU46IHtcbiAgICBCT1RUT006IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1ib3R0b20tYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tYm90dG9tLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tYm90dG9tLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWJvdHRvbS00JyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLWxlZnQtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tbGVmdC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tbGVmdC00JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tcmlnaHQtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tcmlnaHQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1yaWdodC00JyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXRvcC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi10b3AtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tdG9wLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi10b3AtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi10b3AtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXgtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4teC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4teC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4teC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teC00JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi15LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi15LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4teS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi15LTQnLFxuICAgIH0sXG4gIH0sXG4gIE9CSkVDVDoge1xuICAgIENFTlRFUjogJ3RpZGUtb2JqZWN0LWNlbnRlcicsXG4gICAgQ09OVEFJTjogJ3RpZGUtb2JqZWN0LWNvbnRhaW4nLFxuICAgIENPVkVSOiAndGlkZS1vYmplY3QtY292ZXInLFxuICAgIFNDQUxFX0RPV046ICd0aWRlLW9iamVjdC1zY2FsZS1kb3duJyxcbiAgfSxcbiAgT1BBQ0lUWToge1xuICAgIERJU0FCTEVEOiAndGlkZS1vcGFjaXR5LWRpc2FibGVkJyxcbiAgICBPRkY6ICd0aWRlLW9wYWNpdHktbm9uZScsXG4gICAgT046ICd0aWRlLW9wYWNpdHknLFxuICB9LFxuICBPVkVSRkxPVzoge1xuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLXgtYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXgtaGlkZGVuJyxcbiAgICAgIFNDUk9MTDogJ3RpZGUteC1zY3JvbGwnLFxuICAgIH0sXG4gICAgWFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXh5LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14eS1oaWRkZW4nLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgQVVUTzogJ3RpZGUteS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteS1oaWRkZW4nLFxuICAgIH0sXG4gIH0sXG4gIFBBRERJTkc6IHtcbiAgICBCT1RUT006IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctYm90dG9tLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctbGVmdC00JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1yaWdodC00JyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy10b3AtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy10b3AtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy10b3AtNCcsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXgtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteC00JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmcteS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmcteS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmcteS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy15LTQnLFxuICAgIH0sXG4gIH0sXG4gIFBPSU5URVJfRVZFTlRTOiB7XG4gICAgT0ZGOiAndGlkZS1wb2ludGVyLWV2ZW50cy1ub25lJyxcbiAgICBPTjogJ3RpZGUtcG9pbnRlci1ldmVudHMnLFxuICB9LFxuICBQT1NJVElPTjoge1xuICAgIEFCU09MVVRFOiAndGlkZS1wb3NpdGlvbi1hYnNvbHV0ZScsXG4gICAgRklYRUQ6ICd0aWRlLXBvc2l0aW9uLWZpeGVkJyxcbiAgICBSRUxBVElWRTogJ3RpZGUtcG9zaXRpb24tcmVsYXRpdmUnLFxuICAgIFNUQVRJQzogJ3RpZGUtcG9zaXRpb24tc3RhdGljJyxcbiAgICBTVElDS1k6ICd0aWRlLXBvc2l0aW9uLXN0aWNreScsXG4gIH0sXG4gIFBPU0lUSU9OSU5HOiB7XG4gICAgQk9UVE9NOiAndGlkZS1ib3R0b20tMCcsXG4gICAgTEVGVDogJ3RpZGUtbGVmdC0wJyxcbiAgICBSSUdIVDogJ3RpZGUtcmlnaHQtMCcsXG4gICAgVE9QOiAndGlkZS10b3AtMCcsXG4gIH0sXG4gIFJBVElPOiB7XG4gICAgT05FX1RPX09ORTogJ3RpZGUtcmF0aW8tMS8xJyxcbiAgICBTSVhURUVOX1RPX05JTkU6ICd0aWRlLXJhdGlvLTE2LzknLFxuICAgIFRIUkVFX1RPX1RXTzogJ3RpZGUtcmF0aW8tMy8yJyxcbiAgfSxcbiAgU0NST0xMQkFSOiB7XG4gICAgT0ZGOiAndGlkZS1zY3JvbGxiYXItbm9uZScsXG4gIH0sXG4gIFNIQURPVzoge1xuICAgIElOSVRJQUw6ICd0aWRlLXNoYWRvdy1pbml0aWFsJyxcbiAgICBCT1RUT006ICd0aWRlLXNoYWRvdy1ib3R0b20nLFxuICAgIFRPUDogJ3RpZGUtc2hhZG93LXRvcCcsXG4gICAgVEVYVDogJ3RpZGUtc2hhZG93LXRleHQnLFxuICB9LFxuICBTTkFQOiB7XG4gICAgT046ICd0aWRlLXNjcm9sbC1zbmFwJyxcbiAgfSxcbiAgU05BUF9BTElHTjoge1xuICAgIFNUQVJUOiAndGlkZS1zY3JvbGwtc25hcC1zdGFydCcsXG4gIH0sXG4gIFNUUklLRVRIUk9VR0g6IHtcbiAgICBPRkY6ICd0aWRlLXN0cmlrZXRocm91Z2gtbm9uZScsXG4gICAgT046ICd0aWRlLXN0cmlrZXRocm91Z2gnLFxuICB9LFxuICBURVhUX1RSQU5TRk9STToge1xuICAgIExPV0VSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1sb3dlcicsXG4gICAgTk9ORTogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbm9uZScsXG4gICAgVVBQRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLXVwcGVyJyxcbiAgfSxcbiAgVU5ERVJMSU5FOiB7XG4gICAgSE9WRVI6IHtcbiAgICAgIE9OOiAndGlkZS11bmRlcmxpbmUtaG92ZXInLFxuICAgICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtaG92ZXItbm9uZScsXG4gICAgfSxcbiAgICBSRVNUOiB7XG4gICAgICBPTjogJ3RpZGUtdW5kZXJsaW5lJyxcbiAgICAgIE9GRjogJ3RpZGUtdW5kZXJsaW5lLW5vbmUnLFxuICAgIH0sXG4gIH0sXG4gIFVTRVJfU0VMRUNUOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtdXNlci1zZWxlY3QtaW5pdGlhbCcsXG4gICAgTk9ORTogJ3RpZGUtdXNlci1zZWxlY3Qtbm9uZScsXG4gIH0sXG4gIFZJU0lCSUxJVFk6IHtcbiAgICBPRkY6ICd0aWRlLXZpc2libGUtbm9uZScsXG4gICAgT046ICd0aWRlLXZpc2libGUnLFxuICB9LFxuICBXSElURVNQQUNFX1dSQVA6IHtcbiAgICBPRkY6ICd0aWRlLXdoaXRlc3BhY2Utbm93cmFwJyxcbiAgfSxcbiAgV0lEVEg6IHtcbiAgICBBVVRPOiAndGlkZS13aWR0aC1hdXRvJyxcbiAgICBGVUxMOiAndGlkZS13aWR0aC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LXdpZHRoLWZ1bGwnLFxuICAgIE1JTl9aRVJPOiAndGlkZS1taW4td2lkdGgtMCcsXG4gICAgU1RSRVRDSDogJ3RpZGUtd2lkdGgtc3RyZXRjaCcsXG4gICAgWkVSTzogJ3RpZGUtd2lkdGgtMCcsXG4gIH0sXG4gIFpfSU5ERVg6IHtcbiAgICBJTklUSUFMOiAndGlkZS16LWluZGV4LWluaXRpYWwnLFxuICAgIE9ORTogJ3RpZGUtei1pbmRleC0xJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGRpdmlkZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlZGl2aWRlci0tZG9jcykgZm9yIFRpZGVEaXZpZGVyXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBPUklFTlRBVElPTiB9IGZyb20gJ0AvdHlwZXMvT3JpZW50YXRpb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBPcmllbnRhdGlvbiB9IGZyb20gJ0AvdHlwZXMvT3JpZW50YXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBEaXZpZGVyIGlzIGhvcml6b250YWwgb3IgdmVydGljYWwgKi9cbiAgICBvcmllbnRhdGlvbj86IE9yaWVudGF0aW9uO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgb3JpZW50YXRpb246IE9SSUVOVEFUSU9OLkhPUklaT05UQUwsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtZGl2aWRlciddXCI+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgcHJvcHMub3JpZW50YXRpb24gPT09IE9SSUVOVEFUSU9OLkhPUklaT05UQUxcbiAgICAgICAgICA/IFtDU1MuTUFSR0lOLlkuSEFMRiwgQ1NTLkJPUkRFUi5CT1RUT00uT05FLCBDU1MuV0lEVEguRlVMTF1cbiAgICAgICAgICA6IFtDU1MuTUFSR0lOLlguSEFMRiwgQ1NTLkJPUkRFUi5SSUdIVC5PTkUsIENTUy5IRUlHSFQuRlVMTF0sXG4gICAgICBdXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWRpdmlkZXIge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgUkVBTE0gPSB7XG4gIEFFUk86ICdhZXJvJyxcbiAgQVRWOiAnYXR2JyxcbiAgQk9BVE1BUlQ6ICdib2F0bWFydCcsXG4gIENZQ0xFOiAnY3ljbGUnLFxuICBFUVVJUE1FTlQ6ICdlcXVpcG1lbnQnLFxuICBQV0M6ICdwd2MnLFxuICBSVjogJ3J2JyxcbiAgU05PVzogJ3Nub3cnLFxuICBUUlVDSzogJ3RydWNrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFJlYWxtS2V5ID0ga2V5b2YgdHlwZW9mIFJFQUxNO1xuZXhwb3J0IHR5cGUgUmVhbG0gPSAodHlwZW9mIFJFQUxNKVtSZWFsbUtleV07XG4iLCJleHBvcnQgY29uc3QgU0laRSA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZSA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuXG5leHBvcnQgY29uc3QgU0laRV9CVVRUT04gPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBTTUFMTDogJ3NtYWxsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFNpemVCdXR0b24gPSAodHlwZW9mIFNJWkUpW2tleW9mIHR5cGVvZiBTSVpFXTtcbiIsImNvbnN0IGNhcGl0YWxpemVGaXJzdCA9IChzdHJpbmc6IHN0cmluZykgPT4ge1xuICByZXR1cm4gc3RyaW5nLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyaW5nLnNsaWNlKDEpO1xufTtcblxuY29uc3QgZm9ybWF0Q2FtZWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoL15bXFxzXy1dLywgJycpXG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQsIGluZGV4KSA9PiAoaW5kZXggPT09IDAgPyB3b3JkIDogd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRLZWJhYkNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJy0nKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRMYWJlbCA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGxhYmVsTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgIGZhbHNlOiAnTm8nLFxuICAgIHRydWU6ICdZZXMnLFxuICB9O1xuICByZXR1cm4gT2JqZWN0Lmhhc093bihsYWJlbE1hcCwgdmFsdWUpID8gbGFiZWxNYXBbdmFsdWVdIDogdmFsdWU7XG59O1xuXG5jb25zdCBmb3JtYXROdW1iZXIgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBvdXRwdXQgPSBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInID8gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnJyk7XG4gIGxldCBkaWdpdHMgPSBvdXRwdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICBpZiAoTnVtYmVyKGRpZ2l0cykpIHtcbiAgICAgIG91dHB1dCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdChOdW1iZXIoZGlnaXRzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dCA9ICcwJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UGFzY2FsQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQaG9uZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBTdHJpbmcoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcbiAgZGlnaXRzID0gZGlnaXRzLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG5cbiAgc3dpdGNoIChkaWdpdHMubGVuZ3RoKSB7XG4gICAgY2FzZSA3OlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzKX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAzKX0tJHtkaWdpdHMuc2xpY2UoMywgNil9LSR7ZGlnaXRzLnNsaWNlKDYpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDExOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDEpfS0ke2RpZ2l0cy5zbGljZSgxLCA0KX0tJHtkaWdpdHMuc2xpY2UoNCwgNyl9LSR7ZGlnaXRzLnNsaWNlKDcpfWA7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgb3V0cHV0ID0gZGlnaXRzO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UHJpY2UgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0ID8gZm9ybWF0TnVtYmVyKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnMCcpO1xuICByZXR1cm4gYCQke291dHB1dH1gO1xufTtcblxuY29uc3QgZm9ybWF0UXVvdGVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ1wiJykgJiYgdmFsdWUuZW5kc1dpdGgoJ1wiJykpIHtcbiAgICByZXR1cm4gdmFsdWUuc2xpY2UoMSwgLTEpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuY29uc3QgZm9ybWF0U2VudGVuY2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgc2VudGVuY2VDYXNlID0gaW5wdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBsb3dlckNhc2UgPSBpbnB1dFxuICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKTtcblxuICAgIHNlbnRlbmNlQ2FzZSA9IGxvd2VyQ2FzZS5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgbG93ZXJDYXNlLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIHNlbnRlbmNlQ2FzZTtcbn07XG5cbmNvbnN0IGZvcm1hdFNuYWtlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnXycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFRpdGxlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcgJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VXJsRnJvbVJvb3QgPSAodXJsOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgdXJsRm9ybWF0dGVkID0gdXJsLnNwbGl0KCcuY29tLycpO1xuXG4gIHJldHVybiB1cmxGb3JtYXR0ZWQubGVuZ3RoID4gMSA/IGAvJHt1cmxGb3JtYXR0ZWRbMV19YCA6IHVybDtcbn07XG5cbmNvbnN0IGZvcm1hdFdlaWdodCA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJHtvdXRwdXR9IGxic2A7XG59O1xuXG5jb25zdCBnZXRBcnRpY2xlID0gKG5vdW46IHN0cmluZywgaXNQbHVyYWwgPSBmYWxzZSwgaXNEZWZpbml0ZSA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IHZvd2VscyA9IFsnYScsICdlJywgJ2knLCAnbycsICd1J107XG4gIGNvbnN0IGlzVm93ZWxMZWFkaW5nID0gdm93ZWxzLmluY2x1ZGVzKG5vdW4uY2hhckF0KDApKTtcblxuICByZXR1cm4gaXNEZWZpbml0ZSA/ICd0aGUnIDogaXNQbHVyYWwgPyAnc29tZScgOiBpc1Zvd2VsTGVhZGluZyA/ICdhbicgOiAnYSc7XG59O1xuXG5jb25zdCBwcmljZVRvTnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKE51bWJlci5pc05hTihOdW1iZXIodmFsdWUpKSkge1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnJCcsICcnKTtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLywvZywgJycpO1xuICB9XG4gIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xufTtcblxuY29uc3QgdW5mb3JtYXRQcmljZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQucmVwbGFjZSgvXFwkL2csICcnKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgcmV0dXJuIGAke291dHB1dH1gO1xufTtcblxuZXhwb3J0IHtcbiAgY2FwaXRhbGl6ZUZpcnN0LFxuICBmb3JtYXRDYW1lbENhc2UsXG4gIGZvcm1hdEtlYmFiQ2FzZSxcbiAgZm9ybWF0TGFiZWwsXG4gIGZvcm1hdE51bWJlcixcbiAgZm9ybWF0UGFzY2FsQ2FzZSxcbiAgZm9ybWF0UGhvbmUsXG4gIGZvcm1hdFByaWNlLFxuICBmb3JtYXRRdW90ZXMsXG4gIGZvcm1hdFNlbnRlbmNlQ2FzZSxcbiAgZm9ybWF0U25ha2VDYXNlLFxuICBmb3JtYXRUaXRsZUNhc2UsXG4gIGZvcm1hdFVybEZyb21Sb290LFxuICBmb3JtYXRXZWlnaHQsXG4gIGdldEFydGljbGUsXG4gIHByaWNlVG9OdW1iZXIsXG4gIHVuZm9ybWF0UHJpY2UsXG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaWNvbiBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpY29uLS1kb2NzKSBmb3IgVGlkZUljb25cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGRlZmluZUFzeW5jQ29tcG9uZW50LCBtYXJrUmF3LCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBSRUFMTSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXRQYXNjYWxDYXNlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFNpemUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogSWNvbiAqL1xuICAgIGljb246IEljb247XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBpY29uIGRpbWVuc2lvbnMgKi9cbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcblxuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGVmaW5lQXN5bmNDb21wb25lbnQoKCkgPT4ge1xuICAgICAgICBpZiAocmVhbG1Gb2xkZXIpIHtcbiAgICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL3JlYWxtLyR7cmVhbG1Gb2xkZXJ9L0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvaWNvbnMvSWNvbiR7bmFtZX0uc3ZnP2NvbXBvbmVudGApO1xuICAgICAgfSk7XG5cbiAgICAgIGlubmVyU1ZHLnZhbHVlID0gbWFya1Jhdyhjb21wb25lbnQpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaWNvbicsIHByb3BzLnNpemUsIENTUy5GTEVYLlNIUklOSy5PRkZdXCI+XG4gICAgPENvbXBvbmVudFxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgICA6ZGF0YS1pY29uPVwiaWNvblwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIDppcz1cImlubmVyU1ZHXCJcbiAgICAgIHYtaWY9XCJpbm5lclNWR1wiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGU+XG4gIC50aWRlLWljb24ge1xuICAgIHdpZHRoOiAxLjVyZW07XG4gICAgaGVpZ2h0OiAxLjVyZW07XG4gIH1cblxuICAudGlkZS1pY29uLnNtYWxsIHtcbiAgICB3aWR0aDogMS4yNXJlbTtcbiAgICBoZWlnaHQ6IDEuMjVyZW07XG4gIH1cblxuICAudGlkZS1pY29uIHN2ZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHR5cGUgeyBSZWFsbUtleSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuXG5leHBvcnQgY29uc3QgSUNPTiA9IHtcbiAgQUNDT1VOVF9CQUxBTkNFOiAnYWNjb3VudC1iYWxhbmNlJyxcbiAgQUNVVEU6ICdhY3V0ZScsXG4gIEFERDogJ2FkZCcsXG4gIEFJX0RFU0NSSVBUSU9OOiAnYWktZGVzY3JpcHRpb24nLFxuICBBTElHTl9TUEFDRV9FVkVOOiAnYWxpZ24tc3BhY2UtZXZlbicsXG4gIEFQUExFX1BBWTogJ2FwcGxlLXBheScsXG4gIEFSUk9XX0JBQ0s6ICdhcnJvdy1iYWNrJyxcbiAgQVJST1dfQ1lDTEU6ICdhcnJvdy1jeWNsZScsXG4gIEFSUk9XX0ZPUldBUkQ6ICdhcnJvdy1mb3J3YXJkJyxcbiAgQVJST1dfUklHSFQ6ICdhcnJvdy1yaWdodCcsXG4gIEFSUk9XX1VQOiAnYXJyb3ctdXAnLFxuICBBU1NJR05NRU5UOiAnYXNzaWdubWVudCcsXG4gIEFUVEFDSF9NT05FWTogJ2F0dGFjaC1tb25leScsXG4gIEFVVE9fUkVORVc6ICdhdXRvLXJlbmV3JyxcbiAgQVdBUkRfU1RBUjogJ2F3YXJkLXN0YXInLFxuICBCRUQ6ICdiZWQnLFxuICBCT0xUOiAnYm9sdCcsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBCVU5LSE9VU0U6ICdidW5raG91c2UnLFxuICBDQUxDVUxBVEU6ICdjYWxjdWxhdGUnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDQUxMX1FVQUxJVFk6ICdjYWxsLXF1YWxpdHknLFxuICBDQVJfUkVOVEFMOiAnY2FyLXJlbnRhbCcsXG4gIENIRUNLOiAnY2hlY2snLFxuICBDSEVWUk9OX0xFRlQ6ICdjaGV2cm9uLWxlZnQnLFxuICBDSEVWUk9OX1JJR0hUOiAnY2hldnJvbi1yaWdodCcsXG4gIENMRUFSOiAnY2xlYXInLFxuICBDTE9TRTogJ2Nsb3NlJyxcbiAgQ09OVFJBQ1Q6ICdjb250cmFjdCcsXG4gIENSQVNIOiAnY3Jhc2gnLFxuICBEQVNIQk9BUkRfQ1VTVE9NSVpFOiAnZGFzaGJvYXJkLWN1c3RvbWl6ZScsXG4gIERFTEVURTogJ2RlbGV0ZScsXG4gIERJQU1PTkQ6ICdkaWFtb25kJyxcbiAgRElSRUNUSU9OU19CT0FUOiAnZGlyZWN0aW9ucy1ib2F0JyxcbiAgRE9NQUlOOiAnZG9tYWluJyxcbiAgRFJBRlQ6ICdkcmFmdCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRU5HSU5FOiAnZW5naW5lJyxcbiAgRU5HSU5FRVJJTkc6ICdlbmdpbmVlcmluZycsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBFWFBBTkRfQ09OVEVOVDogJ2V4cGFuZC1jb250ZW50JyxcbiAgRVhQQU5EX0xFU1M6ICdleHBhbmQtbGVzcycsXG4gIEVYUEFORF9NT1JFOiAnZXhwYW5kLW1vcmUnLFxuICBGQUNFQk9PSzogJ2ZhY2Vib29rJyxcbiAgRkFWT1JJVEU6ICdmYXZvcml0ZScsXG4gIEZBVk9SSVRFX0ZJTExFRDogJ2Zhdm9yaXRlLWZpbGxlZCcsXG4gIEZMQUc6ICdmbGFnJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHQVM6ICdnYXMnLFxuICBHQVZFTDogJ2dhdmVsJyxcbiAgR0VBUlM6ICdnZWFycycsXG4gIEdMT0JFX0xPQ0FUSU9OX1BJTjogJ2dsb2JlLWxvY2F0aW9uLXBpbicsXG4gIEdPT0dMRTogJ2dvb2dsZScsXG4gIEdPT0dMRV9QQVk6ICdnb29nbGUtcGF5JyxcbiAgR1JJRDogJ2dyaWQnLFxuICBIQU5EU0hBS0U6ICdoYW5kc2hha2UnLFxuICBIQU5EWU1BTjogJ2hhbmR5bWFuJyxcbiAgSEVJR0hUOiAnaGVpZ2h0JyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElORk9STUFUSU9OOiAnaW5mb3JtYXRpb24nLFxuICBJTlNFUlRfVEVYVDogJ2luc2VydC10ZXh0JyxcbiAgSU5TVEFHUkFNOiAnaW5zdGFncmFtJyxcbiAgSU9TX1NIQVJFOiAnaW9zLXNoYXJlJyxcbiAgTEFZT1VUOiAnbGF5b3V0JyxcbiAgTEVWRUxMSU5HX0pBQ0s6ICdsZXZlbGxpbmctamFjaycsXG4gIExJTktFRF9JTjogJ2xpbmtlZCBpbicsXG4gIExPQ0FMX1NISVBQSU5HOiAnbG9jYWwtc2hpcHBpbmcnLFxuICBMT0NLOiAnbG9jaycsXG4gIE1BSUw6ICdtYWlsJyxcbiAgTUVOVTogJ21lbnUnLFxuICBNT05FWV9CQUc6ICdtb25leS1iYWcnLFxuICBNT1JFX0hPUklaOiAnbW9yZS1ob3JpeicsXG4gIE1PVkU6ICdtb3ZlJyxcbiAgTk9USUZJQ0FUSU9OUzogJ25vdGlmaWNhdGlvbnMnLFxuICBPRE9NRVRFUjogJ29kb21ldGVyJyxcbiAgT1BFTl9JTl9ORVc6ICdvcGVuLWluLW5ldycsXG4gIFBBTEVUVEU6ICdwYWxldHRlJyxcbiAgUEFZUEFMOiAncGF5cGFsJyxcbiAgUEVSU09OOiAncGVyc29uJyxcbiAgUEVSU09OX1NFQVJDSDogJ3BlcnNvbi1zZWFyY2gnLFxuICBQSE9UT19DQU1FUkE6ICdwaG90by1jYW1lcmEnLFxuICBQSU5URVJFU1Q6ICdwaW50ZXJlc3QnLFxuICBQTEFZX0FSUk9XOiAncGxheS1hcnJvdycsXG4gIFBPTElDWTogJ3BvbGljeScsXG4gIFBPV0VSOiAncG93ZXInLFxuICBQT1dFUl9PRkY6ICdwb3dlci1vZmYnLFxuICBQUklPUklUWV9ISUdIOiAncHJpb3JpdHktaGlnaCcsXG4gIFJFTU9WRTogJ3JlbW92ZScsXG4gIFJFUVVFU1RfUVVPVEU6ICdyZXF1ZXN0LXF1b3RlJyxcbiAgUkVTRVRfV1JFTkNIOiAncmVzZXQtd3JlbmNoJyxcbiAgUk9BRDogJ3JvYWQnLFxuICBST1VOREVEX0NPUk5FUjogJ3JvdW5kZWQtY29ybmVyJyxcbiAgUlVMRVI6ICdydWxlcicsXG4gIFNBSUxJTkc6ICdzYWlsaW5nJyxcbiAgU0NIT09MOiAnc2Nob29sJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgU0VBVElORzogJ3NlYXRpbmcnLFxuICBTRUxMOiAnc2VsbCcsXG4gIFNFTlNPUlM6ICdzZW5zb3JzJyxcbiAgU0VUVElOR1M6ICdzZXR0aW5ncycsXG4gIFNIQVJFOiAnc2hhcmUnLFxuICBTSElFTERfQ0hFQ0s6ICdzaGllbGQtY2hlY2snLFxuICBTSE9QUElOR19DQVJUOiAnc2hvcHBpbmctY2FydCcsXG4gIFNMRUVQUzogJ3NsZWVwcycsXG4gIFNNUzogJ3NtcycsXG4gIFNOT1dGTEFLRTogJ3Nub3dmbGFrZScsXG4gIFNUQVI6ICdzdGFyJyxcbiAgU1RBUl9GSUxMRUQ6ICdzdGFyLWZpbGxlZCcsXG4gIFNUQVJfSEFMRjogJ3N0YXItaGFsZicsXG4gIFNVTU1BUklaRTogJ3N1bW1hcml6ZScsXG4gIFNXQVBfSE9SSVo6ICdzd2FwLWhvcml6JyxcbiAgU1dBUF9WRVJUOiAnc3dhcC12ZXJ0JyxcbiAgVEhSRUVfRF9ST1RBVElPTjogJ3RocmVlLWQtcm90YXRpb24nLFxuICBUSFVNQl9VUDogJ3RodW1iLXVwJyxcbiAgVFJFTkRJTkdfRE9XTjogJ3RyZW5kaW5nLWRvd24nLFxuICBUUk9QSFk6ICd0cm9waHknLFxuICBUVU5FOiAndHVuZScsXG4gIFRXSVRURVI6ICd0d2l0dGVyJyxcbiAgVU1CUkVMTEE6ICd1bWJyZWxsYScsXG4gIFZFUklGSUVEOiAndmVyaWZpZWQnLFxuICBWSURFT0NBTTogJ3ZpZGVvY2FtJyxcbiAgVklFV19JTl9BUjogJ3ZpZXctaW4tYXInLFxuICBWSVNJQklMSVRZOiAndmlzaWJpbGl0eScsXG4gIFZPTFVNRV9PRkY6ICd2b2x1bWUtb2ZmJyxcbiAgVk9MVU1FX09OOiAndm9sdW1lLW9uJyxcbiAgV0FSRUhPVVNFOiAnd2FyZWhvdXNlJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBXQVRFUjogJ3dhdGVyJyxcbiAgV0VJR0hUOiAnd2VpZ2h0JyxcbiAgV0lEVEg6ICd3aWR0aCcsXG4gIFdPUktTUEFDRV9QUkVNSVVNOiAnd29ya3NwYWNlLXByZW1pdW0nLFxuICBXUkVOQ0g6ICd3cmVuY2gnLFxuICBZT1VUVUJFOiAneW91dHViZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgSUNPTl9SRUFMTSA9IHtcbiAgQUVSTzoge1xuICAgIEZMSUdIVDogJ2Flcm8tZmxpZ2h0JyxcbiAgICBIRUxJQ09QVEVSOiAnYWVyby1oZWxpY29wdGVyJyxcbiAgICBNT0RFX0ZBTjogJ2Flcm8tbW9kZS1mYW4nLFxuICAgIFBMQU5FX0NPTlRSQUlMUzogJ2Flcm8tcGxhbmUtY29udHJhaWxzJyxcbiAgfSxcbiAgQVRWOiB7XG4gICAgQVRWOiAnYXR2LWF0dicsXG4gICAgRFVORV9CVUdHWTogJ2F0di1kdW5lLWJ1Z2d5JyxcbiAgICBHT0xGX0NBUlQ6ICdhdHYtZ29sZi1jYXJ0JyxcbiAgICBHT19LQVJUOiAnYXR2LWdvLWthcnQnLFxuICAgIFNBTkRfUkFJTDogJ2F0di1zYW5kLXJhaWwnLFxuICAgIFNJREVfQllfU0lERTogJ2F0di1zaWRlLWJ5LXNpZGUnLFxuICAgIFRSQUlMRVI6ICdhdHYtdHJhaWxlcicsXG4gIH0sXG4gIEJPQVRNQVJUOiB7XG4gICAgUFdDOiAnYm9hdG1hcnQtcHdjJyxcbiAgICBUUkFJTEVSOiAnYm9hdG1hcnQtdHJhaWxlcicsXG4gIH0sXG4gIENZQ0xFOiB7XG4gICAgTU9UT1JDWUNMRTogJ2N5Y2xlLW1vdG9yY3ljbGUnLFxuICAgIFRSQUlMRVI6ICdjeWNsZS10cmFpbGVyJyxcbiAgfSxcbiAgUFdDOiB7XG4gICAgUFdDOiAncHdjLXB3YycsXG4gICAgU05PV01PQklMRTogJ3B3Yy1zbm93bW9iaWxlJyxcbiAgICBUUkFJTEVSOiAncHdjLXRyYWlsZXInLFxuICB9LFxuICBSVjoge1xuICAgIENMQVNTX0E6ICdydi1jbGFzcy1hJyxcbiAgICBDTEFTU19COiAncnYtY2xhc3MtYicsXG4gICAgQ0xBU1NfQzogJ3J2LWNsYXNzLWMnLFxuICAgIERFU1RJTkFUSU9OX1RSQUlMRVI6ICdydi1kZXN0aW5hdGlvbi10cmFpbGVyJyxcbiAgICBGSUZUSF9XSEVFTDogJ3J2LWZpZnRoLXdoZWVsJyxcbiAgICBGSVNIX0hPVVNFOiAncnYtZmlzaC1ob3VzZScsXG4gICAgUEFSS19NT0RFTDogJ3J2LXBhcmstbW9kZWwnLFxuICAgIFBPUF9VUF9DQU1QRVI6ICdydi1wb3AtdXAtY2FtcGVyJyxcbiAgICBURUFSRFJPUF9UUkFJTEVSOiAncnYtdGVhcmRyb3AtdHJhaWxlcicsXG4gICAgVFJBVkVMX1RSQUlMRVI6ICdydi10cmF2ZWwtdHJhaWxlcicsXG4gICAgVFJVQ0tfQ0FNUEVSOiAncnYtdHJ1Y2stY2FtcGVyJyxcbiAgfSxcbiAgU05PVzoge1xuICAgIE1PVE9SQ1lDTEU6ICdzbm93LW1vdG9yY3ljbGUnLFxuICAgIFBXQzogJ3Nub3ctcHdjJyxcbiAgICBTSURFX0JZX1NJREU6ICdzbm93LXNpZGUtYnktc2lkZScsXG4gICAgU05PV01PQklMRTogJ3Nub3ctc25vd21vYmlsZScsXG4gICAgVFJBSUxFUjogJ3Nub3ctdHJhaWxlcicsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG50eXBlIFJlYWxtS2V5c1dpdGhJY29ucyA9IEV4dHJhY3Q8UmVhbG1LZXksIGtleW9mIHR5cGVvZiBJQ09OX1JFQUxNPjtcbnR5cGUgUmVhbG1JY29uID0ge1xuICBbUmVhbG1LZXkgaW4gUmVhbG1LZXlzV2l0aEljb25zXTogKHR5cGVvZiBJQ09OX1JFQUxNKVtSZWFsbUtleV1ba2V5b2YgKHR5cGVvZiBJQ09OX1JFQUxNKVtSZWFsbUtleV1dO1xufVtSZWFsbUtleXNXaXRoSWNvbnNdO1xuXG50eXBlIEdsb2JhbEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcblxuZXhwb3J0IHR5cGUgSWNvbiA9IEdsb2JhbEljb24gfCBSZWFsbUljb247XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBhY2NvcmRpb24gaXRlbSBpbnRlbmRlZCB0byBiZSB1c2VkIGluIG5hdmlnYXRpb24gbWVudXMgcmVsYXRpbmcgdG8gYWNjb3JkaW9uIGRyb3Bkb3ducy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWFjY29yZGlvbml0ZW0tLWRvY3MpIGZvciBUaWRlQWNjb3JkaW9uSXRlbVxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlRGl2aWRlciBmcm9tICdAL2NvbXBvbmVudHMvVGlkZURpdmlkZXIudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgYWNjb3JkaW9uIGl0ZW0gKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGluY2x1ZGUgYm90dG9tIGRpdmlkZXIgKi9cbiAgICBoYXNCb3R0b21EaXZpZGVyPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gaW5jbHVkZSB0b3AgZGl2aWRlciAqL1xuICAgIGhhc1RvcERpdmlkZXI/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBzaG93IFwiKG9wdGlvbmFsKVwiIGluZGljYXRvciBhZnRlciBsYWJlbCAqL1xuICAgIGlzT3B0aW9uYWw/OiBib29sZWFuO1xuXG4gICAgLyoqIFRoZSBsYWJlbCBvZiB0aGUgYWNjb3JkaW9uIGl0ZW0gKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGhhc0JvdHRvbURpdmlkZXI6IGZhbHNlLFxuICAgIGhhc1RvcERpdmlkZXI6IGZhbHNlLFxuICAgIGlzT3B0aW9uYWw6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBpc0V4cGFuZGVkID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBoYW5kbGVUb2dnbGVDbGljayA9ICgpID0+IHtcbiAgICBpZiAocHJvcHMuZGlzYWJsZWQpIHJldHVybjtcbiAgICBpc0V4cGFuZGVkLnZhbHVlID0gIWlzRXhwYW5kZWQudmFsdWU7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuZGlzYWJsZWQsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgaXNFeHBhbmRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWl0ZW0nXVwiPlxuICAgIDxUaWRlRGl2aWRlciB2LWlmPVwiaGFzVG9wRGl2aWRlclwiIC8+XG5cbiAgICA8YnV0dG9uXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFjY29yZGlvbi1oZWFkJyxcbiAgICAgICAgQ1NTLkFMSUdOLlguTEVGVCxcbiAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIGRpc2FibGVkID8gW0NTUy5PUEFDSVRZLkRJU0FCTEVELCBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXSA6IFtdLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVUb2dnbGVDbGlja1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTERdXCI+XG4gICAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJpc09wdGlvbmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgIChvcHRpb25hbClcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImlzRXhwYW5kZWQgPyBJQ09OLkVYUEFORF9MRVNTIDogSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWJvZHknLCBpc0V4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnLCBDU1MuRElTUExBWS5HUklEXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLk9WRVJGTE9XLlkuSElEREVOLCBDU1MuTUFSR0lOLlkuT05FLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cImhhc0JvdHRvbURpdmlkZXJcIiAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFjY29yZGlvbi1pdGVtIHtcbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICB9XG5cbiAgLnRpZGUtYWNjb3JkaW9uLWJvZHkge1xuICAgIHRyYW5zaXRpb246IGdyaWQtdGVtcGxhdGUtcm93cyB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtYWNjb3JkaW9uLWJvZHkuZXhwYW5kZWQge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogbWlubWF4KDBweCwgMWZyKTtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmNvbGxhcHNlZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW5tYXgoMHB4LCAwZnIpO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IEVMRU1FTlQgPSB7XG4gIEJVVFRPTjogJ2J1dHRvbicsXG4gIExJTks6ICdhJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBFTEVNRU5UX0JST0FEID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBESVY6ICdkaXYnLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFbGVtZW50ID0gKHR5cGVvZiBFTEVNRU5UKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF07XG5leHBvcnQgdHlwZSBFbGVtZW50QnJvYWQgPSAodHlwZW9mIEVMRU1FTlRfQlJPQUQpW2tleW9mIHR5cGVvZiBFTEVNRU5UX0JST0FEXTtcbiIsImltcG9ydCB7IGluamVjdCwgcHJvdmlkZSB9IGZyb20gJ3Z1ZSc7XG5cbmltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuXG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5cbnR5cGUgVGlkZUNvbmZpZyA9IHtcbiAgbGlua0NvbXBvbmVudDogQ29tcG9uZW50IHwgdHlwZW9mIEVMRU1FTlQuTElOSztcbn07XG5cbmNvbnN0IHRpZGVDb25maWdEZWZhdWx0czogVGlkZUNvbmZpZyA9IHsgbGlua0NvbXBvbmVudDogRUxFTUVOVC5MSU5LIH07XG5cbmNvbnN0IENPTkZJR19LRVkgPSBTeW1ib2woJ3RpZGUtY29uZmlnJyk7XG5cbmV4cG9ydCBjb25zdCBwcm92aWRlVGlkZUNvbmZpZyA9IChjb25maWc6IFBhcnRpYWw8VGlkZUNvbmZpZz4gPSB7fSkgPT4ge1xuICBjb25zdCBjb25maWdXaXRoRGVmYXVsdHM6IFRpZGVDb25maWcgPSB7IC4uLnRpZGVDb25maWdEZWZhdWx0cywgLi4uY29uZmlnIH07XG5cbiAgcHJvdmlkZTxUaWRlQ29uZmlnPihDT05GSUdfS0VZLCBjb25maWdXaXRoRGVmYXVsdHMpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVRpZGVDb25maWcgPSAoKSA9PiB7XG4gIHJldHVybiBpbmplY3Q8VGlkZUNvbmZpZz4oQ09ORklHX0tFWSwgdGlkZUNvbmZpZ0RlZmF1bHRzKTtcbn07XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyB1c2VUaWRlQ29uZmlnIH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlQ29uZmlnJztcblxuICBjb25zdCB7IGxpbmtDb21wb25lbnQgfSA9IHVzZVRpZGVDb25maWcoKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnQgOmlzPVwibGlua0NvbXBvbmVudFwiPlxuICAgIDxzbG90IC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuZXhwb3J0IGNvbnN0IFBSSU9SSVRZID0ge1xuICBQUklNQVJZOiAncHJpbWFyeScsXG4gIFNFQ09OREFSWTogJ3NlY29uZGFyeScsXG4gIFRFUlRJQVJZOiAndGVydGlhcnknLFxuICBRVUFURVJOQVJZOiAncXVhdGVybmFyeScsXG4gIEZMT0FUSU5HOiAnZmxvYXRpbmcnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUHJpb3JpdHkgPSAodHlwZW9mIFBSSU9SSVRZKVtrZXlvZiB0eXBlb2YgUFJJT1JJVFldO1xuIiwiZXhwb3J0IGNvbnN0IFRBUkdFVCA9IHtcbiAgQkxBTks6ICdfYmxhbmsnLFxuICBTRUxGOiB1bmRlZmluZWQsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUYXJnZXQgPSAodHlwZW9mIFRBUkdFVClba2V5b2YgdHlwZW9mIFRBUkdFVF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGljb24gYnV0dG9uIGNvbXBvbmVudCB3aXRoIHZhcmlvdXMgc3R5bGluZyBvcHRpb25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYnV0dG9uaWNvbi0tZG9jcykgZm9yIFRpZGVCdXR0b25JY29uXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgUHJpb3JpdHkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHR5cGUgeyBCdXR0b25UeXBlIH0gZnJvbSAnQC90eXBlcy9UeXBlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIGNsaWNrYWJpbGl0eSAoQnV0dG9uIG9ubHkpICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIEhUTUwgdGFnIHR5cGUgKi9cbiAgICBlbGVtZW50PzogRWxlbWVudDtcblxuICAgIC8qKiBVUkwgdG8gb3BlbiAoTGluayBvbmx5KSAqL1xuICAgIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKiogSWNvbiB0byBzaG93ICovXG4gICAgaWNvbjogSWNvbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdGFyZ2V0IGEgbmV3IGJyb3dzZXIgdGFiIChMaW5rIG9ubHkpICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgdmlzdWFsIHByb21pbmVuY2UgKi9cbiAgICBwcmlvcml0eT86IFByaW9yaXR5O1xuXG4gICAgLyoqIEFwcGxpZXMgdHlwZSBhdHRyaWJ1dGUgdG8gSFRNTCBlbGVtZW50ICovXG4gICAgdHlwZT86IEJ1dHRvblR5cGU7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZWxlbWVudDogRUxFTUVOVC5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb246IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gICAgcHJpb3JpdHk6IFBSSU9SSVRZLlBSSU1BUlksXG4gICAgdHlwZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCB0eXBlQXR0cmlidXRlID0gY29tcHV0ZWQ8c3RyaW5nIHwgdW5kZWZpbmVkPigoKSA9PlxuICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OID8gcHJvcHMudHlwZSA/PyBFTEVNRU5ULkJVVFRPTiA6IHVuZGVmaW5lZFxuICApO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmFyaWEtbGFiZWw9XCJpY29uXCJcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24taWNvbicsXG4gICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLFxuICAgICAgYHRpZGUtYnV0dG9uLSR7cHJpb3JpdHl9YCxcbiAgICAgIGVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IFtDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGXSA6ICcnLFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cImVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OICYmIGRpc2FibGVkXCJcbiAgICA6aHJlZj1cImVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyAmJiBocmVmID8gaHJlZiA6IHVuZGVmaW5lZFwiXG4gICAgOnRhcmdldD1cImVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyAmJiBpc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6dHlwZT1cInR5cGVBdHRyaWJ1dGVcIlxuICAgIDppcz1cInJvb3RFbGVtZW50XCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmljb249XCJpY29uXCJcbiAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICB2LWlmPVwiaWNvblwiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBsaW5rIGVsZW1lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVsaW5rLS1kb2NzKSBmb3IgVGlkZUxpbmtcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBIVE1MIHRhZyB0eXBlICovXG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG5cbiAgICAvKiogVVJMIHRvIG9wZW4gKExpbmsgb25seSkgKi9cbiAgICBocmVmPzogc3RyaW5nO1xuXG4gICAgLyoqIEljb24gdG8gbGVmdCBvZiBsYWJlbCAqL1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcblxuICAgIC8qKiBTaXplIG9mIHRoZSBpY29ucyAqL1xuICAgIGljb25TaXplPzogU2l6ZTtcblxuICAgIC8qKiBJY29uIHRvIHJpZ2h0IG9mIGxhYmVsICovXG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdGFyZ2V0IGEgbmV3IGJyb3dzZXIgdGFiIChMaW5rIG9ubHkpICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIExpbmsgdGV4dCAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogSGlkZXMgdGhlIHVuZGVybGluZSB1bnRpbCBob3ZlcmVkLCBkZS1lbXBoYXNpemluZyB0aGUgbGluayAqL1xuICAgIHN1YnRsZT86IGJvb2xlYW47XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlbGVtZW50OiBFTEVNRU5ULkxJTkssXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaWNvblNpemU6IFNJWkUuU01BTEwsXG4gICAgaWNvblRyYWlsaW5nOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgc3VidGxlOiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gSW50ZXJuYWxCYXNlTGluayA6IHByb3BzLmVsZW1lbnQpKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1saW5rJyxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORSxcbiAgICAgIENTUy5BTElHTi5YLkxFRlQsXG4gICAgICBzdWJ0bGUgPyBbQ1NTLlVOREVSTElORS5SRVNULk9GRiwgQ1NTLlVOREVSTElORS5IT1ZFUi5PTl0gOiBbQ1NTLlVOREVSTElORS5SRVNULk9OLCBDU1MuVU5ERVJMSU5FLkhPVkVSLk9GRl0sXG4gICAgXVwiXG4gICAgOmhyZWY9XCJwcm9wcy5ocmVmXCJcbiAgICA6dGFyZ2V0PVwicHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOnR5cGU9XCJlbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IEVMRU1FTlQuQlVUVE9OIDogdW5kZWZpbmVkXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssIENTUy5BTElHTi5ZLk1JRERMRSwgQ1NTLk1BUkdJTi5SSUdIVC5RVUFSVEVSLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXVwiXG4gICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIDpzaXplPVwiaWNvblNpemVcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAvPlxuXG4gICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5BTElHTi5ZLk1JRERMRV1cIj5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9zcGFuPlxuXG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLCBDU1MuQUxJR04uWS5NSURETEUsIENTUy5NQVJHSU4uTEVGVC5RVUFSVEVSLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXVwiXG4gICAgICA6aWNvbj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgICA6c2l6ZT1cImljb25TaXplXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbiIsImV4cG9ydCBjb25zdCBBTEVSVCA9IHtcbiAgRVJST1I6ICdlcnJvcicsXG4gIElORk86ICdpbmZvJyxcbiAgU1VDQ0VTUzogJ3N1Y2Nlc3MnLFxuICBXQVJOSU5HOiAnd2FybmluZycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBBbGVydCA9ICh0eXBlb2YgQUxFUlQpW2tleW9mIHR5cGVvZiBBTEVSVF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBhbGVydCBjb21wb25lbnQgd2l0aCBjdXN0b21pemFibGUgY29udGVudCBhbmQgYmVoYXZpb3IuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVhbGVydC0tZG9jcykgZm9yIFRpZGVBbGVydFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ29tbWVudCwgY29tcHV0ZWQsIHVzZVNsb3RzIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlTGluay52dWUnO1xuICBpbXBvcnQgeyBBTEVSVCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBBbGVydCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIENhbGwgVG8gQWN0aW9uIHRoYXQgcmVuZGVycyBhcyBhIFRpZGVMaW5rOyBjbGlja2luZyBlbWl0cyBhIHNlcGFyYXRlIGBjbGlja2AgZXZlbnQgKi9cbiAgICBjdGFMYWJlbD86IHN0cmluZztcblxuICAgIC8qKiBIZWFkaW5nIHRleHQgKi9cbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgQWxlcnQgY2FuIGJlIGNsb3NlZCBieSB0aGUgdXNlciAqL1xuICAgIGlzRGlzbWlzc2libGU/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgQWxlcnQgaXMgYW4gb3ZlcmxheSBvciBkaXNwbGFjZXMgY29udGVudCAqL1xuICAgIGlzVG9hc3Q/OiBib29sZWFuO1xuXG4gICAgLyoqIEFsZXJ0IHR5cGUgKi9cbiAgICB0eXBlPzogQWxlcnQ7XG4gIH07XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICdjbG9zZScpOiB2b2lkO1xuICAgIChldmVudDogJ2N0YUNsaWNrJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjdGFMYWJlbDogdW5kZWZpbmVkLFxuICAgIGhlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIGlzVG9hc3Q6IGZhbHNlLFxuICAgIHR5cGU6IEFMRVJULklORk8sXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcbiAgY29uc3Qgc2xvdHMgPSB1c2VTbG90cygpO1xuICBjb25zdCBoYXNCb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG5vZGVzID0gc2xvdHMuZGVmYXVsdD8uKCk7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuIG5vZGVzLnNvbWUoXG4gICAgICAobm9kZSkgPT4gbm9kZS50eXBlICE9PSBDb21tZW50ICYmICh0eXBlb2Ygbm9kZS5jaGlsZHJlbiAhPT0gJ3N0cmluZycgfHwgbm9kZS5jaGlsZHJlbi50cmltKCkubGVuZ3RoID4gMClcbiAgICApO1xuICB9KTtcblxuICBjb25zdCBpY29uVHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IpIHJldHVybiBJQ09OLlBSSU9SSVRZX0hJR0g7XG4gICAgaWYgKHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MpIHJldHVybiBJQ09OLkNIRUNLO1xuICAgIGlmIChwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HKSByZXR1cm4gSUNPTi5XQVJOSU5HO1xuICAgIHJldHVybiBJQ09OLklORk9STUFUSU9OO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBwcm9wcy50eXBlLFxuICAgICAgJ3RpZGUtYWxlcnQnLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5FUlJPUiA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuRVJST1IsIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkVSUk9SXSA6ICcnLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuSU5GTywgQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuSU5GT10gOiAnJyxcbiAgICAgICFwcm9wcy5pc1RvYXN0ICYmIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1NcbiAgICAgICAgPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLlNVQ0NFU1MsIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlNVQ0NFU1NdXG4gICAgICAgIDogJycsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HXG4gICAgICAgID8gW0NTUy5CRy5HTE9CQUwuU1VSRkFDRS5XQVJOSU5HLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5XQVJOSU5HXVxuICAgICAgICA6ICcnLFxuICAgICAgcHJvcHMuaXNUb2FzdCA/IFtDU1MuQkcuU0VDT05EQVJZLCBDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlksIENTUy5TSEFET1cuQk9UVE9NXSA6IENTUy5CT1JERVIuTEVGVC5UV08sXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWljb24nLFxuICAgICAgICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRSxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5JTkZPLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5TVUNDRVNTLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5XQVJOSU5HLFxuICAgICAgXVwiXG4gICAgICB2LWlmPVwiIXByb3BzLmlzVG9hc3RcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImljb25UeXBlXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWhlYWRpbmcnLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uUk9XLFxuICAgICAgICAhaGFzQm9keSA/IFtDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLk1BUkdJTi5SSUdIVC5IQUxGXSA6ICcnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXCI+e3sgcHJvcHMuaGVhZGluZyB9fTwvc3Bhbj5cblxuICAgICAgPFRpZGVMaW5rXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxJTktfMl1cIlxuICAgICAgICA6ZWxlbWVudD1cIkVMRU1FTlQuQlVUVE9OXCJcbiAgICAgICAgOmxhYmVsPVwicHJvcHMuY3RhTGFiZWxcIlxuICAgICAgICBAY2xpY2s9XCJlbWl0KCdjdGFDbGljaycpXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsICYmICFoYXNCb2R5XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hbGVydC1jbG9zZScsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiZW1pdCgnY2xvc2UnKVwiXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgYWxlcnRcIlxuICAgICAgdi1pZj1cImlzRGlzbWlzc2libGVcIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1ib2R5JywgQ1NTLkZPTlQuUk9MRS5CT0RZXzIsICFwcm9wcy5pc1RvYXN0ICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgIDxzbG90IC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uVE9QLkhBTEZdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsICYmIGhhc0JvZHlcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUxpbmtcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MSU5LXzJdXCJcbiAgICAgICAgICA6ZWxlbWVudD1cIkVMRU1FTlQuQlVUVE9OXCJcbiAgICAgICAgICA6bGFiZWw9XCJwcm9wcy5jdGFMYWJlbFwiXG4gICAgICAgICAgQGNsaWNrPVwiZW1pdCgnY3RhQ2xpY2snKVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFsZXJ0IHtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgJ2ljb24gaGVhZGluZyBjbG9zZSdcbiAgICAgICcuIGJvZHkgLic7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIHZhcigtLXRpZGUtc2FmZS1mcikgYXV0bztcbiAgICBncmlkLWNvbHVtbi1nYXA6IHZhcigtLXRpZGUtc3BhY2luZy0xXFwvMik7XG4gICAgbWF4LXdpZHRoOiB2YXIoLS10aWRlLW1heC13aWR0aCwgNjQwcHgpO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaWNvbiB7XG4gICAgZ3JpZC1hcmVhOiBpY29uO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaGVhZGluZyB7XG4gICAgZ3JpZC1hcmVhOiBoZWFkaW5nO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtY2xvc2Uge1xuICAgIGdyaWQtYXJlYTogY2xvc2U7XG4gIH1cblxuICAudGlkZS1hbGVydC1ib2R5IHtcbiAgICBncmlkLWFyZWE6IGJvZHk7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9DT0xPUiA9IHtcbiAgQkxBQ0s6ICdibGFjaycsXG4gIEJMVUU6ICdibHVlJyxcbiAgR1JFRU46ICdncmVlbicsXG4gIExJTUU6ICdsaW1lJyxcbiAgT1JBTkdFOiAnb3JhbmdlJyxcbiAgUFVSUExFOiAncHVycGxlJyxcbiAgUkVEOiAncmVkJyxcbiAgU0FMTU9OOiAnc2FsbW9uJyxcbiAgVEVBTDogJ3RlYWwnLFxuICBZRUxMT1c6ICd5ZWxsb3cnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBREdFX0NPTE9SX0RFVEFJTFM6IFJlY29yZDxcbiAgQmFkZ2VDb2xvcixcbiAge1xuICAgIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gICAgaWNvbkNvbG9yOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIFtCQURHRV9DT0xPUi5CTEFDS106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5ISUdILFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICB9LFxuICBbQkFER0VfQ09MT1IuQkxVRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuQkxVRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkJMVUUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5HUkVFTl06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuR1JFRU4sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5HUkVFTixcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkxJTUVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkxJTUUsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5MSU1FLFxuICB9LFxuICBbQkFER0VfQ09MT1IuT1JBTkdFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5PUkFOR0UsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5PUkFOR0UsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5QVVJQTEVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlBVUlBMRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlBVUlBMRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlJFRF06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuUkVELFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuUkVELFxuICB9LFxuICBbQkFER0VfQ09MT1IuU0FMTU9OXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5TQUxNT04sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5TQUxNT04sXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5URUFMXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5URUFMLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuVEVBTCxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLllFTExPV106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuWUVMTE9XLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuWUVMTE9XLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IEJBREdFX1RSVVNURUQgPSB7XG4gIFlFQVJTXzEwOiAnMTAnLFxuICBZRUFSU18xNTogJzE1JyxcbiAgWUVBUlNfMjA6ICcyMCcsXG4gIFlFQVJTXzI1OiAnMjUnLFxuICBZRUFSU18zMDogJzMwJyxcbiAgWUVBUlNfMzU6ICczNScsXG4gIFlFQVJTXzU6ICc1Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEJhZGdlQ29sb3IgPSAodHlwZW9mIEJBREdFX0NPTE9SKVtrZXlvZiB0eXBlb2YgQkFER0VfQ09MT1JdO1xuZXhwb3J0IHR5cGUgQmFkZ2VUcnVzdGVkWWVhcnMgPSAodHlwZW9mIEJBREdFX1RSVVNURUQpW2tleW9mIHR5cGVvZiBCQURHRV9UUlVTVEVEXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgYmFkZ2UgY29tcG9uZW50IHdpdGggY3VzdG9taXphYmxlIGNvbnRlbnQgYW5kIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYmFkZ2UtLWRvY3MpIGZvciBUaWRlQmFkZ2VcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQkFER0VfQ09MT1JfREVUQUlMUyB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBCYWRnZUNvbG9yIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGljaCBjb2xvciBvcHRpb24gdG8gYWRvcHQgKGlmIGFueSkgKi9cbiAgICBjb2xvcj86IEJhZGdlQ29sb3I7XG5cbiAgICAvKiogSWNvbiB0byBsZWZ0IG9mIGxhYmVsICovXG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkaXNwbGF5IHRoZSBcIkZsb2F0aW5nXCIgdmFyaWFudCBzdHlsZXMgKi9cbiAgICBpc0Zsb2F0aW5nPzogYm9vbGVhbjtcblxuICAgIC8qKiBCYWRnZSB0ZXh0ICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNvbG9yOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc0Zsb2F0aW5nOiBmYWxzZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UnLFxuICAgICAgcHJvcHMuaXNGbG9hdGluZyB8fCBwcm9wcy5jb2xvciA/IFtDU1MuQkcuU1VSRkFDRS5GTE9BVElORywgQ1NTLlNIQURPVy5CT1RUT01dIDogW0NTUy5CRy5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlguSEFMRixcbiAgICAgIHByb3BzLmNvbG9yICYmIFtDU1MuQk9SREVSLkxFRlQuVFdPLCBCQURHRV9DT0xPUl9ERVRBSUxTW3Byb3BzLmNvbG9yXS5ib3JkZXJDb2xvcl0sXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkYsIHByb3BzLmNvbG9yICYmIEJBREdFX0NPTE9SX0RFVEFJTFNbcHJvcHMuY29sb3JdLmljb25Db2xvcl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkVMTElQU0lTXVwiPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHRydXN0ZWQgcGFydG5lciBiYWRnZSBjb21wb25lbnQgd2l0aCBwcmVzZXQgeWVhcnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGViYWRnZXRydXN0ZWRwYXJ0bmVyLS1kb2NzKSBmb3IgVGlkZUJhZGdlVHJ1c3RlZFBhcnRuZXJcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQkFER0VfVFJVU1RFRCB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQmFkZ2VUcnVzdGVkWWVhcnMgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBOdW1iZXIgb2YgeWVhcnMgdG8gZGlzcGxheSBpbiB0aGUgdHJ1c3RlZCBwYXJ0bmVyIGJhZGdlICovXG4gICAgeWVhcnM/OiBCYWRnZVRydXN0ZWRZZWFycztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHllYXJzOiBCQURHRV9UUlVTVEVELllFQVJTXzUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJhZGdlLXRydXN0ZWQtcGFydG5lcicsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkJSQU5ELFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkVMTElQU0lTLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgXVwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICA6aWNvbj1cIklDT04uQVdBUkRfU1RBUlwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5FTExJUFNJU11cIj5cbiAgICAgIDxzcGFuPnt7IHByb3BzLnllYXJzIH19IHllYXIgdHJ1c3RlZCBwYXJ0bmVyPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+PC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgYmFkZ2UgY29tcG9uZW50IGZvciBpbmRpY2F0aW5nIGEgdmVyaWZpZWQgdmVoaWNsZS5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJhZGdldmVyaWZpZWR2ZWhpY2xlLS1kb2NzKSBmb3IgVGlkZUJhZGdlVmVyaWZpZWRWZWhpY2xlXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UtdmVyaWZpZWQtdmVoaWNsZScsXG4gICAgICBDU1MuQkcuU0VDT05EQVJZLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlguSEFMRixcbiAgICAgIENTUy5FTExJUFNJUyxcbiAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLlZFUklGSUVEXCJcbiAgICAvPlxuXG4gICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5FTExJUFNJU11cIj5WZXJpZmllZCB2ZWhpY2xlPC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWljb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWluZm8tcHJpbWFyeSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHNldCBvZiBicmVhZGNydW1icyBmb3IgbmF2aWdhdGlvbiBwdXJwb3Nlcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJyZWFkY3J1bWJzLS1kb2NzKSBmb3IgVGlkZUJyZWFkQ3J1bWJzXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQnJlYWRDcnVtYiB9IGZyb20gJ0AvdHlwZXMvQnJlYWRDcnVtYic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogQW4gYXJyYXkgb2YgbGFiZWxzIGFuZCBvcHRpb25hbCBVUkxzIHRvIGRpc3BsYXkgZm9yIGVhY2ggYnJlYWQgY3J1bWIuICovXG4gICAgYnJlYWRDcnVtYnM6IEJyZWFkQ3J1bWJbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGJyZWFkQ3J1bWJzOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHVsIDpjbGFzcz1cIlsndGlkZS1icmVhZC1jcnVtYnMnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgIDx0ZW1wbGF0ZVxuICAgICAgOmtleT1cImNydW1iLmxhYmVsXCJcbiAgICAgIHYtZm9yPVwiKGNydW1iLCBpbmRleCkgaW4gcHJvcHMuYnJlYWRDcnVtYnNcIlxuICAgID5cbiAgICAgIDxsaSA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5CT0RZXzJdXCI+XG4gICAgICAgIDxJbnRlcm5hbEJhc2VMaW5rXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTElOS18yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICA6ZGF0YS10cmFjaz1cImNydW1iLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgICAgIDpocmVmPVwiY3J1bWIudXJsXCJcbiAgICAgICAgICB2LWlmPVwiY3J1bWIudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNydW1iLmxhYmVsIH19XG4gICAgICAgIDwvSW50ZXJuYWxCYXNlTGluaz5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIDpkYXRhLXRyYWNrPVwiY3J1bWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICAgICAgdi1lbHNlXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjcnVtYi5sYWJlbCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgdi1pZj1cInByb3BzLmJyZWFkQ3J1bWJzICYmIGluZGV4IDwgcHJvcHMuYnJlYWRDcnVtYnMubGVuZ3RoIC0gMVwiPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6aWNvbj1cIklDT04uQVJST1dfUklHSFRcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvdWw+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBidXR0b24gY29tcG9uZW50IHdpdGggdmFyaW91cyBzdHlsaW5nIG9wdGlvbnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVidXR0b24tLWRvY3MpIGZvciBUaWRlQnV0dG9uXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSwgU0laRV9CVVRUT04gfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFByaW9yaXR5IH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZUJ1dHRvbiB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB0eXBlIHsgQnV0dG9uVHlwZSB9IGZyb20gJ0AvdHlwZXMvVHlwZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyBjbGlja2FiaWxpdHkgKEJ1dHRvbiBvbmx5KSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBIVE1MIHRhZyB0eXBlICovXG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG5cbiAgICAvKiogVVJMIHRvIG9wZW4gKExpbmsgb25seSkgKi9cbiAgICBocmVmPzogc3RyaW5nO1xuXG4gICAgLyoqIEljb24gdG8gbGVmdCBvZiBsYWJlbCAqL1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcblxuICAgIC8qKiBJY29uIHRvIHJpZ2h0IG9mIGxhYmVsICovXG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdGFyZ2V0IGEgbmV3IGJyb3dzZXIgdGFiIChMaW5rIG9ubHkpICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIEJ1dHRvbiB0ZXh0ICovXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHZpc3VhbCBwcm9taW5lbmNlICovXG4gICAgcHJpb3JpdHk/OiBFeGNsdWRlPFByaW9yaXR5LCB0eXBlb2YgUFJJT1JJVFkuRkxPQVRJTkc+O1xuXG4gICAgLyoqIERldGVybWluZXMgcmVuZGVyZWQgc2l6ZSAqL1xuICAgIHNpemU/OiBTaXplQnV0dG9uO1xuXG4gICAgLyoqIEFwcGxpZXMgdHlwZSBhdHRyaWJ1dGUgdG8gSFRNTCBlbGVtZW50ICovXG4gICAgdHlwZT86IEJ1dHRvblR5cGU7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZWxlbWVudDogRUxFTUVOVC5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaWNvblRyYWlsaW5nOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcHJpb3JpdHk6IFBSSU9SSVRZLlBSSU1BUlksXG4gICAgc2l6ZTogU0laRV9CVVRUT04uTEFSR0UsXG4gICAgdHlwZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCB0eXBlQXR0cmlidXRlID0gY29tcHV0ZWQ8c3RyaW5nIHwgdW5kZWZpbmVkPigoKSA9PlxuICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OID8gcHJvcHMudHlwZSA/PyBFTEVNRU5ULkJVVFRPTiA6IHVuZGVmaW5lZFxuICApO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uJyxcbiAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRCxcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QQURESU5HLlguVFdPLFxuICAgICAgYHRpZGUtYnV0dG9uLSR7cHJpb3JpdHl9YCxcbiAgICAgIGVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IFtDU1MuRElTUExBWS5JTkxJTkVfRkxFWCwgQ1NTLlVOREVSTElORS5SRVNULk9GRl0gOiBbQ1NTLkRJU1BMQVkuRkxFWF0sXG4gICAgICBzaXplID09PSBTSVpFX0JVVFRPTi5TTUFMTFxuICAgICAgICA/IFtDU1MuRk9OVC5ST0xFLkJVVFRPTl8yLCBDU1MuUEFERElORy5ZLkhBTEZdXG4gICAgICAgIDogW0NTUy5GT05ULlJPTEUuQlVUVE9OXzEsIENTUy5QQURESU5HLlkuT05FXSxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJlbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiAmJiBkaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJlbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgaHJlZiA/IGhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0YXJnZXQ9XCJlbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOnR5cGU9XCJ0eXBlQXR0cmlidXRlXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgOnNpemU9XCJzaXplID09PSBTSVpFX0JVVFRPTi5MQVJHRSA/IFNJWkUuTEFSR0UgOiBTSVpFLlNNQUxMXCJcbiAgICAgIHYtaWY9XCJpY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIHt7IGxhYmVsIH19XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwiaWNvblRyYWlsaW5nXCJcbiAgICAgIDpzaXplPVwic2l6ZSA9PT0gU0laRV9CVVRUT04uTEFSR0UgPyBTSVpFLkxBUkdFIDogU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGJ1dHRvbiBjb21wb25lbnQgZm9yIHVzZSBpbiBwYWdpbmF0aW9uIHB1cnBvc2VzLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYnV0dG9ucGFnaW5hdGlvbi0tZG9jcykgZm9yIFRpZGVCdXR0b25QYWdpbmF0aW9uXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCwgRUxFTUVOVF9CUk9BRCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnRCcm9hZCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgUGFnaW5hdGlvbiBCdXR0b24gaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBkaXNwbGF5ZWQgcGFnZSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBIVE1MIHRhZyB0eXBlICovXG4gICAgZWxlbWVudD86IEVsZW1lbnRCcm9hZDtcblxuICAgIC8qKiBVUkwgdG8gb3BlbjxiciAvPihMaW5rIG9ubHkpICovXG4gICAgaHJlZj86IHN0cmluZztcblxuICAgIC8qKiBCdXR0b24gdGV4dCAqL1xuICAgIGxhYmVsOiBzdHJpbmcgfCBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZWxlbWVudDogRUxFTUVOVF9CUk9BRC5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uLWljb24nLFxuICAgICAgW0NTUy5ESVNQTEFZLklOTElORV9CTE9DSywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgQ1NTLlBBRERJTkcuRlVMTC5IQUxGXSxcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuTElOSyA/IFtDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGXSA6ICcnLFxuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5ESVYgPyBbQ1NTLkNVUlNPUi5QT0lOVEVSXSA6ICcnLFxuICAgICAgW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfM10sXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5CVVRUT04gJiYgcHJvcHMuZGlzYWJsZWRcIlxuICAgIDpocmVmPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5MSU5LICYmIHByb3BzLmhyZWYgPyBwcm9wcy5ocmVmIDogdW5kZWZpbmVkXCJcbiAgICA6dHlwZT1cImVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuQlVUVE9OID8gRUxFTUVOVF9CUk9BRC5CVVRUT04gOiB1bmRlZmluZWRcIlxuICAgIDppcz1cInJvb3RFbGVtZW50XCJcbiAgPlxuICAgIDxzcGFuIDpjbGFzcz1cIlsnbGFiZWwnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSXVwiPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L3NwYW4+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYnV0dG9uLWljb24sXG4gIC50aWRlLWxpbmstYXMtYnV0dG9uLWljb24ge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtd2hpdGUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRpZGUtd2hpdGUpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXNlY29uZGFyeSk7XG4gIH1cblxuICAudGlkZS1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKTpob3ZlcixcbiAgLnRpZGUtbGluay1hcy1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1pY29uOmRpc2FibGVkLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uOmRpc2FibGVkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1pY29uIC5sYWJlbCxcbiAgLnRpZGUtbGluay1hcy1idXR0b24taWNvbiAubGFiZWwge1xuICAgIHdpZHRoOiAxLjVyZW07XG4gICAgaGVpZ2h0OiAxLjVyZW07XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGJ1dHRvbiBjb21wb25lbnQgZm9yIHVzZSB0byBzYXZlIGl0ZW1zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYnV0dG9uc2F2ZS0tZG9jcykgZm9yIFRpZGVCdXR0b25TYXZlXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgY29uc3QgaXNUb3VjaGVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaXNTYXZlZCA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgd2F0Y2goXG4gICAgaXNTYXZlZCxcbiAgICAoKSA9PiB7XG4gICAgICBpZiAoIWlzVG91Y2hlZC52YWx1ZSkgaXNUb3VjaGVkLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiBmYWxzZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiWyd0aWRlLWJ1dHRvbi1zYXZlJywgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLCBpc1NhdmVkICYmICdzYXZlZCddXCJcbiAgICBAY2xpY2s9XCJpc1NhdmVkID0gIWlzU2F2ZWRcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPGRpdiA6Y2xhc3M9XCJbJ2hlYXJ0LWNvbnRhaW5lcicsIENTUy5ESVNQTEFZLkZMRVgsIGlzU2F2ZWQgJiYgaXNUb3VjaGVkICYmICdhbmltYXRlLWhlYXJ0YmVhdCddXCI+XG4gICAgICA8c3ZnXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1idXR0b24tc2F2ZS1pY29uJywgQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgICAgaGVpZ2h0PVwiMzJcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgd2lkdGg9XCIzMlwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIDpjbGFzcz1cIlsnaGVhcnQtZmlsbGVkJywgaXNTYXZlZCA/IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlJFRCA6ICdmaWxsZWQtdHJhbnNwYXJlbnQnXVwiXG4gICAgICAgICAgZD1cIm0xMiAyMS0xLjQ1LTEuM2MtMS42ODMzLTEuNTE2Ny0zLjA3NS0yLjgyNS00LjE3NS0zLjkyNS0xLjEtMS4xLTEuOTc1LTIuMDg3NS0yLjYyNS0yLjk2MjUtLjY1LS44NzUtMS4xMDQyLTEuNjc5Mi0xLjM2MjUtMi40MTI1QzIuMTI5MiA5LjY2NjcgMiA4LjkxNjcgMiA4LjE1YzAtMS41NjY3LjUyNS0yLjg3NSAxLjU3NS0zLjkyNUM0LjYyNSAzLjE3NSA1LjkzMzMgMi42NSA3LjUgMi42NWMuODY2NyAwIDEuNjkxNy4xODMzIDIuNDc1LjU1Ljc4MzMuMzY2NyAxLjQ1ODMuODgzMyAyLjAyNSAxLjU1LjU2NjctLjY2NjcgMS4yNDE3LTEuMTgzMyAyLjAyNS0xLjU1Ljc4MzMtLjM2NjcgMS42MDgzLS41NSAyLjQ3NS0uNTUgMS41NjY3IDAgMi44NzUuNTI1IDMuOTI1IDEuNTc1QzIxLjQ3NSA1LjI3NSAyMiA2LjU4MzMgMjIgOC4xNWMwIC43NjY3LS4xMjkyIDEuNTE2Ny0uMzg3NSAyLjI1LS4yNTgzLjczMzMtLjcxMjUgMS41Mzc1LTEuMzYyNSAyLjQxMjVzLTEuNTI1IDEuODYyNS0yLjYyNSAyLjk2MjVjLTEuMSAxLjEtMi40OTE3IDIuNDA4My00LjE3NSAzLjkyNUwxMiAyMVpcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgOmNsYXNzPVwiWydoZWFydC1vdXRsaW5lJywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5JTlZFUlNFXVwiXG4gICAgICAgICAgZD1cIm0xMiAyMS0xLjQ1LTEuM2MtMS42ODMzLTEuNTE2Ny0zLjA3NS0yLjgyNS00LjE3NS0zLjkyNS0xLjEtMS4xLTEuOTc1LTIuMDg3NS0yLjYyNS0yLjk2MjUtLjY1LS44NzUtMS4xMDQyLTEuNjc5Mi0xLjM2MjUtMi40MTI1QzIuMTI5MiA5LjY2NjcgMiA4LjkxNjcgMiA4LjE1YzAtMS41NjY3LjUyNS0yLjg3NSAxLjU3NS0zLjkyNUM0LjYyNSAzLjE3NSA1LjkzMzMgMi42NSA3LjUgMi42NWMuODY2NyAwIDEuNjkxNy4xODMzIDIuNDc1LjU1Ljc4MzMuMzY2NyAxLjQ1ODMuODgzMyAyLjAyNSAxLjU1LjU2NjctLjY2NjcgMS4yNDE3LTEuMTgzMyAyLjAyNS0xLjU1Ljc4MzMtLjM2NjcgMS42MDgzLS41NSAyLjQ3NS0uNTUgMS41NjY3IDAgMi44NzUuNTI1IDMuOTI1IDEuNTc1QzIxLjQ3NSA1LjI3NSAyMiA2LjU4MzMgMjIgOC4xNWMwIC43NjY3LS4xMjkyIDEuNTE2Ny0uMzg3NSAyLjI1LS4yNTgzLjczMzMtLjcxMjUgMS41Mzc1LTEuMzYyNSAyLjQxMjVzLTEuNTI1IDEuODYyNS0yLjYyNSAyLjk2MjVjLTEuMSAxLjEtMi40OTE3IDIuNDA4My00LjE3NSAzLjkyNUwxMiAyMVptMC0yLjdjMS42LTEuNDMzMyAyLjkxNjctMi42NjI1IDMuOTUtMy42ODc1czEuODUtMS45MTY3IDIuNDUtMi42NzVjLjYtLjc1ODMgMS4wMTY3LTEuNDMzMyAxLjI1LTIuMDI1LjIzMzMtLjU5MTcuMzUtMS4xNzkyLjM1LTEuNzYyNSAwLTEtLjMzMzMtMS44MzMzLTEtMi41LS42NjY3LS42NjY3LTEuNS0xLTIuNS0xLS43ODMzIDAtMS41MDgzLjIyMDgtMi4xNzUuNjYyNUMxMy42NTgzIDUuNzU0MiAxMy4yIDYuMzE2NyAxMi45NSA3aC0xLjljLS4yNS0uNjgzMy0uNzA4My0xLjI0NTgtMS4zNzUtMS42ODc1UzguMjgzMyA0LjY1IDcuNSA0LjY1Yy0xIDAtMS44MzMzLjMzMzMtMi41IDEtLjY2NjcuNjY2Ny0xIDEuNS0xIDIuNSAwIC41ODMzLjExNjcgMS4xNzA4LjM1IDEuNzYyNS4yMzMzLjU5MTcuNjUgMS4yNjY3IDEuMjUgMi4wMjVzMS40MTY3IDEuNjUgMi40NSAyLjY3NVMxMC40IDE2Ljg2NjcgMTIgMTguM1pcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLmhlYXJ0LWNvbnRhaW5lciB7XG4gICAgLS1yb3RhdGUtZHVyaW5nLWhlYXJ0LWJlYXQ6IDlkZWc7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMykpO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtZHVyYXRpb24tMzAwKSB2YXIoLS10aWRlLWVhc2luZy1lYXNlLW91dCk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBzY2FsZTtcbiAgICByb3RhdGU6IDBkZWc7XG4gIH1cblxuICAuaGVhcnQtY29udGFpbmVyLmFuaW1hdGUtaGVhcnRiZWF0IHtcbiAgICBhbmltYXRpb246IGhlYXJ0QmVhdCB2YXIoLS10aWRlLWR1cmF0aW9uLTE1MCk7XG4gICAgYW5pbWF0aW9uLWRpcmVjdGlvbjogYWx0ZXJuYXRlO1xuICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDQ7XG4gIH1cblxuICAuaGVhcnQtY29udGFpbmVyOmFjdGl2ZSB7XG4gICAgc2NhbGU6IDAuOTtcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS10aWRlLWR1cmF0aW9uLTc1KTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1zYXZlLWljb24ge1xuICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgfVxuXG4gIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgLmhlYXJ0LWNvbnRhaW5lciB7XG4gICAgICAtLXJvdGF0ZS1kdXJpbmctaGVhcnQtYmVhdDogMGRlZztcbiAgICB9XG5cbiAgICAudGlkZS1idXR0b24tc2F2ZTp3aGVyZSg6aG92ZXIsIDpmb2N1cy12aXNpYmxlKSAuaGVhcnQtY29udGFpbmVyIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDlkZWcpO1xuICAgIH1cbiAgfVxuXG4gIC5oZWFydC1maWxsZWQge1xuICAgIHNjYWxlOiAwLjk4NTsgLyogYXZvaWQgaGFpcmxpbmUgYm9yZGVyIHJlbmRlciBpc3N1ZSAqL1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10aWRlLWR1cmF0aW9uLTc1KSB2YXIoLS10aWRlLWVhc2luZy1saW5lYXIpO1xuICB9XG5cbiAgLmZpbGxlZC10cmFuc3BhcmVudCB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgfVxuXG4gIEBrZXlmcmFtZXMgaGVhcnRCZWF0IHtcbiAgICBmcm9tIHtcbiAgICAgIHNjYWxlOiAxO1xuICAgICAgcm90YXRlOiAwZGVnO1xuICAgIH1cbiAgICB0byB7XG4gICAgICBzY2FsZTogMS4yNTtcbiAgICAgIHJvdGF0ZTogdmFyKC0tcm90YXRlLWR1cmluZy1oZWFydC1iZWF0KTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHNlZ21lbnRlZCBidXR0b24gY29tcG9uZW50IGZvciBuYXZpZ2F0aW9uIHB1cnBvc2VzLlxuICAgKlxuICAgKiBQb3dlcmVkIGJ5IG5hdGl2ZSBpbnB1dFt0eXBlPVwicmFkaW9cIl0gdW5kZXIgdGhlIGhvb2QgZm9yIGVuaGFuY2VkIGFjY2Vzc2liaWxpdHkuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVidXR0b25zZWdtZW50ZWQtLWRvY3MpIGZvciBUaWRlQnV0dG9uU2VnbWVudGVkXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgdXNlSWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBTZXRzIGxhYmVsIGFuZCBjYWxsYmFjayBmb3IgZWFjaCB0YWIgKi9cbiAgICB0YWJzOiBUYWJbXSB8IHJlYWRvbmx5IFRhYltdO1xuXG4gICAgLyoqIE9wdHMgaW4gYXMgYSBuYXRpdmUgSFRNTCBmb3JtIGZpZWxkIHdpdGggdGhpcyBuYW1lLiAqL1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICBjb25zdCBjdXJyZW50SW5kZXggPSBkZWZpbmVNb2RlbDxudW1iZXI+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgdW5pcXVlSWQgPSB1c2VJZCgpO1xuXG4gIGNvbnN0IGlucHV0Rm9ybUF0dHJpYnV0ZSA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5uYW1lID8gdW5kZWZpbmVkIDogJ25vbmUnKSk7XG4gIGNvbnN0IGlucHV0TmFtZUF0dHJpYnV0ZSA9IGNvbXB1dGVkKCgpID0+IHByb3BzLm5hbWUgPz8gdW5pcXVlSWQpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbi1zZWdtZW50ZWQnLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5BVVRPLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICAgIF1cIlxuICAgIHJvbGU9XCJyYWRpb2dyb3VwXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1idXR0b24tc2VnbWVudGVkLXRhYicsXG4gICAgICAgIGluZGV4ID09PSBjdXJyZW50SW5kZXhcbiAgICAgICAgICA/IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsIENTUy5TSEFET1cuQk9UVE9NXVxuICAgICAgICAgIDogWydpbmFjdGl2ZScsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICAgIENTUy5BTElHTi5YLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLlRXTyxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJVVFRPTl8xLFxuICAgICAgICBDU1MuUEFERElORy5YLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICAgIENTUy5XSURUSC5BVVRPLFxuICAgICAgXVwiXG4gICAgICA6ZGF0YS10cmFjaz1cInRhYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgIDprZXk9XCJ0YWIubGFiZWxcIlxuICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gdGFic1wiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIDpjaGVja2VkPVwiaW5kZXggPT09IGN1cnJlbnRJbmRleFwiXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1zY3JlZW4tcmVhZGVyLW9ubHknXVwiXG4gICAgICAgIDpmb3JtPVwiaW5wdXRGb3JtQXR0cmlidXRlXCJcbiAgICAgICAgOm5hbWU9XCJpbnB1dE5hbWVBdHRyaWJ1dGVcIlxuICAgICAgICA6dmFsdWU9XCJpbmRleFwiXG4gICAgICAgIEBjaGFuZ2U9XCJjdXJyZW50SW5kZXggPSBpbmRleFwiXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAvPlxuXG4gICAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXVwiPlxuICAgICAgICB7eyB0YWIubGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMl9TRU1JQk9MRF1cIlxuICAgICAgICB2LWlmPVwidGFiLmNvdW50ICYmIHRhYi5jb3VudCA+IDBcIlxuICAgICAgPlxuICAgICAgICAoe3sgdGFiLmNvdW50IH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYnV0dG9uLXNlZ21lbnRlZCB7XG4gICAgbWF4LXdpZHRoOiAyMy4zcmVtO1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIH1cblxuICAudGlkZS1idXR0b24tc2VnbWVudGVkOmhhcyg6Zm9jdXMtdmlzaWJsZSkge1xuICAgIG91dGxpbmU6IGF1dG87XG4gIH1cblxuICAuaW5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLmluYWN0aXZlOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWRlZmF1bHQpO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRZUEVfQ0FSRCA9IHtcbiAgQUNUSU9OQUJMRTogJ2FjdGlvbicsXG4gIElORk9STUFUSU9OQUw6ICdpbmZvcm1hdGlvbmFsJyxcbiAgU0VMRUNUQUJMRTogJ3NlbGVjdCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBDYXJkVHlwZSA9ICh0eXBlb2YgVFlQRV9DQVJEKVtrZXlvZiB0eXBlb2YgVFlQRV9DQVJEXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgY2FyZCBjb21wb25lbnQgd2l0aCBhIGhlYWRpbmcsIGRlc2NyaXB0aW9uLCBhbmQgb3B0aW9uYWwgaWNvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNhcmQtLWRvY3MpIGZvciBUaWRlQ2FyZFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgVFlQRV9DQVJEIH0gZnJvbSAnQC90eXBlcy9DYXJkJztcbiAgaW1wb3J0IHsgRUxFTUVOVF9CUk9BRCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBDYXJkVHlwZSB9IGZyb20gJ0AvdHlwZXMvQ2FyZCc7XG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudEJyb2FkIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBPcHRpb25hbCBkZXNjcmlwdGlvbiB0ZXh0IGRpc3BsYXllZCBiZWxvdyB0aGUgaGVhZGluZyAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBtYWluIGhlYWRpbmcgb2YgdGhlIGNhcmQuICovXG4gICAgaGVhZGluZzogc3RyaW5nO1xuXG4gICAgLyoqIE9wdGlvbmFsIGljb24gZGlzcGxheWVkIG9uIHRoZSBjYXJkLiAqL1xuICAgIGljb24/OiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgQ2FyZCBpcyBzZWxlY3RlZCAoZm9yIHNlbGVjdGFibGUgY2FyZHMpLiAqL1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBUeXBlIG9mIHRoZSBjYXJkICovXG4gICAgdHlwZT86IENhcmRUeXBlO1xuXG4gICAgLyoqIFVSTCB0byBuYXZpZ2F0ZSB0byBvbiBjbGljay4gKi9cbiAgICBocmVmPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbjogdW5kZWZpbmVkLFxuICAgIHNlbGVjdGVkOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVFlQRV9DQVJELklORk9STUFUSU9OQUwsXG4gIH0pO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQ8RWxlbWVudEJyb2FkIHwgdHlwZW9mIEludGVybmFsQmFzZUxpbms+KCgpID0+XG4gICAgcHJvcHMuaHJlZiA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy50eXBlID09PSBUWVBFX0NBUkQuSU5GT1JNQVRJT05BTCA/IEVMRU1FTlRfQlJPQUQuRElWIDogRUxFTUVOVF9CUk9BRC5CVVRUT05cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jYXJkJyxcbiAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgIENTUy5BTElHTi5YLkxFRlQsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgdHlwZSAhPT0gVFlQRV9DQVJELklORk9STUFUSU9OQUwgJiYgJ2hvdmVyYWJsZScsXG4gICAgICB0eXBlID09PSBUWVBFX0NBUkQuU0VMRUNUQUJMRSAmJiBzZWxlY3RlZCAmJiAnc2VsZWN0ZWQnLFxuICAgIF1cIlxuICAgIDpocmVmPVwiaHJlZlwiXG4gICAgOnR5cGU9XCJyb290RWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5CVVRUT04gPyBFTEVNRU5UX0JST0FELkJVVFRPTiA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiaWNvblwiXG4gICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cImljb25cIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuQVhJUzIuU1RBUlQsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuSEFMRl1cIj5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICB7eyBoZWFkaW5nIH19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cImRlc2NyaXB0aW9uXCJcbiAgICAgID5cbiAgICAgICAge3sgZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNhcmQuaG92ZXJhYmxlOm5vdCguc2VsZWN0ZWQpOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLXJlc3QpO1xuICB9XG4gIC50aWRlLWNhcmQuc2VsZWN0ZWQge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgY2Fyb3VzZWwgY29tcG9uZW50IHdpdGggbmF2aWdhdGlvbiBjb250cm9scyBhbmQgc2xpZGUgaW5kaWNhdG9ycy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNhcm91c2VsLS1kb2NzKSBmb3IgVGlkZUNhcm91c2VsXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIGluZGljYXRvciBkb3RzIG92ZXJsYXk8YnIgLz4oT25seSB2YWxpZCB3aXRoIGZ1bGwgd2lkdGggY2FyZHMpICovXG4gICAgaGFzRG90cz86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgb24tcGFnZSBvciBmbG9hdGluZyBjYXJvdXNlbCAqL1xuICAgIGlzRmxvYXRpbmc/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgZm9udCByb2xlIHVzZWQgZm9yIHRpdGxlIGRpc3BsYXkgKi9cbiAgICBpc0hlYWRsaW5lMT86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIG9uLXBhZ2UgYnV0dG9ucyBzaG91bGQgYmUgaGlkZGVuIHVudGlsIGhvdmVyICovXG4gICAgaXNIaWRlYXdheUJ1dHRvbnM/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBzY3JvbGwgYnkgcGFnZSBvciBieSBpbmRpdmlkdWFsIHNsaWRlICovXG4gICAgaXNTY3JvbGxCeVBhZ2U/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIG1heCBudW1iZXIgb2YgaW5kaWNhdG9yIGRvdHMgdG8gZGlzcGxheSBhdCBhIGdpdmVuIHRpbWUgKi9cbiAgICBtYXhEb3RzPzogbnVtYmVyO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIHRleHQgZGlzcGxheWVkIHRvIHRoZSByaWdodCBvZiB0aGUgdGl0bGUgKi9cbiAgICBzdWJ0aXRsZT86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSB0aXRsZSB0ZXh0IGRpc3BsYXllZCBhYm92ZSB0aGUgY2Fyb3VzZWwgKi9cbiAgICB0aXRsZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhhc0RvdHM6IHVuZGVmaW5lZCxcbiAgICBpc0Zsb2F0aW5nOiBmYWxzZSxcbiAgICBpc0hlYWRsaW5lMTogZmFsc2UsXG4gICAgaXNIaWRlYXdheUJ1dHRvbnM6IHRydWUsXG4gICAgaXNTY3JvbGxCeVBhZ2U6IHRydWUsXG4gICAgbWF4RG90czogNSxcbiAgICBzdWJ0aXRsZTogdW5kZWZpbmVkLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXNJblZpZXc6IG51bWJlcltdKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgY2Fyb3VzZWxSZWYgPSByZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgY29udGFpbmVyUmVmID0gcmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBjdXJyZW50UGFnZUluZGV4ID0gcmVmPG51bWJlcj4oMCk7XG4gIGNvbnN0IGRvdHNSZWYgPSByZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgZnJhbWVXaWR0aCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBpc0ZpcnN0U2xpZGUgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IGlzTGFzdFNsaWRlID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2hvd0J1dHRvbnMgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IHNsaWRlT2JzZXJ2ZXIgPSByZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2xpZGVzID0gcmVmPEhUTUxFbGVtZW50W10+KFtdKTtcbiAgY29uc3Qgc2xpZGVzSW5WaWV3ID0gcmVmPG51bWJlcltdPihbXSk7XG4gIGNvbnN0IHNsb3RPYnNlcnZlciA9IHJlZjxNdXRhdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHRvdWNoU3RhcnQgPSByZWY8VG91Y2ggfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IHNsaWRlc0luVmlld0NvdW50ID0gcmVmPG51bWJlcj4oMSk7XG5cbiAgY29uc3QgY3VycmVudFBhZ2UgPSBjb21wdXRlZCgoKSA9PiBjdXJyZW50UGFnZUluZGV4LnZhbHVlICsgMSk7XG4gIGNvbnN0IGRvdENvbnRhaW5lcldpZHRoID0gY29tcHV0ZWQoKCkgPT4gZG90Q291bnRWaXNpYmxlLnZhbHVlICogZG90V2lkdGggKyAoZG90Q291bnRWaXNpYmxlLnZhbHVlIC0gMSkgKiBkb3RHYXApO1xuICBjb25zdCBkb3RDb3VudFZpc2libGUgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMubWF4RG90cyA+IHRvdGFsUGFnZXMudmFsdWUgPyB0b3RhbFBhZ2VzLnZhbHVlIDogcHJvcHMubWF4RG90cykpO1xuICBjb25zdCB0b3RhbFBhZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghc2xpZGVzLnZhbHVlLmxlbmd0aCkgcmV0dXJuIDA7XG4gICAgaWYgKCFwcm9wcy5pc1Njcm9sbEJ5UGFnZSkgcmV0dXJuIHNsaWRlcy52YWx1ZS5sZW5ndGg7XG5cbiAgICBjb25zdCBxdW90aWVudCA9IE1hdGguZmxvb3Ioc2xpZGVzLnZhbHVlLmxlbmd0aCAvIHNsaWRlc0luVmlld0NvdW50LnZhbHVlKTtcbiAgICBjb25zdCByZW1haW5kZXIgPSBzbGlkZXMudmFsdWUubGVuZ3RoICUgc2xpZGVzSW5WaWV3Q291bnQudmFsdWU7XG5cbiAgICByZXR1cm4gcmVtYWluZGVyID8gcXVvdGllbnQgKyAxIDogcXVvdGllbnQ7XG4gIH0pO1xuXG4gIGNvbnN0IGRvdEdhcDogbnVtYmVyID0gODtcbiAgY29uc3QgZG90V2lkdGg6IG51bWJlciA9IDg7XG4gIGxldCBzY3JvbGxUaW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3QgZ2V0RG90Q2xhc3MgPSAoZG90SW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGxldCBjbGFzc05hbWUgPSAnJztcblxuICAgIGlmIChkb3RJbmRleCA9PT0gY3VycmVudFBhZ2VJbmRleC52YWx1ZSkgY2xhc3NOYW1lID0gJ3RpZGUtY2Fyb3VzZWwtZG90LWFjdGl2ZSc7XG4gICAgaWYgKE1hdGguYWJzKGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgLSBkb3RJbmRleCkgPT09IDEpIGNsYXNzTmFtZSA9ICd0aWRlLWNhcm91c2VsLWRvdC1uZWlnaGJvcic7XG5cbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9O1xuXG4gIGNvbnN0IGdldElzRWxlbWVudFdpdGhpbkNvbnRhaW5lciA9IChlbGVtZW50OiBIVE1MRWxlbWVudCwgY29udGFpbmVyOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY29udGFpbmVyUmlnaHQgPSBjb250YWluZXJSZWN0LmxlZnQgKyBjb250YWluZXJSZWN0LndpZHRoO1xuICAgIGNvbnN0IGVsZW1lbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBlbGVtZW50UmlnaHQgPSBlbGVtZW50UmVjdC5sZWZ0ICsgZWxlbWVudFJlY3Qud2lkdGg7XG5cbiAgICByZXR1cm4gZWxlbWVudFJpZ2h0IDw9IGNvbnRhaW5lclJpZ2h0ICYmIGVsZW1lbnRSZWN0LmxlZnQgPj0gY29udGFpbmVyUmVjdC5sZWZ0O1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRvdWNoRW5kID0gKGV2ZW50OiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgaWYgKCF0b3VjaFN0YXJ0LnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCB0b3VjaEVuZCA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdO1xuICAgIGNvbnN0IGRlbHRhWCA9IHRvdWNoU3RhcnQudmFsdWUuY2xpZW50WCAtIHRvdWNoRW5kLmNsaWVudFg7XG4gICAgY29uc3QgZGVsdGFZID0gdG91Y2hFbmQuY2xpZW50WSAtIHRvdWNoU3RhcnQudmFsdWUuY2xpZW50WTtcblxuICAgIGlmIChNYXRoLmFicyhkZWx0YVgpID4gTWF0aC5hYnMoZGVsdGFZKSkgc2Nyb2xsQnlEZWx0YShkZWx0YVgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRvdWNoU3RhcnQgPSAoZXZlbnQ6IFRvdWNoRXZlbnQpID0+IHtcbiAgICB0b3VjaFN0YXJ0LnZhbHVlID0gZXZlbnQudG91Y2hlc1swXTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVXaGVlbCA9IChldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgIGNvbnN0IGlzU2hpZnRLZXlEb3duID0gZXZlbnQuc2hpZnRLZXk7XG4gICAgY29uc3QgaXNXaGVlbCA9IE1hdGguYWJzKGV2ZW50LmRlbHRhWSkgPj0gODA7XG5cbiAgICBpZiAoaXNXaGVlbCAmJiAhaXNTaGlmdEtleURvd24pIHJldHVybjtcbiAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjbGVhclRpbWVvdXQoc2Nyb2xsVGltZW91dCk7XG5cbiAgICBzY3JvbGxUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKGlzV2hlZWwpIHtcbiAgICAgICAgc2Nyb2xsQnlEZWx0YShldmVudC5kZWx0YVkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gc2xpZGVzLnZhbHVlW3NsaWRlc0luVmlldy52YWx1ZVswXV0/Lm9mZnNldExlZnQgfHwgMDtcblxuICAgICAgICBzY3JvbGxUb09mZnNldChvZmZzZXQpO1xuICAgICAgfVxuICAgIH0sIDEwMCk7XG4gIH07XG5cbiAgY29uc3QgbWVhc3VyZURvbSA9ICgpID0+IHtcbiAgICBpZiAoIWNvbnRhaW5lclJlZi52YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29udGVudFdpZHRoLnZhbHVlID0gY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFdpZHRoO1xuICAgIGZyYW1lV2lkdGgudmFsdWUgPSBjb250YWluZXJSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgc2hvd0J1dHRvbnMudmFsdWUgPSBjb250ZW50V2lkdGgudmFsdWUgPiBmcmFtZVdpZHRoLnZhbHVlO1xuXG4gICAgc2xpZGVzSW5WaWV3Q291bnQudmFsdWUgPSBzbGlkZXMudmFsdWUuZmlsdGVyKChzbGlkZSkgPT5cbiAgICAgIGdldElzRWxlbWVudFdpdGhpbkNvbnRhaW5lcihzbGlkZSwgY29udGFpbmVyUmVmLnZhbHVlIGFzIEhUTUxFbGVtZW50KVxuICAgICkubGVuZ3RoO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbGlkZXMgPSAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3Q6IGNhcm91c2VsUmVmPy52YWx1ZSxcbiAgICAgIHJvb3RNYXJnaW46ICcwcHggMXB4IDBweCAwcHgnLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgIH07XG5cbiAgICBzbGlkZU9ic2VydmVyLnZhbHVlID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICBsZXQgc2xpZGVzQWRkZWRUb1ZpZXc6IG51bWJlcltdID0gW107XG5cbiAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGVJbmRleCA9IHNsaWRlcy52YWx1ZS5pbmRleE9mKGVudHJ5LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgc2xpZGVzQWRkZWRUb1ZpZXcucHVzaChzbGlkZUluZGV4KTtcbiAgICAgICAgICBzbGlkZXNJblZpZXcudmFsdWUucHVzaChzbGlkZUluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzbGlkZXNJblZpZXcudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuZmlsdGVyKChzbGlkZSkgPT4gc2xpZGUgIT09IHNsaWRlSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICAgIH0pO1xuXG4gICAgICBpc0ZpcnN0U2xpZGUudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuaW5jbHVkZXMoMCk7XG4gICAgICBpc0xhc3RTbGlkZS52YWx1ZSA9IHNsaWRlc0luVmlldy52YWx1ZS5pbmNsdWRlcyhzbGlkZXMudmFsdWUubGVuZ3RoIC0gMSk7XG5cbiAgICAgIGlmIChzbGlkZXNBZGRlZFRvVmlldy5sZW5ndGggPiAwKSBlbWl0KCdzbGlkZXNBZGRlZFRvVmlldycsIHNsaWRlc0FkZGVkVG9WaWV3KTtcbiAgICB9LCBvcHRpb25zKTtcblxuICAgIHNsaWRlcy52YWx1ZS5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgaWYgKHNsaWRlT2JzZXJ2ZXIudmFsdWUpIHNsaWRlT2JzZXJ2ZXIudmFsdWUub2JzZXJ2ZShjaGlsZCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb2JzZXJ2ZVNsb3QgPSAoKSA9PiB7XG4gICAgY29uc3Qgb2JzZXJ2ZXJDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcblxuICAgICAgc2xpZGVzLnZhbHVlID0gQXJyYXkuZnJvbShjb250YWluZXJSZWYudmFsdWUuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG4gICAgICBvYnNlcnZlU2xpZGVzKCk7XG4gICAgfTtcblxuICAgIHNsb3RPYnNlcnZlci52YWx1ZSA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG9ic2VydmVyQ2FsbGJhY2spO1xuXG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSkgc2xvdE9ic2VydmVyLnZhbHVlLm9ic2VydmUoY29udGFpbmVyUmVmLnZhbHVlLCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBzY3JvbGxCeURlbHRhID0gKGRlbHRhOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBpc1Njcm9sbGluZ0xlZnQgPSBkZWx0YSA8IDA7XG5cbiAgICBpZiAoaXNTY3JvbGxpbmdMZWZ0KSB7XG4gICAgICBwcm9wcy5pc1Njcm9sbEJ5UGFnZSA/IHNob3dQcmV2aW91c1BhZ2UoKSA6IHNob3dQcmV2aW91c1NsaWRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3BzLmlzU2Nyb2xsQnlQYWdlID8gc2hvd05leHRQYWdlKCkgOiBzaG93TmV4dFNsaWRlKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHNjcm9sbFRvT2Zmc2V0ID0gKHRhcmdldDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgY29uc3QgaXNTY3JvbGxpbmdMZWZ0ID0gdGFyZ2V0IDw9IGNvbnRhaW5lclJlZi52YWx1ZS5zY3JvbGxMZWZ0O1xuXG4gICAgY3VycmVudFBhZ2VJbmRleC52YWx1ZSA9IGlzU2Nyb2xsaW5nTGVmdCA/IGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgLSAxIDogY3VycmVudFBhZ2VJbmRleC52YWx1ZSArIDE7XG5cbiAgICBjb250YWluZXJSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgbGVmdDogdGFyZ2V0LFxuICAgIH0pO1xuICAgIHVwZGF0ZURvdHMoaXNTY3JvbGxpbmdMZWZ0KTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFBhZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDAgfHwgaXNMYXN0U2xpZGUudmFsdWUpIHJldHVybjtcblxuICAgIGNvbnN0IG5leHRTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlW3NsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggLSAxXSArIDE7XG4gICAgY29uc3Qgb2Zmc2V0ID0gc2xpZGVzLnZhbHVlW25leHRTbGlkZV0/Lm9mZnNldExlZnQ7XG5cbiAgICBzY3JvbGxUb09mZnNldChvZmZzZXQpO1xuICB9O1xuXG4gIGNvbnN0IHNob3dQcmV2aW91c1BhZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDAgfHwgaXNGaXJzdFNsaWRlLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1NsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbMF0gLSBzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoO1xuICAgIGNvbnN0IG9mZnNldCA9IHNsaWRlcy52YWx1ZVtwcmV2aW91c1NsaWRlXT8ub2Zmc2V0TGVmdCB8fCAwO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQob2Zmc2V0KTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFNsaWRlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXh0U2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPiAxID8gc2xpZGVzSW5WaWV3LnZhbHVlWzFdIDogc2xpZGVzSW5WaWV3LnZhbHVlWzBdICsgMTtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KHNsaWRlcy52YWx1ZVtuZXh0U2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHNob3dQcmV2aW91c1NsaWRlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1NsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbMF0gLSAxO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW3ByZXZpb3VzU2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZURvdHMgPSAoaXNTY3JvbGxpbmdMZWZ0OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKCFkb3RzUmVmLnZhbHVlIHx8IGRvdENvdW50VmlzaWJsZS52YWx1ZSA+PSB0b3RhbFBhZ2VzLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCBpc09kZERvdENvdW50ID0gZG90Q291bnRWaXNpYmxlLnZhbHVlICUgMiAhPT0gMDtcbiAgICBjb25zdCBjZW50ZXJEb3QgPVxuICAgICAgaXNPZGREb3RDb3VudCB8fCBpc1Njcm9sbGluZ0xlZnRcbiAgICAgICAgPyBNYXRoLmZsb29yKGRvdENvdW50VmlzaWJsZS52YWx1ZSAvIDIpICsgMVxuICAgICAgICA6IE1hdGguZmxvb3IoZG90Q291bnRWaXNpYmxlLnZhbHVlIC8gMik7XG5cbiAgICBkb3RzUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IGN1cnJlbnRQYWdlLnZhbHVlIDwgY2VudGVyRG90ID8gMCA6IChjdXJyZW50UGFnZS52YWx1ZSAtIGNlbnRlckRvdCkgKiAoZG90V2lkdGggKyBkb3RHYXApLFxuICAgIH0pO1xuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgc2xpZGVzLnZhbHVlID0gQXJyYXkuZnJvbShjb250YWluZXJSZWYudmFsdWUuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG5cbiAgICBtZWFzdXJlRG9tKCk7XG4gICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIG9ic2VydmVTbG90KCk7XG5cbiAgICBpZiAod2luZG93KSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZURvbSk7XG4gICAgfVxuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgc2xpZGVPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHNsb3RPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNhcm91c2VsJyxcbiAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5PTkUsXG4gICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgXVwiXG4gICAgcmVmPVwiY2Fyb3VzZWxSZWZcIlxuICA+XG4gICAgPHNlY3Rpb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBwcm9wcy50aXRsZSA/IENTUy5BWElTMS5CRVRXRUVOIDogQ1NTLkFYSVMxLkVORCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgIHYtaWY9XCIoIXByb3BzLmlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnMpIHx8IHByb3BzLnRpdGxlXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwicHJvcHMudGl0bGVcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW2lzSGVhZGxpbmUxID8gQ1NTLkZPTlQuUk9MRS5IRUFETElORV8xIDogQ1NTLkZPTlQuUk9MRS5IRUFETElORV8yXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuc3VidGl0bGVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMuc3VidGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5PTkVdXCJcbiAgICAgICAgdi1pZj1cIiFwcm9wcy5pc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNGaXJzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5URVJUSUFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93UHJldmlvdXNQYWdlKCkgOiBzaG93UHJldmlvdXNTbGlkZSgpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0xhc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dOZXh0UGFnZSgpIDogc2hvd05leHRTbGlkZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzbG90IG5hbWU9XCJtaXNjXCIgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLkRJU1BMQVkuRkxFWF1cIj5cbiAgICAgIDx1bFxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtY29udGFpbmVyJyxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5HQVAuT05FLFxuICAgICAgICAgIENTUy5MSVNUX0JVTExFVFMuT0ZGLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YLlNDUk9MTCxcbiAgICAgICAgICBDU1MuU0NST0xMQkFSLk9GRixcbiAgICAgICAgICBDU1MuU05BUC5PTixcbiAgICAgICAgXVwiXG4gICAgICAgIHJlZj1cImNvbnRhaW5lclJlZlwiXG4gICAgICAgIEB0b3VjaGVuZD1cImhhbmRsZVRvdWNoRW5kXCJcbiAgICAgICAgQHRvdWNoc3RhcnQucGFzc2l2ZT1cImhhbmRsZVRvdWNoU3RhcnRcIlxuICAgICAgICBAd2hlZWw9XCJoYW5kbGVXaGVlbFwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L3VsPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTSxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgICAgQ1NTLk1BUkdJTi5CT1RUT00uSEFMRixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cImhhc0RvdHMgJiYgdG90YWxQYWdlcyA+IDFcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiWyd0aWRlLWNhcm91c2VsLWRvdHMtY29udGFpbmVyJ11cIlxuICAgICAgICAgIDpzdHlsZT1cIntcbiAgICAgICAgICAgIHdpZHRoOiBgJHtkb3RDb250YWluZXJXaWR0aH1weGAsXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICd0aWRlLWNhcm91c2VsLWRvdHMnLFxuICAgICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgICBDU1MuQVhJUzEuU1RBUlQsXG4gICAgICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlguU0NST0xMLFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgICBDU1MuU0NST0xMQkFSLk9GRixcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgcmVmPVwiZG90c1JlZlwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtZG90JyxcbiAgICAgICAgICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICAgICAgICAgIENTUy5IRUlHSFQuWkVSTyxcbiAgICAgICAgICAgICAgICBDU1MuV0lEVEguWkVSTyxcbiAgICAgICAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgICAgICAgZ2V0RG90Q2xhc3MoaW5kZXgpLFxuICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgOmtleT1cImluZGV4XCJcbiAgICAgICAgICAgICAgdi1mb3I9XCIoXywgaW5kZXgpIGluIHRvdGFsUGFnZXNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXknLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuVE9QLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBwcm9wcy5pc0hpZGVhd2F5QnV0dG9ucyA/ICdoaWRlYXdheScgOiAnJyxcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJpc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uTEVGVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzRmlyc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93UHJldmlvdXNQYWdlKCkgOiBzaG93UHJldmlvdXNTbGlkZSgpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzTGFzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93TmV4dFBhZ2UoKSA6IHNob3dOZXh0U2xpZGUoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkuaGlkZWF3YXkge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbDpob3ZlciAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheS5oaWRlYXdheSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWRvdCB7XG4gICAgd2lkdGg6IDhweDtcbiAgICBoZWlnaHQ6IDhweDtcbiAgICBvcGFjaXR5OiAwLjc1O1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC41KTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWwtZG90LW5laWdoYm9yIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNzUpO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWwtZG90LWFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgQG1lZGlhIChwb2ludGVyOiBjb2Fyc2UpIHtcbiAgICAudGlkZS1jYXJvdXNlbCAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgY2hpcCBhY3Rpb24gYnV0dG9uIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gbmF2aWdhdGlvbiBtZW51cyByZWxhdGluZyB0byBzZWFyY2hlcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNoaXBhY3Rpb24tLWRvY3MpIGZvciBUaWRlQ2hpcEFjdGlvblxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIEhUTUwgdGFnIHR5cGUuICovXG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG5cbiAgICAvKiogVVJMIHRvIG5hdmlnYXRlIHRvIG9uIGNsaWNrLiAqL1xuICAgIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKiogSWNvbiB0byBzaG93IGJlZm9yZSB0aGUgbGFiZWwuICovXG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byB0YXJnZXQgYSBuZXcgYnJvd3NlciB0YWIuICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIENoaXAgdGV4dC4gKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogSUNPTi5TRUFSQ0gsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNoaXAtYWN0aW9uJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxJTktfMixcbiAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgIENTUy5VTkRFUkxJTkUuUkVTVC5PRkYsXG4gICAgXVwiXG4gICAgOmhyZWY9XCJwcm9wcy5ocmVmXCJcbiAgICA6dGFyZ2V0PVwicHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOnR5cGU9XCJlbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IEVMRU1FTlQuQlVUVE9OIDogdW5kZWZpbmVkXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb24gOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiIC8+XG5cbiAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jaGlwLWFjdGlvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGNoaXAgZmlsdGVyIGNvbXBvbmVudCBmb3IgdXNlIGluIG5hdmlnYXRpb24uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVjaGlwZmlsdGVyLS1kb2NzKSBmb3IgVGlkZUNoaXBGaWx0ZXJcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBDaGlwIHRleHQuICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaXNBY3RpdmUudmFsdWUgPSAhaXNBY3RpdmUudmFsdWU7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2hpcC1maWx0ZXInLFxuICAgICAgaXNBY3RpdmVcbiAgICAgICAgPyBbJ2FjdGl2ZScsIENTUy5CRy5TRUNPTkRBUlksIENTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cbiAgICAgICAgOiBbQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICBdXCJcbiAgICBAY2xpY2s9XCJoYW5kbGVDbGlja1wiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gID5cbiAgICA8c2xvdCAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGXVwiPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMSwgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkZdXCI+XG4gICAgICAgIHt7IGxhYmVsIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLyogQm9yZGVyIG11c3QgYWx3YXlzIGV4aXN0IHRvIHByZXZlbnQgcmVzaXplIG9uIGhvdmVyIHN0YXRlLCBidXQgbWF0Y2ggYmFja2dyb3VuZCBjb2xvciBvbiByZXN0IHN0YXRlIHRvIGJsZW5kIGluLiAqL1xuICAudGlkZS1jaGlwLWZpbHRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAudGlkZS1jaGlwLWZpbHRlci5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtY2hpcC1maWx0ZXI6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgaW5wdXQgY2hpcCBjb21wb25lbnQgZm9yIHVzZSBpbiBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlY2hpcGlucHV0LS1kb2NzKSBmb3IgVGlkZUNoaXBJbnB1dFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIENoaXAgdGV4dCAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxidXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jaGlwLWlucHV0JyxcbiAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgIF1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPHNwYW4+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG5cbiAgICA8VGlkZUljb24gOmljb249XCJJQ09OLkNMT1NFXCIgLz5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jaGlwLWlucHV0IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWNoaXAtaW5wdXQ6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGNvbHVtbnMgY29tcG9uZW50IGZvciB1c2UgaW4gbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNvbHVtbnMtLWRvY3MpIGZvciBUaWRlQ29sdW1uc1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgbGFiZWwgZm9yIHRoZSBjb2x1bW5zIHNlY3Rpb24uICovXG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6ICcnLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uIGNsYXNzPVwidGlkZS1jb2x1bW5zXCI+XG4gICAgPGgyIDpjbGFzcz1cIltDU1MuTUFSR0lOLkJPVFRPTS5IQUxGXVwiPlxuICAgICAge3sgcHJvcHMuaGVhZGluZyB9fVxuICAgIDwvaDI+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLldSQVAsIENTUy5HQVAuVFdPLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24xXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24yXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24zXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb240XCIgLz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSAycmVtKSAvIDIpO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiAxMjMycHgpIHtcbiAgICAudGlkZS1jb2x1bW5zLWNvbHVtbiB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDZyZW0pIC8gNCk7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgaW5qZWN0LCBwcm92aWRlLCByZWYgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbnR5cGUgVGlkZUZvcm1Db250ZXh0ID0ge1xuICBmb3JjZVNob3dFcnJvcnM6IFJlZjxib29sZWFuPjtcbn07XG5cbmNvbnN0IEZPUk1fS0VZID0gU3ltYm9sKCd0aWRlLWZvcm0nKTtcblxuZXhwb3J0IGNvbnN0IHVzZVRpZGVGb3JtID0gKCkgPT4ge1xuICBjb25zdCBmb3JjZVNob3dFcnJvcnMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByb3ZpZGU8VGlkZUZvcm1Db250ZXh0PihGT1JNX0tFWSwgeyBmb3JjZVNob3dFcnJvcnMgfSk7XG5cbiAgY29uc3QgcmV2ZWFsVmFsaWRhdGlvbkVycm9ycyA9ICgpID0+IHtcbiAgICBmb3JjZVNob3dFcnJvcnMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIHJldHVybiB7IHJldmVhbFZhbGlkYXRpb25FcnJvcnMgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VGb3JtQ29udGV4dCA9ICgpID0+IHtcbiAgcmV0dXJuIGluamVjdDxUaWRlRm9ybUNvbnRleHQ+KEZPUk1fS0VZKTtcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGZvcm0gY29tcG9uZW50IHRvIGJlIHVzZWQgdG8gd3JhcCBmb3JtIGVsZW1lbnRzIGFuZCBoYW5kbGUgZm9ybSBzdWJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlZm9ybS0tZG9jcykgZm9yIFRpZGVGb3JtXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyB1c2VUaWRlRm9ybSB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAnc3VibWl0JywgZTogU3VibWl0RXZlbnQpOiB2b2lkO1xuICB9O1xuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgeyByZXZlYWxWYWxpZGF0aW9uRXJyb3JzIH0gPSB1c2VUaWRlRm9ybSgpO1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlOiBTdWJtaXRFdmVudCkgPT4ge1xuICAgIHJldmVhbFZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICBlbWl0KCdzdWJtaXQnLCBlKTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxmb3JtXG4gICAgQHN1Ym1pdC5wcmV2ZW50PVwiaGFuZGxlU3VibWl0XCJcbiAgICBub3ZhbGlkYXRlXG4gID5cbiAgICA8c2xvdCAvPlxuICA8L2Zvcm0+XG48L3RlbXBsYXRlPlxuIiwiZXhwb3J0IGNvbnN0IE9CSkVDVF9GSVQgPSB7XG4gIENPTlRBSU46ICdjb250YWluJyxcbiAgQ09WRVI6ICdjb3ZlcicsXG4gIFNDQUxFX0RPV046ICdzY2FsZS1kb3duJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9iamVjdEZpdCA9ICh0eXBlb2YgT0JKRUNUX0ZJVClba2V5b2YgdHlwZW9mIE9CSkVDVF9GSVRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaW1hZ2UgY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW1hZ2UtLWRvY3MpIGZvciBUaWRlSW1hZ2VcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IE9CSkVDVF9GSVQgfSBmcm9tICdAL3R5cGVzL0ltYWdlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgT2JqZWN0Rml0IH0gZnJvbSAnQC90eXBlcy9JbWFnZSc7XG4gIGltcG9ydCB0eXBlIHsgU291cmNlIH0gZnJvbSAnQC90eXBlcy9Tb3VyY2UnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIFRleHQgZGlzcGxheSB3aGVuIGltYWdlIGNhbid0IGJlIGxvYWRlZC4gKi9cbiAgICBhbHQ/OiBzdHJpbmc7XG5cbiAgICAvKiogQXBwbHkgYSBcImhlaWdodFwiIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJuYWwgaW1hZ2UgdGFnIChpbmNsdWRpbmcgdW5pdCkuICovXG4gICAgaGVpZ2h0Pzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkZWxheSBsb2FkaW5nIHVudGlsIGltYWdlIGlzIGluIHZpZXdwb3J0LiAqL1xuICAgIGlzTGF6eT86IGJvb2xlYW47XG5cbiAgICAvKiogQ29udHJvbHMgaG93IHRoZSBpbWFnZSBzY2FsZXMgd2l0aGluIGl0cyBib3gsIGVmZmVjdGl2ZSBvbmx5IHdoZW4gaW1hZ2Ugc2l6ZSBkaWZmZXJzIGZyb20gaXRzIGludHJpbnNpYyBkaW1lbnNpb25zLiAqL1xuICAgIG9iamVjdEZpdD86IE9iamVjdEZpdDtcblxuICAgIC8qKiBEZXRlcm1pbmVzIGltYWdlIHNvdXJjZXMgYnkgYnJlYWtwb2ludC4gKi9cbiAgICBzb3VyY2VzPzogU291cmNlW107XG5cbiAgICAvKiogSW1hZ2UgVVJMLiAqL1xuICAgIHNyYz86IHN0cmluZztcblxuICAgIC8qKiBBcHBseSBhIFwid2lkdGhcIiBhdHRyaWJ1dGUgdG8gdGhlIGludGVybmFsIGltYWdlIHRhZyAoaW5jbHVkaW5nIHVuaXQpLiAqL1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBoZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgb2JqZWN0Rml0OiBPQkpFQ1RfRklULkNPVkVSLFxuICAgIHNvdXJjZXM6ICgpID0+IFtdLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHBpY3R1cmUgPSByZWYoKTtcbiAgY29uc3QgaW1nID0gcmVmKCk7XG5cbiAgY29uc3QgaW1hZ2VEZWZhdWx0ID0gJ2h0dHBzOi8vY2RuLXN0YXRpYy50aWxhYnMuaW8vbWFya2V0cGxhY2UvY29tbW9uL2ltYWdlLWNvbWluZy1zb29uLnN2Zyc7XG5cbiAgY29uc3Qgb2JqZWN0Rml0Q2xhc3NOYW1lID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgc3dpdGNoIChwcm9wcy5vYmplY3RGaXQpIHtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5DT05UQUlOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT05UQUlOO1xuICAgICAgY2FzZSBPQkpFQ1RfRklULkNPVkVSOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT1ZFUjtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5TQ0FMRV9ET1dOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5TQ0FMRV9ET1dOO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIE9CSkVDVF9GSVQuQ09WRVI7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBzZXRJbWFnZUZyb21EZWZhdWx0ID0gKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRTcmMgPSBpbWcudmFsdWU/LmN1cnJlbnRTcmM7XG4gICAgY29uc3Qgc291cmNlcyA9IHBpY3R1cmUudmFsdWU/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NvdXJjZScpID8/IFtdO1xuXG4gICAgaWYgKCFjdXJyZW50U3JjKSByZXR1cm47XG5cbiAgICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IG5ldyBVUkwoc291cmNlLnNyY3NldCwgd2luZG93LmxvY2F0aW9uLmhyZWYpLmhyZWY7XG5cbiAgICAgIGlmIChyZXNvbHZlZCA9PT0gY3VycmVudFNyYykge1xuICAgICAgICBzb3VyY2UucmVtb3ZlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGltZy52YWx1ZT8uZ2V0QXR0cmlidXRlKCdzcmMnKSAhPT0gaW1hZ2VEZWZhdWx0KSB7XG4gICAgICBpbWcudmFsdWUuc3JjID0gaW1hZ2VEZWZhdWx0O1xuICAgIH1cbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxwaWN0dXJlXG4gICAgOmNsYXNzPVwiWyd0aWRlLWltYWdlJywgQ1NTLkRJU1BMQVkuQkxPQ0tdXCJcbiAgICByZWY9XCJwaWN0dXJlXCJcbiAgPlxuICAgIDxzb3VyY2VcbiAgICAgIDprZXk9XCJzb3VyY2Uuc3Jjc2V0XCJcbiAgICAgIDptZWRpYT1cImAobWluLXdpZHRoOiR7c291cmNlLm1lZGlhfXB4KWBcIlxuICAgICAgOnNyY3NldD1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgdi1mb3I9XCJzb3VyY2UgaW4gcHJvcHMuc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxpbWdcbiAgICAgIDphbHQ9XCJhbHRcIlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbWFnZS1pbWcnLFxuICAgICAgICAhcHJvcHMud2lkdGggJiYgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICFwcm9wcy5oZWlnaHQgJiYgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICBDU1MuT0JKRUNULkNFTlRFUixcbiAgICAgICAgb2JqZWN0Rml0Q2xhc3NOYW1lLFxuICAgICAgXVwiXG4gICAgICA6ZmV0Y2hwcmlvcml0eT1cImlzTGF6eSA/IHVuZGVmaW5lZCA6ICdoaWdoJ1wiXG4gICAgICA6aGVpZ2h0PVwicHJvcHMuaGVpZ2h0XCJcbiAgICAgIDpsb2FkaW5nPVwicHJvcHMuaXNMYXp5ID8gJ2xhenknIDogJ2VhZ2VyJ1wiXG4gICAgICByZWY9XCJpbWdcIlxuICAgICAgOnNyYz1cInNyYyA/PyBpbWFnZURlZmF1bHRcIlxuICAgICAgOndpZHRoPVwicHJvcHMud2lkdGhcIlxuICAgICAgQGVycm9yPVwic2V0SW1hZ2VGcm9tRGVmYXVsdFwiXG4gICAgLz5cbiAgPC9waWN0dXJlPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW1hZ2UtaW1nIHtcbiAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaW1hZ2UgYmFja2dyb3VuZCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbWFnZWJhY2tncm91bmQtLWRvY3MpIGZvciBUaWRlSW1hZ2VCYWNrZ3JvdW5kXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUltYWdlIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlJztcbiAgaW1wb3J0IHsgT0JKRUNUX0ZJVCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBTb3VyY2UgfSBmcm9tICdAL3R5cGVzL1NvdXJjZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogVGV4dCBkaXNwbGF5IHdoZW4gaW1hZ2UgY2FuJ3QgYmUgbG9hZGVkLiAqL1xuICAgIGFsdD86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGVsYXkgbG9hZGluZyB1bnRpbCBpbWFnZSBpcyBpbiB2aWV3cG9ydC4gKi9cbiAgICBpc0xhenk/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgaW1hZ2Ugc291cmNlcyBieSBicmVha3BvaW50LiAqL1xuICAgIHNvdXJjZXM/OiBTb3VyY2VbXTtcblxuICAgIC8qKiBJbWFnZSBVUkwuICovXG4gICAgc3JjPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgc291cmNlczogKCkgPT4gW10sXG4gICAgc3JjOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW1hZ2UtYmFja2dyb3VuZCcsIENTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTiwgQ1NTLklTT0xBVElPTi5JU09MQVRFXVwiPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJbWFnZVxuICAgICAgICA6YWx0PVwicHJvcHMuYWx0XCJcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuSEVJR0hULkZVTExdXCJcbiAgICAgICAgOmlzLWxhenk9XCJwcm9wcy5pc0xhenlcIlxuICAgICAgICA6b2JqZWN0LWZpdD1cIk9CSkVDVF9GSVQuQ09WRVJcIlxuICAgICAgICA6c291cmNlcz1cInByb3BzLnNvdXJjZXNcIlxuICAgICAgICA6c3JjPVwicHJvcHMuc3JjXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8c2xvdCAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIDpkZWVwKC50aWRlLWltYWdlKSB7XG4gICAgei1pbmRleDogLTE7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBpbmRpY2F0b3IgY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW5kaWNhdG9yLS1kb2NzKSBmb3IgVGlkZUluZGljYXRvclxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIEluZGljYXRvciB0ZXh0ICovXG4gICAgbGFiZWw/OiBzdHJpbmcgfCBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbmRpY2F0b3InLFxuICAgICAgcHJvcHMubGFiZWwgPyAnJyA6ICdkb3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLFxuICAgICAgQ1NTLkFMSUdOLlguQ0VOVEVSLFxuICAgICAgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIHByb3BzLmxhYmVsICYmIHByb3BzLmxhYmVsLnRvU3RyaW5nKCkubGVuZ3RoID4gMSA/IFtDU1MuUEFERElORy5YLkhBTEZdIDogW10sXG4gICAgICBwcm9wcy5sYWJlbFxuICAgICAgICA/IFtDU1MuUE9TSVRJT04uUkVMQVRJVkUsIENTUy5GT05ULlJPTEUuTEFCRUxfMywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5JTlZFUlNFXVxuICAgICAgICA6IFtDU1MuQk9SREVSLkZVTEwuT05FXSxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1pbmRpY2F0b3ItbGFiZWwnXVwiXG4gICAgICB2LWlmPVwicHJvcHMubGFiZWxcIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5kaWNhdG9yOm5vdCguZG90KSB7XG4gICAgbWluLXdpZHRoOiAxcmVtO1xuICAgIG1pbi1oZWlnaHQ6IDFyZW07XG4gIH1cblxuICAudGlkZS1pbmRpY2F0b3IuZG90IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtZ3JheS0xMDApO1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgfVxuXG4gIC50aWRlLWluZGljYXRvci1sYWJlbCB7XG4gICAgLyogVXNlIGJvdHRvbS13ZWlnaHRpbmcgdG8gb2Zmc2V0IHRoZSBtYXRoZW1hdGljYWwgY2VudGVyIHRvIHRoZSBvcHRpY2FsIGNlbnRlci4gKi9cbiAgICBtYXJnaW4tdG9wOiAtMXB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaW5wdXQgc3VwcG9ydGluZyB0ZXh0IGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0c3VwcG9ydGluZ3RleHQtLWRvY3MpIGZvciBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzRXJyb3I6IGJvb2xlYW47XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICB9O1xuICBkZWZpbmVQcm9wczxQcm9wcz4oKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMyxcbiAgICAgIGlzRXJyb3IgPyBbQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLkVSUk9SXSA6IFtDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaXNFcnJvclwiXG4gICAgLz5cblxuICAgIDxkaXY+XG4gICAgICB7eyBtZXNzYWdlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbiIsImltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkxlbmd0aCwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuZXhwb3J0IGNvbnN0IGVycm9yTWVzc2FnZURlZmF1bHQgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgdmFsdWUnO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVElPTl9SRVNVTFQgPSB7XG4gIE5PX0VSUk9SOiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH0sXG4gIFJFUVVJUkVEOiB7XG4gICAgbWVzc2FnZTogJ1BsZWFzZSBmaWxsIG91dCB0aGlzIGZpZWxkJyxcbiAgICB2YWxpZDogZmFsc2UsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHAsIG1lc3NhZ2U/OiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdDogVmFsaWRhdGlvblJlc3VsdCA9IFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlID8/IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpID0+IHtcbiAgY29uc3QgaXNFbXB0eUFuZFVucmVxdWlyZWQgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgIXJlcXVpcmVkO1xuICBjb25zdCBpc1Rvb0xvbmcgPSBtYXhsZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4bGVuZ3RoO1xuICBjb25zdCBpc1Rvb1Nob3J0ID0gIWlzRW1wdHlBbmRVbnJlcXVpcmVkICYmIG1pbmxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5sZW5ndGg7XG4gIHJldHVybiAhaXNUb29TaG9ydCAmJiAhaXNUb29Mb25nO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCA9ICh7XG4gIGVycm9yRnJvbVByb3BzLFxuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQsXG4gIHZhbGlkYXRvcnMsXG4gIHZhbHVlLFxufToge1xuICBlcnJvckZyb21Qcm9wczogc3RyaW5nO1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU6IFJlZjxzdHJpbmc+O1xufSk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuICBpZiAoZXJyb3JGcm9tUHJvcHMgIT09ICcnKVxuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiBlcnJvckZyb21Qcm9wcyxcbiAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICB9O1xuXG4gIC8vIGN1c3RvbSB2YWxpZGF0b3IgcHJvcCBlcnJvcnMgZnJvbSBoYXZlIHNlY29uZCBoaWdoZXN0IHByZWNlZGVuY2VcbiAgaWYgKHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZS52YWx1ZSA/PyAnJywgdmFsaWRhdG9ycyk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIC8vIGFsbCBvdGhlciBwcm9wLWJhc2VkIGVycm9ycyBjb21lIGxhc3RcbiAgaWYgKHJlcXVpcmVkICYmIHZhbHVlLnZhbHVlPy50cmltKCkgPT09ICcnKSB7XG4gICAgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULlJFUVVJUkVEO1xuICB9XG5cbiAgaWYgKG1heGxlbmd0aCB8fCBtaW5sZW5ndGgpIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0aW9uID0gdmFsaWRhdGVMZW5ndGgoe1xuICAgICAgbWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgfSk7XG5cbiAgICBpZiAoIWxlbmd0aFZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiBsZW5ndGhWYWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuICByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1I7XG59O1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVMZW5ndGggPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG5cbiAgcmVzcG9uc2UudmFsaWQgPSBnZXRGaWVsZExlbmd0aElzVmFsaWQoe1xuICAgIG1heGxlbmd0aCxcbiAgICBtaW5sZW5ndGgsXG4gICAgcmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuXG4gIGlmIChyZXNwb25zZS52YWxpZCkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gIHJlc3BvbnNlLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VEZWZhdWx0O1xuXG4gIGlmIChtYXhsZW5ndGggJiYgbWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBFbnRlciBhIHZhbHVlIGJldHdlZW4gJHtmb3JtYXROdW1iZXIobWlubGVuZ3RoKX0gYW5kICR7Zm9ybWF0TnVtYmVyKG1heGxlbmd0aCl9IGNoYXJhY3RlcnNgO1xuICB9IGVsc2UgaWYgKG1heGxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgVXNlICR7Zm9ybWF0TnVtYmVyKG1heGxlbmd0aCl9IGNoYXJhY3RlcnMgb3IgZmV3ZXJgO1xuICB9IGVsc2UgaWYgKG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgRW50ZXIgYXQgbGVhc3QgJHtmb3JtYXROdW1iZXIobWlubGVuZ3RoKX0gY2hhcmFjdGVyc2A7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nLCB2YWxpZGF0b3JzOiAoKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQpW10pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0b3IodmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGlucHV0IGNoZWNrYm94IGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0Y2hlY2tib3gtLWRvY3MpIGZvciBUaWRlSW5wdXRDaGVja2JveFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxUIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgQ2hlY2tib3ggc3RhdGUgaXMgaW50ZXJhY3RhYmxlICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIE92ZXJyaWRlcyB0aGUgZGVmYXVsdCBlcnJvciBtZXNzYWdlIGFuZCB2YWxpZCBzdGF0ZSAqL1xuICAgIGVycm9yPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBDaGVja2JveCBpcyBpbmRldGVybWluYXRlICovXG4gICAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XG5cbiAgICAvKiogVW5pcXVlIElEIGF0dHJpYnV0ZSAodG8gYmluZCBDaGVja2JveCBsYWJlbCB0byBpbnB1dCkgKi9cbiAgICBpbnB1dElkPzogc3RyaW5nO1xuXG4gICAgLyoqIExhYmVsIGNvbnRlbnQgKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIE5hbWUgYXR0cmlidXRlICovXG4gICAgbmFtZT86IHN0cmluZztcblxuICAgIC8qKiBQYXJlbnRoZXRpY2FsIHJlc3BvbnNlIGNvdW50ICovXG4gICAgbnVtYmVyPzogbnVtYmVyO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBpbnB1dCBpcyByZXF1aXJlZCAqL1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogJycsXG4gICAgaW5kZXRlcm1pbmF0ZTogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIHZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG5cbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlIHx8IHByb3BzLmluZGV0ZXJtaW5hdGUpO1xuICBjb25zdCBzaG93RXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGhhc0Vycm9yRnJvbVByb3AudmFsdWUpIHJldHVybiB0cnVlO1xuICAgIGlmICghaXNWYWxpZGF0aW5nLnZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFlcnJvclJlZi52YWx1ZS52YWxpZDtcbiAgfSk7XG4gIGNvbnN0IGhhc0Vycm9yRnJvbVByb3AgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5lcnJvciAhPT0gJycpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSk7XG5cbiAgY29uc3QgZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0ID0gKCk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGlmIChwcm9wcy5lcnJvciAhPT0gJycpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXNzYWdlOiBwcm9wcy5lcnJvcixcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICBpZiAoIXByb3BzLnJlcXVpcmVkIHx8IGlzQ2hlY2tlZC52YWx1ZSkgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xuICAgIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5SRVFVSVJFRDtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRDaGVja2JveFZhbGlkYXRpb25SZXN1bHQoKTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgbW9kZWxWYWx1ZSxcbiAgICAoKSA9PiB7XG4gICAgICBpZiAobW9kZWxWYWx1ZS52YWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBmb3JtQ29udGV4dD8uZm9yY2VTaG93RXJyb3JzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgIGVycm9yUmVmLFxuICAgICgpID0+IHtcbiAgICAgIGVtaXQoJ3ZhbGlkJywgZXJyb3JSZWYudmFsdWUudmFsaWQpO1xuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlLCBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtY2hlY2tib3gnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVJdXCI+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5VU0VSX1NFTEVDVC5OT05FLFxuICAgICAgICBzaG93RXJyb3IgPyBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuRVJST1IgOiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIGRpc2FibGVkID8gW0NTUy5PUEFDSVRZLkRJU0FCTEVELCBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXSA6IFtDU1MuQ1VSU09SLlBPSU5URVJdLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIDpjaGVja2VkPVwiaXNDaGVja2VkXCJcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLXNjcmVlbi1yZWFkZXItb25seSddXCJcbiAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20nLFxuICAgICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICBpc0NoZWNrZWRcbiAgICAgICAgICAgID8gW3Nob3dFcnJvciA/IENTUy5CRy5HTE9CQUwuUFJJTUFSWS5FUlJPUiA6IFtDU1MuQkcuU0VDT05EQVJZLCBDU1MuQk9SREVSLkNPTE9SLkhJR0hdXVxuICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgc2hvd0Vycm9yXG4gICAgICAgICAgICAgICAgICA/IFtDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5FUlJPUiwgQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLkVSUk9SXVxuICAgICAgICAgICAgICAgICAgOiBbQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlldXCJcbiAgICAgICAgICA6aWNvbj1cImluZGV0ZXJtaW5hdGUgPyBJQ09OLlJFTU9WRSA6IElDT04uQ0hFQ0tcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgICAgdi1pZj1cImlzQ2hlY2tlZFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkdST1cuT04sIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuPnt7IGZvcm1hdHRlZExhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJudW1iZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgKHt7IGZvcm1hdE51bWJlcihudW1iZXIpIH19KVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICBpcy1lcnJvclxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1jaGVja2JveCB7XG4gICAgYWxpZ24tc2VsZjogc3RhcnQ7XG4gIH1cblxuICAudGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuXG4gIGxhYmVsOmhhcyhpbnB1dDpmb2N1cy12aXNpYmxlKSB7XG4gICAgb3V0bGluZTogYXV0bztcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0Q2hlY2tib3gudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbmRldGVybWluYXRlPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGluZGV0ZXJtaW5hdGU6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuY2hlY2tlZCB8fCBwcm9wcy5pbmRldGVybWluYXRlKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1jaGVja2JveCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgZGlzYWJsZWQgPyBbJ2Rpc2FibGVkJywgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl0gOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgXVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiaXNDaGVja2VkXCJcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5OT05FXVwiXG4gICAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICA6bmFtZT1cInByb3BzLm5hbWVcIlxuICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgQGNsaWNrLnByZXZlbnRcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGlzQ2hlY2tlZCA/IFtDU1MuQk9SREVSLkNPTE9SLkhJR0gsIENTUy5CRy5TRUNPTkRBUlldIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICAgIGlzQ2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVwiXG4gICAgICAgIDppY29uPVwicHJvcHMuaW5kZXRlcm1pbmF0ZSA/IElDT04uUkVNT1ZFIDogSUNPTi5DSEVDS1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJpc0NoZWNrZWRcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgQGNsaWNrLnByZXZlbnRcbiAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgPlxuICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5udW1iZXJcIlxuICAgICAgPlxuICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKHByb3BzLm51bWJlcikgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1jaGVja2JveC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGlucHV0IHJhZGlvIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0cmFkaW8tLWRvY3MpIGZvciBUaWRlSW5wdXRSYWRpb1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW5wdXQgaXMgaW50ZXJhY3RhYmxlICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIFVuaXF1ZSBJRCBhdHRyaWJ1dGUgKHRvIGJpbmQgaW5wdXQgbGFiZWwgdG8gaW5wdXQpICovXG4gICAgaW5wdXRJZD86IHN0cmluZztcblxuICAgIC8qKiBMYWJlbCBjb250ZW50ICovXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBOYW1lIGF0dHJpYnV0ZSAqL1xuICAgIG5hbWU6IHN0cmluZztcblxuICAgIC8qKiBQYXJlbnRoZXRpY2FsIHJlc3BvbnNlIGNvdW50ICovXG4gICAgbnVtYmVyPzogbnVtYmVyO1xuXG4gICAgLyoqIFZhbHVlIGF0dHJpYnV0ZSAqL1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gcHJvcHMudmFsdWUpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGxhYmVsXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8nLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuVVNFUl9TRUxFQ1QuTk9ORSxcbiAgICAgIHByb3BzLmRpc2FibGVkID8gW0NTUy5PUEFDSVRZLkRJU0FCTEVELCBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXSA6IFtDU1MuQ1VSU09SLlBPSU5URVJdLFxuICAgIF1cIlxuICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNsYXNzPVwiWyd0aWRlLXNjcmVlbi1yZWFkZXItb25seSddXCJcbiAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICA6dmFsdWU9XCJ2YWx1ZVwiXG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8tY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBpc0NoZWNrZWQgPyBbQ1NTLkJPUkRFUi5DT0xPUi5ISUdIXSA6IFtDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFRdLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXJhZGlvLWNoZWNrJywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgaXNDaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkdST1cuT04sIENTUy5BWElTMS5CRVRXRUVOLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIj5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2xhYmVsPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jaGVjayB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICB9XG5cbiAgbGFiZWw6aGFzKGlucHV0OmZvY3VzLXZpc2libGUpIHtcbiAgICBvdXRsaW5lOiBhdXRvO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRSYWRpby52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgY2hlY2tlZCA9IHJlZihwcm9wcy5jaGVja2VkKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5jaGVja2VkLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IGNoZWNrZWQudmFsdWUpIHtcbiAgICAgICAgY2hlY2tlZC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1yYWRpbycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICBwcm9wcy5kaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgIF1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImNoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgbmFtZT1cIlwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXJhZGlvLWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgY2hlY2tlZCA/IENTUy5CT1JERVIuQ09MT1IuSElHSCA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICAgIGNoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8tY2hlY2snLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBwcm9wcy5jaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5udW1iZXJcIlxuICAgICAgPlxuICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKHByb3BzLm51bWJlcikgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1yYWRpby5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWNoZWNrIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBmb3JtYXROdW1iZXIsIGZvcm1hdFBob25lLCBmb3JtYXRQcmljZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmV4cG9ydCB0eXBlIEZvcm1hdHRlZCA9IHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfCBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgRk9STUFUID0ge1xuICBOVU1CRVI6IGZvcm1hdE51bWJlcixcbiAgUEhPTkU6IGZvcm1hdFBob25lLFxuICBQUklDRTogZm9ybWF0UHJpY2UsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRk9STUFUX1JFR0VYID0ge1xuICBhbHBoYTogL15bYS16QS1aXSskL2csXG4gIGFscGhhTnVtYmVyT3JFbXB0eTogL14kfF5bYS16MC05XSskL2ksXG4gIGFscGhhU3BhY2U6IC9eW2EtekEtWiBdKyQvZyxcbiAgZW1haWw6XG4gICAgL14oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoPyEoPzpbYS16QS1aMC05LV0rXFwuKSooPzx0bGQ+W2EtekEtWl17Mix9KVxcLlxcazx0bGQ+JCkoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXF0pfCgoW2EtekEtWjAtOS1dK1xcLikrW2EtekEtWl17Mix9KSkkLyxcbiAgbnVtYmVyRm9ybWF0dGVkOiAvXiR8KD89LileXFwkPygoWzEtOV1bMC05XXswLDJ9KCxbMC05XXszfSkqKXwwKT8oXFwuWzAtOV17MSwyfSk/JC8sXG4gIHBob25lOiAvXig/OlxcZHszfS1cXGR7M30tXFxkezR9fFxcZHsxfS1cXGR7M30tXFxkezN9LVxcZHs0fSk/JC8sXG4gIHByaWNlOiAvKD89LileXFwkPygoWzEtOV1bMC05XXswLDJ9KCxbMC05XXszfSkqKXwwKT8oXFwuWzAtOV17MSwyfSk/JC8sXG4gIHppcDogL15cXGR7NX0kLyxcbn07XG4iLCJpbXBvcnQgeyBGT1JNQVRfUkVHRVggfSBmcm9tICdAL3R5cGVzL0Zvcm1hdHRlZCc7XG5pbXBvcnQgeyBjaGVja0Zvcm1hdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVE9SID0ge1xuICBBTFBIQV9OVU1CRVJfRU1QVFk6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5hbHBoYU51bWJlck9yRW1wdHkpLFxuICBBTFBIQV9TUEFDRTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhU3BhY2UpLFxuICBFTUFJTDogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmVtYWlsLCAnRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIChlLmcuIG5hbWVAZXhhbXBsZS5jb20pJyksXG4gIE5VTUJFUjogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLm51bWJlckZvcm1hdHRlZCwgJ0VudGVyIGEgdmFsaWQgbnVtYmVyJyksXG4gIFBIT05FOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVgucGhvbmUsICdFbnRlciBhIHZhbGlkIHBob25lIG51bWJlcicpLFxuICBaSVA6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC56aXAsICdFbnRlciBhIHZhbGlkIFppcCBjb2RlJyksXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uRXJyb3IgPSBzdHJpbmcgfCBib29sZWFuO1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblJlc3VsdCA9IHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB2YWxpZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25MZW5ndGggPSB7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgdmFsdWU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRvciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0O1xuXG5leHBvcnQgY29uc3QgRVJST1JfRElTUExBWSA9IHtcbiAgRUFHRVI6ICdlYWdlcicsXG4gIExBWlk6ICdsYXp5Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEVycm9yRGlzcGxheSA9ICh0eXBlb2YgRVJST1JfRElTUExBWSlba2V5b2YgdHlwZW9mIEVSUk9SX0RJU1BMQVldO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBzZWxlY3QgaW5wdXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBmb3Jtcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0c2VsZWN0LS1kb2NzKSBmb3IgVGlkZUlucHV0U2VsZWN0XG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB1c2VJZCwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24sIFNlbGVjdE9wdGlvbkdyb3VwIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuICBpbXBvcnQgdHlwZSB7IEVycm9yRGlzcGxheSwgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIFNlbGVjdCBpcyBpbnRlcmFjdGFibGUgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2UgYW5kIHZhbGlkIHN0YXRlICovXG4gICAgZXJyb3I/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGVycm9ycyBkaXNwbGF5IHByaW9yIHRvIGJsdXIgKi9cbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG5cbiAgICAvKiogTGFiZWwgY29udGVudCAqL1xuICAgIGxhYmVsPzogc3RyaW5nO1xuXG4gICAgLyoqIE5hbWUgYXR0cmlidXRlICovXG4gICAgbmFtZT86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIGdyb3VwZWQgdmFsdWVzIGZvdW5kIGluc2lkZSBTZWxlY3QgKi9cbiAgICBvcHRncm91cHM/OiAoU2VsZWN0T3B0aW9uIHwgU2VsZWN0T3B0aW9uR3JvdXApW10gfCByZWFkb25seSAoU2VsZWN0T3B0aW9uIHwgU2VsZWN0T3B0aW9uR3JvdXApW107XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB1bmdyb3VwZWQgdmFsdWVzIGZvdW5kIGluc2lkZSBTZWxlY3QgKi9cbiAgICBvcHRpb25zPzogU2VsZWN0T3B0aW9uW10gfCByZWFkb25seSBTZWxlY3RPcHRpb25bXTtcblxuICAgIC8qKiBQcmVmaXggY29udGVudCAqL1xuICAgIHByZWZpeD86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgU2VsZWN0IGlzIHJlcXVpcmVkICovXG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIFN1ZmZpeCBjb250ZW50ICovXG4gICAgc3VmZml4Pzogc3RyaW5nO1xuXG4gICAgLyoqIEV4cGxhaW5lciB0ZXh0IGJlbmVhdGggaW5wdXQgKi9cbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogJycsXG4gICAgZXJyb3JEaXNwbGF5OiBFUlJPUl9ESVNQTEFZLkxBWlksXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG9wdGdyb3VwczogdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM6IHVuZGVmaW5lZCxcbiAgICBwcmVmaXg6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VmZml4OiB1bmRlZmluZWQsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIGlzVmFsaWQ6IGJvb2xlYW4pOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgaW5wdXRJZCA9IHVzZUlkKCk7XG4gIGNvbnN0IGlzVmFsaWRhdGluZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHNlbGVjdEVsZW1lbnQgPSByZWY8SFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IHNob3dFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaGFzRXJyb3JGcm9tUHJvcC52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkYXRpbmcudmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIWVycm9yUmVmLnZhbHVlLnZhbGlkO1xuICB9KTtcbiAgY29uc3QgaGFzRXJyb3JGcm9tUHJvcCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmVycm9yICE9PSAnJyk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT0gbnVsbCB8fCBtb2RlbFZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IChzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSkgfHwgcHJvcHMuc3VwcG9ydGluZ1RleHQpO1xuXG4gIGNvbnN0IGV4cGFuZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJyk7XG4gICAgc2VsZWN0RWxlbWVudD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkVBR0VSKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5MQVpZKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBlcnJvclJlZi52YWx1ZSA9IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCh7XG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWx1ZTogbW9kZWxWYWx1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgc2hvd0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiAnJyxcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIF1cIlxuICAgICAgQGNsaWNrPVwiZXhwYW5kT3B0aW9uc1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTklORy5MRUZULFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5UT1AuSEFMRixcbiAgICAgICAgICAgIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5XSURUSC5GVUxMLCBDU1MuR0FQLkhBTEZdXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLk1BUkdJTi5MRUZULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRiwgbGFiZWwgJiYgQ1NTLk1BUkdJTi5UT1AuT05FXVwiXG4gICAgICAgICAgICB2LWlmPVwicHJlZml4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBwcmVmaXggfX1cbiAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5IQUxGLFxuICAgICAgICAgICAgICBDU1MuUEFERElORy5UT1AuT05FLFxuICAgICAgICAgICAgICBDU1MuUEFERElORy5SSUdIVC5UV08sXG4gICAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICAgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCxcbiAgICAgICAgICAgICAgcHJlZml4ID8gQ1NTLlBBRERJTkcuTEVGVC5aRVJPIDogQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZWY9XCJzZWxlY3RFbGVtZW50XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIm9wdGdyb3VwIGluIG9wdGdyb3Vwc1wiPlxuICAgICAgICAgICAgICA8b3B0Z3JvdXBcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwiYGdyb3VwLSR7KG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbH1gXCJcbiAgICAgICAgICAgICAgICA6bGFiZWw9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgICB2LWlmPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9vcHRncm91cD5cblxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgOmtleT1cImBvcHRpb24tJHsob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZX1gXCJcbiAgICAgICAgICAgICAgICA6c2VsZWN0ZWQ9XCJtb2RlbFZhbHVlID09PSAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgIDpzZWxlY3RlZD1cIm1vZGVsVmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBvcHRpb25zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuUklHSFQsXG4gICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgQ1NTLk1BUkdJTi5SSUdIVC5UV08sXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBsYWJlbCAmJiBDU1MuTUFSR0lOLlRPUC5PTkUsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwic3VmZml4XCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gOmNsYXNzPVwiQ1NTLlBBRERJTkcuUklHSFQuT05FXCI+XG4gICAgICAgICAge3sgc3VmZml4IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgcHJpY2VUb051bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmltcG9ydCB0eXBlIHsgU3RyaW5nSW5wdXQgfSBmcm9tICdAL3R5cGVzL0Zvcm1EZXByZWNhdGVkJztcbmltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRpb25MZW5ndGgsIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbkRlcHJlY2F0ZWQnO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbnR5cGUgUmFuZ2VEYXRhID0ge1xuICBtaW46IG51bWJlciB8IG51bGw7XG4gIG1heDogbnVtYmVyIHwgbnVsbDtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGVycm9yTWVzc2FnZURlZmF1bHQgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgdmFsdWUuJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3Qgbm9FcnJvciA9IHtcbiAgbWVzc2FnZTogJycsXG4gIHZhbGlkOiB0cnVlLFxufSBhcyBSZWFkb25seTxWYWxpZGF0aW9uUmVzdWx0PjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHApID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IG5vRXJyb3I7XG5cbiAgICBpZiAoIXZhbHVlLnRyaW0oKS5tYXRjaChmb3JtYXQpKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVycm9yTWVzc2FnZSA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuICBpZiAodHlwZW9mIGVycm9yRnJvbVByb3BzID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21Qcm9wcy5sZW5ndGggPiAwKSByZXR1cm4gZXJyb3JGcm9tUHJvcHM7XG5cbiAgcmV0dXJuIHR5cGVvZiBlcnJvckZyb21SZWYgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVJlZi5sZW5ndGggPiAwID8gZXJyb3JGcm9tUmVmIDogZXJyb3JNZXNzYWdlRGVmYXVsdDtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZpZWxkSGFzRXJyb3IgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+XG4gIGVycm9yRnJvbVByb3BzICE9PSBmYWxzZSB8fCBlcnJvckZyb21SZWYgIT09IGZhbHNlO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpID0+IHtcbiAgY29uc3QgaXNFbXB0eUFuZFVucmVxdWlyZWQgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgIXJlcXVpcmVkO1xuICBjb25zdCBpc1Rvb0xvbmcgPSBtYXhsZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4bGVuZ3RoO1xuICBjb25zdCBpc1Rvb1Nob3J0ID0gIWlzRW1wdHlBbmRVbnJlcXVpcmVkICYmIG1pbmxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5sZW5ndGg7XG5cbiAgcmV0dXJuICFpc1Rvb1Nob3J0ICYmICFpc1Rvb0xvbmc7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRNYXhSYW5nZUlzVmFsaWQgPSAoeyBtaW4gfTogUGljazxSYW5nZURhdGEsICdtaW4nPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01heDogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWF4ID0gIWlzTmFOKG5ld01heCkgPyBuZXdNYXggOiBudWxsO1xuICAgIGlmIChtaW4gJiYgbmV3TWF4KSB7XG4gICAgICBpZiAobmV3TWF4ID49IG1pbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBncmVhdGVyIHRoYW4gbWluYCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE1pblJhbmdlSXNWYWxpZCA9ICh7IG1heCB9OiBQaWNrPFJhbmdlRGF0YSwgJ21heCc+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWluOiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNaW4gPSAhaXNOYU4obmV3TWluKSA/IG5ld01pbiA6IG51bGw7XG4gICAgaWYgKG1heCAmJiBuZXdNaW4pIHtcbiAgICAgIGlmIChuZXdNaW4gPD0gbWF4KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGxlc3MgdGhhbiBtYXhgLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0T3B0aW9uc0Zyb21TdHJpbmdzID0gKHN0cmluZ3M6IHN0cmluZ1tdKSA9PlxuICBzdHJpbmdzLm1hcChcbiAgICAob3B0aW9uKSA9PlxuICAgICAgKHtcbiAgICAgICAgbGFiZWw6IG9wdGlvbixcbiAgICAgICAgdmFsdWU6IG9wdGlvbixcbiAgICAgIH0gYXMgU2VsZWN0T3B0aW9uKVxuICApO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gPSAoe1xuICBlcnJvcixcbiAgZXJyb3JGcm9tUHJvcHMsXG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCA9IGZhbHNlLFxuICB2YWxpZGF0b3JzLFxuICB2YWx1ZSxcbn06IHtcbiAgZXJyb3I6IFJlZjxWYWxpZGF0aW9uRXJyb3I+O1xuICBlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yO1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIHZhbHVlPzogUmVmPHN0cmluZyB8IHVuZGVmaW5lZD47XG59KSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG5cbiAgZXJyb3IudmFsdWUgPSBlcnJvckZyb21Qcm9wcyA/IGVycm9yRnJvbVByb3BzIDogZmFsc2U7XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlUHJvcGVydHkodmFsdWU/LnZhbHVlIHx8ICcnLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSB2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiAobWF4bGVuZ3RoIHx8IG1pbmxlbmd0aCkpIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0aW9uID0gdmFsaWRhdGVMZW5ndGgoe1xuICAgICAgbWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB2YWx1ZTogdmFsdWU/LnZhbHVlIHx8ICcnLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGhWYWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IGxlbmd0aFZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmllbGRzRnJvbVJlZnMoZmllbGRzOiB7IFtrZXk6IHN0cmluZ106IFJlZjxTdHJpbmdJbnB1dCB8IG51bGw+IH0pIHtcbiAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZHMpIHtcbiAgICBpZiAoZmllbGRzW2tleV0udmFsdWU/LnJlcXVpcmVkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkc1trZXldLnZhbHVlPy52YWx1ZTtcbiAgICAgIHZhbGlkID0gdmFsaWQgJiYgISF2YWx1ZSAmJiB2YWx1ZS50cmltKCkgIT09ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yID0gZmllbGRzW2tleV0udmFsdWU/LmVycm9yO1xuICAgIHZhbGlkID0gdmFsaWQgJiYgIWVycm9yO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUxlbmd0aCA9ICh7XG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCA9IGZhbHNlLFxuICB2YWx1ZSxcbn06IFZhbGlkYXRpb25MZW5ndGgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG5cbiAgcmVzcG9uc2UudmFsaWQgPSBnZXRGaWVsZExlbmd0aElzVmFsaWQoe1xuICAgIG1heGxlbmd0aCxcbiAgICBtaW5sZW5ndGgsXG4gICAgcmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuXG4gIGlmIChyZXNwb25zZS52YWxpZCkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gIHJlc3BvbnNlLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VEZWZhdWx0O1xuXG4gIGlmIChtYXhsZW5ndGggJiYgbWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7bWlubGVuZ3RofSBhbmQgJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWF4bGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBtb3JlIHRoYW4gJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBsZXNzIHRoYW4gJHttaW5sZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlOiBzdHJpbmcsIHZhbGlkYXRvcnM6ICgodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdClbXSk6IFZhbGlkYXRpb25SZXN1bHQge1xuICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRvcih2YWx1ZSk7XG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xufVxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0U2VsZWN0LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RGaWVsZCB9IGZyb20gJ0AvdHlwZXMvRmllbGREZXByZWNhdGVkJztcbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24sIFNlbGVjdE9wdGlvbkdyb3VwIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUHJvcHMgZXh0ZW5kcyBTZWxlY3RGaWVsZCB7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfVxuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgcmVxdWlyZWQgPSByZWYocHJvcHMucmVxdWlyZWQpO1xuICBjb25zdCB2YWx1ZSA9IHJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcikpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcblxuICBjb25zdCBleHBhbmRPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpO1xuICAgIGlucHV0Py52YWx1ZT8uZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHsgZXJyb3IsIHZhbHVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXNlbGVjdCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogJycsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImV4cGFuZE9wdGlvbnNcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgICBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCJvcHRncm91cCBpbiBwcm9wcy5vcHRncm91cHNcIj5cbiAgICAgICAgICAgIDxvcHRncm91cFxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICA6bGFiZWw9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgdi1pZj1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIChvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L29wdGdyb3VwPlxuXG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICA6c2VsZWN0ZWQ9XCJ2YWx1ZSA9PT0gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgOnZhbHVlPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikubGFiZWwgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIG9wdGlvbnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRFWFRfSU5QVVRfVFlQRSA9IHtcbiAgREFURTogJ2RhdGUnLFxuICBEQVRFVElNRV9MT0NBTDogJ2RhdGV0aW1lLWxvY2FsJyxcbiAgRU1BSUw6ICdlbWFpbCcsXG4gIE1PTlRIOiAnbW9udGgnLFxuICBOVU1CRVI6ICdudW1iZXInLFxuICBQQVNTV09SRDogJ3Bhc3N3b3JkJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgVEVMOiAndGVsJyxcbiAgVEVYVDogJ3RleHQnLFxuICBUSU1FOiAndGltZScsXG4gIFVSTDogJ3VybCcsXG4gIFdFRUs6ICd3ZWVrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRleHRJbnB1dFR5cGUgPSAodHlwZW9mIFRFWFRfSU5QVVRfVFlQRSlba2V5b2YgdHlwZW9mIFRFWFRfSU5QVVRfVFlQRV07XG5cbmV4cG9ydCBjb25zdCBJTlBVVF9NT0RFID0ge1xuICBERUNJTUFMOiAnZGVjaW1hbCcsXG4gIEVNQUlMOiAnZW1haWwnLFxuICBOVU1FUklDOiAnbnVtZXJpYycsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFRFTDogJ3RlbCcsXG4gIFRFWFQ6ICd0ZXh0JyxcbiAgVVJMOiAndXJsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIElucHV0TW9kZSA9ICh0eXBlb2YgSU5QVVRfTU9ERSlba2V5b2YgdHlwZW9mIElOUFVUX01PREVdO1xuIiwiaW1wb3J0IHsgSU5QVVRfTU9ERSwgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuXG5pbXBvcnQgdHlwZSB7IElucHV0TW9kZSwgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcblxuZXhwb3J0IGNvbnN0IGdldFRleHRJbnB1dE1vZGUgPSAodHlwZTogVGV4dElucHV0VHlwZSwgaW5wdXRtb2RlPzogSW5wdXRNb2RlKTogSW5wdXRNb2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGlucHV0bW9kZSkgcmV0dXJuIGlucHV0bW9kZTtcblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5URUw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5URUw7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuU0VBUkNIOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuU0VBUkNIO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLk5VTUJFUjpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLk5VTUVSSUM7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuRU1BSUw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5FTUFJTDtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5VUkw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5VUkw7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdGV4dCBpbnB1dCBpbnRlbmRlZCB0byBiZSB1c2VkIGluIGZvcm1zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW5wdXR0ZXh0LS1kb2NzKSBmb3IgVGlkZUlucHV0VGV4dFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHsgRVJST1JfRElTUExBWSB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG4gIGltcG9ydCB7IGdldFRleHRJbnB1dE1vZGUgfSBmcm9tICdAL3V0aWxpdGllcy9mb3Jtcyc7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxULCBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IEZvcm1WYWx1ZVRyYW5zZm9ybWVyIH0gZnJvbSAnQC90eXBlcy9Gb3JtJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBJbnB1dE1vZGUsIFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgRXJyb3JEaXNwbGF5LCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBicm93c2VyIGF0dGVtcHRzIHRvIGF1dG9jb21wbGV0ZSAqL1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGlucHV0IGlzIGludGVyYWN0YWJsZSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBPdmVycmlkZXMgdGhlIGRlZmF1bHQgZXJyb3IgbWVzc2FnZSBhbmQgdmFsaWQgc3RhdGUgKi9cbiAgICBlcnJvcj86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgZXJyb3JzIGRpc3BsYXkgcHJpb3IgdG8gYmx1ciAqL1xuICAgIGVycm9yRGlzcGxheT86IEVycm9yRGlzcGxheTtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBjbGVhci9yZXNldCBidXR0b24gaXMgc2hvd24gZm9yIHRoZSBpbnB1dCAqL1xuICAgIGhhc0NsZWFyPzogYm9vbGVhbjtcblxuICAgIC8qKiBJY29uIGF0IGxlZnQgb2YgaW5wdXQgdmFsdWUgKi9cbiAgICBpY29uTGVhZGluZz86IEljb247XG5cbiAgICAvKiogVW5pcXVlIElEIGF0dHJpYnV0ZSAodG8gYmluZCBpbnB1dCBsYWJlbCB0byBpbnB1dCkgKi9cbiAgICBpbnB1dElkPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIGlucHV0IGVkaXRpbmcgZmVhdHVyZXMgb2ZmZXJlZCBieSB0aGUgYnJvd3NlciAqL1xuICAgIGlucHV0bW9kZT86IElucHV0TW9kZTtcblxuICAgIC8qKiBMYWJlbCBjb250ZW50ICovXG4gICAgbGFiZWw/OiBzdHJpbmc7XG5cbiAgICAvKiogQXBwbGllcyBhIG1heGltdW0gY2hhcmFjdGVyIGNvdW50IHRvIHRoZSBpbnB1dCAqL1xuICAgIG1heGxlbmd0aD86IG51bWJlcjtcblxuICAgIC8qKiBBcHBsaWVzIGEgbWluaW11bSBjaGFyYWN0ZXIgY291bnQgdG8gdGhlIGlucHV0ICovXG4gICAgbWlubGVuZ3RoPzogbnVtYmVyO1xuXG4gICAgLyoqIE5hbWUgYXR0cmlidXRlICovXG4gICAgbmFtZT86IHN0cmluZztcblxuICAgIC8qKiBJbnB1dCBwcmVmaXggKi9cbiAgICBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGlucHV0IGlzIHJlcXVpcmVkICovXG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIElucHV0IHN1ZmZpeCAoaS5lLiB1bml0cykgKi9cbiAgICBzdWZmaXg/OiBzdHJpbmc7XG5cbiAgICAvKiogRXhwbGFpbmVyIHRleHQgYmVuZWF0aCBpbnB1dCAqL1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgdGV4dCBmb3JtYXR0aW5nIGFwcGxpZWQgdG8gaW5wdXQgdmFsdWUgdXBvbiBpbnZva2luZyByZWxldmFudCBsaXN0ZW5lciBldmVudChzKSAqL1xuICAgIHRyYW5zZm9ybVZhbHVlPzogRm9ybVZhbHVlVHJhbnNmb3JtZXI7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgdHlwZShzKSBvZiB2YWx1ZXMgZXhwZWN0ZWQgYnkgdGhlIGlucHV0ICovXG4gICAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBtZXRob2QocykgdXNlZCB0byBjaGVjayBmb3IgdmFsaWQgaW5wdXQgdmFsdWUgdXBvbiBpbnZva2luZyByZWxldmFudCBsaXN0ZW5lciBldmVudChzKSAqL1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBoYXNDbGVhcjogZmFsc2UsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgaW5wdXRtb2RlOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdHJhbnNmb3JtVmFsdWU6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBURVhUX0lOUFVUX1RZUEUuVEVYVCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpbnB1dEVsZW1lbnQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBzaG93UGFzc3dvcmQgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpbnB1dE1vZGVBdHRyaWJ1dGUgPSBjb21wdXRlZDxJbnB1dE1vZGUgfCB1bmRlZmluZWQ+KCgpID0+IGdldFRleHRJbnB1dE1vZGUocHJvcHMudHlwZSwgcHJvcHMuaW5wdXRtb2RlKSk7XG4gIGNvbnN0IGlucHV0VHlwZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEICYmIHNob3dQYXNzd29yZC52YWx1ZSA9PT0gdHJ1ZSA/IFRFWFRfSU5QVVRfVFlQRS5URVhUIDogcHJvcHMudHlwZVxuICApO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PSBudWxsIHx8IG1vZGVsVmFsdWUudmFsdWUgPT09ICcnKTtcbiAgY29uc3Qgc2hvdWxkU2hvd0NsZWFyQnV0dG9uID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gcHJvcHMuaGFzQ2xlYXIgJiYgbW9kZWxWYWx1ZS52YWx1ZSAmJiBwcm9wcy50eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcbiAgKTtcbiAgY29uc3Qgc2hvdWxkU2hvd1Bhc3N3b3JkQnV0dG9uID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gKHNob3dFcnJvci52YWx1ZSAmJiBlcnJvclJlZi52YWx1ZS5tZXNzYWdlKSB8fCBwcm9wcy5zdXBwb3J0aW5nVGV4dCk7XG5cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgbW9kZWxWYWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0RWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWVsZENsaWNrID0gKCkgPT4ge1xuICAgIGlucHV0RWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBwcmV2ZW50SW5wdXRGb2N1c0xvc3NPbk1vdXNlZG93biA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFoYXNGb2N1cy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChlLnRhcmdldCAhPT0gaW5wdXRFbGVtZW50LnZhbHVlKSBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgIFttb2RlbFZhbHVlLCAoKSA9PiBwcm9wcy50cmFuc2Zvcm1WYWx1ZV0sXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKCFwcm9wcy50cmFuc2Zvcm1WYWx1ZSkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBkaWdpdHMgPSBtb2RlbFZhbHVlLnZhbHVlPy5tYXRjaCgvXFxkL2cpPy5qb2luKCcnKSB8fCB1bmRlZmluZWQ7XG4gICAgICBtb2RlbFZhbHVlLnZhbHVlID0gZGlnaXRzID8gcHJvcHMudHJhbnNmb3JtVmFsdWUoZGlnaXRzKSA6ICcnO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtdGV4dCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBzaG93RXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWZpZWxkJyxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgc2hvdWxkU2hvd0NsZWFyQnV0dG9uID8gW0NTUy5QQURESU5HLlJJR0hULkhBTEYsIENTUy5QQURESU5HLkxFRlQuT05FXSA6IFtDU1MuUEFERElORy5YLk9ORV0sXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlRmllbGRDbGlja1wiXG4gICAgICBAbW91c2Vkb3duPVwicHJldmVudElucHV0Rm9jdXNMb3NzT25Nb3VzZWRvd25cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtcHJlZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJwcmVmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJlZml4IH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1sYWJlbCcsXG4gICAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICA6YXV0b2NvbXBsZXRlPVwiYXV0b2NvbXBsZXRlID8gJ29uJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdXCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIDppbnB1dG1vZGU9XCJpbnB1dE1vZGVBdHRyaWJ1dGVcIlxuICAgICAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZWY9XCJpbnB1dEVsZW1lbnRcIlxuICAgICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgOnR5cGU9XCJpbnB1dFR5cGVcIlxuICAgICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtc3VmZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJzdWZmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc3VmZml4IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xlYXJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdi1pZj1cInNob3VsZFNob3dDbGVhckJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cInNob3dQYXNzd29yZCA9ICFzaG93UGFzc3dvcmRcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdi1pZj1cInNob3VsZFNob3dQYXNzd29yZEJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5WSVNJQklMSVRZXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9sYWJlbD5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQ6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQgaW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFRleHQudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBGb3JtVmFsdWVUcmFuc2Zvcm1lciB9IGZyb20gJ0AvdHlwZXMvRm9ybURlcHJlY2F0ZWQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGhhc0NsZWFyPzogYm9vbGVhbjtcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdHJhbnNmb3JtVmFsdWU/OiBGb3JtVmFsdWVUcmFuc2Zvcm1lcjtcbiAgICB0eXBlPzogVGV4dElucHV0VHlwZTtcbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhdXRvY29tcGxldGU6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaGFzQ2xlYXI6IGZhbHNlLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHRyYW5zZm9ybVZhbHVlOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVEVYVF9JTlBVVF9UWVBFLlRFWFQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHNob3dQYXNzd29yZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzQ2xlYXIgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5oYXNDbGVhciAmJiB2YWx1ZS52YWx1ZSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuICBjb25zdCBpbnB1dFR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCAmJiBzaG93UGFzc3dvcmQudmFsdWUgPT09IHRydWUgPyBURVhUX0lOUFVUX1RZUEUuVEVYVCA6IHByb3BzLnR5cGVcbiAgKTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBoYW5kbGVWYWxpZGF0aW9uKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXQgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLnRyYW5zZm9ybVZhbHVlKSB7XG4gICAgICBjb25zdCBkaWdpdHMgPSB2YWx1ZS52YWx1ZT8ubWF0Y2goL1xcZC9nKT8uam9pbignJykgfHwgdW5kZWZpbmVkO1xuXG4gICAgICB2YWx1ZS52YWx1ZSA9IGRpZ2l0cyA/IHByb3BzLnRyYW5zZm9ybVZhbHVlKGRpZ2l0cykgOiAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVZhbHVlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHVwZGF0ZVZhbHVlLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC10ZXh0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1maWVsZCcsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBoYXNDbGVhciA/IFtDU1MuUEFERElORy5SSUdIVC5IQUxGLCBDU1MuUEFERElORy5MRUZULk9ORV0gOiBbQ1NTLlBBRERJTkcuWC5PTkVdLFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtcHJlZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByZWZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcmVmaXggfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWxhYmVsJyxcbiAgICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmF1dG9jb21wbGV0ZT1cImF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIDp0eXBlPVwiaW5wdXRUeXBlXCJcbiAgICAgICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIEBpbnB1dD1cImhhbmRsZUlucHV0XCJcbiAgICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1zdWZmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwic3VmZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHN1ZmZpeCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsZWFyXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHYtaWY9XCJoYXNDbGVhciAmJiB0eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHYtaWY9XCJ0eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uVklTSUJJTElUWVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0IGlucHV0IHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHRleHRhcmVhIGlucHV0IGludGVuZGVkIHRvIGJlIHVzZWQgaW4gZm9ybXMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbnB1dHRleHRhcmVhLS1kb2NzKSBmb3IgVGlkZUlucHV0VGV4dGFyZWFcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBFcnJvckRpc3BsYXksIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2UgYW5kIHZhbGlkIHN0YXRlICovXG4gICAgZXJyb3I/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGVycm9ycyBkaXNwbGF5IHByaW9yIHRvIGJsdXIgKi9cbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG5cbiAgICAvKiogVW5pcXVlIElEIGF0dHJpYnV0ZSAodG8gYmluZCBpbnB1dCBsYWJlbCB0byBpbnB1dCkgKi9cbiAgICBpbnB1dElkPzogc3RyaW5nO1xuXG4gICAgLyoqIExhYmVsIGNvbnRlbnQgKi9cbiAgICBsYWJlbD86IHN0cmluZztcblxuICAgIC8qKiBBcHBsaWVzIGEgbWF4aW11bSBjaGFyYWN0ZXIgY291bnQgdG8gdGhlIGlucHV0ICovXG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIEFwcGxpZXMgYSBtaW5pbXVtIGNoYXJhY3RlciBjb3VudCB0byB0aGUgaW5wdXQgKi9cbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogTmFtZSBhdHRyaWJ1dGUgKi9cbiAgICBuYW1lPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBpbnB1dCBpcyByZXF1aXJlZCAqL1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSBoZWlnaHQgb2YgdGhlIGlucHV0ICovXG4gICAgcm93cz86IG51bWJlcjtcblxuICAgIC8qKiBFeHBsYWluZXIgdGV4dCBiZW5lYXRoIGlucHV0ICovXG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBtZXRob2QocykgdXNlZCB0byBjaGVjayBmb3IgdmFsaWQgaW5wdXQgdmFsdWUgdXBvbiBpbnZva2luZyByZWxldmFudCBsaXN0ZW5lciBldmVudChzKSAqL1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHJvd3M6IDgsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCB0ZXh0YXJlYUVsZW1lbnQgPSByZWY8SFRNTFRleHRBcmVhRWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiAoc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpIHx8IHByb3BzLnN1cHBvcnRpbmdUZXh0KTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWVsZENsaWNrID0gKCkgPT4ge1xuICAgIHRleHRhcmVhRWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBwcmV2ZW50VGV4dGFyZWFGb2N1c0xvc3NPbk1vdXNlZG93biA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFoYXNGb2N1cy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChlLnRhcmdldCAhPT0gdGV4dGFyZWFFbGVtZW50LnZhbHVlKSBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHRhcmVhJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBzaG93RXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUZpZWxkQ2xpY2tcIlxuICAgICAgQG1vdXNlZG93bj1cInByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1sYWJlbCcsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0ssIENTUy5GT05ULlJPTEUuQk9EWV8xLCBDU1MuUEFERElORy5YLk9ORSwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICByZWY9XCJ0ZXh0YXJlYUVsZW1lbnRcIlxuICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgIDpyb3dzPVwicm93c1wiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6aXMtZXJyb3I9XCJzaG93RXJyb3JcIlxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEgdGV4dGFyZWEge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRUZXh0YXJlYS52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICByb3dzPzogbnVtYmVyO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZChcbiAgICAoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKVxuICApO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycgfHwgdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIXZhbHVlLnZhbHVlKSB7XG4gICAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIHJldHVybiBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHtcbiAgICBlcnJvcixcbiAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0YXJlYScsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgaGFzRXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLkxFRlQuT05FLFxuICAgICAgICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwnLFxuICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0ssIENTUy5XSURUSC5GVUxMLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICA6cm93cz1cInJvd3NcIlxuICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgZ2VuZXJpYyBtZW51IGl0ZW0gaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBuYXZpZ2F0aW9uIG1lbnVzIG9yIGRyb3Bkb3ducy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZW1lbnVpdGVtLS1kb2NzKSBmb3IgVGlkZU1lbnVJdGVtXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBUaGUgZWxlbWVudCB0byByZW5kZXIgdGhlIHJvb3QgZWxlbWVudCBhcy4gKi9cbiAgICBlbGVtZW50PzogRWxlbWVudDtcblxuICAgIC8qKiBUaGUgaHJlZiBhdHRyaWJ1dGUgdG8gYXBwbHkgd2hlbiB0aGUgZWxlbWVudCBpcyBhIGxpbmsuICovXG4gICAgaHJlZj86IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRvIG9wZW4gbGluayBpbiBhIG5ldyB0YWIuICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIEljb24gdG8gc2hvdyBhZnRlciB0aGUgbGFiZWwuICovXG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcblxuICAgIC8qKiBUaGUgbGFiZWwgdG8gYmUgZGlzcGxheWVkLiAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uVHJhaWxpbmc6IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLW1lbnUtaXRlbScsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuWkVSTyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5VTkRFUkxJTkUuUkVTVC5PRkYsXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICBdXCJcbiAgICA6aHJlZj1cImhyZWZcIlxuICAgIDp0YXJnZXQ9XCJpc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwiZWxlbWVudFwiXG4gID5cbiAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cblxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uTEVGVC5BVVRPXVwiXG4gICAgICA6aWNvbj1cImljb25UcmFpbGluZ1wiXG4gICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgdi1pZj1cImljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1tZW51LWl0ZW0ge1xuICAgIGhlaWdodDogNDBweDtcbiAgfVxuXG4gIC50aWRlLW1lbnUtaXRlbTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG48L3N0eWxlPlxuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgQlJFQUtQT0lOVCA9IHtcbiAgU006ICdzbScsXG4gIE1EOiAnbWQnLFxuICBMRzogJ2xnJyxcbiAgWEw6ICd4bCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgTUVESUEgPSB7XG4gIFNNOiA3NjgsXG4gIE1EOiA5OTIsXG4gIExHOiAxMjMyLFxuICBYTDogMTkyMCxcbn07XG5cbmV4cG9ydCB0eXBlIEJyZWFrcG9pbnQgPSAodHlwZW9mIEJSRUFLUE9JTlQpW2tleW9mIHR5cGVvZiBCUkVBS1BPSU5UXTtcbmV4cG9ydCB0eXBlIE1lZGlhID0gKHR5cGVvZiBNRURJQSlba2V5b2YgdHlwZW9mIE1FRElBXTtcbiIsImltcG9ydCB7IG5leHRUaWNrIH0gZnJvbSAndnVlJztcblxuLyoqXG4gKiBEaXJlY3RseSBtb2RpZmllcyB0aGUgYDxib2R5PmAgZWxlbWVudCB0byBhcHBseSBvciByZW1vdmUgc2Nyb2xsIGxvY2suXG4gKiBXaGVuIGBmYWxzZWAgaXMgcHJvdmlkZWQsIGl0IG9ubHkgdW5sb2NrcyBzY3JvbGwgaWYgdGhlcmUgYXJlIG5vIG9wZW5cbiAqIEhUTUwgZGlhbG9nIGVsZW1lbnRzLlxuICovXG5leHBvcnQgY29uc3Qgc2V0U2Nyb2xsTG9jayA9IGFzeW5jIChpc0xvY2tlZDogYm9vbGVhbikgPT4ge1xuICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAvLyBjb25zdCBCT0RZX0xPQ0tfQ0xBU1MgPSAnYm9keS1zY3JvbGwtbG9jayc7XG5cbiAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XG5cbiAgaWYgKGlzTG9ja2VkKSB7XG4gICAgaWYgKCFib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kpIHtcbiAgICAgIGNvbnN0IHNjcm9sbFkgPSB3aW5kb3cuc2Nyb2xsWTtcblxuICAgICAgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZID0gc2Nyb2xsWS50b1N0cmluZygpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYXZlZC1zY3JvbGwteScsIGAke3Njcm9sbFl9cHhgKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ2luc2V0JywgJzAnKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ21hcmdpbi10b3AnLCBgY2FsYygwcHggLSB2YXIoLS1zYXZlZC1zY3JvbGwteSwgMHB4KSlgKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93LXknLCAnc2Nyb2xsJyk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsICdmaXhlZCcpO1xuXG4gICAgICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAgICAgLy8gYm9keS5jbGFzc0xpc3QuYWRkKEJPRFlfTE9DS19DTEFTUyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGF3YWl0IG5leHRUaWNrKCk7XG4gICAgaWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaWFsb2dbb3Blbl0nKSkge1xuICAgICAgY29uc3Qgc2F2ZWRTY3JvbGxZID0gcGFyc2VJbnQoYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZIHx8ICcwJyk7XG5cbiAgICAgIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gICAgICAvLyBib2R5LmNsYXNzTGlzdC5yZW1vdmUoQk9EWV9MT0NLX0NMQVNTKTtcblxuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnaW5zZXQnKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ21hcmdpbi10b3AnKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ292ZXJmbG93LXknKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3Bvc2l0aW9uJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15Jyk7XG5cbiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICAgIGJlaGF2aW9yOiAnYXV0bycsXG4gICAgICAgIHRvcDogc2F2ZWRTY3JvbGxZLFxuICAgICAgfSk7XG5cbiAgICAgIGRlbGV0ZSBib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1k7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgVE9QX0xBWUVSX0lEID0gJ3RpZGUtdG9wLWxheWVyJztcblxuZXhwb3J0IGNvbnN0IGluaXRGYXV4VG9wTGF5ZXIgPSAoKSA9PiB7XG4gIGxldCB0b3BMYXllciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFRPUF9MQVlFUl9JRCk7XG4gIGlmICghdG9wTGF5ZXIpIHtcbiAgICB0b3BMYXllciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRvcExheWVyLmlkID0gVE9QX0xBWUVSX0lEO1xuICAgIHRvcExheWVyLnNldEF0dHJpYnV0ZSgnZGF0YS1jc3Mtc2NvcGUnLCAnJyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b3BMYXllcik7XG4gIH1cbiAgdG9wTGF5ZXIuc3R5bGUuaXNvbGF0aW9uID0gJ2lzb2xhdGUnO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgbW9kYWwgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9yIG9wdGlvbnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVtb2RhbC0tZG9jcykgZm9yIFRpZGVNb2RhbFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgbmV4dFRpY2ssIG9uQmVmb3JlTW91bnQsIG9uQmVmb3JlVW5tb3VudCwgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJSRUFLUE9JTlQgfSBmcm9tICdAL3R5cGVzL0JyZWFrcG9pbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIsIHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqXG4gICAgICogQ2FsbGVkIGJlZm9yZSB0aGUgbW9kYWwgY2xvc2VzLlxuICAgICAqXG4gICAgICogUmV0dXJuIGBmYWxzZWAgdG8gY2FuY2VsIHRoZSBjbG9zZSBldmVudC5cbiAgICAgKi9cbiAgICBiZWZvcmVDbG9zZT86ICgpID0+IHZvaWQgfCBib29sZWFuIHwgUHJvbWlzZTx2b2lkIHwgYm9vbGVhbj47XG4gICAgLyoqIENvbnRyb2xzIGRpc3BsYXkgb2YgdGhlIGJhY2sgYnV0dG9uLiAqL1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gICAgLyoqIENvbnRyb2xzIHdoZXRoZXIgdGhlIG1vZGFsIGNhbiBiZSBkaXNtaXNzZWQgd2l0aCBhIGNsb3NlIGJ1dHRvbiBvciBvdGhlciBnZXN0dXJlcy4gKi9cbiAgICBpc0Rpc21pc3NpYmxlPzogYm9vbGVhbjtcbiAgICAvKiogVGhlIHRpdGxlIHRvIGRpc3BsYXkgaW4gdGhlIG1vZGFsJ3MgaGVhZGVyLiAqL1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIC8qKiBDdXN0b20gb3ZlcnJpZGUgdG8gdGhlIG1vZGFsJ3Mgd2lkdGggY29uc3RyYWludC4gSW5jbHVkZSB1bml0cy4gKi9cbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGJlZm9yZUNsb3NlOiB1bmRlZmluZWQsXG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kYWxDb250ZW50OiBSZWY8SFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG4gIGNvbnN0IG1vZGFsRGlhbG9nOiBSZWY8SFRNTERpYWxvZ0VsZW1lbnQgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG5cbiAgY29uc3QgaXNPcGVuID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBtb2RhbERpYWxvZy52YWx1ZT8uc2hvd01vZGFsKCk7XG4gICAgc2V0U2Nyb2xsTG9jayh0cnVlKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgbW9kYWxEaWFsb2cudmFsdWU/LmNsb3NlKCk7XG4gICAgc2V0U2Nyb2xsTG9jayhmYWxzZSk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsQ29udGVudFRvVG9wID0gKCkgPT4ge1xuICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgIGlmICghbW9kYWxDb250ZW50LnZhbHVlKSByZXR1cm47XG4gICAgICBtb2RhbENvbnRlbnQudmFsdWUuc2Nyb2xsVG9wID0gMDtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBjbG9zZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAocHJvcHMuYmVmb3JlQ2xvc2UpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb3BzLmJlZm9yZUNsb3NlKCk7XG4gICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSkgcmV0dXJuO1xuICAgIH1cblxuICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzRGlzbWlzc2libGUpIGNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXNjYXBlS2V5ZG93biA9IChlOiBFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAocHJvcHMuaXNEaXNtaXNzaWJsZSkgY2xvc2UoKTtcbiAgfTtcblxuICB3YXRjaChpc09wZW4sICgpID0+IHtcbiAgICBpZiAoIW1vZGFsRGlhbG9nLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICAgIHNjcm9sbENvbnRlbnRUb1RvcCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIG9uQmVmb3JlTW91bnQoKCkgPT4ge1xuICAgIGluaXRGYXV4VG9wTGF5ZXIoKTtcbiAgfSk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAoaXNPcGVuLnZhbHVlKSB7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgIH1cbiAgfSk7XG5cbiAgb25CZWZvcmVVbm1vdW50KCgpID0+IHtcbiAgICBpZiAoaXNPcGVuLnZhbHVlKSB7XG4gICAgICBpc09wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSgpO1xuICAgIH1cbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8VGVsZXBvcnQgOnRvPVwiYCMke1RPUF9MQVlFUl9JRH1gXCI+XG4gICAgPGRpYWxvZ1xuICAgICAgOmNsYXNzPVwiWyd0aWRlLW1vZGFsJywgQ1NTLkJHLklOSVRJQUwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLldJRFRILkZVTEwsIENTUy5PVkVSRkxPVy5YWS5ISURERU5dXCJcbiAgICAgIHJlZj1cIm1vZGFsRGlhbG9nXCJcbiAgICAgIDpzdHlsZT1cInsgJy0tbW9kYWwtd2lkdGgnOiB3aWR0aCB9XCJcbiAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgICBAY2xvc2UucHJldmVudFxuICAgICAgQGtleWRvd24uZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5ZG93blwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtbW9kYWwtYm9keScsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5PTkUsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gICAgICAgICAgQ1NTLlNIQURPVy5UT1AsXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgQ1NTLldJRFRILk1BWF9GVUxMLFxuICAgICAgICAgIENTUy53aXRoQnJlYWtwb2ludChbQ1NTLlNIQURPVy5CT1RUT01dLCBCUkVBS1BPSU5ULlNNKSxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxoZWFkZXJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1tb2RhbC1oZWFkZXInLFxuICAgICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICAgIENTUy5CT1JERVIuQk9UVE9NLk9ORSxcbiAgICAgICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlkuT05FLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgICAgQ1NTLlpfSU5ERVguT05FLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiZW1pdCgnYmFjaycpXCJcbiAgICAgICAgICAgIHRpdGxlPVwiQmFja1wiXG4gICAgICAgICAgICB2LWlmPVwiaXNCYWNrQnV0dG9uXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgICAgdi10ZXh0PVwidGl0bGVcIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImNsb3NlXCJcbiAgICAgICAgICAgIHYtaWY9XCJpc0Rpc21pc3NpYmxlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtbW9kYWwtY29udGVudCcsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlkuQVVUTyxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlkuVFdPLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgcmVmPVwibW9kYWxDb250ZW50XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxmb290ZXJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1tb2RhbC1mb290ZXInLFxuICAgICAgICAgICAgQ1NTLkFYSVMxLkVORCxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgICBDU1MuR0FQLlRXTyxcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlkuT05FLFxuICAgICAgICAgICAgQ1NTLlNIQURPVy5UT1AsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cIiRzbG90cy5mb290ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiIC8+XG4gICAgICAgIDwvZm9vdGVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaWFsb2c+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1tb2RhbCB7XG4gICAgLS1tb2RhbC1wYWRkaW5nLXg6IDIwcHg7XG4gICAgbWF4LXdpZHRoOiB1bnNldDtcbiAgICBtYXgtaGVpZ2h0OiB1bnNldDtcbiAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB9XG4gIC50aWRlLW1vZGFsW29wZW5dIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gIH1cbiAgLnRpZGUtbW9kYWw6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gIH1cbiAgQHN0YXJ0aW5nLXN0eWxlIHtcbiAgICAudGlkZS1tb2RhbFtvcGVuXSB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIH1cbiAgICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gICAgfVxuICB9XG4gIC50aWRlLW1vZGFsLWJvZHkge1xuICAgIHdpZHRoOiB2YXIoLS1tb2RhbC13aWR0aCwgNTc2cHgpO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIHZhcigtLXRpZGUtc3BhY2luZy0yKSk7XG4gIH1cblxuICAudGlkZS1tb2RhbC1oZWFkZXIsXG4gIC50aWRlLW1vZGFsLWZvb3RlciB7XG4gICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLW1vZGFsLXBhZGRpbmcteCk7XG4gIH1cbiAgLnRpZGUtbW9kYWwtY29udGVudCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpIHZhcigtLXRpZGUtc2FmZS1mcikgdmFyKC0tbW9kYWwtcGFkZGluZy14KTtcbiAgfVxuICA6d2hlcmUoLnRpZGUtbW9kYWwtY29udGVudCk6ZGVlcCg+IDp3aGVyZSgqKSkge1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICB9XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgfVxuICB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC50aWRlLW1vZGFsIHtcbiAgICAgIC0tbW9kYWwtcGFkZGluZy14OiB2YXIoLS10aWRlLXNwYWNpbmctMik7XG4gICAgfVxuICAgIC50aWRlLW1vZGFsLWJvZHkge1xuICAgICAgbWF4LWhlaWdodDogODUlO1xuICAgICAgYm90dG9tOiBpbml0aWFsO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlQnV0dG9uUGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvblBhZ2luYXRpb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIHBhZ2VUb3RhbDogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgY3VycmVudEluZGV4ID0gZGVmaW5lTW9kZWw8bnVtYmVyPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHBhZ2luYXRpb25CdXR0b25zID0gY29tcHV0ZWQoKCkgPT4gbmV3IEFycmF5KHByb3BzLnBhZ2VUb3RhbCkuZmlsbCgnJykubWFwKChlbXB0eSwgaW5kZXgpID0+IGluZGV4ICsgMSkpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjdXJyZW50SW5kZXgudmFsdWUgPSBpbmRleDtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVQcmV2aW91c0NsaWNrID0gKCkgPT4ge1xuICAgIGN1cnJlbnRJbmRleC52YWx1ZS0tO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU5leHRDbGljayA9ICgpID0+IHtcbiAgICBjdXJyZW50SW5kZXgudmFsdWUrKztcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uXG4gICAgOmNsYXNzPVwiWyd0aWRlLXBhZ2luYXRpb24nLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiXG4gID5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpkaXNhYmxlZD1cImN1cnJlbnRJbmRleCA8PSAxXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVQcmV2aW91c0NsaWNrXCJcbiAgICAvPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgICAgPGxpXG4gICAgICAgIDprZXk9XCJwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgdi1mb3I9XCJwYWdpbmF0aW9uQnV0dG9uIGluIHBhZ2luYXRpb25CdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25QYWdpbmF0aW9uXG4gICAgICAgICAgOmRpc2FibGVkPVwiY3VycmVudEluZGV4ID09PSBwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgICA6bGFiZWw9XCJwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhwYWdpbmF0aW9uQnV0dG9uKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpkaXNhYmxlZD1cImN1cnJlbnRJbmRleCA+PSBwYWdpbmF0aW9uQnV0dG9uc1twYWdpbmF0aW9uQnV0dG9ucy5sZW5ndGggLSAxXVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZU5leHRDbGlja1wiXG4gICAgLz5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cbiIsIi8qKlxuICogQ3VzdG9tIHBvc2l0aW9uaW5nIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3ZpcnR1YWwtZWxlbWVudHNcbiAqL1xuXG5jb25zdCBzaWRlcyA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J107XG5jb25zdCBhbGlnbm1lbnRzID0gWydzdGFydCcsICdlbmQnXTtcbmNvbnN0IHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovc2lkZXMucmVkdWNlKChhY2MsIHNpZGUpID0+IGFjYy5jb25jYXQoc2lkZSwgc2lkZSArIFwiLVwiICsgYWxpZ25tZW50c1swXSwgc2lkZSArIFwiLVwiICsgYWxpZ25tZW50c1sxXSksIFtdKTtcbmNvbnN0IG1pbiA9IE1hdGgubWluO1xuY29uc3QgbWF4ID0gTWF0aC5tYXg7XG5jb25zdCByb3VuZCA9IE1hdGgucm91bmQ7XG5jb25zdCBmbG9vciA9IE1hdGguZmxvb3I7XG5jb25zdCBjcmVhdGVDb29yZHMgPSB2ID0+ICh7XG4gIHg6IHYsXG4gIHk6IHZcbn0pO1xuY29uc3Qgb3Bwb3NpdGVTaWRlTWFwID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuY29uc3Qgb3Bwb3NpdGVBbGlnbm1lbnRNYXAgPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZnVuY3Rpb24gY2xhbXAoc3RhcnQsIHZhbHVlLCBlbmQpIHtcbiAgcmV0dXJuIG1heChzdGFydCwgbWluKHZhbHVlLCBlbmQpKTtcbn1cbmZ1bmN0aW9uIGV2YWx1YXRlKHZhbHVlLCBwYXJhbSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocGFyYW0pIDogdmFsdWU7XG59XG5mdW5jdGlvbiBnZXRTaWRlKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQXhpcyhheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneCcgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBeGlzTGVuZ3RoKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbn1cbmZ1bmN0aW9uIGdldFNpZGVBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5jbHVkZXMoZ2V0U2lkZShwbGFjZW1lbnQpKSA/ICd5JyA6ICd4Jztcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KSB7XG4gIHJldHVybiBnZXRPcHBvc2l0ZUF4aXMoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSk7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpIHtcbiAgaWYgKHJ0bCA9PT0gdm9pZCAwKSB7XG4gICAgcnRsID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYWxpZ25tZW50QXhpcyk7XG4gIGxldCBtYWluQWxpZ25tZW50U2lkZSA9IGFsaWdubWVudEF4aXMgPT09ICd4JyA/IGFsaWdubWVudCA9PT0gKHJ0bCA/ICdlbmQnIDogJ3N0YXJ0JykgPyAncmlnaHQnIDogJ2xlZnQnIDogYWxpZ25tZW50ID09PSAnc3RhcnQnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgaWYgKHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdID4gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXSkge1xuICAgIG1haW5BbGlnbm1lbnRTaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpO1xuICB9XG4gIHJldHVybiBbbWFpbkFsaWdubWVudFNpZGUsIGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKV07XG59XG5mdW5jdGlvbiBnZXRFeHBhbmRlZFBsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGNvbnN0IG9wcG9zaXRlUGxhY2VtZW50ID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgcmV0dXJuIFtnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpLCBvcHBvc2l0ZVBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQob3Bwb3NpdGVQbGFjZW1lbnQpXTtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBhbGlnbm1lbnQgPT4gb3Bwb3NpdGVBbGlnbm1lbnRNYXBbYWxpZ25tZW50XSk7XG59XG5mdW5jdGlvbiBnZXRTaWRlTGlzdChzaWRlLCBpc1N0YXJ0LCBydGwpIHtcbiAgY29uc3QgbHIgPSBbJ2xlZnQnLCAncmlnaHQnXTtcbiAgY29uc3QgcmwgPSBbJ3JpZ2h0JywgJ2xlZnQnXTtcbiAgY29uc3QgdGIgPSBbJ3RvcCcsICdib3R0b20nXTtcbiAgY29uc3QgYnQgPSBbJ2JvdHRvbScsICd0b3AnXTtcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgaWYgKHJ0bCkgcmV0dXJuIGlzU3RhcnQgPyBybCA6IGxyO1xuICAgICAgcmV0dXJuIGlzU3RhcnQgPyBsciA6IHJsO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gdGIgOiBidDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFtdO1xuICB9XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKHBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZGlyZWN0aW9uLCBydGwpIHtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGxldCBsaXN0ID0gZ2V0U2lkZUxpc3QoZ2V0U2lkZShwbGFjZW1lbnQpLCBkaXJlY3Rpb24gPT09ICdzdGFydCcsIHJ0bCk7XG4gIGlmIChhbGlnbm1lbnQpIHtcbiAgICBsaXN0ID0gbGlzdC5tYXAoc2lkZSA9PiBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnQpO1xuICAgIGlmIChmbGlwQWxpZ25tZW50KSB7XG4gICAgICBsaXN0ID0gbGlzdC5jb25jYXQobGlzdC5tYXAoZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpc3Q7XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgc2lkZSA9PiBvcHBvc2l0ZVNpZGVNYXBbc2lkZV0pO1xufVxuZnVuY3Rpb24gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIC4uLnBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4gdHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSA6IHtcbiAgICB0b3A6IHBhZGRpbmcsXG4gICAgcmlnaHQ6IHBhZGRpbmcsXG4gICAgYm90dG9tOiBwYWRkaW5nLFxuICAgIGxlZnQ6IHBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9ID0gcmVjdDtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgdG9wOiB5LFxuICAgIGxlZnQ6IHgsXG4gICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICBib3R0b206IHkgKyBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmV4cG9ydCB7IGFsaWdubWVudHMsIGNsYW1wLCBjcmVhdGVDb29yZHMsIGV2YWx1YXRlLCBleHBhbmRQYWRkaW5nT2JqZWN0LCBmbG9vciwgZ2V0QWxpZ25tZW50LCBnZXRBbGlnbm1lbnRBeGlzLCBnZXRBbGlnbm1lbnRTaWRlcywgZ2V0QXhpc0xlbmd0aCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBeGlzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0UGFkZGluZ09iamVjdCwgZ2V0U2lkZSwgZ2V0U2lkZUF4aXMsIG1heCwgbWluLCBwbGFjZW1lbnRzLCByZWN0VG9DbGllbnRSZWN0LCByb3VuZCwgc2lkZXMgfTtcbiIsImltcG9ydCB7IGdldFNpZGVBeGlzLCBnZXRBbGlnbm1lbnRBeGlzLCBnZXRBeGlzTGVuZ3RoLCBnZXRTaWRlLCBnZXRBbGlnbm1lbnQsIGV2YWx1YXRlLCBnZXRQYWRkaW5nT2JqZWN0LCByZWN0VG9DbGllbnRSZWN0LCBtaW4sIGNsYW1wLCBwbGFjZW1lbnRzLCBnZXRBbGlnbm1lbnRTaWRlcywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlUGxhY2VtZW50LCBnZXRFeHBhbmRlZFBsYWNlbWVudHMsIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMsIHNpZGVzLCBtYXgsIGdldE9wcG9zaXRlQXhpcyB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5leHBvcnQgeyByZWN0VG9DbGllbnRSZWN0IH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzJztcblxuZnVuY3Rpb24gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoX3JlZiwgcGxhY2VtZW50LCBydGwpIHtcbiAgbGV0IHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmdcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IHNpZGVBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50QXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25MZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gc2lkZUF4aXMgPT09ICd5JztcbiAgY29uc3QgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGZsb2F0aW5nLndpZHRoIC8gMjtcbiAgY29uc3QgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBmbG9hdGluZy5oZWlnaHQgLyAyO1xuICBjb25zdCBjb21tb25BbGlnbiA9IHJlZmVyZW5jZVthbGlnbkxlbmd0aF0gLyAyIC0gZmxvYXRpbmdbYWxpZ25MZW5ndGhdIC8gMjtcbiAgbGV0IGNvb3JkcztcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBmbG9hdGluZy5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54IC0gZmxvYXRpbmcud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnlcbiAgICAgIH07XG4gIH1cbiAgc3dpdGNoIChnZXRBbGlnbm1lbnQocGxhY2VtZW50KSkge1xuICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSAtPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdlbmQnOlxuICAgICAgY29vcmRzW2FsaWdubWVudEF4aXNdICs9IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBjb29yZHM7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIGdpdmVuIHJlZmVyZW5jZSBlbGVtZW50LlxuICpcbiAqIFRoaXMgZXhwb3J0IGRvZXMgbm90IGhhdmUgYW55IGBwbGF0Zm9ybWAgaW50ZXJmYWNlIGxvZ2ljLiBZb3Ugd2lsbCBuZWVkIHRvXG4gKiB3cml0ZSBvbmUgZm9yIHRoZSBwbGF0Zm9ybSB5b3UgYXJlIHVzaW5nIEZsb2F0aW5nIFVJIHdpdGguXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IGFzeW5jIChyZWZlcmVuY2UsIGZsb2F0aW5nLCBjb25maWcpID0+IHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICBtaWRkbGV3YXJlID0gW10sXG4gICAgcGxhdGZvcm1cbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgdmFsaWRNaWRkbGV3YXJlID0gbWlkZGxld2FyZS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZmxvYXRpbmcpKTtcbiAgbGV0IHJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmcsXG4gICAgc3RyYXRlZ3lcbiAgfSk7XG4gIGxldCB7XG4gICAgeCxcbiAgICB5XG4gIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgcGxhY2VtZW50LCBydGwpO1xuICBsZXQgc3RhdGVmdWxQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gIGxldCBtaWRkbGV3YXJlRGF0YSA9IHt9O1xuICBsZXQgcmVzZXRDb3VudCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsaWRNaWRkbGV3YXJlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIGZuXG4gICAgfSA9IHZhbGlkTWlkZGxld2FyZVtpXTtcbiAgICBjb25zdCB7XG4gICAgICB4OiBuZXh0WCxcbiAgICAgIHk6IG5leHRZLFxuICAgICAgZGF0YSxcbiAgICAgIHJlc2V0XG4gICAgfSA9IGF3YWl0IGZuKHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgaW5pdGlhbFBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5LFxuICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICBmbG9hdGluZ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHggPSBuZXh0WCAhPSBudWxsID8gbmV4dFggOiB4O1xuICAgIHkgPSBuZXh0WSAhPSBudWxsID8gbmV4dFkgOiB5O1xuICAgIG1pZGRsZXdhcmVEYXRhID0ge1xuICAgICAgLi4ubWlkZGxld2FyZURhdGEsXG4gICAgICBbbmFtZV06IHtcbiAgICAgICAgLi4ubWlkZGxld2FyZURhdGFbbmFtZV0sXG4gICAgICAgIC4uLmRhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChyZXNldCAmJiByZXNldENvdW50IDw9IDUwKSB7XG4gICAgICByZXNldENvdW50Kys7XG4gICAgICBpZiAodHlwZW9mIHJlc2V0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAocmVzZXQucGxhY2VtZW50KSB7XG4gICAgICAgICAgc3RhdGVmdWxQbGFjZW1lbnQgPSByZXNldC5wbGFjZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc2V0LnJlY3RzKSB7XG4gICAgICAgICAgcmVjdHMgPSByZXNldC5yZWN0cyA9PT0gdHJ1ZSA/IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICBmbG9hdGluZyxcbiAgICAgICAgICAgIHN0cmF0ZWd5XG4gICAgICAgICAgfSkgOiByZXNldC5yZWN0cztcbiAgICAgICAgfVxuICAgICAgICAoe1xuICAgICAgICAgIHgsXG4gICAgICAgICAgeVxuICAgICAgICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHN0YXRlZnVsUGxhY2VtZW50LCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGkgPSAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICBzdHJhdGVneSxcbiAgICBtaWRkbGV3YXJlRGF0YVxuICB9O1xufTtcblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRldGVjdE92ZXJmbG93KHN0YXRlLCBvcHRpb25zKSB7XG4gIHZhciBfYXdhaXQkcGxhdGZvcm0kaXNFbGU7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGF0Zm9ybSxcbiAgICByZWN0cyxcbiAgICBlbGVtZW50cyxcbiAgICBzdHJhdGVneVxuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHtcbiAgICBib3VuZGFyeSA9ICdjbGlwcGluZ0FuY2VzdG9ycycsXG4gICAgcm9vdEJvdW5kYXJ5ID0gJ3ZpZXdwb3J0JyxcbiAgICBlbGVtZW50Q29udGV4dCA9ICdmbG9hdGluZycsXG4gICAgYWx0Qm91bmRhcnkgPSBmYWxzZSxcbiAgICBwYWRkaW5nID0gMFxuICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgY29uc3QgYWx0Q29udGV4dCA9IGVsZW1lbnRDb250ZXh0ID09PSAnZmxvYXRpbmcnID8gJ3JlZmVyZW5jZScgOiAnZmxvYXRpbmcnO1xuICBjb25zdCBlbGVtZW50ID0gZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICBjb25zdCBjbGlwcGluZ0NsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KGF3YWl0IHBsYXRmb3JtLmdldENsaXBwaW5nUmVjdCh7XG4gICAgZWxlbWVudDogKChfYXdhaXQkcGxhdGZvcm0kaXNFbGUgPSBhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQoZWxlbWVudCkpKSAhPSBudWxsID8gX2F3YWl0JHBsYXRmb3JtJGlzRWxlIDogdHJ1ZSkgPyBlbGVtZW50IDogZWxlbWVudC5jb250ZXh0RWxlbWVudCB8fCAoYXdhaXQgKHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnRzLmZsb2F0aW5nKSkpLFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9KSk7XG4gIGNvbnN0IHJlY3QgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/IHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3RzLmZsb2F0aW5nLndpZHRoLFxuICAgIGhlaWdodDogcmVjdHMuZmxvYXRpbmcuaGVpZ2h0XG4gIH0gOiByZWN0cy5yZWZlcmVuY2U7XG4gIGNvbnN0IG9mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBvZmZzZXRTY2FsZSA9IChhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkpID8gKGF3YWl0IChwbGF0Zm9ybS5nZXRTY2FsZSA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0U2NhbGUob2Zmc2V0UGFyZW50KSkpIHx8IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfSA6IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfTtcbiAgY29uc3QgZWxlbWVudENsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0ID8gYXdhaXQgcGxhdGZvcm0uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe1xuICAgIGVsZW1lbnRzLFxuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0pIDogcmVjdCk7XG4gIHJldHVybiB7XG4gICAgdG9wOiAoY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wKSAvIG9mZnNldFNjYWxlLnksXG4gICAgYm90dG9tOiAoZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSAvIG9mZnNldFNjYWxlLnksXG4gICAgbGVmdDogKGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCkgLyBvZmZzZXRTY2FsZS54LFxuICAgIHJpZ2h0OiAoZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0KSAvIG9mZnNldFNjYWxlLnhcbiAgfTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBvcHRpb25zID0+ICh7XG4gIG5hbWU6ICdhcnJvdycsXG4gIG9wdGlvbnMsXG4gIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgY29uc3Qge1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBwbGFjZW1lbnQsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHMsXG4gICAgICBtaWRkbGV3YXJlRGF0YVxuICAgIH0gPSBzdGF0ZTtcbiAgICAvLyBTaW5jZSBgZWxlbWVudGAgaXMgcmVxdWlyZWQsIHdlIGRvbid0IFBhcnRpYWw8PiB0aGUgdHlwZS5cbiAgICBjb25zdCB7XG4gICAgICBlbGVtZW50LFxuICAgICAgcGFkZGluZyA9IDBcbiAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpIHx8IHt9O1xuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgeCxcbiAgICAgIHlcbiAgICB9O1xuICAgIGNvbnN0IGF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gICAgY29uc3QgbGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChheGlzKTtcbiAgICBjb25zdCBhcnJvd0RpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnQpO1xuICAgIGNvbnN0IGlzWUF4aXMgPSBheGlzID09PSAneSc7XG4gICAgY29uc3QgbWluUHJvcCA9IGlzWUF4aXMgPyAndG9wJyA6ICdsZWZ0JztcbiAgICBjb25zdCBtYXhQcm9wID0gaXNZQXhpcyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICBjb25zdCBjbGllbnRQcm9wID0gaXNZQXhpcyA/ICdjbGllbnRIZWlnaHQnIDogJ2NsaWVudFdpZHRoJztcbiAgICBjb25zdCBlbmREaWZmID0gcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gKyByZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBjb29yZHNbYXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIGNvbnN0IHN0YXJ0RGlmZiA9IGNvb3Jkc1theGlzXSAtIHJlY3RzLnJlZmVyZW5jZVtheGlzXTtcbiAgICBjb25zdCBhcnJvd09mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50KSk7XG4gICAgbGV0IGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGFycm93T2Zmc2V0UGFyZW50W2NsaWVudFByb3BdIDogMDtcblxuICAgIC8vIERPTSBwbGF0Zm9ybSBjYW4gcmV0dXJuIGB3aW5kb3dgIGFzIHRoZSBgb2Zmc2V0UGFyZW50YC5cbiAgICBpZiAoIWNsaWVudFNpemUgfHwgIShhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQoYXJyb3dPZmZzZXRQYXJlbnQpKSkpIHtcbiAgICAgIGNsaWVudFNpemUgPSBlbGVtZW50cy5mbG9hdGluZ1tjbGllbnRQcm9wXSB8fCByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIH1cbiAgICBjb25zdCBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjtcblxuICAgIC8vIElmIHRoZSBwYWRkaW5nIGlzIGxhcmdlIGVub3VnaCB0aGF0IGl0IGNhdXNlcyB0aGUgYXJyb3cgdG8gbm8gbG9uZ2VyIGJlXG4gICAgLy8gY2VudGVyZWQsIG1vZGlmeSB0aGUgcGFkZGluZyBzbyB0aGF0IGl0IGlzIGNlbnRlcmVkLlxuICAgIGNvbnN0IGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiAtIDE7XG4gICAgY29uc3QgbWluUGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21pblByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcbiAgICBjb25zdCBtYXhQYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWF4UHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuXG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBmbG9hdGluZyBlbGVtZW50IGlmIHRoZSBjZW50ZXJcbiAgICAvLyBwb2ludCBpcyBvdXRzaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50J3MgYm91bmRzLlxuICAgIGNvbnN0IG1pbiQxID0gbWluUGFkZGluZztcbiAgICBjb25zdCBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLSBtYXhQYWRkaW5nO1xuICAgIGNvbnN0IGNlbnRlciA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyICsgY2VudGVyVG9SZWZlcmVuY2U7XG4gICAgY29uc3Qgb2Zmc2V0ID0gY2xhbXAobWluJDEsIGNlbnRlciwgbWF4KTtcblxuICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGwgZW5vdWdoIHRoYXQgdGhlIGFycm93J3MgcGFkZGluZyBjYXVzZXMgaXQgdG9cbiAgICAvLyB0byBwb2ludCB0byBub3RoaW5nIGZvciBhbiBhbGlnbmVkIHBsYWNlbWVudCwgYWRqdXN0IHRoZSBvZmZzZXQgb2YgdGhlXG4gICAgLy8gZmxvYXRpbmcgZWxlbWVudCBpdHNlbGYuIFRvIGVuc3VyZSBgc2hpZnQoKWAgY29udGludWVzIHRvIHRha2UgYWN0aW9uLFxuICAgIC8vIGEgc2luZ2xlIHJlc2V0IGlzIHBlcmZvcm1lZCB3aGVuIHRoaXMgaXMgdHJ1ZS5cbiAgICBjb25zdCBzaG91bGRBZGRPZmZzZXQgPSAhbWlkZGxld2FyZURhdGEuYXJyb3cgJiYgZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT0gbnVsbCAmJiBjZW50ZXIgIT09IG9mZnNldCAmJiByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSAvIDIgLSAoY2VudGVyIDwgbWluJDEgPyBtaW5QYWRkaW5nIDogbWF4UGFkZGluZykgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgPCAwO1xuICAgIGNvbnN0IGFsaWdubWVudE9mZnNldCA9IHNob3VsZEFkZE9mZnNldCA/IGNlbnRlciA8IG1pbiQxID8gY2VudGVyIC0gbWluJDEgOiBjZW50ZXIgLSBtYXggOiAwO1xuICAgIHJldHVybiB7XG4gICAgICBbYXhpc106IGNvb3Jkc1theGlzXSArIGFsaWdubWVudE9mZnNldCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgW2F4aXNdOiBvZmZzZXQsXG4gICAgICAgIGNlbnRlck9mZnNldDogY2VudGVyIC0gb2Zmc2V0IC0gYWxpZ25tZW50T2Zmc2V0LFxuICAgICAgICAuLi4oc2hvdWxkQWRkT2Zmc2V0ICYmIHtcbiAgICAgICAgICBhbGlnbm1lbnRPZmZzZXRcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICByZXNldDogc2hvdWxkQWRkT2Zmc2V0XG4gICAgfTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50LCBhdXRvQWxpZ25tZW50LCBhbGxvd2VkUGxhY2VtZW50cykge1xuICBjb25zdCBhbGxvd2VkUGxhY2VtZW50c1NvcnRlZEJ5QWxpZ25tZW50ID0gYWxpZ25tZW50ID8gWy4uLmFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCksIC4uLmFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT09IGFsaWdubWVudCldIDogYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRTaWRlKHBsYWNlbWVudCkgPT09IHBsYWNlbWVudCk7XG4gIHJldHVybiBhbGxvd2VkUGxhY2VtZW50c1NvcnRlZEJ5QWxpZ25tZW50LmZpbHRlcihwbGFjZW1lbnQgPT4ge1xuICAgIGlmIChhbGlnbm1lbnQpIHtcbiAgICAgIHJldHVybiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSA9PT0gYWxpZ25tZW50IHx8IChhdXRvQWxpZ25tZW50ID8gZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSAhPT0gcGxhY2VtZW50IDogZmFsc2UpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG59XG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXV0b1BsYWNlbWVudCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRhdXRvUCwgX21pZGRsZXdhcmVEYXRhJGF1dG9QMiwgX3BsYWNlbWVudHNUaGF0Rml0T25FO1xuICAgICAgY29uc3Qge1xuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBhbGlnbm1lbnQsXG4gICAgICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cyxcbiAgICAgICAgYXV0b0FsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHMkMSA9IGFsaWdubWVudCAhPT0gdW5kZWZpbmVkIHx8IGFsbG93ZWRQbGFjZW1lbnRzID09PSBwbGFjZW1lbnRzID8gZ2V0UGxhY2VtZW50TGlzdChhbGlnbm1lbnQgfHwgbnVsbCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIDogYWxsb3dlZFBsYWNlbWVudHM7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gKChfbWlkZGxld2FyZURhdGEkYXV0b1AgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QLmluZGV4KSB8fCAwO1xuICAgICAgY29uc3QgY3VycmVudFBsYWNlbWVudCA9IHBsYWNlbWVudHMkMVtjdXJyZW50SW5kZXhdO1xuICAgICAgaWYgKGN1cnJlbnRQbGFjZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBhbGlnbm1lbnRTaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKGN1cnJlbnRQbGFjZW1lbnQsIHJlY3RzLCBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSkpO1xuXG4gICAgICAvLyBNYWtlIGBjb21wdXRlQ29vcmRzYCBzdGFydCBmcm9tIHRoZSByaWdodCBwbGFjZS5cbiAgICAgIGlmIChwbGFjZW1lbnQgIT09IGN1cnJlbnRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRzJDFbMF1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50T3ZlcmZsb3dzID0gW292ZXJmbG93W2dldFNpZGUoY3VycmVudFBsYWNlbWVudCldLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1swXV0sIG92ZXJmbG93W2FsaWdubWVudFNpZGVzWzFdXV07XG4gICAgICBjb25zdCBhbGxPdmVyZmxvd3MgPSBbLi4uKCgoX21pZGRsZXdhcmVEYXRhJGF1dG9QMiA9IG1pZGRsZXdhcmVEYXRhLmF1dG9QbGFjZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXV0b1AyLm92ZXJmbG93cykgfHwgW10pLCB7XG4gICAgICAgIHBsYWNlbWVudDogY3VycmVudFBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzOiBjdXJyZW50T3ZlcmZsb3dzXG4gICAgICB9XTtcbiAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4ICsgMV07XG5cbiAgICAgIC8vIFRoZXJlIGFyZSBtb3JlIHBsYWNlbWVudHMgdG8gY2hlY2suXG4gICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UgPSBhbGxPdmVyZmxvd3MubWFwKGQgPT4ge1xuICAgICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQoZC5wbGFjZW1lbnQpO1xuICAgICAgICByZXR1cm4gW2QucGxhY2VtZW50LCBhbGlnbm1lbnQgJiYgY3Jvc3NBeGlzID9cbiAgICAgICAgLy8gQ2hlY2sgYWxvbmcgdGhlIG1haW5BeGlzIGFuZCBtYWluIGNyb3NzQXhpcyBzaWRlLlxuICAgICAgICBkLm92ZXJmbG93cy5zbGljZSgwLCAyKS5yZWR1Y2UoKGFjYywgdikgPT4gYWNjICsgdiwgMCkgOlxuICAgICAgICAvLyBDaGVjayBvbmx5IHRoZSBtYWluQXhpcy5cbiAgICAgICAgZC5vdmVyZmxvd3NbMF0sIGQub3ZlcmZsb3dzXTtcbiAgICAgIH0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHNUaGF0Rml0T25FYWNoU2lkZSA9IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZS5maWx0ZXIoZCA9PiBkWzJdLnNsaWNlKDAsXG4gICAgICAvLyBBbGlnbmVkIHBsYWNlbWVudHMgc2hvdWxkIG5vdCBjaGVjayB0aGVpciBvcHBvc2l0ZSBjcm9zc0F4aXNcbiAgICAgIC8vIHNpZGUuXG4gICAgICBnZXRBbGlnbm1lbnQoZFswXSkgPyAyIDogMykuZXZlcnkodiA9PiB2IDw9IDApKTtcbiAgICAgIGNvbnN0IHJlc2V0UGxhY2VtZW50ID0gKChfcGxhY2VtZW50c1RoYXRGaXRPbkUgPSBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGVbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfcGxhY2VtZW50c1RoYXRGaXRPbkVbMF0pIHx8IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZVswXVswXTtcbiAgICAgIGlmIChyZXNldFBsYWNlbWVudCAhPT0gcGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRJbmRleCArIDEsXG4gICAgICAgICAgICBvdmVyZmxvd3M6IGFsbE92ZXJmbG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2ZsaXAnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXJyb3csIF9taWRkbGV3YXJlRGF0YSRmbGlwO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgaW5pdGlhbFBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IHRydWUsXG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50czogc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzLFxuICAgICAgICBmYWxsYmFja1N0cmF0ZWd5ID0gJ2Jlc3RGaXQnLFxuICAgICAgICBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uID0gJ25vbmUnLFxuICAgICAgICBmbGlwQWxpZ25tZW50ID0gdHJ1ZSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gICAgICAvLyBJZiBhIHJlc2V0IGJ5IHRoZSBhcnJvdyB3YXMgY2F1c2VkIGR1ZSB0byBhbiBhbGlnbm1lbnQgb2Zmc2V0IGJlaW5nXG4gICAgICAvLyBhZGRlZCwgd2Ugc2hvdWxkIHNraXAgYW55IGxvZ2ljIG5vdyBzaW5jZSBgZmxpcCgpYCBoYXMgYWxyZWFkeSBkb25lIGl0c1xuICAgICAgLy8gd29yay5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjU0OSNpc3N1ZWNvbW1lbnQtMTcxOTYwMTY0M1xuICAgICAgaWYgKChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpbml0aWFsU2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhpbml0aWFsUGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzQmFzZVBsYWNlbWVudCA9IGdldFNpZGUoaW5pdGlhbFBsYWNlbWVudCkgPT09IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gICAgICBjb25zdCBmYWxsYmFja1BsYWNlbWVudHMgPSBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgfHwgKGlzQmFzZVBsYWNlbWVudCB8fCAhZmxpcEFsaWdubWVudCA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChpbml0aWFsUGxhY2VtZW50KV0gOiBnZXRFeHBhbmRlZFBsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgaGFzRmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9IGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gIT09ICdub25lJztcbiAgICAgIGlmICghc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzICYmIGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24pIHtcbiAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzLnB1c2goLi4uZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhpbml0aWFsUGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uLCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsYWNlbWVudHMgPSBbaW5pdGlhbFBsYWNlbWVudCwgLi4uZmFsbGJhY2tQbGFjZW1lbnRzXTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBvdmVyZmxvd3MgPSBbXTtcbiAgICAgIGxldCBvdmVyZmxvd3NEYXRhID0gKChfbWlkZGxld2FyZURhdGEkZmxpcCA9IG1pZGRsZXdhcmVEYXRhLmZsaXApID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkZmxpcC5vdmVyZmxvd3MpIHx8IFtdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbc2lkZV0pO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IHNpZGVzID0gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKTtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbc2lkZXNbMF1dLCBvdmVyZmxvd1tzaWRlc1sxXV0pO1xuICAgICAgfVxuICAgICAgb3ZlcmZsb3dzRGF0YSA9IFsuLi5vdmVyZmxvd3NEYXRhLCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzXG4gICAgICB9XTtcblxuICAgICAgLy8gT25lIG9yIG1vcmUgc2lkZXMgaXMgb3ZlcmZsb3dpbmcuXG4gICAgICBpZiAoIW92ZXJmbG93cy5ldmVyeShzaWRlID0+IHNpZGUgPD0gMCkpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRmbGlwMiwgX292ZXJmbG93c0RhdGEkZmlsdGVyO1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoKChfbWlkZGxld2FyZURhdGEkZmxpcDIgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAyLmluZGV4KSB8fCAwKSArIDE7XG4gICAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzW25leHRJbmRleF07XG4gICAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgICAgLy8gVHJ5IG5leHQgcGxhY2VtZW50IGFuZCByZS1ydW4gdGhlIGxpZmVjeWNsZS5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBpbmRleDogbmV4dEluZGV4LFxuICAgICAgICAgICAgICBvdmVyZmxvd3M6IG92ZXJmbG93c0RhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmlyc3QsIGZpbmQgdGhlIGNhbmRpZGF0ZXMgdGhhdCBmaXQgb24gdGhlIG1haW5BeGlzIHNpZGUgb2Ygb3ZlcmZsb3csXG4gICAgICAgIC8vIHRoZW4gZmluZCB0aGUgcGxhY2VtZW50IHRoYXQgZml0cyB0aGUgYmVzdCBvbiB0aGUgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgbGV0IHJlc2V0UGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlciA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4gZC5vdmVyZmxvd3NbMF0gPD0gMCkuc29ydCgoYSwgYikgPT4gYS5vdmVyZmxvd3NbMV0gLSBiLm92ZXJmbG93c1sxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIucGxhY2VtZW50O1xuXG4gICAgICAgIC8vIE90aGVyd2lzZSBmYWxsYmFjay5cbiAgICAgICAgaWYgKCFyZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHN3aXRjaCAoZmFsbGJhY2tTdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnYmVzdEZpdCc6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YXIgX292ZXJmbG93c0RhdGEkZmlsdGVyMjtcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZW1lbnQgPSAoX292ZXJmbG93c0RhdGEkZmlsdGVyMiA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoZC5wbGFjZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNpZGVBeGlzID09PSBpbml0aWFsU2lkZUF4aXMgfHxcbiAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgYmlhcyB0byB0aGUgYHlgIHNpZGUgYXhpcyBkdWUgdG8gaG9yaXpvbnRhbFxuICAgICAgICAgICAgICAgICAgICAvLyByZWFkaW5nIGRpcmVjdGlvbnMgZmF2b3JpbmcgZ3JlYXRlciB3aWR0aC5cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFNpZGVBeGlzID09PSAneSc7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KS5tYXAoZCA9PiBbZC5wbGFjZW1lbnQsIGQub3ZlcmZsb3dzLmZpbHRlcihvdmVyZmxvdyA9PiBvdmVyZmxvdyA+IDApLnJlZHVjZSgoYWNjLCBvdmVyZmxvdykgPT4gYWNjICsgb3ZlcmZsb3csIDApXSkuc29ydCgoYSwgYikgPT4gYVsxXSAtIGJbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyMlswXTtcbiAgICAgICAgICAgICAgICBpZiAocGxhY2VtZW50KSB7XG4gICAgICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2luaXRpYWxQbGFjZW1lbnQnOlxuICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGxhY2VtZW50ICE9PSByZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0KSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiBvdmVyZmxvdy50b3AgLSByZWN0LmhlaWdodCxcbiAgICByaWdodDogb3ZlcmZsb3cucmlnaHQgLSByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogb3ZlcmZsb3cuYm90dG9tIC0gcmVjdC5oZWlnaHQsXG4gICAgbGVmdDogb3ZlcmZsb3cubGVmdCAtIHJlY3Qud2lkdGhcbiAgfTtcbn1cbmZ1bmN0aW9uIGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvdmVyZmxvdykge1xuICByZXR1cm4gc2lkZXMuc29tZShzaWRlID0+IG92ZXJmbG93W3NpZGVdID49IDApO1xufVxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIGhpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW4gYXBwbGljYWJsZSBzaXR1YXRpb25zLCBzdWNoIGFzXG4gKiB3aGVuIGl0IGlzIG5vdCBpbiB0aGUgc2FtZSBjbGlwcGluZyBjb250ZXh0IGFzIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9oaWRlXG4gKi9cbmNvbnN0IGhpZGUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2hpZGUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3RyYXRlZ3kgPSAncmVmZXJlbmNlSGlkZGVuJyxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgc3dpdGNoIChzdHJhdGVneSkge1xuICAgICAgICBjYXNlICdyZWZlcmVuY2VIaWRkZW4nOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICBlbGVtZW50Q29udGV4dDogJ3JlZmVyZW5jZSdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5yZWZlcmVuY2UpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbk9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlSGlkZGVuOiBpc0FueVNpZGVGdWxseUNsaXBwZWQob2Zmc2V0cylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2VzY2FwZWQnOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3RzLmZsb2F0aW5nKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBlc2NhcGVkT2Zmc2V0czogb2Zmc2V0cyxcbiAgICAgICAgICAgICAgICBlc2NhcGVkOiBpc0FueVNpZGVGdWxseUNsaXBwZWQob2Zmc2V0cylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ1JlY3QocmVjdHMpIHtcbiAgY29uc3QgbWluWCA9IG1pbiguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LmxlZnQpKTtcbiAgY29uc3QgbWluWSA9IG1pbiguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnRvcCkpO1xuICBjb25zdCBtYXhYID0gbWF4KC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgY29uc3QgbWF4WSA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LmJvdHRvbSkpO1xuICByZXR1cm4ge1xuICAgIHg6IG1pblgsXG4gICAgeTogbWluWSxcbiAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgaGVpZ2h0OiBtYXhZIC0gbWluWVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0UmVjdHNCeUxpbmUocmVjdHMpIHtcbiAgY29uc3Qgc29ydGVkUmVjdHMgPSByZWN0cy5zbGljZSgpLnNvcnQoKGEsIGIpID0+IGEueSAtIGIueSk7XG4gIGNvbnN0IGdyb3VwcyA9IFtdO1xuICBsZXQgcHJldlJlY3QgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNvcnRlZFJlY3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcmVjdCA9IHNvcnRlZFJlY3RzW2ldO1xuICAgIGlmICghcHJldlJlY3QgfHwgcmVjdC55IC0gcHJldlJlY3QueSA+IHByZXZSZWN0LmhlaWdodCAvIDIpIHtcbiAgICAgIGdyb3Vwcy5wdXNoKFtyZWN0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3Vwc1tncm91cHMubGVuZ3RoIC0gMV0ucHVzaChyZWN0KTtcbiAgICB9XG4gICAgcHJldlJlY3QgPSByZWN0O1xuICB9XG4gIHJldHVybiBncm91cHMubWFwKHJlY3QgPT4gcmVjdFRvQ2xpZW50UmVjdChnZXRCb3VuZGluZ1JlY3QocmVjdCkpKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnaW5saW5lJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgZWxlbWVudHMsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIC8vIEEgTW91c2VFdmVudCdzIGNsaWVudHtYLFl9IGNvb3JkcyBjYW4gYmUgdXAgdG8gMiBwaXhlbHMgb2ZmIGFcbiAgICAgIC8vIENsaWVudFJlY3QncyBib3VuZHMsIGRlc3BpdGUgdGhlIGV2ZW50IGxpc3RlbmVyIGJlaW5nIHRyaWdnZXJlZC4gQVxuICAgICAgLy8gcGFkZGluZyBvZiAyIHNlZW1zIHRvIGhhbmRsZSB0aGlzIGlzc3VlLlxuICAgICAgY29uc3Qge1xuICAgICAgICBwYWRkaW5nID0gMixcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG5hdGl2ZUNsaWVudFJlY3RzID0gQXJyYXkuZnJvbSgoYXdhaXQgKHBsYXRmb3JtLmdldENsaWVudFJlY3RzID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyhlbGVtZW50cy5yZWZlcmVuY2UpKSkgfHwgW10pO1xuICAgICAgY29uc3QgY2xpZW50UmVjdHMgPSBnZXRSZWN0c0J5TGluZShuYXRpdmVDbGllbnRSZWN0cyk7XG4gICAgICBjb25zdCBmYWxsYmFjayA9IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KG5hdGl2ZUNsaWVudFJlY3RzKSk7XG4gICAgICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgICAgIGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIHR3byByZWN0cyBhbmQgdGhleSBhcmUgZGlzam9pbmVkLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID09PSAyICYmIGNsaWVudFJlY3RzWzBdLmxlZnQgPiBjbGllbnRSZWN0c1sxXS5yaWdodCAmJiB4ICE9IG51bGwgJiYgeSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgcmVjdCBpbiB3aGljaCB0aGUgcG9pbnQgaXMgZnVsbHkgaW5zaWRlLlxuICAgICAgICAgIHJldHVybiBjbGllbnRSZWN0cy5maW5kKHJlY3QgPT4geCA+IHJlY3QubGVmdCAtIHBhZGRpbmdPYmplY3QubGVmdCAmJiB4IDwgcmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHQgJiYgeSA+IHJlY3QudG9wIC0gcGFkZGluZ09iamVjdC50b3AgJiYgeSA8IHJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20pIHx8IGZhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlcmUgYXJlIDIgb3IgbW9yZSBjb25uZWN0ZWQgcmVjdHMuXG4gICAgICAgIGlmIChjbGllbnRSZWN0cy5sZW5ndGggPj0gMikge1xuICAgICAgICAgIGlmIChnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneScpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0UmVjdCA9IGNsaWVudFJlY3RzWzBdO1xuICAgICAgICAgICAgY29uc3QgbGFzdFJlY3QgPSBjbGllbnRSZWN0c1tjbGllbnRSZWN0cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IGlzVG9wID0gZ2V0U2lkZShwbGFjZW1lbnQpID09PSAndG9wJztcbiAgICAgICAgICAgIGNvbnN0IHRvcCA9IGZpcnN0UmVjdC50b3A7XG4gICAgICAgICAgICBjb25zdCBib3R0b20gPSBsYXN0UmVjdC5ib3R0b207XG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gaXNUb3AgPyBmaXJzdFJlY3QubGVmdCA6IGxhc3RSZWN0LmxlZnQ7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IGlzVG9wID8gZmlyc3RSZWN0LnJpZ2h0IDogbGFzdFJlY3QucmlnaHQ7XG4gICAgICAgICAgICBjb25zdCB3aWR0aCA9IHJpZ2h0IC0gbGVmdDtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpc0xlZnRTaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpID09PSAnbGVmdCc7XG4gICAgICAgICAgY29uc3QgbWF4UmlnaHQgPSBtYXgoLi4uY2xpZW50UmVjdHMubWFwKHJlY3QgPT4gcmVjdC5yaWdodCkpO1xuICAgICAgICAgIGNvbnN0IG1pbkxlZnQgPSBtaW4oLi4uY2xpZW50UmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gICAgICAgICAgY29uc3QgbWVhc3VyZVJlY3RzID0gY2xpZW50UmVjdHMuZmlsdGVyKHJlY3QgPT4gaXNMZWZ0U2lkZSA/IHJlY3QubGVmdCA9PT0gbWluTGVmdCA6IHJlY3QucmlnaHQgPT09IG1heFJpZ2h0KTtcbiAgICAgICAgICBjb25zdCB0b3AgPSBtZWFzdXJlUmVjdHNbMF0udG9wO1xuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IG1lYXN1cmVSZWN0c1ttZWFzdXJlUmVjdHMubGVuZ3RoIC0gMV0uYm90dG9tO1xuICAgICAgICAgIGNvbnN0IGxlZnQgPSBtaW5MZWZ0O1xuICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gbWF4UmlnaHQ7XG4gICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgY29uc3QgaGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICBib3R0b20sXG4gICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICB5OiB0b3BcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc2V0UmVjdHMgPSBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICByZWZlcmVuY2U6IHtcbiAgICAgICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3RcbiAgICAgICAgfSxcbiAgICAgICAgZmxvYXRpbmc6IGVsZW1lbnRzLmZsb2F0aW5nLFxuICAgICAgICBzdHJhdGVneVxuICAgICAgfSk7XG4gICAgICBpZiAocmVjdHMucmVmZXJlbmNlLnggIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLnggfHwgcmVjdHMucmVmZXJlbmNlLnkgIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLnkgfHwgcmVjdHMucmVmZXJlbmNlLndpZHRoICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS53aWR0aCB8fCByZWN0cy5yZWZlcmVuY2UuaGVpZ2h0ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHJlc2V0UmVjdHNcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuLy8gRm9yIHR5cGUgYmFja3dhcmRzLWNvbXBhdGliaWxpdHksIHRoZSBgT2Zmc2V0T3B0aW9uc2AgdHlwZSB3YXMgYWxzb1xuLy8gRGVyaXZhYmxlLlxuXG5hc3luYyBmdW5jdGlvbiBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgcGxhY2VtZW50LFxuICAgIHBsYXRmb3JtLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBzdGF0ZTtcbiAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5JztcbiAgY29uc3QgbWFpbkF4aXNNdWx0aSA9IFsnbGVmdCcsICd0b3AnXS5pbmNsdWRlcyhzaWRlKSA/IC0xIDogMTtcbiAgY29uc3QgY3Jvc3NBeGlzTXVsdGkgPSBydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMTtcbiAgY29uc3QgcmF3VmFsdWUgPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICBsZXQge1xuICAgIG1haW5BeGlzLFxuICAgIGNyb3NzQXhpcyxcbiAgICBhbGlnbm1lbnRBeGlzXG4gIH0gPSB0eXBlb2YgcmF3VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZSxcbiAgICBjcm9zc0F4aXM6IDAsXG4gICAgYWxpZ25tZW50QXhpczogbnVsbFxuICB9IDoge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZS5tYWluQXhpcyB8fCAwLFxuICAgIGNyb3NzQXhpczogcmF3VmFsdWUuY3Jvc3NBeGlzIHx8IDAsXG4gICAgYWxpZ25tZW50QXhpczogcmF3VmFsdWUuYWxpZ25tZW50QXhpc1xuICB9O1xuICBpZiAoYWxpZ25tZW50ICYmIHR5cGVvZiBhbGlnbm1lbnRBeGlzID09PSAnbnVtYmVyJykge1xuICAgIGNyb3NzQXhpcyA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyBhbGlnbm1lbnRBeGlzICogLTEgOiBhbGlnbm1lbnRBeGlzO1xuICB9XG4gIHJldHVybiBpc1ZlcnRpY2FsID8ge1xuICAgIHg6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpLFxuICAgIHk6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aVxuICB9IDoge1xuICAgIHg6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aSxcbiAgICB5OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aVxuICB9O1xufVxuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IDA7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnb2Zmc2V0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJG9mZnNlLCBfbWlkZGxld2FyZURhdGEkYXJyb3c7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IGRpZmZDb29yZHMgPSBhd2FpdCBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucyk7XG5cbiAgICAgIC8vIElmIHRoZSBwbGFjZW1lbnQgaXMgdGhlIHNhbWUgYW5kIHRoZSBhcnJvdyBjYXVzZWQgYW4gYWxpZ25tZW50IG9mZnNldFxuICAgICAgLy8gdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNoYW5nZSB0aGUgcG9zaXRpb25pbmcgY29vcmRpbmF0ZXMuXG4gICAgICBpZiAocGxhY2VtZW50ID09PSAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZS5wbGFjZW1lbnQpICYmIChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggKyBkaWZmQ29vcmRzLngsXG4gICAgICAgIHk6IHkgKyBkaWZmQ29vcmRzLnksXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5kaWZmQ29vcmRzLFxuICAgICAgICAgIHBsYWNlbWVudFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2hpZnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBsaW1pdGVyID0ge1xuICAgICAgICAgIGZuOiBfcmVmID0+IHtcbiAgICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH0gPSBfcmVmO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRTaWRlQXhpcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRPcHBvc2l0ZUF4aXMoY3Jvc3NBeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IG1haW5BeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IG1haW5BeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IG1haW5BeGlzQ29vcmQgKyBvdmVyZmxvd1ttaW5TaWRlXTtcbiAgICAgICAgY29uc3QgbWF4ID0gbWFpbkF4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBtYWluQXhpc0Nvb3JkID0gY2xhbXAobWluLCBtYWluQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IGNyb3NzQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IGNyb3NzQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gY2xhbXAobWluLCBjcm9zc0F4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxpbWl0ZWRDb29yZHMgPSBsaW1pdGVyLmZuKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5saW1pdGVkQ29vcmRzLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgeDogbGltaXRlZENvb3Jkcy54IC0geCxcbiAgICAgICAgICB5OiBsaW1pdGVkQ29vcmRzLnkgLSB5LFxuICAgICAgICAgIGVuYWJsZWQ6IHtcbiAgICAgICAgICAgIFttYWluQXhpc106IGNoZWNrTWFpbkF4aXMsXG4gICAgICAgICAgICBbY3Jvc3NBeGlzXTogY2hlY2tDcm9zc0F4aXNcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgb3B0aW9ucyxcbiAgICBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBtaWRkbGV3YXJlRGF0YVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBvZmZzZXQgPSAwLFxuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGNvbnN0IHJhd09mZnNldCA9IGV2YWx1YXRlKG9mZnNldCwgc3RhdGUpO1xuICAgICAgY29uc3QgY29tcHV0ZWRPZmZzZXQgPSB0eXBlb2YgcmF3T2Zmc2V0ID09PSAnbnVtYmVyJyA/IHtcbiAgICAgICAgbWFpbkF4aXM6IHJhd09mZnNldCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwXG4gICAgICB9IDoge1xuICAgICAgICBtYWluQXhpczogMCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwLFxuICAgICAgICAuLi5yYXdPZmZzZXRcbiAgICAgIH07XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW21haW5BeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dIC0gY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGlmIChtYWluQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBtYWluQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAobWFpbkF4aXNDb29yZCA+IGxpbWl0TWF4KSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJG9mZnNlMjtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICAgICAgY29uc3QgaXNPcmlnaW5TaWRlID0gWyd0b3AnLCAnbGVmdCddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWluID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgKGlzT3JpZ2luU2lkZSA/ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlW2Nyb3NzQXhpc10pIHx8IDAgOiAwKSArIChpc09yaWdpblNpZGUgPyAwIDogY29tcHV0ZWRPZmZzZXQuY3Jvc3NBeGlzKTtcbiAgICAgICAgY29uc3QgbGltaXRNYXggPSByZWN0cy5yZWZlcmVuY2VbY3Jvc3NBeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dICsgKGlzT3JpZ2luU2lkZSA/IDAgOiAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZTIgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UyW2Nyb3NzQXhpc10pIHx8IDApIC0gKGlzT3JpZ2luU2lkZSA/IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyA6IDApO1xuICAgICAgICBpZiAoY3Jvc3NBeGlzQ29vcmQgPCBsaW1pdE1pbikge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAoY3Jvc3NBeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNYXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NpemUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfc3RhdGUkbWlkZGxld2FyZURhdGEsIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YTI7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBhcHBseSA9ICgpID0+IHt9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNZQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5JztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodFxuICAgICAgfSA9IHJlY3RzLmZsb2F0aW5nO1xuICAgICAgbGV0IGhlaWdodFNpZGU7XG4gICAgICBsZXQgd2lkdGhTaWRlO1xuICAgICAgaWYgKHNpZGUgPT09ICd0b3AnIHx8IHNpZGUgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGhlaWdodFNpZGUgPSBzaWRlO1xuICAgICAgICB3aWR0aFNpZGUgPSBhbGlnbm1lbnQgPT09ICgoYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKSA/ICdzdGFydCcgOiAnZW5kJykgPyAnbGVmdCcgOiAncmlnaHQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGhTaWRlID0gc2lkZTtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyAndG9wJyA6ICdib3R0b20nO1xuICAgICAgfVxuICAgICAgY29uc3QgbWF4aW11bUNsaXBwaW5nSGVpZ2h0ID0gaGVpZ2h0IC0gb3ZlcmZsb3cudG9wIC0gb3ZlcmZsb3cuYm90dG9tO1xuICAgICAgY29uc3QgbWF4aW11bUNsaXBwaW5nV2lkdGggPSB3aWR0aCAtIG92ZXJmbG93LmxlZnQgLSBvdmVyZmxvdy5yaWdodDtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0ID0gbWluKGhlaWdodCAtIG92ZXJmbG93W2hlaWdodFNpZGVdLCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVXaWR0aCA9IG1pbih3aWR0aCAtIG92ZXJmbG93W3dpZHRoU2lkZV0sIG1heGltdW1DbGlwcGluZ1dpZHRoKTtcbiAgICAgIGNvbnN0IG5vU2hpZnQgPSAhc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQ7XG4gICAgICBsZXQgYXZhaWxhYmxlSGVpZ2h0ID0gb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQ7XG4gICAgICBsZXQgYXZhaWxhYmxlV2lkdGggPSBvdmVyZmxvd0F2YWlsYWJsZVdpZHRoO1xuICAgICAgaWYgKChfc3RhdGUkbWlkZGxld2FyZURhdGEgPSBzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdCkgIT0gbnVsbCAmJiBfc3RhdGUkbWlkZGxld2FyZURhdGEuZW5hYmxlZC54KSB7XG4gICAgICAgIGF2YWlsYWJsZVdpZHRoID0gbWF4aW11bUNsaXBwaW5nV2lkdGg7XG4gICAgICB9XG4gICAgICBpZiAoKF9zdGF0ZSRtaWRkbGV3YXJlRGF0YTIgPSBzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdCkgIT0gbnVsbCAmJiBfc3RhdGUkbWlkZGxld2FyZURhdGEyLmVuYWJsZWQueSkge1xuICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQ7XG4gICAgICB9XG4gICAgICBpZiAobm9TaGlmdCAmJiAhYWxpZ25tZW50KSB7XG4gICAgICAgIGNvbnN0IHhNaW4gPSBtYXgob3ZlcmZsb3cubGVmdCwgMCk7XG4gICAgICAgIGNvbnN0IHhNYXggPSBtYXgob3ZlcmZsb3cucmlnaHQsIDApO1xuICAgICAgICBjb25zdCB5TWluID0gbWF4KG92ZXJmbG93LnRvcCwgMCk7XG4gICAgICAgIGNvbnN0IHlNYXggPSBtYXgob3ZlcmZsb3cuYm90dG9tLCAwKTtcbiAgICAgICAgaWYgKGlzWUF4aXMpIHtcbiAgICAgICAgICBhdmFpbGFibGVXaWR0aCA9IHdpZHRoIC0gMiAqICh4TWluICE9PSAwIHx8IHhNYXggIT09IDAgPyB4TWluICsgeE1heCA6IG1heChvdmVyZmxvdy5sZWZ0LCBvdmVyZmxvdy5yaWdodCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGhlaWdodCAtIDIgKiAoeU1pbiAhPT0gMCB8fCB5TWF4ICE9PSAwID8geU1pbiArIHlNYXggOiBtYXgob3ZlcmZsb3cudG9wLCBvdmVyZmxvdy5ib3R0b20pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgYXBwbHkoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYXZhaWxhYmxlV2lkdGgsXG4gICAgICAgIGF2YWlsYWJsZUhlaWdodFxuICAgICAgfSk7XG4gICAgICBjb25zdCBuZXh0RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudHMuZmxvYXRpbmcpO1xuICAgICAgaWYgKHdpZHRoICE9PSBuZXh0RGltZW5zaW9ucy53aWR0aCB8fCBoZWlnaHQgIT09IG5leHREaW1lbnNpb25zLmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICByZWN0czogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHNoaWZ0LCBzaXplIH07XG4iLCJmdW5jdGlvbiBoYXNXaW5kb3coKSB7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbn1cbmZ1bmN0aW9uIGdldE5vZGVOYW1lKG5vZGUpIHtcbiAgaWYgKGlzTm9kZShub2RlKSkge1xuICAgIHJldHVybiAobm9kZS5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuICAvLyBNb2NrZWQgbm9kZXMgaW4gdGVzdGluZyBlbnZpcm9ubWVudHMgbWF5IG5vdCBiZSBpbnN0YW5jZXMgb2YgTm9kZS4gQnlcbiAgLy8gcmV0dXJuaW5nIGAjZG9jdW1lbnRgIGFuIGluZmluaXRlIGxvb3Agd29uJ3Qgb2NjdXIuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjMxN1xuICByZXR1cm4gJyNkb2N1bWVudCc7XG59XG5mdW5jdGlvbiBnZXRXaW5kb3cobm9kZSkge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgcmV0dXJuIChub2RlID09IG51bGwgfHwgKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB8fCB3aW5kb3c7XG59XG5mdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQobm9kZSkge1xuICB2YXIgX3JlZjtcbiAgcmV0dXJuIChfcmVmID0gKGlzTm9kZShub2RlKSA/IG5vZGUub3duZXJEb2N1bWVudCA6IG5vZGUuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZWYuZG9jdW1lbnRFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNOb2RlKHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgTm9kZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuTm9kZTtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkhUTUxFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNTaGFkb3dSb290KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkgfHwgdHlwZW9mIFNoYWRvd1Jvb3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLlNoYWRvd1Jvb3Q7XG59XG5mdW5jdGlvbiBpc092ZXJmbG93RWxlbWVudChlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICBvdmVyZmxvdyxcbiAgICBvdmVyZmxvd1gsXG4gICAgb3ZlcmZsb3dZLFxuICAgIGRpc3BsYXlcbiAgfSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW58Y2xpcC8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCkgJiYgIVsnaW5saW5lJywgJ2NvbnRlbnRzJ10uaW5jbHVkZXMoZGlzcGxheSk7XG59XG5mdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpO1xufVxuZnVuY3Rpb24gaXNUb3BMYXllcihlbGVtZW50KSB7XG4gIHJldHVybiBbJzpwb3BvdmVyLW9wZW4nLCAnOm1vZGFsJ10uc29tZShzZWxlY3RvciA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBlbGVtZW50Lm1hdGNoZXMoc2VsZWN0b3IpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gaXNDb250YWluaW5nQmxvY2soZWxlbWVudE9yQ3NzKSB7XG4gIGNvbnN0IHdlYmtpdCA9IGlzV2ViS2l0KCk7XG4gIGNvbnN0IGNzcyA9IGlzRWxlbWVudChlbGVtZW50T3JDc3MpID8gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50T3JDc3MpIDogZWxlbWVudE9yQ3NzO1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdHJhbnNmb3Jtcy0yLyNpbmRpdmlkdWFsLXRyYW5zZm9ybXNcbiAgcmV0dXJuIFsndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZScsICdzY2FsZScsICdyb3RhdGUnLCAncGVyc3BlY3RpdmUnXS5zb21lKHZhbHVlID0+IGNzc1t2YWx1ZV0gPyBjc3NbdmFsdWVdICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgKGNzcy5jb250YWluZXJUeXBlID8gY3NzLmNvbnRhaW5lclR5cGUgIT09ICdub3JtYWwnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5iYWNrZHJvcEZpbHRlciA/IGNzcy5iYWNrZHJvcEZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5maWx0ZXIgPyBjc3MuZmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgWyd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlJywgJ3NjYWxlJywgJ3JvdGF0ZScsICdwZXJzcGVjdGl2ZScsICdmaWx0ZXInXS5zb21lKHZhbHVlID0+IChjc3Mud2lsbENoYW5nZSB8fCAnJykuaW5jbHVkZXModmFsdWUpKSB8fCBbJ3BhaW50JywgJ2xheW91dCcsICdzdHJpY3QnLCAnY29udGVudCddLnNvbWUodmFsdWUgPT4gKGNzcy5jb250YWluIHx8ICcnKS5pbmNsdWRlcyh2YWx1ZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgbGV0IGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgaWYgKGlzQ29udGFpbmluZ0Jsb2NrKGN1cnJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSBpZiAoaXNUb3BMYXllcihjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoY3VycmVudE5vZGUpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gaXNXZWJLaXQoKSB7XG4gIGlmICh0eXBlb2YgQ1NTID09PSAndW5kZWZpbmVkJyB8fCAhQ1NTLnN1cHBvcnRzKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBDU1Muc3VwcG9ydHMoJy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyJywgJ25vbmUnKTtcbn1cbmZ1bmN0aW9uIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShub2RlKSB7XG4gIHJldHVybiBbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShub2RlKSk7XG59XG5mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufVxuZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KSB7XG4gIGlmIChpc0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbFgsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhcmVudE5vZGUobm9kZSkge1xuICBpZiAoZ2V0Tm9kZU5hbWUobm9kZSkgPT09ICdodG1sJykge1xuICAgIHJldHVybiBub2RlO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9XG4gIC8vIFN0ZXAgaW50byB0aGUgc2hhZG93IERPTSBvZiB0aGUgcGFyZW50IG9mIGEgc2xvdHRlZCBub2RlLlxuICBub2RlLmFzc2lnbmVkU2xvdCB8fFxuICAvLyBET00gRWxlbWVudCBkZXRlY3RlZC5cbiAgbm9kZS5wYXJlbnROb2RlIHx8XG4gIC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWQuXG4gIGlzU2hhZG93Um9vdChub2RlKSAmJiBub2RlLmhvc3QgfHxcbiAgLy8gRmFsbGJhY2suXG4gIGdldERvY3VtZW50RWxlbWVudChub2RlKTtcbiAgcmV0dXJuIGlzU2hhZG93Um9vdChyZXN1bHQpID8gcmVzdWx0Lmhvc3QgOiByZXN1bHQ7XG59XG5mdW5jdGlvbiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKG5vZGUpO1xuICBpZiAoaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudCA/IG5vZGUub3duZXJEb2N1bWVudC5ib2R5IDogbm9kZS5ib2R5O1xuICB9XG4gIGlmIChpc0hUTUxFbGVtZW50KHBhcmVudE5vZGUpICYmIGlzT3ZlcmZsb3dFbGVtZW50KHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIHBhcmVudE5vZGU7XG4gIH1cbiAgcmV0dXJuIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKHBhcmVudE5vZGUpO1xufVxuZnVuY3Rpb24gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMobm9kZSwgbGlzdCwgdHJhdmVyc2VJZnJhbWVzKSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50MjtcbiAgaWYgKGxpc3QgPT09IHZvaWQgMCkge1xuICAgIGxpc3QgPSBbXTtcbiAgfVxuICBpZiAodHJhdmVyc2VJZnJhbWVzID09PSB2b2lkIDApIHtcbiAgICB0cmF2ZXJzZUlmcmFtZXMgPSB0cnVlO1xuICB9XG4gIGNvbnN0IHNjcm9sbGFibGVBbmNlc3RvciA9IGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKG5vZGUpO1xuICBjb25zdCBpc0JvZHkgPSBzY3JvbGxhYmxlQW5jZXN0b3IgPT09ICgoX25vZGUkb3duZXJEb2N1bWVudDIgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50Mi5ib2R5KTtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KHNjcm9sbGFibGVBbmNlc3Rvcik7XG4gIGlmIChpc0JvZHkpIHtcbiAgICBjb25zdCBmcmFtZUVsZW1lbnQgPSBnZXRGcmFtZUVsZW1lbnQod2luKTtcbiAgICByZXR1cm4gbGlzdC5jb25jYXQod2luLCB3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzT3ZlcmZsb3dFbGVtZW50KHNjcm9sbGFibGVBbmNlc3RvcikgPyBzY3JvbGxhYmxlQW5jZXN0b3IgOiBbXSwgZnJhbWVFbGVtZW50ICYmIHRyYXZlcnNlSWZyYW1lcyA/IGdldE92ZXJmbG93QW5jZXN0b3JzKGZyYW1lRWxlbWVudCkgOiBbXSk7XG4gIH1cbiAgcmV0dXJuIGxpc3QuY29uY2F0KHNjcm9sbGFibGVBbmNlc3RvciwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoc2Nyb2xsYWJsZUFuY2VzdG9yLCBbXSwgdHJhdmVyc2VJZnJhbWVzKSk7XG59XG5mdW5jdGlvbiBnZXRGcmFtZUVsZW1lbnQod2luKSB7XG4gIHJldHVybiB3aW4ucGFyZW50ICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZih3aW4ucGFyZW50KSA/IHdpbi5mcmFtZUVsZW1lbnQgOiBudWxsO1xufVxuXG5leHBvcnQgeyBnZXRDb21wdXRlZFN0eWxlLCBnZXRDb250YWluaW5nQmxvY2ssIGdldERvY3VtZW50RWxlbWVudCwgZ2V0RnJhbWVFbGVtZW50LCBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvciwgZ2V0Tm9kZU5hbWUsIGdldE5vZGVTY3JvbGwsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBnZXRQYXJlbnROb2RlLCBnZXRXaW5kb3csIGlzQ29udGFpbmluZ0Jsb2NrLCBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQsIGlzTGFzdFRyYXZlcnNhYmxlTm9kZSwgaXNOb2RlLCBpc092ZXJmbG93RWxlbWVudCwgaXNTaGFkb3dSb290LCBpc1RhYmxlRWxlbWVudCwgaXNUb3BMYXllciwgaXNXZWJLaXQgfTtcbiIsImltcG9ydCB7IHJlY3RUb0NsaWVudFJlY3QsIGRldGVjdE92ZXJmbG93IGFzIGRldGVjdE92ZXJmbG93JDEsIG9mZnNldCBhcyBvZmZzZXQkMSwgYXV0b1BsYWNlbWVudCBhcyBhdXRvUGxhY2VtZW50JDEsIHNoaWZ0IGFzIHNoaWZ0JDEsIGZsaXAgYXMgZmxpcCQxLCBzaXplIGFzIHNpemUkMSwgaGlkZSBhcyBoaWRlJDEsIGFycm93IGFzIGFycm93JDEsIGlubGluZSBhcyBpbmxpbmUkMSwgbGltaXRTaGlmdCBhcyBsaW1pdFNoaWZ0JDEsIGNvbXB1dGVQb3NpdGlvbiBhcyBjb21wdXRlUG9zaXRpb24kMSB9IGZyb20gJ0BmbG9hdGluZy11aS9jb3JlJztcbmltcG9ydCB7IHJvdW5kLCBjcmVhdGVDb29yZHMsIG1heCwgbWluLCBmbG9vciB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5pbXBvcnQgeyBnZXRDb21wdXRlZFN0eWxlLCBpc0hUTUxFbGVtZW50LCBpc0VsZW1lbnQsIGdldFdpbmRvdywgaXNXZWJLaXQsIGdldEZyYW1lRWxlbWVudCwgZ2V0Tm9kZVNjcm9sbCwgZ2V0RG9jdW1lbnRFbGVtZW50LCBpc1RvcExheWVyLCBnZXROb2RlTmFtZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBnZXRQYXJlbnROb2RlLCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzQ29udGFpbmluZ0Jsb2NrLCBpc1RhYmxlRWxlbWVudCwgZ2V0Q29udGFpbmluZ0Jsb2NrIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5leHBvcnQgeyBnZXRPdmVyZmxvd0FuY2VzdG9ycyB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuXG5mdW5jdGlvbiBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpIHtcbiAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgLy8gSW4gdGVzdGluZyBlbnZpcm9ubWVudHMsIHRoZSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBwcm9wZXJ0aWVzIGFyZSBlbXB0eVxuICAvLyBzdHJpbmdzIGZvciBTVkcgZWxlbWVudHMsIHJldHVybmluZyBOYU4uIEZhbGxiYWNrIHRvIGAwYCBpbiB0aGlzIGNhc2UuXG4gIGxldCB3aWR0aCA9IHBhcnNlRmxvYXQoY3NzLndpZHRoKSB8fCAwO1xuICBsZXQgaGVpZ2h0ID0gcGFyc2VGbG9hdChjc3MuaGVpZ2h0KSB8fCAwO1xuICBjb25zdCBoYXNPZmZzZXQgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBvZmZzZXRXaWR0aCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0V2lkdGggOiB3aWR0aDtcbiAgY29uc3Qgb2Zmc2V0SGVpZ2h0ID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRIZWlnaHQgOiBoZWlnaHQ7XG4gIGNvbnN0IHNob3VsZEZhbGxiYWNrID0gcm91bmQod2lkdGgpICE9PSBvZmZzZXRXaWR0aCB8fCByb3VuZChoZWlnaHQpICE9PSBvZmZzZXRIZWlnaHQ7XG4gIGlmIChzaG91bGRGYWxsYmFjaykge1xuICAgIHdpZHRoID0gb2Zmc2V0V2lkdGg7XG4gICAgaGVpZ2h0ID0gb2Zmc2V0SGVpZ2h0O1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICQ6IHNob3VsZEZhbGxiYWNrXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVud3JhcEVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gIWlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgOiBlbGVtZW50O1xufVxuXG5mdW5jdGlvbiBnZXRTY2FsZShlbGVtZW50KSB7XG4gIGNvbnN0IGRvbUVsZW1lbnQgPSB1bndyYXBFbGVtZW50KGVsZW1lbnQpO1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZG9tRWxlbWVudCkpIHtcbiAgICByZXR1cm4gY3JlYXRlQ29vcmRzKDEpO1xuICB9XG4gIGNvbnN0IHJlY3QgPSBkb21FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZG9tRWxlbWVudCk7XG4gIGxldCB4ID0gKCQgPyByb3VuZChyZWN0LndpZHRoKSA6IHJlY3Qud2lkdGgpIC8gd2lkdGg7XG4gIGxldCB5ID0gKCQgPyByb3VuZChyZWN0LmhlaWdodCkgOiByZWN0LmhlaWdodCkgLyBoZWlnaHQ7XG5cbiAgLy8gMCwgTmFOLCBvciBJbmZpbml0eSBzaG91bGQgYWx3YXlzIGZhbGxiYWNrIHRvIDEuXG5cbiAgaWYgKCF4IHx8ICFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB4ID0gMTtcbiAgfVxuICBpZiAoIXkgfHwgIU51bWJlci5pc0Zpbml0ZSh5KSkge1xuICAgIHkgPSAxO1xuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmNvbnN0IG5vT2Zmc2V0cyA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb29yZHMoMCk7XG5mdW5jdGlvbiBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBpZiAoIWlzV2ViS2l0KCkgfHwgIXdpbi52aXN1YWxWaWV3cG9ydCkge1xuICAgIHJldHVybiBub09mZnNldHM7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCxcbiAgICB5OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wXG4gIH07XG59XG5mdW5jdGlvbiBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGVsZW1lbnQsIGlzRml4ZWQsIGZsb2F0aW5nT2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cbiAgaWYgKCFmbG9hdGluZ09mZnNldFBhcmVudCB8fCBpc0ZpeGVkICYmIGZsb2F0aW5nT2Zmc2V0UGFyZW50ICE9PSBnZXRXaW5kb3coZWxlbWVudCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzRml4ZWQ7XG59XG5cbmZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpbmNsdWRlU2NhbGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGVTY2FsZSA9IGZhbHNlO1xuICB9XG4gIGlmIChpc0ZpeGVkU3RyYXRlZ3kgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWRTdHJhdGVneSA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBpZiAoaW5jbHVkZVNjYWxlKSB7XG4gICAgaWYgKG9mZnNldFBhcmVudCkge1xuICAgICAgaWYgKGlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShlbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IHNob3VsZEFkZFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpID8gZ2V0VmlzdWFsT2Zmc2V0cyhkb21FbGVtZW50KSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgbGV0IHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgdmlzdWFsT2Zmc2V0cy54KSAvIHNjYWxlLng7XG4gIGxldCB5ID0gKGNsaWVudFJlY3QudG9wICsgdmlzdWFsT2Zmc2V0cy55KSAvIHNjYWxlLnk7XG4gIGxldCB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGggLyBzY2FsZS54O1xuICBsZXQgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQgLyBzY2FsZS55O1xuICBpZiAoZG9tRWxlbWVudCkge1xuICAgIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhkb21FbGVtZW50KTtcbiAgICBjb25zdCBvZmZzZXRXaW4gPSBvZmZzZXRQYXJlbnQgJiYgaXNFbGVtZW50KG9mZnNldFBhcmVudCkgPyBnZXRXaW5kb3cob2Zmc2V0UGFyZW50KSA6IG9mZnNldFBhcmVudDtcbiAgICBsZXQgY3VycmVudFdpbiA9IHdpbjtcbiAgICBsZXQgY3VycmVudElGcmFtZSA9IGdldEZyYW1lRWxlbWVudChjdXJyZW50V2luKTtcbiAgICB3aGlsZSAoY3VycmVudElGcmFtZSAmJiBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0V2luICE9PSBjdXJyZW50V2luKSB7XG4gICAgICBjb25zdCBpZnJhbWVTY2FsZSA9IGdldFNjYWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgaWZyYW1lUmVjdCA9IGN1cnJlbnRJRnJhbWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgbGVmdCA9IGlmcmFtZVJlY3QubGVmdCArIChjdXJyZW50SUZyYW1lLmNsaWVudExlZnQgKyBwYXJzZUZsb2F0KGNzcy5wYWRkaW5nTGVmdCkpICogaWZyYW1lU2NhbGUueDtcbiAgICAgIGNvbnN0IHRvcCA9IGlmcmFtZVJlY3QudG9wICsgKGN1cnJlbnRJRnJhbWUuY2xpZW50VG9wICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ1RvcCkpICogaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKj0gaWZyYW1lU2NhbGUueDtcbiAgICAgIHkgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHdpZHRoICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICBoZWlnaHQgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKz0gbGVmdDtcbiAgICAgIHkgKz0gdG9wO1xuICAgICAgY3VycmVudFdpbiA9IGdldFdpbmRvdyhjdXJyZW50SUZyYW1lKTtcbiAgICAgIGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH0pO1xufVxuXG4vLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4vLyBpbmNvcnJlY3QgZm9yIFJUTC5cbmZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCwgcmVjdCkge1xuICBjb25zdCBsZWZ0U2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xuICBpZiAoIXJlY3QpIHtcbiAgICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGxlZnRTY3JvbGw7XG4gIH1cbiAgcmV0dXJuIHJlY3QubGVmdCArIGxlZnRTY3JvbGw7XG59XG5cbmZ1bmN0aW9uIGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwsIGlnbm9yZVNjcm9sbGJhclgpIHtcbiAgaWYgKGlnbm9yZVNjcm9sbGJhclggPT09IHZvaWQgMCkge1xuICAgIGlnbm9yZVNjcm9sbGJhclggPSBmYWxzZTtcbiAgfVxuICBjb25zdCBodG1sUmVjdCA9IGRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgeCA9IGh0bWxSZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIChpZ25vcmVTY3JvbGxiYXJYID8gMCA6XG4gIC8vIFJUTCA8Ym9keT4gc2Nyb2xsYmFyLlxuICBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCwgaHRtbFJlY3QpKTtcbiAgY29uc3QgeSA9IGh0bWxSZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3A7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgdG9wTGF5ZXIgPSBlbGVtZW50cyA/IGlzVG9wTGF5ZXIoZWxlbWVudHMuZmxvYXRpbmcpIDogZmFsc2U7XG4gIGlmIChvZmZzZXRQYXJlbnQgPT09IGRvY3VtZW50RWxlbWVudCB8fCB0b3BMYXllciAmJiBpc0ZpeGVkKSB7XG4gICAgcmV0dXJuIHJlY3Q7XG4gIH1cbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBsZXQgc2NhbGUgPSBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IG9mZnNldHMgPSBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50KTtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9XG4gIH1cbiAgY29uc3QgaHRtbE9mZnNldCA9IGRvY3VtZW50RWxlbWVudCAmJiAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQgPyBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCB0cnVlKSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogcmVjdC53aWR0aCAqIHNjYWxlLngsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAqIHNjYWxlLnksXG4gICAgeDogcmVjdC54ICogc2NhbGUueCAtIHNjcm9sbC5zY3JvbGxMZWZ0ICogc2NhbGUueCArIG9mZnNldHMueCArIGh0bWxPZmZzZXQueCxcbiAgICB5OiByZWN0LnkgKiBzY2FsZS55IC0gc2Nyb2xsLnNjcm9sbFRvcCAqIHNjYWxlLnkgKyBvZmZzZXRzLnkgKyBodG1sT2Zmc2V0LnlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdHMoZWxlbWVudCkge1xuICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmdldENsaWVudFJlY3RzKCkpO1xufVxuXG4vLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlLlxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KTtcbiAgY29uc3QgYm9keSA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5ib2R5O1xuICBjb25zdCB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5LnNjcm9sbFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKTtcbiAgY29uc3QgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keS5zY3JvbGxIZWlnaHQsIGJvZHkuY2xpZW50SGVpZ2h0KTtcbiAgbGV0IHggPSAtc2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICBjb25zdCB5ID0gLXNjcm9sbC5zY3JvbGxUb3A7XG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKSAtIHdpZHRoO1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgbGV0IHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgbGV0IGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICBsZXQgeCA9IDA7XG4gIGxldCB5ID0gMDtcbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgY29uc3QgdmlzdWFsVmlld3BvcnRCYXNlZCA9IGlzV2ViS2l0KCk7XG4gICAgaWYgKCF2aXN1YWxWaWV3cG9ydEJhc2VkIHx8IHZpc3VhbFZpZXdwb3J0QmFzZWQgJiYgc3RyYXRlZ3kgPT09ICdmaXhlZCcpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbi8vIFJldHVybnMgdGhlIGlubmVyIGNsaWVudCByZWN0LCBzdWJ0cmFjdGluZyBzY3JvbGxiYXJzIGlmIHByZXNlbnQuXG5mdW5jdGlvbiBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgY29uc3QgdG9wID0gY2xpZW50UmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgY29uc3QgbGVmdCA9IGNsaWVudFJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdDtcbiAgY29uc3Qgc2NhbGUgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0U2NhbGUoZWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IHdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aCAqIHNjYWxlLng7XG4gIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0ICogc2NhbGUueTtcbiAgY29uc3QgeCA9IGxlZnQgKiBzY2FsZS54O1xuICBjb25zdCB5ID0gdG9wICogc2NhbGUueTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpIHtcbiAgbGV0IHJlY3Q7XG4gIGlmIChjbGlwcGluZ0FuY2VzdG9yID09PSAndmlld3BvcnQnKSB7XG4gICAgcmVjdCA9IGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSk7XG4gIH0gZWxzZSBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ2RvY3VtZW50Jykge1xuICAgIHJlY3QgPSBnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKTtcbiAgfSBlbHNlIGlmIChpc0VsZW1lbnQoY2xpcHBpbmdBbmNlc3RvcikpIHtcbiAgICByZWN0ID0gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpO1xuICAgIHJlY3QgPSB7XG4gICAgICB4OiBjbGlwcGluZ0FuY2VzdG9yLnggLSB2aXN1YWxPZmZzZXRzLngsXG4gICAgICB5OiBjbGlwcGluZ0FuY2VzdG9yLnkgLSB2aXN1YWxPZmZzZXRzLnksXG4gICAgICB3aWR0aDogY2xpcHBpbmdBbmNlc3Rvci53aWR0aCxcbiAgICAgIGhlaWdodDogY2xpcHBpbmdBbmNlc3Rvci5oZWlnaHRcbiAgICB9O1xuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHJlY3QpO1xufVxuZnVuY3Rpb24gaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIHN0b3BOb2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICBpZiAocGFyZW50Tm9kZSA9PT0gc3RvcE5vZGUgfHwgIWlzRWxlbWVudChwYXJlbnROb2RlKSB8fCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUocGFyZW50Tm9kZSkucG9zaXRpb24gPT09ICdmaXhlZCcgfHwgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKHBhcmVudE5vZGUsIHN0b3BOb2RlKTtcbn1cblxuLy8gQSBcImNsaXBwaW5nIGFuY2VzdG9yXCIgaXMgYW4gYG92ZXJmbG93YCBlbGVtZW50IHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBjaGlsZCBlbGVtZW50cy4gVGhpcyByZXR1cm5zIGFsbCBjbGlwcGluZyBhbmNlc3RvcnNcbi8vIG9mIHRoZSBnaXZlbiBlbGVtZW50IHVwIHRoZSB0cmVlLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIGNhY2hlKSB7XG4gIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlLmdldChlbGVtZW50KTtcbiAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gIH1cbiAgbGV0IHJlc3VsdCA9IGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnQsIFtdLCBmYWxzZSkuZmlsdGVyKGVsID0+IGlzRWxlbWVudChlbCkgJiYgZ2V0Tm9kZU5hbWUoZWwpICE9PSAnYm9keScpO1xuICBsZXQgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICBjb25zdCBlbGVtZW50SXNGaXhlZCA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCc7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gZ2V0UGFyZW50Tm9kZShlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcbiAgd2hpbGUgKGlzRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Tm9kZSk7XG4gICAgY29uc3QgY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgPSBpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSk7XG4gICAgaWYgKCFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHNob3VsZERyb3BDdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmICFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA6ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlICYmIFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmNsdWRlcyhjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZS5wb3NpdGlvbikgfHwgaXNPdmVyZmxvd0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgY3VycmVudE5vZGUpO1xuICAgIGlmIChzaG91bGREcm9wQ3VycmVudE5vZGUpIHtcbiAgICAgIC8vIERyb3Agbm9uLWNvbnRhaW5pbmcgYmxvY2tzLlxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihhbmNlc3RvciA9PiBhbmNlc3RvciAhPT0gY3VycmVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWNvcmQgbGFzdCBjb250YWluaW5nIGJsb2NrIGZvciBuZXh0IGl0ZXJhdGlvbi5cbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZTtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICBjYWNoZS5zZXQoZWxlbWVudCwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgYW5jZXN0b3JzLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50LFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ0FuY2VzdG9ycycgPyBpc1RvcExheWVyKGVsZW1lbnQpID8gW10gOiBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgdGhpcy5fYykgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICBjb25zdCBjbGlwcGluZ0FuY2VzdG9ycyA9IFsuLi5lbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMsIHJvb3RCb3VuZGFyeV07XG4gIGNvbnN0IGZpcnN0Q2xpcHBpbmdBbmNlc3RvciA9IGNsaXBwaW5nQW5jZXN0b3JzWzBdO1xuICBjb25zdCBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ0FuY2VzdG9ycy5yZWR1Y2UoKGFjY1JlY3QsIGNsaXBwaW5nQW5jZXN0b3IpID0+IHtcbiAgICBjb25zdCByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgZmlyc3RDbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiBjbGlwcGluZ1JlY3QucmlnaHQgLSBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICBoZWlnaHQ6IGNsaXBwaW5nUmVjdC5ib3R0b20gLSBjbGlwcGluZ1JlY3QudG9wLFxuICAgIHg6IGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIHk6IGNsaXBwaW5nUmVjdC50b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGVsZW1lbnQsIG9mZnNldFBhcmVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBpc0ZpeGVkID0gc3RyYXRlZ3kgPT09ICdmaXhlZCc7XG4gIGNvbnN0IHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIC8vIElmIHRoZSA8Ym9keT4gc2Nyb2xsYmFyIGFwcGVhcnMgb24gdGhlIGxlZnQgKGUuZy4gUlRMIHN5c3RlbXMpLiBVc2VcbiAgICAgIC8vIEZpcmVmb3ggd2l0aCBsYXlvdXQuc2Nyb2xsYmFyLnNpZGUgPSAzIGluIGFib3V0OmNvbmZpZyB0byB0ZXN0IHRoaXMuXG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IHggPSByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCAtIGh0bWxPZmZzZXQueDtcbiAgY29uc3QgeSA9IHJlY3QudG9wICsgc2Nyb2xsLnNjcm9sbFRvcCAtIG9mZnNldHMueSAtIGh0bWxPZmZzZXQueTtcbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc1N0YXRpY1Bvc2l0aW9uZWQoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYyc7XG59XG5cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocG9seWZpbGwpIHtcbiAgICByZXR1cm4gcG9seWZpbGwoZWxlbWVudCk7XG4gIH1cbiAgbGV0IHJhd09mZnNldFBhcmVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50O1xuXG4gIC8vIEZpcmVmb3ggcmV0dXJucyB0aGUgPGh0bWw+IGVsZW1lbnQgYXMgdGhlIG9mZnNldFBhcmVudCBpZiBpdCdzIG5vbi1zdGF0aWMsXG4gIC8vIHdoaWxlIENocm9tZSBhbmQgU2FmYXJpIHJldHVybiB0aGUgPGJvZHk+IGVsZW1lbnQuIFRoZSA8Ym9keT4gZWxlbWVudCBtdXN0XG4gIC8vIGJlIHVzZWQgdG8gcGVyZm9ybSB0aGUgY29ycmVjdCBjYWxjdWxhdGlvbnMgZXZlbiBpZiB0aGUgPGh0bWw+IGVsZW1lbnQgaXNcbiAgLy8gbm9uLXN0YXRpYy5cbiAgaWYgKGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSA9PT0gcmF3T2Zmc2V0UGFyZW50KSB7XG4gICAgcmF3T2Zmc2V0UGFyZW50ID0gcmF3T2Zmc2V0UGFyZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuICByZXR1cm4gcmF3T2Zmc2V0UGFyZW50O1xufVxuXG4vLyBHZXRzIHRoZSBjbG9zZXN0IGFuY2VzdG9yIHBvc2l0aW9uZWQgZWxlbWVudC4gSGFuZGxlcyBzb21lIGVkZ2UgY2FzZXMsXG4vLyBzdWNoIGFzIHRhYmxlIGFuY2VzdG9ycyBhbmQgY3Jvc3MgYnJvd3NlciBidWdzLlxuZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKGlzVG9wTGF5ZXIoZWxlbWVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIGxldCBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICAgIHdoaWxlIChzdmdPZmZzZXRQYXJlbnQgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICBpZiAoaXNFbGVtZW50KHN2Z09mZnNldFBhcmVudCkgJiYgIWlzU3RhdGljUG9zaXRpb25lZChzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHJldHVybiBzdmdPZmZzZXRQYXJlbnQ7XG4gICAgICB9XG4gICAgICBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKHN2Z09mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIHJldHVybiB3aW47XG4gIH1cbiAgbGV0IG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpO1xuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCwgcG9seWZpbGwpO1xuICB9XG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgaXNMYXN0VHJhdmVyc2FibGVOb2RlKG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkgJiYgIWlzQ29udGFpbmluZ0Jsb2NrKG9mZnNldFBhcmVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbjtcbn1cblxuY29uc3QgZ2V0RWxlbWVudFJlY3RzID0gYXN5bmMgZnVuY3Rpb24gKGRhdGEpIHtcbiAgY29uc3QgZ2V0T2Zmc2V0UGFyZW50Rm4gPSB0aGlzLmdldE9mZnNldFBhcmVudCB8fCBnZXRPZmZzZXRQYXJlbnQ7XG4gIGNvbnN0IGdldERpbWVuc2lvbnNGbiA9IHRoaXMuZ2V0RGltZW5zaW9ucztcbiAgY29uc3QgZmxvYXRpbmdEaW1lbnNpb25zID0gYXdhaXQgZ2V0RGltZW5zaW9uc0ZuKGRhdGEuZmxvYXRpbmcpO1xuICByZXR1cm4ge1xuICAgIHJlZmVyZW5jZTogZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZGF0YS5yZWZlcmVuY2UsIGF3YWl0IGdldE9mZnNldFBhcmVudEZuKGRhdGEuZmxvYXRpbmcpLCBkYXRhLnN0cmF0ZWd5KSxcbiAgICBmbG9hdGluZzoge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICB3aWR0aDogZmxvYXRpbmdEaW1lbnNpb25zLndpZHRoLFxuICAgICAgaGVpZ2h0OiBmbG9hdGluZ0RpbWVuc2lvbnMuaGVpZ2h0XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gaXNSVEwoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5kaXJlY3Rpb24gPT09ICdydGwnO1xufVxuXG5jb25zdCBwbGF0Zm9ybSA9IHtcbiAgY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QsXG4gIGdldERvY3VtZW50RWxlbWVudCxcbiAgZ2V0Q2xpcHBpbmdSZWN0LFxuICBnZXRPZmZzZXRQYXJlbnQsXG4gIGdldEVsZW1lbnRSZWN0cyxcbiAgZ2V0Q2xpZW50UmVjdHMsXG4gIGdldERpbWVuc2lvbnMsXG4gIGdldFNjYWxlLFxuICBpc0VsZW1lbnQsXG4gIGlzUlRMXG59O1xuXG5mdW5jdGlvbiByZWN0c0FyZUVxdWFsKGEsIGIpIHtcbiAgcmV0dXJuIGEueCA9PT0gYi54ICYmIGEueSA9PT0gYi55ICYmIGEud2lkdGggPT09IGIud2lkdGggJiYgYS5oZWlnaHQgPT09IGIuaGVpZ2h0O1xufVxuXG4vLyBodHRwczovL3NhbXRob3IuYXUvMjAyMS9vYnNlcnZpbmctZG9tL1xuZnVuY3Rpb24gb2JzZXJ2ZU1vdmUoZWxlbWVudCwgb25Nb3ZlKSB7XG4gIGxldCBpbyA9IG51bGw7XG4gIGxldCB0aW1lb3V0SWQ7XG4gIGNvbnN0IHJvb3QgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgdmFyIF9pbztcbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAoX2lvID0gaW8pID09IG51bGwgfHwgX2lvLmRpc2Nvbm5lY3QoKTtcbiAgICBpbyA9IG51bGw7XG4gIH1cbiAgZnVuY3Rpb24gcmVmcmVzaChza2lwLCB0aHJlc2hvbGQpIHtcbiAgICBpZiAoc2tpcCA9PT0gdm9pZCAwKSB7XG4gICAgICBza2lwID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aHJlc2hvbGQgPT09IHZvaWQgMCkge1xuICAgICAgdGhyZXNob2xkID0gMTtcbiAgICB9XG4gICAgY2xlYW51cCgpO1xuICAgIGNvbnN0IGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbiA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3Qge1xuICAgICAgbGVmdCxcbiAgICAgIHRvcCxcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0XG4gICAgfSA9IGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbjtcbiAgICBpZiAoIXNraXApIHtcbiAgICAgIG9uTW92ZSgpO1xuICAgIH1cbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5zZXRUb3AgPSBmbG9vcih0b3ApO1xuICAgIGNvbnN0IGluc2V0UmlnaHQgPSBmbG9vcihyb290LmNsaWVudFdpZHRoIC0gKGxlZnQgKyB3aWR0aCkpO1xuICAgIGNvbnN0IGluc2V0Qm90dG9tID0gZmxvb3Iocm9vdC5jbGllbnRIZWlnaHQgLSAodG9wICsgaGVpZ2h0KSk7XG4gICAgY29uc3QgaW5zZXRMZWZ0ID0gZmxvb3IobGVmdCk7XG4gICAgY29uc3Qgcm9vdE1hcmdpbiA9IC1pbnNldFRvcCArIFwicHggXCIgKyAtaW5zZXRSaWdodCArIFwicHggXCIgKyAtaW5zZXRCb3R0b20gKyBcInB4IFwiICsgLWluc2V0TGVmdCArIFwicHhcIjtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbixcbiAgICAgIHRocmVzaG9sZDogbWF4KDAsIG1pbigxLCB0aHJlc2hvbGQpKSB8fCAxXG4gICAgfTtcbiAgICBsZXQgaXNGaXJzdFVwZGF0ZSA9IHRydWU7XG4gICAgZnVuY3Rpb24gaGFuZGxlT2JzZXJ2ZShlbnRyaWVzKSB7XG4gICAgICBjb25zdCByYXRpbyA9IGVudHJpZXNbMF0uaW50ZXJzZWN0aW9uUmF0aW87XG4gICAgICBpZiAocmF0aW8gIT09IHRocmVzaG9sZCkge1xuICAgICAgICBpZiAoIWlzRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gcmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmF0aW8pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGNsaXBwZWQsIHRoZSByYXRpbyBpcyAwLiBUaHJvdHRsZSB0aGUgcmVmcmVzaFxuICAgICAgICAgIC8vIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCBvZiB1cGRhdGVzLlxuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVmcmVzaChmYWxzZSwgMWUtNyk7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmcmVzaChmYWxzZSwgcmF0aW8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmF0aW8gPT09IDEgJiYgIXJlY3RzQXJlRXF1YWwoZWxlbWVudFJlY3RGb3JSb290TWFyZ2luLCBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSkge1xuICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgZXZlbiB0aG91Z2ggdGhlIHJhdGlvIGlzIHJlcG9ydGVkIGFzIDEsIHRoZVxuICAgICAgICAvLyBlbGVtZW50IGlzIG5vdCBhY3R1YWxseSBmdWxseSB3aXRoaW4gdGhlIEludGVyc2VjdGlvbk9ic2VydmVyJ3Mgcm9vdFxuICAgICAgICAvLyBhcmVhIGFueW1vcmUuIFRoaXMgY2FuIGhhcHBlbiB1bmRlciBwZXJmb3JtYW5jZSBjb25zdHJhaW50cy4gVGhpcyBtYXlcbiAgICAgICAgLy8gYmUgYSBidWcgaW4gdGhlIGJyb3dzZXIncyBJbnRlcnNlY3Rpb25PYnNlcnZlciBpbXBsZW1lbnRhdGlvbi4gVG9cbiAgICAgICAgLy8gd29yayBhcm91bmQgdGhpcywgd2UgY29tcGFyZSB0aGUgZWxlbWVudCdzIGJvdW5kaW5nIHJlY3Qgbm93IHdpdGhcbiAgICAgICAgLy8gd2hhdCBpdCB3YXMgYXQgdGhlIHRpbWUgd2UgY3JlYXRlZCB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuIElmIHRoZXlcbiAgICAgICAgLy8gYXJlIG5vdCBlcXVhbCB0aGVuIHRoZSBlbGVtZW50IG1vdmVkLCBzbyB3ZSByZWZyZXNoLlxuICAgICAgICByZWZyZXNoKCk7XG4gICAgICB9XG4gICAgICBpc0ZpcnN0VXBkYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT2xkZXIgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCBhIGBkb2N1bWVudGAgYXMgdGhlIHJvb3QgYW5kIHdpbGwgdGhyb3cgYW5cbiAgICAvLyBlcnJvci5cbiAgICB0cnkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAvLyBIYW5kbGUgPGlmcmFtZT5zXG4gICAgICAgIHJvb3Q6IHJvb3Qub3duZXJEb2N1bWVudFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlvLm9ic2VydmUoZWxlbWVudCk7XG4gIH1cbiAgcmVmcmVzaCh0cnVlKTtcbiAgcmV0dXJuIGNsZWFudXA7XG59XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgbGF5b3V0U2hpZnQgPSB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgYW5pbWF0aW9uRnJhbWUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVmZXJlbmNlRWwgPSB1bndyYXBFbGVtZW50KHJlZmVyZW5jZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihyZWZlcmVuY2VFbCA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZUVsKSA6IFtdKSwgLi4uZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZmxvYXRpbmcpXSA6IFtdO1xuICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlXG4gICAgfSk7XG4gICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgfSk7XG4gIGNvbnN0IGNsZWFudXBJbyA9IHJlZmVyZW5jZUVsICYmIGxheW91dFNoaWZ0ID8gb2JzZXJ2ZU1vdmUocmVmZXJlbmNlRWwsIHVwZGF0ZSkgOiBudWxsO1xuICBsZXQgcmVvYnNlcnZlRnJhbWUgPSAtMTtcbiAgbGV0IHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihfcmVmID0+IHtcbiAgICAgIGxldCBbZmlyc3RFbnRyeV0gPSBfcmVmO1xuICAgICAgaWYgKGZpcnN0RW50cnkgJiYgZmlyc3RFbnRyeS50YXJnZXQgPT09IHJlZmVyZW5jZUVsICYmIHJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIC8vIFByZXZlbnQgdXBkYXRlIGxvb3BzIHdoZW4gdXNpbmcgdGhlIGBzaXplYCBtaWRkbGV3YXJlLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzE3NDBcbiAgICAgICAgcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmVvYnNlcnZlRnJhbWUpO1xuICAgICAgICByZW9ic2VydmVGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9yZXNpemVPYnNlcnZlcjtcbiAgICAgICAgICAoX3Jlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZSgpO1xuICAgIH0pO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiAhYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUocmVmZXJlbmNlRWwpO1xuICAgIH1cbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAhcmVjdHNBcmVFcXVhbChwcmV2UmVmUmVjdCwgbmV4dFJlZlJlY3QpKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gICAgcHJldlJlZlJlY3QgPSBuZXh0UmVmUmVjdDtcbiAgICBmcmFtZUlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZyYW1lTG9vcCk7XG4gIH1cbiAgdXBkYXRlKCk7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgdmFyIF9yZXNpemVPYnNlcnZlcjI7XG4gICAgYW5jZXN0b3JzLmZvckVhY2goYW5jZXN0b3IgPT4ge1xuICAgICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlKTtcbiAgICAgIGFuY2VzdG9yUmVzaXplICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSk7XG4gICAgfSk7XG4gICAgY2xlYW51cElvID09IG51bGwgfHwgY2xlYW51cElvKCk7XG4gICAgKF9yZXNpemVPYnNlcnZlcjIgPSByZXNpemVPYnNlcnZlcikgPT0gbnVsbCB8fCBfcmVzaXplT2JzZXJ2ZXIyLmRpc2Nvbm5lY3QoKTtcbiAgICByZXNpemVPYnNlcnZlciA9IG51bGw7XG4gICAgaWYgKGFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZUlkKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5jb25zdCBkZXRlY3RPdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93JDE7XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHBsYWNlbWVudCBieSB0cmFuc2xhdGluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGVcbiAqIHNwZWNpZmllZCBheGVzLlxuICogQSBudW1iZXIgKHNob3J0aGFuZCBmb3IgYG1haW5BeGlzYCBvciBkaXN0YW5jZSksIG9yIGFuIGF4ZXMgY29uZmlndXJhdGlvblxuICogb2JqZWN0IG1heSBiZSBwYXNzZWQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gKi9cbmNvbnN0IG9mZnNldCA9IG9mZnNldCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IGF1dG9QbGFjZW1lbnQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgc2hpZnRpbmcgaXQgaW4gb3JkZXIgdG9cbiAqIGtlZXAgaXQgaW4gdmlldyB3aGVuIGl0IHdpbGwgb3ZlcmZsb3cgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0XG4gKi9cbmNvbnN0IHNoaWZ0ID0gc2hpZnQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmbGlwJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0aGF0IGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IOKAlFxuICogZm9yIGluc3RhbmNlLCBwcmV2ZW50IGl0IGZyb20gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5IG9yIG1hdGNoIHRoZVxuICogd2lkdGggb2YgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NpemVcbiAqL1xuY29uc3Qgc2l6ZSA9IHNpemUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIGhpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW4gYXBwbGljYWJsZSBzaXR1YXRpb25zLCBzdWNoIGFzXG4gKiB3aGVuIGl0IGlzIG5vdCBpbiB0aGUgc2FtZSBjbGlwcGluZyBjb250ZXh0IGFzIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9oaWRlXG4gKi9cbmNvbnN0IGhpZGUgPSBoaWRlJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gYXJyb3ckMTtcblxuLyoqXG4gKiBQcm92aWRlcyBpbXByb3ZlZCBwb3NpdGlvbmluZyBmb3IgaW5saW5lIHJlZmVyZW5jZSBlbGVtZW50cyB0aGF0IGNhbiBzcGFuXG4gKiBvdmVyIG11bHRpcGxlIGxpbmVzLCBzdWNoIGFzIGh5cGVybGlua3Mgb3IgcmFuZ2Ugc2VsZWN0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbmxpbmVcbiAqL1xuY29uc3QgaW5saW5lID0gaW5saW5lJDE7XG5cbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSBsaW1pdFNoaWZ0JDE7XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIGdpdmVuIHJlZmVyZW5jZSBlbGVtZW50LlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSAocmVmZXJlbmNlLCBmbG9hdGluZywgb3B0aW9ucykgPT4ge1xuICAvLyBUaGlzIGNhY2hlcyB0aGUgZXhwZW5zaXZlIGBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnNgIGZ1bmN0aW9uIHNvIHRoYXRcbiAgLy8gbXVsdGlwbGUgbGlmZWN5Y2xlIHJlc2V0cyByZS11c2UgdGhlIHNhbWUgcmVzdWx0LiBJdCBvbmx5IGxpdmVzIGZvciBhXG4gIC8vIHNpbmdsZSBjYWxsLiBJZiBvdGhlciBmdW5jdGlvbnMgYmVjb21lIGV4cGVuc2l2ZSwgd2UgY2FuIGFkZCB0aGVtIGFzIHdlbGwuXG4gIGNvbnN0IGNhY2hlID0gbmV3IE1hcCgpO1xuICBjb25zdCBtZXJnZWRPcHRpb25zID0ge1xuICAgIHBsYXRmb3JtLFxuICAgIC4uLm9wdGlvbnNcbiAgfTtcbiAgY29uc3QgcGxhdGZvcm1XaXRoQ2FjaGUgPSB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucy5wbGF0Zm9ybSxcbiAgICBfYzogY2FjaGVcbiAgfTtcbiAgcmV0dXJuIGNvbXB1dGVQb3NpdGlvbiQxKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLFxuICAgIHBsYXRmb3JtOiBwbGF0Zm9ybVdpdGhDYWNoZVxuICB9KTtcbn07XG5cbmV4cG9ydCB7IGFycm93LCBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcGxhdGZvcm0sIHNoaWZ0LCBzaXplIH07XG4iLCJpbXBvcnQgeyBhcnJvdyBhcyBhcnJvdyQxLCBjb21wdXRlUG9zaXRpb24gfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmV4cG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcGxhdGZvcm0sIHNoaWZ0LCBzaXplIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBpc05vZGUsIGdldE5vZGVOYW1lIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyB1bnJlZiwgY29tcHV0ZWQsIHJlZiwgc2hhbGxvd1JlZiwgd2F0Y2gsIGdldEN1cnJlbnRTY29wZSwgb25TY29wZURpc3Bvc2UsIHNoYWxsb3dSZWFkb25seSB9IGZyb20gJ3Z1ZS1kZW1pJztcblxuZnVuY3Rpb24gaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSh0YXJnZXQpIHtcbiAgcmV0dXJuIHRhcmdldCAhPSBudWxsICYmIHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnICYmICckZWwnIGluIHRhcmdldDtcbn1cbmZ1bmN0aW9uIHVud3JhcEVsZW1lbnQodGFyZ2V0KSB7XG4gIGlmIChpc0NvbXBvbmVudFB1YmxpY0luc3RhbmNlKHRhcmdldCkpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGFyZ2V0LiRlbDtcbiAgICByZXR1cm4gaXNOb2RlKGVsZW1lbnQpICYmIGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnI2NvbW1lbnQnID8gbnVsbCA6IGVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gdG9WYWx1ZShzb3VyY2UpIHtcbiAgcmV0dXJuIHR5cGVvZiBzb3VyY2UgPT09ICdmdW5jdGlvbicgPyBzb3VyY2UoKSA6IHVucmVmKHNvdXJjZSk7XG59XG5cbi8qKlxuICogUG9zaXRpb25zIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc3VjaCB0aGF0IGl0IGlzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBhcnJvdyBvcHRpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmZ1bmN0aW9uIGFycm93KG9wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXJyb3cnLFxuICAgIG9wdGlvbnMsXG4gICAgZm4oYXJncykge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHVud3JhcEVsZW1lbnQodG9WYWx1ZShvcHRpb25zLmVsZW1lbnQpKTtcbiAgICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycm93JDEoe1xuICAgICAgICBlbGVtZW50LFxuICAgICAgICBwYWRkaW5nOiBvcHRpb25zLnBhZGRpbmdcbiAgICAgIH0pLmZuKGFyZ3MpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RFBSKGVsZW1lbnQpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgY29uc3Qgd2luID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgcmV0dXJuIHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG59XG5cbmZ1bmN0aW9uIHJvdW5kQnlEUFIoZWxlbWVudCwgdmFsdWUpIHtcbiAgY29uc3QgZHByID0gZ2V0RFBSKGVsZW1lbnQpO1xuICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIGRwcikgLyBkcHI7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBuZXh0IHRvIGEgcmVmZXJlbmNlIGVsZW1lbnQgd2hlbiBpdCBpcyBnaXZlbiBhIGNlcnRhaW4gQ1NTIHBvc2l0aW9uaW5nIHN0cmF0ZWd5LlxuICogQHBhcmFtIHJlZmVyZW5jZSBUaGUgcmVmZXJlbmNlIHRlbXBsYXRlIHJlZi5cbiAqIEBwYXJhbSBmbG9hdGluZyBUaGUgZmxvYXRpbmcgdGVtcGxhdGUgcmVmLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIGZsb2F0aW5nIG9wdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdnVlXG4gKi9cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiA9IG9wdGlvbnMud2hpbGVFbGVtZW50c01vdW50ZWQ7XG4gIGNvbnN0IG9wZW5PcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlO1xuICAgIHJldHVybiAoX3RvVmFsdWUgPSB0b1ZhbHVlKG9wdGlvbnMub3BlbikpICE9IG51bGwgPyBfdG9WYWx1ZSA6IHRydWU7XG4gIH0pO1xuICBjb25zdCBtaWRkbGV3YXJlT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4gdG9WYWx1ZShvcHRpb25zLm1pZGRsZXdhcmUpKTtcbiAgY29uc3QgcGxhY2VtZW50T3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTI7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTIgPSB0b1ZhbHVlKG9wdGlvbnMucGxhY2VtZW50KSkgIT0gbnVsbCA/IF90b1ZhbHVlMiA6ICdib3R0b20nO1xuICB9KTtcbiAgY29uc3Qgc3RyYXRlZ3lPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlMztcbiAgICByZXR1cm4gKF90b1ZhbHVlMyA9IHRvVmFsdWUob3B0aW9ucy5zdHJhdGVneSkpICE9IG51bGwgPyBfdG9WYWx1ZTMgOiAnYWJzb2x1dGUnO1xuICB9KTtcbiAgY29uc3QgdHJhbnNmb3JtT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTQ7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTQgPSB0b1ZhbHVlKG9wdGlvbnMudHJhbnNmb3JtKSkgIT0gbnVsbCA/IF90b1ZhbHVlNCA6IHRydWU7XG4gIH0pO1xuICBjb25zdCByZWZlcmVuY2VFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gdW53cmFwRWxlbWVudChyZWZlcmVuY2UudmFsdWUpKTtcbiAgY29uc3QgZmxvYXRpbmdFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gdW53cmFwRWxlbWVudChmbG9hdGluZy52YWx1ZSkpO1xuICBjb25zdCB4ID0gcmVmKDApO1xuICBjb25zdCB5ID0gcmVmKDApO1xuICBjb25zdCBzdHJhdGVneSA9IHJlZihzdHJhdGVneU9wdGlvbi52YWx1ZSk7XG4gIGNvbnN0IHBsYWNlbWVudCA9IHJlZihwbGFjZW1lbnRPcHRpb24udmFsdWUpO1xuICBjb25zdCBtaWRkbGV3YXJlRGF0YSA9IHNoYWxsb3dSZWYoe30pO1xuICBjb25zdCBpc1Bvc2l0aW9uZWQgPSByZWYoZmFsc2UpO1xuICBjb25zdCBmbG9hdGluZ1N0eWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsU3R5bGVzID0ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LnZhbHVlLFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgdG9wOiAnMCdcbiAgICB9O1xuICAgIGlmICghZmxvYXRpbmdFbGVtZW50LnZhbHVlKSB7XG4gICAgICByZXR1cm4gaW5pdGlhbFN0eWxlcztcbiAgICB9XG4gICAgY29uc3QgeFZhbCA9IHJvdW5kQnlEUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB4LnZhbHVlKTtcbiAgICBjb25zdCB5VmFsID0gcm91bmRCeURQUihmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHkudmFsdWUpO1xuICAgIGlmICh0cmFuc2Zvcm1PcHRpb24udmFsdWUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmluaXRpYWxTdHlsZXMsXG4gICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoXCIgKyB4VmFsICsgXCJweCwgXCIgKyB5VmFsICsgXCJweClcIixcbiAgICAgICAgLi4uKGdldERQUihmbG9hdGluZ0VsZW1lbnQudmFsdWUpID49IDEuNSAmJiB7XG4gICAgICAgICAgd2lsbENoYW5nZTogJ3RyYW5zZm9ybSdcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogc3RyYXRlZ3kudmFsdWUsXG4gICAgICBsZWZ0OiB4VmFsICsgXCJweFwiLFxuICAgICAgdG9wOiB5VmFsICsgXCJweFwiXG4gICAgfTtcbiAgfSk7XG4gIGxldCB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXA7XG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAocmVmZXJlbmNlRWxlbWVudC52YWx1ZSA9PSBudWxsIHx8IGZsb2F0aW5nRWxlbWVudC52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9wZW4gPSBvcGVuT3B0aW9uLnZhbHVlO1xuICAgIGNvbXB1dGVQb3NpdGlvbihyZWZlcmVuY2VFbGVtZW50LnZhbHVlLCBmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHtcbiAgICAgIG1pZGRsZXdhcmU6IG1pZGRsZXdhcmVPcHRpb24udmFsdWUsXG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudE9wdGlvbi52YWx1ZSxcbiAgICAgIHN0cmF0ZWd5OiBzdHJhdGVneU9wdGlvbi52YWx1ZVxuICAgIH0pLnRoZW4ocG9zaXRpb24gPT4ge1xuICAgICAgeC52YWx1ZSA9IHBvc2l0aW9uLng7XG4gICAgICB5LnZhbHVlID0gcG9zaXRpb24ueTtcbiAgICAgIHN0cmF0ZWd5LnZhbHVlID0gcG9zaXRpb24uc3RyYXRlZ3k7XG4gICAgICBwbGFjZW1lbnQudmFsdWUgPSBwb3NpdGlvbi5wbGFjZW1lbnQ7XG4gICAgICBtaWRkbGV3YXJlRGF0YS52YWx1ZSA9IHBvc2l0aW9uLm1pZGRsZXdhcmVEYXRhO1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgZmxvYXRpbmcgZWxlbWVudCdzIHBvc2l0aW9uIG1heSBiZSByZWNvbXB1dGVkIHdoaWxlIGl0J3MgY2xvc2VkXG4gICAgICAgKiBidXQgc3RpbGwgbW91bnRlZCAoc3VjaCBhcyB3aGVuIHRyYW5zaXRpb25pbmcgb3V0KS4gVG8gZW5zdXJlXG4gICAgICAgKiBgaXNQb3NpdGlvbmVkYCB3aWxsIGJlIGBmYWxzZWAgaW5pdGlhbGx5IG9uIHRoZSBuZXh0IG9wZW4sIGF2b2lkXG4gICAgICAgKiBzZXR0aW5nIGl0IHRvIGB0cnVlYCB3aGVuIGBvcGVuID09PSBmYWxzZWAgKG11c3QgYmUgc3BlY2lmaWVkKS5cbiAgICAgICAqL1xuICAgICAgaXNQb3NpdGlvbmVkLnZhbHVlID0gb3BlbiAhPT0gZmFsc2U7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBpZiAodHlwZW9mIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwKCk7XG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGF0dGFjaCgpIHtcbiAgICBjbGVhbnVwKCk7XG4gICAgaWYgKHdoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVmZXJlbmNlRWxlbWVudC52YWx1ZSAhPSBudWxsICYmIGZsb2F0aW5nRWxlbWVudC52YWx1ZSAhPSBudWxsKSB7XG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPSB3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbihyZWZlcmVuY2VFbGVtZW50LnZhbHVlLCBmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHVwZGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIGlmICghb3Blbk9wdGlvbi52YWx1ZSkge1xuICAgICAgaXNQb3NpdGlvbmVkLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdhdGNoKFttaWRkbGV3YXJlT3B0aW9uLCBwbGFjZW1lbnRPcHRpb24sIHN0cmF0ZWd5T3B0aW9uLCBvcGVuT3B0aW9uXSwgdXBkYXRlLCB7XG4gICAgZmx1c2g6ICdzeW5jJ1xuICB9KTtcbiAgd2F0Y2goW3JlZmVyZW5jZUVsZW1lbnQsIGZsb2F0aW5nRWxlbWVudF0sIGF0dGFjaCwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIHdhdGNoKG9wZW5PcHRpb24sIHJlc2V0LCB7XG4gICAgZmx1c2g6ICdzeW5jJ1xuICB9KTtcbiAgaWYgKGdldEN1cnJlbnRTY29wZSgpKSB7XG4gICAgb25TY29wZURpc3Bvc2UoY2xlYW51cCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiBzaGFsbG93UmVhZG9ubHkoeCksXG4gICAgeTogc2hhbGxvd1JlYWRvbmx5KHkpLFxuICAgIHN0cmF0ZWd5OiBzaGFsbG93UmVhZG9ubHkoc3RyYXRlZ3kpLFxuICAgIHBsYWNlbWVudDogc2hhbGxvd1JlYWRvbmx5KHBsYWNlbWVudCksXG4gICAgbWlkZGxld2FyZURhdGE6IHNoYWxsb3dSZWFkb25seShtaWRkbGV3YXJlRGF0YSksXG4gICAgaXNQb3NpdGlvbmVkOiBzaGFsbG93UmVhZG9ubHkoaXNQb3NpdGlvbmVkKSxcbiAgICBmbG9hdGluZ1N0eWxlcyxcbiAgICB1cGRhdGVcbiAgfTtcbn1cblxuZXhwb3J0IHsgYXJyb3csIHVzZUZsb2F0aW5nIH07XG4iLCJleHBvcnQgY29uc3QgaXNDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQsIGVsZW1lbnRzOiBIVE1MRWxlbWVudCB8IEhUTUxFbGVtZW50W10pOiBib29sZWFuID0+IHtcbiAgY29uc3QgdGFyZ2V0cyA9IEFycmF5LmlzQXJyYXkoZWxlbWVudHMpID8gZWxlbWVudHMgOiBbZWxlbWVudHNdO1xuICByZXR1cm4gIXRhcmdldHMuc29tZSgoZWwpID0+IGVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSk7XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBwb3BvdmVyIGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIGRpc3BsYXlpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXBvcG92ZXItLWRvY3MpIGZvciBUaWRlUG9wb3ZlclxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgb2Zmc2V0IGFzIG9mZnNldE1pZGRsZXdhcmUsIHNoaWZ0LCB1c2VGbG9hdGluZyB9IGZyb20gJ0BmbG9hdGluZy11aS92dWUnO1xuICBpbXBvcnQgeyBjb21wdXRlZCwgb25CZWZvcmVNb3VudCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgaXNDbGlja091dHNpZGUgfSBmcm9tICdAL3V0aWxpdGllcy9ldmVudCc7XG4gIGltcG9ydCB7IFRPUF9MQVlFUl9JRCwgaW5pdEZhdXhUb3BMYXllciB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZpZXdwb3J0JztcblxuICBpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgSFRNTCBub2RlIG92ZXIgd2hpY2ggdGhlIFBvcG92ZXIgd2lsbCBhcHBlYXIgKi9cbiAgICBhbmNob3JJZDogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgc3BhY2luZyBiZXR3ZWVuIFBvcG92ZXIgYW5kIGFuY2hvciBub2RlICovXG4gICAgb2Zmc2V0PzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgb2Zmc2V0OiAxNixcbiAgfSk7XG5cbiAgY29uc3QgYW5jaG9yOiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3QgZmxvYXRpbmc6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCByb290OiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3QgaXNIb3ZlcmVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaXNUb2dnbGVkT3BlbiA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlzVG91Y2hEZXZpY2UgPSByZWYoZmFsc2UpO1xuICBjb25zdCBtaWRkbGV3YXJlID0gcmVmKFthdXRvUGxhY2VtZW50KCksIG9mZnNldE1pZGRsZXdhcmUoeyBtYWluQXhpczogcHJvcHMub2Zmc2V0IH0pLCBzaGlmdCh7IHBhZGRpbmc6IDE2IH0pXSk7XG5cbiAgY29uc3QgaXNTaG93UG9wb3ZlciA9IGNvbXB1dGVkKCgpID0+IGlzSG92ZXJlZC52YWx1ZSB8fCBpc1RvZ2dsZWRPcGVuLnZhbHVlKTtcblxuICBjb25zdCB7IGZsb2F0aW5nU3R5bGVzIH0gPSB1c2VGbG9hdGluZyhhbmNob3IsIGZsb2F0aW5nLCB7XG4gICAgbWlkZGxld2FyZSxcbiAgICBzdHJhdGVneTogJ2ZpeGVkJyxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUgfHwgIWZsb2F0aW5nLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGlzQ2xpY2tPdXRzaWRlKGUsIFthbmNob3IudmFsdWUsIGZsb2F0aW5nLnZhbHVlXSkpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIgPSAoKSA9PiB7XG4gICAgaWYgKGlzVG91Y2hEZXZpY2UudmFsdWUpIHJldHVybjtcbiAgICBpc0hvdmVyZWQudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlID0gKCkgPT4ge1xuICAgIGlmIChpc1RvdWNoRGV2aWNlLnZhbHVlKSByZXR1cm47XG4gICAgaXNIb3ZlcmVkLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudFRvdWNoU3RhcnQgPSAoKSA9PiB7XG4gICAgaXNUb3VjaERldmljZS52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlzVG9nZ2xlZE9wZW4udmFsdWUpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIGlzSG92ZXJlZC52YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGhhbmRsZUFuY2hvckVsZW1lbnRUb3VjaFN0YXJ0LCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIpO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUpO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayk7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUpIHJldHVybiBudWxsO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgaGFuZGxlQW5jaG9yRWxlbWVudFRvdWNoU3RhcnQpO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyKTtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlKTtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93biA9IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhZGRPcGVuTGlzdGVuZXJzVG9Sb290ID0gKCkgPT4ge1xuICAgIGlmICghcm9vdC52YWx1ZSkgcmV0dXJuO1xuICAgIHJvb3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrLCB0cnVlKTtcbiAgICByb290LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24pO1xuICB9O1xuXG4gIGNvbnN0IHJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCA9ICgpID0+IHtcbiAgICBpZiAoIXJvb3QudmFsdWUpIHJldHVybjtcbiAgICByb290LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljaywgdHJ1ZSk7XG4gICAgcm9vdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duKTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVBbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGFuY2hvci52YWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByb3BzLmFuY2hvcklkKTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBpc1RvZ2dsZWRPcGVuLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIGFkZE9wZW5MaXN0ZW5lcnNUb1Jvb3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCgpO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5hbmNob3JJZCxcbiAgICAoKSA9PiB7XG4gICAgICByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCgpO1xuICAgICAgdXBkYXRlQW5jaG9yRWxlbWVudCgpO1xuICAgICAgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50KCk7XG4gICAgfVxuICApO1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBtaWRkbGV3YXJlLnZhbHVlID0gW2F1dG9QbGFjZW1lbnQoKSwgb2Zmc2V0TWlkZGxld2FyZSh7IG1haW5BeGlzOiBwcm9wcy5vZmZzZXQgfSksIHNoaWZ0KHsgcGFkZGluZzogMTYgfSldO1xuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgdXBkYXRlQW5jaG9yRWxlbWVudCgpO1xuICAgIHJvb3QudmFsdWUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50KCk7XG4gIH0pO1xuXG4gIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCgpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8VHJhbnNpdGlvbj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLXBvcG92ZXInLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8yLFxuICAgICAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5TSEFET1cuQk9UVE9NLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwiZmxvYXRpbmdcIlxuICAgICAgICA6c3R5bGU9XCJ7IC4uLmZsb2F0aW5nU3R5bGVzIH1cIlxuICAgICAgICB2LXNob3c9XCJpc1Nob3dQb3BvdmVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvVHJhbnNpdGlvbj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXBvcG92ZXIge1xuICAgIG1heC13aWR0aDogMjU2cHg7XG4gIH1cbiAgLnYtZW50ZXItZnJvbSxcbiAgLnYtbGVhdmUtdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgLnYtZW50ZXItYWN0aXZlLFxuICAudi1sZWF2ZS1hY3RpdmUge1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuICAudi1lbnRlci10byxcbiAgLnYtbGVhdmUtZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgcmF0aW5nIGNvbXBvbmVudCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBkaXNwbGF5aW5nIGFuZCBzZWxlY3RpbmcgYSByYXRpbmcuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVyYXRpbmctLWRvY3MpIGZvciBUaWRlUmF0aW5nXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgdGhlIHRleHQgZGlzcGxheWVkIGJlbG93IHRoZSB0aXRsZSAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqIE1heGltdW0gcmF0aW5nIHZhbHVlIC8gTnVtYmVyIG9mIHNlZ21lbnRzICovXG4gICAgbWF4UmF0aW5nPzogbnVtYmVyO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkaXNwbGF5IHRoZSBjdXJyZW50IHJhdGluZyB2YWx1ZSAqL1xuICAgIHNob3dSYXRpbmc/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIHRpdGxlIHRleHQgZGlzcGxheWVkIGFib3ZlIHRoZSByYXRpbmcgY29tcG9uZW50ICovXG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLFxuICAgIG1heFJhdGluZzogMTAsXG4gICAgc2hvd1JhdGluZzogZmFsc2UsXG4gICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgcmF0aW5nVmFsdWUgPSBkZWZpbmVNb2RlbDxudW1iZXI+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3Qgc2VnbWVudHMgPSBjb21wdXRlZCgoKSA9PiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBwcm9wcy5tYXhSYXRpbmcgfSwgKF8sIGluZGV4KSA9PiBpbmRleCArIDEpKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChzZWdtZW50OiBudW1iZXIpID0+IHtcbiAgICByYXRpbmdWYWx1ZS52YWx1ZSA9IHNlZ21lbnQ7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1yYXRpbmcnLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICA8c2VjdGlvbiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLkJPVFRPTS5IQUxGXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yXVwiPlxuICAgICAgICB7eyBwcm9wcy50aXRsZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzMsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMuc2hvd1JhdGluZ1wiXG4gICAgICA+XG4gICAgICAgIHt7IHJhdGluZ1ZhbHVlIH19L3t7IHByb3BzLm1heFJhdGluZyB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxzZWN0aW9uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5CT0RZXzIsIENTUy5QQURESU5HLkJPVFRPTS5PTkUsIENTUy5PVkVSRkxPVy5YWS5ISURERU4sIENTUy5FTExJUFNJU11cIlxuICAgICAgdi1pZj1cInByb3BzLmRlc2NyaXB0aW9uXCJcbiAgICA+XG4gICAgICB7eyBwcm9wcy5kZXNjcmlwdGlvbiB9fVxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzZWN0aW9uIDpjbGFzcz1cIlsndGlkZS1yYXRpbmctYmFyJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuRkxFWC5HUk9XLk9OLCBDU1MuRkxFWC5TSFJJTksuT05dXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1yYXRpbmctc2VnbWVudCcsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICAgIENTUy5GTEVYLlNIUklOSy5PTixcbiAgICAgICAgICBDU1MuRkxFWC5CQVNJUy5aRVJPLFxuICAgICAgICAgIENTUy5CT1JERVIuRlVMTC5aRVJPLFxuICAgICAgICAgIHNlZ21lbnQgPT09IDEgJiYgWyd0aWRlLXJhdGluZy1zZWdtZW50LWZpcnN0J10sXG4gICAgICAgICAgc2VnbWVudCA9PT0gc2VnbWVudHMubGVuZ3RoICYmIFsndGlkZS1yYXRpbmctc2VnbWVudC1sYXN0J10sXG4gICAgICAgICAgc2VnbWVudCA8PSByYXRpbmdWYWx1ZSAmJiBbQ1NTLkJHLlNVUkZBQ0UuR1JBRElFTlRdLFxuICAgICAgICBdXCJcbiAgICAgICAgOmtleT1cInNlZ21lbnRcIlxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhzZWdtZW50KVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB2LWZvcj1cInNlZ21lbnQgaW4gc2VnbWVudHNcIlxuICAgICAgLz5cbiAgICA8L3NlY3Rpb24+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtcmF0aW5nLWJhciB7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICB9XG5cbiAgLnRpZGUtcmF0aW5nLXNlZ21lbnQge1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigxMiUgMCwgMTAwJSAwLCA4OCUgMTAwJSwgMCAxMDAlKTtcbiAgfVxuXG4gIC50aWRlLXJhdGluZy1zZWdtZW50LWZpcnN0IHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA5OTk5cHg7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOTk5OXB4O1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigwIDAsIDEwMCUgMCwgODglIDEwMCUsIDAgMTAwJSk7XG4gIH1cblxuICAudGlkZS1yYXRpbmctc2VnbWVudC1sYXN0IHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogOTk5OXB4O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA5OTk5cHg7XG4gICAgY2xpcC1wYXRoOiBwb2x5Z29uKDEyJSAwLCAxMDAlIDAsIDEwMCUgMTAwJSwgMCAxMDAlKTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVhbG1LZXkgfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcblxuZXhwb3J0IGNvbnN0IExPR09fSEVJR0hUID0ge1xuICBMQVJHRTogMzIsXG4gIFNNQUxMOiAyNCxcbn07XG5cbmV4cG9ydCBjb25zdCBMT0dPX1dJRFRIX0xBUkdFOiBSZWNvcmQ8UmVhbG1LZXksIG51bWJlcj4gPSB7XG4gIEFFUk86IDE0NyxcbiAgQVRWOiAxNDIsXG4gIEJPQVRNQVJUOiAxMjgsXG4gIENZQ0xFOiAxNjksXG4gIEVRVUlQTUVOVDogMTIyLFxuICBQV0M6IDE0OCxcbiAgUlY6IDEyOSxcbiAgU05PVzogMTM2LFxuICBUUlVDSzogMTQ4LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IENTU19SRUFMTV9MT0dPX1NJWkUgPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBTTUFMTDogJ3NtYWxsJyxcbn0gYXMgY29uc3Q7XG4iLCJpbXBvcnQgeyBSRUFMTSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuXG5pbXBvcnQgdHlwZSB7IFJlYWxtLCBSZWFsbUtleSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhbG1LZXlGcm9tUmVhbG0gPSAocmVhbG06IFJlYWxtKTogUmVhbG1LZXkgPT4ge1xuICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoUkVBTE0pIGFzIFtSZWFsbUtleSwgUmVhbG1dW107XG5cbiAgY29uc3QgbWF0Y2ggPSBlbnRyaWVzLmZpbmQoKGVudHJ5KTogZW50cnkgaXMgW1JlYWxtS2V5LCBSZWFsbV0gPT4ge1xuICAgIHJldHVybiBlbnRyeVsxXSA9PT0gcmVhbG07XG4gIH0pO1xuXG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1hcHBpbmcgZm9yICR7cmVhbG19IG5vdCBmb3VuZGApO1xuICB9XG5cbiAgcmV0dXJuIG1hdGNoWzBdO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgcmVhbG0gbG9nbyBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBhIHJlYWxtJ3MgbG9nby5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXJlYWxtbG9nby0tZG9jcykgZm9yIFRpZGVSZWFsbUxvZ29cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgTE9HT19IRUlHSFQsIExPR09fV0lEVEhfTEFSR0UgfSBmcm9tICdAL3R5cGVzL1JlYWxtTG9nbyc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0UmVhbG1LZXlGcm9tUmVhbG0gfSBmcm9tICdAL3V0aWxpdGllcy9yZWFsbSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWFsbSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuICBpbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGluY2x1ZGUgdGV4dCBpbiB0aGUgbG9nbyAqL1xuICAgIG1hcmtPbmx5PzogYm9vbGVhbjtcblxuICAgIC8qKiBTZXRzIHRoZSByZWFsbSBmb3IgdGhpcyBsb2dvIGluc3RhbmNlICovXG4gICAgcmVhbG06IFJlYWxtO1xuICB9O1xuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIG1hcmtPbmx5OiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3QgaW5uZXJTVkcgPSByZWY8Q29tcG9uZW50PigpO1xuXG4gIHR5cGUgQ3NzTGVuZ3RoUGl4ZWxzID0gYCR7bnVtYmVyfXB4YDtcbiAgdHlwZSBMb2dvU2l6ZSA9IHtcbiAgICBoZWlnaHQ6IENzc0xlbmd0aFBpeGVscztcbiAgICB3aWR0aDogQ3NzTGVuZ3RoUGl4ZWxzO1xuICB9O1xuXG4gIGNvbnN0IGxvZ29GdWxsID0gY29tcHV0ZWQ8TG9nb1NpemU+KCgpID0+ICh7XG4gICAgaGVpZ2h0OiBgJHtMT0dPX0hFSUdIVC5MQVJHRX1weGAsXG4gICAgd2lkdGg6IGAke0xPR09fV0lEVEhfTEFSR0VbZ2V0UmVhbG1LZXlGcm9tUmVhbG0ocHJvcHMucmVhbG0pXX1weGAsXG4gIH0pKTtcblxuICBjb25zdCBsb2dvU21hbGwgPSBjb21wdXRlZDxMb2dvU2l6ZT4oKCkgPT4ge1xuICAgIGNvbnN0IHNocmlua0ZhY3RvciA9IExPR09fSEVJR0hULlNNQUxMIC8gTE9HT19IRUlHSFQuTEFSR0U7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlaWdodDogYCR7TE9HT19IRUlHSFQuU01BTEx9cHhgLFxuICAgICAgd2lkdGg6IGAke01hdGgucm91bmQoTE9HT19XSURUSF9MQVJHRVtnZXRSZWFsbUtleUZyb21SZWFsbShwcm9wcy5yZWFsbSldICogc2hyaW5rRmFjdG9yKX1weGAsXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3QgbG9nb01hcms6IExvZ29TaXplID0ge1xuICAgIGhlaWdodDogJzMycHgnLFxuICAgIHdpZHRoOiAnMzJweCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gW3Byb3BzLm1hcmtPbmx5LCBwcm9wcy5yZWFsbV0sXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGVmaW5lQXN5bmNDb21wb25lbnQoKCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMubWFya09ubHkpIHJldHVybiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvYnJhbmRpbmcvbWFyay9tYXJrLSR7cHJvcHMucmVhbG19LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgICAgZWxzZSByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2JyYW5kaW5nL2xvZ28vbG9nby0ke3Byb3BzLnJlYWxtfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICB9KTtcbiAgICAgIGlubmVyU1ZHLnZhbHVlID0gbWFya1Jhdyhjb21wb25lbnQpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1yZWFsbS1sb2dvJywgcHJvcHMubWFya09ubHkgPyAnbWFyaycgOiAnZnVsbCddXCJcbiAgICA6c3R5bGU9XCJ7XG4gICAgICAnLS1sb2dvLWhlaWdodC1mdWxsJzogbG9nb0Z1bGwuaGVpZ2h0LFxuICAgICAgJy0tbG9nby1oZWlnaHQtbWFyayc6IGxvZ29NYXJrLmhlaWdodCxcbiAgICAgICctLWxvZ28taGVpZ2h0LXNtYWxsJzogbG9nb1NtYWxsLmhlaWdodCxcbiAgICAgICctLWxvZ28td2lkdGgtZnVsbCc6IGxvZ29GdWxsLndpZHRoLFxuICAgICAgJy0tbG9nby13aWR0aC1tYXJrJzogbG9nb01hcmsud2lkdGgsXG4gICAgICAnLS1sb2dvLXdpZHRoLXNtYWxsJzogbG9nb1NtYWxsLndpZHRoLFxuICAgIH1cIlxuICA+XG4gICAgPENvbXBvbmVudFxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtcmVhbG0tbG9nbyxcbiAgLnRpZGUtcmVhbG0tbG9nby5sYXJnZSB7XG4gICAgd2lkdGg6IHZhcigtLWxvZ28td2lkdGgtZnVsbCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1mdWxsKTtcbiAgfVxuXG4gIC50aWRlLXJlYWxtLWxvZ28uc21hbGwge1xuICAgIHdpZHRoOiB2YXIoLS1sb2dvLXdpZHRoLXNtYWxsKTtcbiAgICBoZWlnaHQ6IHZhcigtLWxvZ28taGVpZ2h0LXNtYWxsKTtcbiAgfVxuXG4gIC50aWRlLXJlYWxtLWxvZ28ubWFyayB7XG4gICAgd2lkdGg6IHZhcigtLWxvZ28td2lkdGgtbWFyayk7XG4gICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1tYXJrKTtcbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC50aWRlLXJlYWxtLWxvZ28uc20tc21hbGwge1xuICAgICAgd2lkdGg6IHZhcigtLWxvZ28td2lkdGgtc21hbGwpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1zbWFsbCk7XG4gICAgfVxuXG4gICAgLnRpZGUtcmVhbG0tbG9nby5zbS1sYXJnZSB7XG4gICAgICB3aWR0aDogdmFyKC0tbG9nby13aWR0aC1mdWxsKTtcbiAgICAgIGhlaWdodDogdmFyKC0tbG9nby1oZWlnaHQtZnVsbCk7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLnRpZGUtcmVhbG0tbG9nby5tZC1zbWFsbCB7XG4gICAgICB3aWR0aDogdmFyKC0tbG9nby13aWR0aC1zbWFsbCk7XG4gICAgICBoZWlnaHQ6IHZhcigtLWxvZ28taGVpZ2h0LXNtYWxsKTtcbiAgICB9XG5cbiAgICAudGlkZS1yZWFsbS1sb2dvLm1kLWxhcmdlIHtcbiAgICAgIHdpZHRoOiB2YXIoLS1sb2dvLXdpZHRoLWZ1bGwpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1mdWxsKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIzMnB4KSB7XG4gICAgLnRpZGUtcmVhbG0tbG9nby5sZy1zbWFsbCB7XG4gICAgICB3aWR0aDogdmFyKC0tbG9nby13aWR0aC1zbWFsbCk7XG4gICAgICBoZWlnaHQ6IHZhcigtLWxvZ28taGVpZ2h0LXNtYWxsKTtcbiAgICB9XG5cbiAgICAudGlkZS1yZWFsbS1sb2dvLmxnLWxhcmdlIHtcbiAgICAgIHdpZHRoOiB2YXIoLS1sb2dvLXdpZHRoLWZ1bGwpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1mdWxsKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTkyMHB4KSB7XG4gICAgLnRpZGUtcmVhbG0tbG9nby54bC1zbWFsbCB7XG4gICAgICB3aWR0aDogdmFyKC0tbG9nby13aWR0aC1zbWFsbCk7XG4gICAgICBoZWlnaHQ6IHZhcigtLWxvZ28taGVpZ2h0LXNtYWxsKTtcbiAgICB9XG5cbiAgICAudGlkZS1yZWFsbS1sb2dvLnhsLWxhcmdlIHtcbiAgICAgIHdpZHRoOiB2YXIoLS1sb2dvLXdpZHRoLWZ1bGwpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1mdWxsKTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IExpbmsgfSBmcm9tICdAL3R5cGVzL0xpbmsnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgICBsaW5rczogTGlua1tdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaGVhZGluZzogJycsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ0aWRlLXNlby1saW5rc1wiPlxuICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5CT1RUT00uSEFMRl1cIj5cbiAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICA8L2gyPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuR0FQLlRXTywgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLXNlby1saW5rJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuRk9OVC5ST0xFLkJPRFlfMl1cIlxuICAgICAgICA6a2V5PVwibGluay5sYWJlbFwiXG4gICAgICAgIHYtZm9yPVwibGluayBpbiBwcm9wcy5saW5rc1wiXG4gICAgICA+XG4gICAgICAgIDxJbnRlcm5hbEJhc2VMaW5rXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdXCJcbiAgICAgICAgICA6aHJlZj1cImxpbmsudXJsXCJcbiAgICAgICAgICA6dGFyZ2V0PVwibGluay5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9JbnRlcm5hbEJhc2VMaW5rPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAvKiBUT0RPOiBSZWZhY3RvciB0byBhY2NlcHQgYnJlYWtwb2ludCBwcm9wIGluIG9yZGVyIHRvIGFjY29tcGxpc2ggdGhpcyB3aXRoIG5laXRoZXIgY3VzdG9tIGJyZWFrcG9pbnRzIG5vciBkZXBlbmRlbmN5IG9uIFZpZXdwb3J0U3RvcmUuICovXG4gIC50aWRlLXNlby1saW5rIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIC50aWRlLXNlby1saW5rIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gMnJlbSkgLyAyKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIzMnB4KSB7XG4gICAgLnRpZGUtc2VvLWxpbmsge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSA2cmVtKSAvIDQpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgc2hlZXQgY29tcG9uZW50IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIGRpc3BsYXlpbmcgY29udGVudCBpbiBhIG1vZGFsLWxpa2UgbWVudSBvdmVybGF5IG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBzY3JlZW4uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVzaGVldC0tZG9jcykgZm9yIFRpZGVTaGVldFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25CZWZvcmVNb3VudCwgb25CZWZvcmVVbm1vdW50LCBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIsIHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIENvbnRyb2xzIGRpc3BsYXkgb2YgdGhlIGJhY2sgYnV0dG9uLiAqL1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gIH07XG5cbiAgd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgZGlhbG9nRWxlbWVudDogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG5cbiAgY29uc3QgaXNPcGVuID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgICBzZXRTY3JvbGxMb2NrKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5jbG9zZSgpO1xuICAgIHNldFNjcm9sbExvY2soZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGNsb3NlID0gKCkgPT4ge1xuICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFc2NhcGVLZXlkb3duID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNsb3NlKCk7XG4gIH07XG5cbiAgd2F0Y2goaXNPcGVuLCAoKSA9PiB7XG4gICAgaWYgKCFkaWFsb2dFbGVtZW50LnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgfVxuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9XG4gIH0pO1xuXG4gIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgaXNPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaWFsb2dcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1zaGVldCcsIENTUy5CRy5JTklUSUFMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5XSURUSC5GVUxMLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOXVwiXG4gICAgICByZWY9XCJkaWFsb2dFbGVtZW50XCJcbiAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgICBAY2xvc2UucHJldmVudFxuICAgICAgQGtleWRvd24uZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5ZG93blwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtc2hlZXQtYm9keScsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlRPUC5PTkUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICAgIENTUy5aX0lOREVYLk9ORSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiZW1pdCgnYmFjaycpXCJcbiAgICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImNsb3NlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICA8VGlkZURpdmlkZXIgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtc2hlZXQtY29udGVudCcsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlkuQVVUTyxcbiAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5PTkUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaWFsb2c+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1zaGVldCB7XG4gICAgLS1zaGVldC1wYWRkaW5nLXg6IHZhcigtLXRpZGUtc3BhY2luZy0xKTtcbiAgICBtYXgtd2lkdGg6IHVuc2V0O1xuICAgIG1heC1oZWlnaHQ6IHVuc2V0O1xuICAgIGp1c3RpZnktaXRlbXM6IHJpZ2h0O1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXRbb3Blbl0ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0OjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gIH1cblxuICAudGlkZS1zaGVldFtvcGVuXTo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gIH1cblxuICAudGlkZS1zaGVldC1ib2R5IHtcbiAgICBtYXgtd2lkdGg6IG1pbihjYWxjKDEwMHZ3IC0gdmFyKC0tdGlkZS1zcGFjaW5nLTIpKSwgMzExcHgpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQtY29udGVudCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1zaGVldC1wYWRkaW5nLXgpIHZhcigtLXRpZGUtc2FmZS1mcikgdmFyKC0tc2hlZXQtcGFkZGluZy14KTtcbiAgfVxuXG4gIDp3aGVyZSgudGlkZS1zaGVldC1jb250ZW50KTpkZWVwKD4gOndoZXJlKCopKSB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cblxuICBAc3RhcnRpbmctc3R5bGUge1xuICAgIC50aWRlLXNoZWV0W29wZW5dIHtcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxuXG4gICAgLnRpZGUtc2hlZXRbb3Blbl06OmJhY2tkcm9wIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgc3dpdGNoIGNvbXBvbmVudCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0b2dnbGluZyBhIGJvb2xlYW4gdmFsdWUuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVzd2l0Y2gtLWRvY3MpIGZvciBUaWRlU3dpdGNoXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgY2xpY2thYmlsaXR5ICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgaXNBY3RpdmUudmFsdWUgPSAhaXNBY3RpdmUudmFsdWU7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXN3aXRjaCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICBDU1MuRkxFWC5HUk9XLk9GRixcbiAgICAgIGlzQWN0aXZlID8gWydhY3RpdmUnLCBDU1MuQkcuU0VDT05EQVJZXSA6IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFRdLFxuICAgICAgZGlzYWJsZWQgJiYgW0NTUy5PUEFDSVRZLkRJU0FCTEVEXSxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2tcIlxuICAgIGFyaWEtbGFiZWw9XCJTd2l0Y2hcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1zd2l0Y2gtaW5kaWNhdG9yJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBpc0FjdGl2ZSA/IFsnYWN0aXZlJywgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0gOiBbQ1NTLkJHLlNFQ09OREFSWV0sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtc3dpdGNoIHtcbiAgICAtLXN3aXRjaC1pbmRpY2F0b3Itc2l6ZTogMjRweDtcbiAgICAtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luOiB2YXIoLS10aWRlLXNwYWNpbmctMVxcLzQpO1xuICAgIC0tc3dpdGNoLWJvcmRlci13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgLS1zd2l0Y2gtd2lkdGg6IGNhbGModmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSAqIDIgKyB2YXIoLS1zd2l0Y2gtaW5kaWNhdG9yLW1hcmdpbikgKiA0KTtcbiAgICAtLXN3aXRjaC1oZWlnaHQ6IGNhbGModmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSArIHZhcigtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luKSAqIDIpO1xuXG4gICAgd2lkdGg6IHZhcigtLXN3aXRjaC13aWR0aCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1zd2l0Y2gtaGVpZ2h0KTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvciB7XG4gICAgbGVmdDogdmFyKC0tc3dpdGNoLWluZGljYXRvci1tYXJnaW4pO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdCwgYm9yZGVyLWNvbG9yLCBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvci5hY3RpdmUge1xuICAgIGxlZnQ6IGNhbGMoXG4gICAgICB2YXIoLS1zd2l0Y2gtd2lkdGgpIC0gdmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSAtIHZhcigtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luKSAtIHZhcigtLXN3aXRjaC1ib3JkZXItd2lkdGgpXG4gICAgKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdGFicyBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXRhYnMtLWRvY3MpIGZvciBUaWRlVGFic1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IFRpZGVDYXJvdXNlbCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSc7XG4gIGltcG9ydCBUaWRlTGluayBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUxpbmsudnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBTZXRzIGxhYmVscyBhbmQgY2FsbGJhY2sgZm9yIGVhY2ggdGFiICovXG4gICAgdGFiczogVGFiW107XG4gIH07XG5cbiAgZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgY3VycmVudFRhYiA9IGRlZmluZU1vZGVsPG51bWJlcj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY3VycmVudFRhYi52YWx1ZSA9IGluZGV4O1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtdGFicycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5CT1JERVIuQk9UVE9NLlRXTywgQ1NTLkJPUkRFUi5DT0xPUi5MT1ddXCI+XG4gICAgPFRpZGVDYXJvdXNlbCA6aXMtZmxvYXRpbmc9XCJ0cnVlXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLlguSEFMRl1cIlxuICAgICAgICA6a2V5PVwidGFiLmxhYmVsXCJcbiAgICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gdGFic1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlTGlua1xuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGluZGV4ID09PSBjdXJyZW50VGFiID8gW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuQlJBTkRdIDogW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmVsZW1lbnQ9XCJFTEVNRU5ULkJVVFRPTlwiXG4gICAgICAgICAgOmxhYmVsPVwidGFiLmxhYmVsXCJcbiAgICAgICAgICA6c3VidGxlPVwidHJ1ZVwiXG4gICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soaW5kZXgpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3JvdW5kZWQtYm9yZGVyJywgQ1NTLk1BUkdJTi5YLkhBTEYsIGluZGV4ID09PSBjdXJyZW50VGFiICYmIFtDU1MuQkcuUFJJTUFSWV1dXCIgLz5cbiAgICAgIDwvbGk+XG4gICAgPC9UaWRlQ2Fyb3VzZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnJvdW5kZWQtYm9yZGVyIHtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10aWRlLXJhZGl1cy1mdWxsKSB2YXIoLS10aWRlLXJhZGl1cy1mdWxsKSAwIDA7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBpbmplY3QsIHByb3ZpZGUsIHJlYWRvbmx5LCByZWYgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgdHlwZSB7IFRpZGVUb2FzdCwgVGlkZVRvYXN0T21pdElkLCBUaWRlVG9hc3RlciB9IGZyb20gJ0AvdHlwZXMvVG9hc3QnO1xuXG5jb25zdCBUT0FTVEVSX0tFWSA9IFN5bWJvbCgndGlkZS10b2FzdGVyJyk7XG5cbmNvbnN0IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUyA9IHtcbiAgQUNUSU9OQUJMRTogMTAwMDAsXG4gIElORk9STUFUSU9OQUw6IDUwMDAsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgdXNlVGlkZVRvYXN0ZXIgPSAoKSA9PiB7XG4gIGNvbnN0IGluamVjdGVkID0gaW5qZWN0PFRpZGVUb2FzdGVyPihUT0FTVEVSX0tFWSk7XG4gIGlmIChpbmplY3RlZCkgcmV0dXJuIGluamVjdGVkO1xuXG4gIGNvbnN0IHRpbWVvdXRJZCA9IHJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpO1xuICBjb25zdCB0b2FzdHMgPSByZWY8VGlkZVRvYXN0W10+KFtdKTtcbiAgY29uc3QgaWQgPSByZWY8bnVtYmVyPigwKTtcblxuICBjb25zdCBhZGRUb2FzdCA9IChuZXdUb2FzdDogVGlkZVRvYXN0T21pdElkKSA9PiB7XG4gICAgaWQudmFsdWUrKztcbiAgICBjbGVhclRvYXN0cygpO1xuXG4gICAgdG9hc3RzLnZhbHVlLnB1c2goe1xuICAgICAgLi4ubmV3VG9hc3QsXG4gICAgICBpZDogYHRpZGUtdG9hc3QtJHtpZC52YWx1ZX1gLFxuICAgIH0gYXMgVGlkZVRvYXN0KTtcblxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY2FuY2VsQXV0b0Rpc21pc3MoKTtcbiAgICAgIHN0YXJ0QXV0b0Rpc21pc3MoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2xlYXJUb2FzdHMgPSAoKSA9PiB7XG4gICAgdG9hc3RzLnZhbHVlID0gW107XG4gIH07XG5cbiAgY29uc3QgY2FuY2VsQXV0b0Rpc21pc3MgPSAoKSA9PiB7XG4gICAgaWYgKHRpbWVvdXRJZC52YWx1ZSkgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3Qgc3RhcnRBdXRvRGlzbWlzcyA9ICgpID0+IHtcbiAgICBpZiAoIXRvYXN0cy52YWx1ZS5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IGF1dG9EaXNtaXNzRHVyYXRpb24gPSB0b2FzdHMudmFsdWVbMF0uYWN0aW9uXG4gICAgICA/IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUy5BQ1RJT05BQkxFXG4gICAgICA6IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUy5JTkZPUk1BVElPTkFMO1xuICAgIHRpbWVvdXRJZC52YWx1ZSA9IHNldFRpbWVvdXQoY2xlYXJUb2FzdHMsIGF1dG9EaXNtaXNzRHVyYXRpb24pO1xuICB9O1xuXG4gIGNvbnN0IHRvYXN0ZXI6IFRpZGVUb2FzdGVyID0ge1xuICAgIGFkZFRvYXN0LFxuICAgIGNhbmNlbEF1dG9EaXNtaXNzLFxuICAgIGNsZWFyVG9hc3RzLFxuICAgIHN0YXJ0QXV0b0Rpc21pc3MsXG4gICAgdG9hc3RzOiByZWFkb25seSh0b2FzdHMpLFxuICB9O1xuXG4gIHByb3ZpZGUoVE9BU1RFUl9LRVksIHRvYXN0ZXIpO1xuXG4gIHJldHVybiB0b2FzdGVyO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdG9hc3RlciBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRldG9hc3Rlci0tZG9jcykgZm9yIFRpZGVUb2FzdGVyXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyBvbkJlZm9yZU1vdW50IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUFsZXJ0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQWxlcnQudnVlJztcbiAgaW1wb3J0IHsgdXNlVGlkZVRvYXN0ZXIgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVUb2FzdGVyJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgY29uc3QgeyB0b2FzdHMsIGNsZWFyVG9hc3RzLCBjYW5jZWxBdXRvRGlzbWlzcywgc3RhcnRBdXRvRGlzbWlzcyB9ID0gdXNlVGlkZVRvYXN0ZXIoKTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtdG9hc3RlcicsXG4gICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkZJWEVELFxuICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VHJhbnNpdGlvbkdyb3VwIG5hbWU9XCJwb3BcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLXRvYXN0LXdyYXAnLFxuICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlpfSU5ERVguT05FLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uRlVMTC5PTkUsXG4gICAgICAgICAgICBDU1MuV0lEVEguU1RSRVRDSCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6a2V5PVwidG9hc3QuaWRcIlxuICAgICAgICAgIEBtb3VzZWVudGVyPVwiY2FuY2VsQXV0b0Rpc21pc3NcIlxuICAgICAgICAgIEBtb3VzZWxlYXZlPVwic3RhcnRBdXRvRGlzbWlzc1wiXG4gICAgICAgICAgdi1mb3I9XCJ0b2FzdCBpbiB0b2FzdHNcIlxuICAgICAgICA+XG4gICAgICAgICAgPFRpZGVBbGVydFxuICAgICAgICAgICAgOmN0YS1sYWJlbD1cInRvYXN0LmFjdGlvbj8ubGFiZWxcIlxuICAgICAgICAgICAgOmhlYWRpbmc9XCJ0b2FzdC5oZWFkaW5nXCJcbiAgICAgICAgICAgIDpzdHlsZT1cInsgJy0tdGlkZS1tYXgtd2lkdGgnOiAnbm9uZScgfVwiXG4gICAgICAgICAgICBAY2xvc2U9XCJjbGVhclRvYXN0c1wiXG4gICAgICAgICAgICBAY3RhLWNsaWNrPVwidG9hc3Q/LmFjdGlvbj8uY2FsbGJhY2tcIlxuICAgICAgICAgICAgaXMtZGlzbWlzc2libGVcbiAgICAgICAgICAgIGlzLXRvYXN0XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdG9hc3QuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICA8L1RpZGVBbGVydD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1RyYW5zaXRpb25Hcm91cD5cbiAgICA8L2Rpdj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC5wb3AtZW50ZXItYWN0aXZlLFxuICAucG9wLWxlYXZlLWFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5LCB0cmFuc2Zvcm0sIHRyYW5zbGF0ZTtcbiAgfVxuXG4gIC5wb3AtZW50ZXItZnJvbSB7XG4gICAgdHJhbnNsYXRlOiAxMDAlIDA7XG4gIH1cblxuICAucG9wLWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHotaW5kZXg6IDAgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5wb3AtbGVhdmUtYWN0aXZlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAudGlkZS10b2FzdC13cmFwIHtcbiAgICAgIHdpZHRoOiA0MDBweDtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iXSwibmFtZXMiOlsiT1JJRU5UQVRJT04iLCJDU1MiLCJ1dGlsaXRpZXMiLCJicmVha3BvaW50IiwidXRpbGl0eSIsIl9fZGVmYXVsdF9fIiwicHJvcHMiLCJfX3Byb3BzIiwiX29wZW5CbG9jayIsIl9jcmVhdGVFbGVtZW50QmxvY2siLCJfaG9pc3RlZF8xIiwiX2NyZWF0ZUVsZW1lbnRWTm9kZSIsIl9ub3JtYWxpemVDbGFzcyIsIl91bnJlZiIsIlJFQUxNIiwiU0laRSIsIlNJWkVfQlVUVE9OIiwiZm9ybWF0TnVtYmVyIiwiaW5wdXQiLCJvdXRwdXQiLCJkaWdpdHMiLCJmb3JtYXRQYXNjYWxDYXNlIiwid29yZCIsImZvcm1hdFBob25lIiwiZm9ybWF0UHJpY2UiLCJpbm5lclNWRyIsInJlZiIsIndhdGNoIiwiaWQiLCJuYW1lIiwicHJlZml4IiwicmVhbG1Gb2xkZXIiLCJjb21wb25lbnQiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsIl9fdmFyaWFibGVEeW5hbWljSW1wb3J0UnVudGltZUhlbHBlciIsIm1hcmtSYXciLCJfY3JlYXRlQmxvY2siLCJfcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQiLCJJQ09OIiwiSUNPTl9SRUFMTSIsImlzRXhwYW5kZWQiLCJfdXNlTW9kZWwiLCJoYW5kbGVUb2dnbGVDbGljayIsIm5ld1ZhbHVlIiwiVGlkZURpdmlkZXIiLCJfY3JlYXRlVk5vZGUiLCJUaWRlSWNvbiIsIl9yZW5kZXJTbG90IiwiX2N0eCIsIkVMRU1FTlQiLCJFTEVNRU5UX0JST0FEIiwidGlkZUNvbmZpZ0RlZmF1bHRzIiwiQ09ORklHX0tFWSIsInByb3ZpZGVUaWRlQ29uZmlnIiwiY29uZmlnIiwiY29uZmlnV2l0aERlZmF1bHRzIiwicHJvdmlkZSIsInVzZVRpZGVDb25maWciLCJpbmplY3QiLCJsaW5rQ29tcG9uZW50IiwiUFJJT1JJVFkiLCJUQVJHRVQiLCJ0eXBlQXR0cmlidXRlIiwiY29tcHV0ZWQiLCJyb290RWxlbWVudCIsIkludGVybmFsQmFzZUxpbmsiLCJfdG9EaXNwbGF5U3RyaW5nIiwiQUxFUlQiLCJlbWl0IiwiX19lbWl0Iiwic2xvdHMiLCJ1c2VTbG90cyIsImhhc0JvZHkiLCJub2RlcyIsIl9hIiwibm9kZSIsIkNvbW1lbnQiLCJpY29uVHlwZSIsIlRpZGVMaW5rIiwiVGlkZUJ1dHRvbkljb24iLCJCQURHRV9DT0xPUiIsIkJBREdFX0NPTE9SX0RFVEFJTFMiLCJCQURHRV9UUlVTVEVEIiwiX0ZyYWdtZW50IiwiY3J1bWIiLCJpbmRleCIsIl9jcmVhdGVUZXh0Vk5vZGUiLCJfaG9pc3RlZF8yIiwiaXNUb3VjaGVkIiwiaXNTYXZlZCIsIl9jYWNoZSIsIiRldmVudCIsImN1cnJlbnRJbmRleCIsInVuaXF1ZUlkIiwidXNlSWQiLCJpbnB1dEZvcm1BdHRyaWJ1dGUiLCJpbnB1dE5hbWVBdHRyaWJ1dGUiLCJfcmVuZGVyTGlzdCIsInRhYiIsIlRZUEVfQ0FSRCIsImNhcm91c2VsUmVmIiwiY29udGFpbmVyUmVmIiwiY29udGVudFdpZHRoIiwiY3VycmVudFBhZ2VJbmRleCIsImRvdHNSZWYiLCJmcmFtZVdpZHRoIiwiaXNGaXJzdFNsaWRlIiwiaXNMYXN0U2xpZGUiLCJzaG93QnV0dG9ucyIsInNsaWRlT2JzZXJ2ZXIiLCJzbGlkZXMiLCJzbGlkZXNJblZpZXciLCJzbG90T2JzZXJ2ZXIiLCJ0b3VjaFN0YXJ0Iiwic2xpZGVzSW5WaWV3Q291bnQiLCJjdXJyZW50UGFnZSIsImRvdENvbnRhaW5lcldpZHRoIiwiZG90Q291bnRWaXNpYmxlIiwiZG90V2lkdGgiLCJkb3RHYXAiLCJ0b3RhbFBhZ2VzIiwicXVvdGllbnQiLCJzY3JvbGxUaW1lb3V0IiwiZ2V0RG90Q2xhc3MiLCJkb3RJbmRleCIsImNsYXNzTmFtZSIsImdldElzRWxlbWVudFdpdGhpbkNvbnRhaW5lciIsImVsZW1lbnQiLCJjb250YWluZXIiLCJjb250YWluZXJSZWN0IiwiY29udGFpbmVyUmlnaHQiLCJlbGVtZW50UmVjdCIsImhhbmRsZVRvdWNoRW5kIiwiZXZlbnQiLCJ0b3VjaEVuZCIsImRlbHRhWCIsImRlbHRhWSIsInNjcm9sbEJ5RGVsdGEiLCJoYW5kbGVUb3VjaFN0YXJ0IiwiaGFuZGxlV2hlZWwiLCJpc1NoaWZ0S2V5RG93biIsImlzV2hlZWwiLCJvZmZzZXQiLCJzY3JvbGxUb09mZnNldCIsIm1lYXN1cmVEb20iLCJzbGlkZSIsIm9ic2VydmVTbGlkZXMiLCJvcHRpb25zIiwiZW50cmllcyIsInNsaWRlc0FkZGVkVG9WaWV3IiwiZW50cnkiLCJzbGlkZUluZGV4IiwiYSIsImIiLCJjaGlsZCIsIm9ic2VydmVTbG90Iiwib2JzZXJ2ZXJDYWxsYmFjayIsImRlbHRhIiwic2hvd1ByZXZpb3VzUGFnZSIsInNob3dQcmV2aW91c1NsaWRlIiwic2hvd05leHRQYWdlIiwic2hvd05leHRTbGlkZSIsInRhcmdldCIsImlzU2Nyb2xsaW5nTGVmdCIsInVwZGF0ZURvdHMiLCJuZXh0U2xpZGUiLCJwcmV2aW91c1NsaWRlIiwiY2VudGVyRG90Iiwib25Nb3VudGVkIiwib25Vbm1vdW50ZWQiLCJfYiIsIl9ub3JtYWxpemVTdHlsZSIsIl8iLCJpc0FjdGl2ZSIsImhhbmRsZUNsaWNrIiwiX2hvaXN0ZWRfMyIsIl9ob2lzdGVkXzQiLCJfaG9pc3RlZF81IiwiRk9STV9LRVkiLCJ1c2VUaWRlRm9ybSIsImZvcmNlU2hvd0Vycm9ycyIsInVzZUZvcm1Db250ZXh0IiwicmV2ZWFsVmFsaWRhdGlvbkVycm9ycyIsImhhbmRsZVN1Ym1pdCIsImUiLCJPQkpFQ1RfRklUIiwicGljdHVyZSIsImltZyIsImltYWdlRGVmYXVsdCIsIm9iamVjdEZpdENsYXNzTmFtZSIsInNldEltYWdlRnJvbURlZmF1bHQiLCJjdXJyZW50U3JjIiwic291cmNlcyIsInNvdXJjZSIsIl9jIiwiVGlkZUltYWdlIiwiZXJyb3JNZXNzYWdlRGVmYXVsdCIsIlZBTElEQVRJT05fUkVTVUxUIiwiY2hlY2tGb3JtYXQiLCJmb3JtYXQiLCJtZXNzYWdlIiwidmFsdWUiLCJyZXN1bHQiLCJnZXRGaWVsZExlbmd0aElzVmFsaWQiLCJtYXhsZW5ndGgiLCJtaW5sZW5ndGgiLCJyZXF1aXJlZCIsImlzRW1wdHlBbmRVbnJlcXVpcmVkIiwiaXNUb29Mb25nIiwiZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IiwiZXJyb3JGcm9tUHJvcHMiLCJ2YWxpZGF0b3JzIiwidmFsaWRhdGlvbiIsInZhbGlkYXRlUHJvcGVydHkiLCJsZW5ndGhWYWxpZGF0aW9uIiwidmFsaWRhdGVMZW5ndGgiLCJyZXNwb25zZSIsInZhbGlkYXRvciIsIm1vZGVsVmFsdWUiLCJmb3JtQ29udGV4dCIsImlzVmFsaWRhdGluZyIsImVycm9yUmVmIiwiZm9ybWF0dGVkTGFiZWwiLCJpc0NoZWNrZWQiLCJzaG93RXJyb3IiLCJoYXNFcnJvckZyb21Qcm9wIiwic3VwcG9ydGluZ1RleHRNZXNzYWdlIiwiZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0Iiwid2F0Y2hFZmZlY3QiLCJUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCIsImNoZWNrZWQiLCJvbGRWYWx1ZSIsIkZPUk1BVCIsIkZPUk1BVF9SRUdFWCIsIlZBTElEQVRPUiIsIkVSUk9SX0RJU1BMQVkiLCJoYXNGb2N1cyIsImlucHV0SWQiLCJzZWxlY3RFbGVtZW50IiwiaGFzTWluaWxhYmVsIiwiaXNFbXB0eSIsImV4cGFuZE9wdGlvbnMiLCJoYW5kbGVGb2N1cyIsImhhbmRsZUZvY3VzT3V0Iiwib3B0Z3JvdXAiLCJvcHRpb24iLCJfaG9pc3RlZF82IiwiZ2V0RXJyb3JNZXNzYWdlIiwiZXJyb3JGcm9tUmVmIiwiZ2V0RmllbGRIYXNFcnJvciIsImhhbmRsZUZpZWxkVmFsaWRhdGlvbiIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwiaGFzRXJyb3IiLCJfX2V4cG9zZSIsIlRFWFRfSU5QVVRfVFlQRSIsIklOUFVUX01PREUiLCJnZXRUZXh0SW5wdXRNb2RlIiwidHlwZSIsImlucHV0bW9kZSIsImlucHV0RWxlbWVudCIsInNob3dQYXNzd29yZCIsImlucHV0TW9kZUF0dHJpYnV0ZSIsImlucHV0VHlwZSIsInNob3VsZFNob3dDbGVhckJ1dHRvbiIsInNob3VsZFNob3dQYXNzd29yZEJ1dHRvbiIsImhhbmRsZUNsZWFyIiwiaGFuZGxlRmllbGRDbGljayIsInByZXZlbnRJbnB1dEZvY3VzTG9zc09uTW91c2Vkb3duIiwiaGFzQ2xlYXIiLCJoYW5kbGVWYWxpZGF0aW9uIiwiaGFuZGxlSW5wdXQiLCJ1cGRhdGVWYWx1ZSIsInRleHRhcmVhRWxlbWVudCIsInByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duIiwiQlJFQUtQT0lOVCIsIk1FRElBIiwic2V0U2Nyb2xsTG9jayIsImlzTG9ja2VkIiwiYm9keSIsInNjcm9sbFkiLCJuZXh0VGljayIsInNhdmVkU2Nyb2xsWSIsIlRPUF9MQVlFUl9JRCIsImluaXRGYXV4VG9wTGF5ZXIiLCJ0b3BMYXllciIsIm1vZGFsQ29udGVudCIsIm1vZGFsRGlhbG9nIiwiaXNPcGVuIiwidHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4iLCJ0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UiLCJzY3JvbGxDb250ZW50VG9Ub3AiLCJjbG9zZSIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJoYW5kbGVFc2NhcGVLZXlkb3duIiwib25CZWZvcmVNb3VudCIsIm9uQmVmb3JlVW5tb3VudCIsIl9UZWxlcG9ydCIsIiRzbG90cyIsInBhZ2luYXRpb25CdXR0b25zIiwiZW1wdHkiLCJoYW5kbGVQcmV2aW91c0NsaWNrIiwiaGFuZGxlTmV4dENsaWNrIiwicGFnaW5hdGlvbkJ1dHRvbiIsIlRpZGVCdXR0b25QYWdpbmF0aW9uIiwic2lkZXMiLCJhbGlnbm1lbnRzIiwicGxhY2VtZW50cyIsImFjYyIsInNpZGUiLCJtaW4iLCJtYXgiLCJyb3VuZCIsImZsb29yIiwiY3JlYXRlQ29vcmRzIiwidiIsIm9wcG9zaXRlU2lkZU1hcCIsIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwiY2xhbXAiLCJzdGFydCIsImVuZCIsImV2YWx1YXRlIiwicGFyYW0iLCJnZXRTaWRlIiwicGxhY2VtZW50IiwiZ2V0QWxpZ25tZW50IiwiZ2V0T3Bwb3NpdGVBeGlzIiwiYXhpcyIsImdldEF4aXNMZW5ndGgiLCJnZXRTaWRlQXhpcyIsImdldEFsaWdubWVudEF4aXMiLCJnZXRBbGlnbm1lbnRTaWRlcyIsInJlY3RzIiwicnRsIiwiYWxpZ25tZW50IiwiYWxpZ25tZW50QXhpcyIsImxlbmd0aCIsIm1haW5BbGlnbm1lbnRTaWRlIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsImV4cGFuZFBhZGRpbmdPYmplY3QiLCJwYWRkaW5nIiwiZ2V0UGFkZGluZ09iamVjdCIsInJlY3RUb0NsaWVudFJlY3QiLCJyZWN0IiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsImNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50IiwiX3JlZiIsInJlZmVyZW5jZSIsImZsb2F0aW5nIiwic2lkZUF4aXMiLCJhbGlnbkxlbmd0aCIsImlzVmVydGljYWwiLCJjb21tb25YIiwiY29tbW9uWSIsImNvbW1vbkFsaWduIiwiY29vcmRzIiwiY29tcHV0ZVBvc2l0aW9uIiwic3RyYXRlZ3kiLCJtaWRkbGV3YXJlIiwicGxhdGZvcm0iLCJ2YWxpZE1pZGRsZXdhcmUiLCJzdGF0ZWZ1bFBsYWNlbWVudCIsIm1pZGRsZXdhcmVEYXRhIiwicmVzZXRDb3VudCIsImkiLCJmbiIsIm5leHRYIiwibmV4dFkiLCJkYXRhIiwicmVzZXQiLCJkZXRlY3RPdmVyZmxvdyIsInN0YXRlIiwiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwiZWxlbWVudHMiLCJib3VuZGFyeSIsInJvb3RCb3VuZGFyeSIsImVsZW1lbnRDb250ZXh0IiwiYWx0Qm91bmRhcnkiLCJwYWRkaW5nT2JqZWN0IiwiY2xpcHBpbmdDbGllbnRSZWN0Iiwib2Zmc2V0UGFyZW50Iiwib2Zmc2V0U2NhbGUiLCJlbGVtZW50Q2xpZW50UmVjdCIsImdldFBsYWNlbWVudExpc3QiLCJhdXRvQWxpZ25tZW50IiwiYWxsb3dlZFBsYWNlbWVudHMiLCJhdXRvUGxhY2VtZW50IiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QIiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QMiIsIl9wbGFjZW1lbnRzVGhhdEZpdE9uRSIsImNyb3NzQXhpcyIsImRldGVjdE92ZXJmbG93T3B0aW9ucyIsInBsYWNlbWVudHMkMSIsIm92ZXJmbG93IiwiY3VycmVudFBsYWNlbWVudCIsImFsaWdubWVudFNpZGVzIiwiY3VycmVudE92ZXJmbG93cyIsImFsbE92ZXJmbG93cyIsIm5leHRQbGFjZW1lbnQiLCJwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UiLCJkIiwicmVzZXRQbGFjZW1lbnQiLCJjb252ZXJ0VmFsdWVUb0Nvb3JkcyIsIm1haW5BeGlzTXVsdGkiLCJjcm9zc0F4aXNNdWx0aSIsInJhd1ZhbHVlIiwibWFpbkF4aXMiLCJfbWlkZGxld2FyZURhdGEkb2Zmc2UiLCJfbWlkZGxld2FyZURhdGEkYXJyb3ciLCJkaWZmQ29vcmRzIiwic2hpZnQiLCJjaGVja01haW5BeGlzIiwiY2hlY2tDcm9zc0F4aXMiLCJsaW1pdGVyIiwibWFpbkF4aXNDb29yZCIsImNyb3NzQXhpc0Nvb3JkIiwibWluU2lkZSIsIm1heFNpZGUiLCJsaW1pdGVkQ29vcmRzIiwiaGFzV2luZG93IiwiZ2V0Tm9kZU5hbWUiLCJpc05vZGUiLCJnZXRXaW5kb3ciLCJfbm9kZSRvd25lckRvY3VtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50IiwiaXNFbGVtZW50IiwiaXNIVE1MRWxlbWVudCIsImlzU2hhZG93Um9vdCIsImlzT3ZlcmZsb3dFbGVtZW50Iiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwiZGlzcGxheSIsImdldENvbXB1dGVkU3R5bGUiLCJpc1RhYmxlRWxlbWVudCIsImlzVG9wTGF5ZXIiLCJzZWxlY3RvciIsImlzQ29udGFpbmluZ0Jsb2NrIiwiZWxlbWVudE9yQ3NzIiwid2Via2l0IiwiaXNXZWJLaXQiLCJjc3MiLCJnZXRDb250YWluaW5nQmxvY2siLCJjdXJyZW50Tm9kZSIsImdldFBhcmVudE5vZGUiLCJpc0xhc3RUcmF2ZXJzYWJsZU5vZGUiLCJnZXROb2RlU2Nyb2xsIiwiZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IiLCJwYXJlbnROb2RlIiwiZ2V0T3ZlcmZsb3dBbmNlc3RvcnMiLCJsaXN0IiwidHJhdmVyc2VJZnJhbWVzIiwiX25vZGUkb3duZXJEb2N1bWVudDIiLCJzY3JvbGxhYmxlQW5jZXN0b3IiLCJpc0JvZHkiLCJ3aW4iLCJmcmFtZUVsZW1lbnQiLCJnZXRGcmFtZUVsZW1lbnQiLCJnZXRDc3NEaW1lbnNpb25zIiwiaGFzT2Zmc2V0Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJzaG91bGRGYWxsYmFjayIsInVud3JhcEVsZW1lbnQiLCJnZXRTY2FsZSIsImRvbUVsZW1lbnQiLCIkIiwibm9PZmZzZXRzIiwiZ2V0VmlzdWFsT2Zmc2V0cyIsInNob3VsZEFkZFZpc3VhbE9mZnNldHMiLCJpc0ZpeGVkIiwiZmxvYXRpbmdPZmZzZXRQYXJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJpbmNsdWRlU2NhbGUiLCJpc0ZpeGVkU3RyYXRlZ3kiLCJjbGllbnRSZWN0Iiwic2NhbGUiLCJ2aXN1YWxPZmZzZXRzIiwib2Zmc2V0V2luIiwiY3VycmVudFdpbiIsImN1cnJlbnRJRnJhbWUiLCJpZnJhbWVTY2FsZSIsImlmcmFtZVJlY3QiLCJsZWZ0IiwidG9wIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImxlZnRTY3JvbGwiLCJnZXRIVE1MT2Zmc2V0IiwiZG9jdW1lbnRFbGVtZW50Iiwic2Nyb2xsIiwiaWdub3JlU2Nyb2xsYmFyWCIsImh0bWxSZWN0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJvZmZzZXRzIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRSZWN0IiwiaHRtbE9mZnNldCIsImdldENsaWVudFJlY3RzIiwiZ2V0RG9jdW1lbnRSZWN0IiwiaHRtbCIsImdldFZpZXdwb3J0UmVjdCIsInZpc3VhbFZpZXdwb3J0IiwidmlzdWFsVmlld3BvcnRCYXNlZCIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdBbmNlc3RvciIsImhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvciIsInN0b3BOb2RlIiwiZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzIiwiY2FjaGUiLCJjYWNoZWRSZXN1bHQiLCJlbCIsImN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIiwiZWxlbWVudElzRml4ZWQiLCJjb21wdXRlZFN0eWxlIiwiY3VycmVudE5vZGVJc0NvbnRhaW5pbmciLCJhbmNlc3RvciIsImdldENsaXBwaW5nUmVjdCIsImNsaXBwaW5nQW5jZXN0b3JzIiwiZmlyc3RDbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdSZWN0IiwiYWNjUmVjdCIsImdldERpbWVuc2lvbnMiLCJnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudCIsImlzU3RhdGljUG9zaXRpb25lZCIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJwb2x5ZmlsbCIsInJhd09mZnNldFBhcmVudCIsImdldE9mZnNldFBhcmVudCIsInN2Z09mZnNldFBhcmVudCIsImdldEVsZW1lbnRSZWN0cyIsImdldE9mZnNldFBhcmVudEZuIiwiZ2V0RGltZW5zaW9uc0ZuIiwiZmxvYXRpbmdEaW1lbnNpb25zIiwiaXNSVEwiLCJyZWN0c0FyZUVxdWFsIiwib2JzZXJ2ZU1vdmUiLCJvbk1vdmUiLCJpbyIsInRpbWVvdXRJZCIsInJvb3QiLCJjbGVhbnVwIiwiX2lvIiwicmVmcmVzaCIsInNraXAiLCJ0aHJlc2hvbGQiLCJlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4iLCJpbnNldFRvcCIsImluc2V0UmlnaHQiLCJpbnNldEJvdHRvbSIsImluc2V0TGVmdCIsImlzRmlyc3RVcGRhdGUiLCJoYW5kbGVPYnNlcnZlIiwicmF0aW8iLCJhdXRvVXBkYXRlIiwidXBkYXRlIiwiYW5jZXN0b3JTY3JvbGwiLCJhbmNlc3RvclJlc2l6ZSIsImVsZW1lbnRSZXNpemUiLCJsYXlvdXRTaGlmdCIsImFuaW1hdGlvbkZyYW1lIiwicmVmZXJlbmNlRWwiLCJhbmNlc3RvcnMiLCJjbGVhbnVwSW8iLCJyZW9ic2VydmVGcmFtZSIsInJlc2l6ZU9ic2VydmVyIiwiZmlyc3RFbnRyeSIsIl9yZXNpemVPYnNlcnZlciIsImZyYW1lSWQiLCJwcmV2UmVmUmVjdCIsImZyYW1lTG9vcCIsIm5leHRSZWZSZWN0IiwiX3Jlc2l6ZU9ic2VydmVyMiIsIm9mZnNldCQxIiwiYXV0b1BsYWNlbWVudCQxIiwic2hpZnQkMSIsIm1lcmdlZE9wdGlvbnMiLCJwbGF0Zm9ybVdpdGhDYWNoZSIsImNvbXB1dGVQb3NpdGlvbiQxIiwiaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSIsInRvVmFsdWUiLCJ1bnJlZiIsImdldERQUiIsInJvdW5kQnlEUFIiLCJkcHIiLCJ1c2VGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uIiwib3Blbk9wdGlvbiIsIl90b1ZhbHVlIiwibWlkZGxld2FyZU9wdGlvbiIsInBsYWNlbWVudE9wdGlvbiIsIl90b1ZhbHVlMiIsInN0cmF0ZWd5T3B0aW9uIiwiX3RvVmFsdWUzIiwidHJhbnNmb3JtT3B0aW9uIiwiX3RvVmFsdWU0IiwicmVmZXJlbmNlRWxlbWVudCIsImZsb2F0aW5nRWxlbWVudCIsInNoYWxsb3dSZWYiLCJpc1Bvc2l0aW9uZWQiLCJmbG9hdGluZ1N0eWxlcyIsImluaXRpYWxTdHlsZXMiLCJ4VmFsIiwieVZhbCIsIndoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCIsIm9wZW4iLCJwb3NpdGlvbiIsImF0dGFjaCIsImdldEN1cnJlbnRTY29wZSIsIm9uU2NvcGVEaXNwb3NlIiwic2hhbGxvd1JlYWRvbmx5IiwiaXNDbGlja091dHNpZGUiLCJhbmNob3IiLCJpc0hvdmVyZWQiLCJpc1RvZ2dsZWRPcGVuIiwiaXNUb3VjaERldmljZSIsIm9mZnNldE1pZGRsZXdhcmUiLCJpc1Nob3dQb3BvdmVyIiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIiLCJoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSIsImhhbmRsZUFuY2hvckVsZW1lbnRUb3VjaFN0YXJ0IiwiaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrIiwiYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50IiwicmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24iLCJhZGRPcGVuTGlzdGVuZXJzVG9Sb290IiwicmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290IiwidXBkYXRlQW5jaG9yRWxlbWVudCIsIl9UcmFuc2l0aW9uIiwicmF0aW5nVmFsdWUiLCJzZWdtZW50cyIsInNlZ21lbnQiLCJMT0dPX0hFSUdIVCIsIkxPR09fV0lEVEhfTEFSR0UiLCJDU1NfUkVBTE1fTE9HT19TSVpFIiwiZ2V0UmVhbG1LZXlGcm9tUmVhbG0iLCJyZWFsbSIsIm1hdGNoIiwibG9nb0Z1bGwiLCJsb2dvU21hbGwiLCJzaHJpbmtGYWN0b3IiLCJsb2dvTWFyayIsImxpbmsiLCJkaWFsb2dFbGVtZW50IiwiY3VycmVudFRhYiIsIlRpZGVDYXJvdXNlbCIsIlRPQVNURVJfS0VZIiwiQVVUT19ESVNNSVNTX0RVUkFUSU9OX01TIiwidXNlVGlkZVRvYXN0ZXIiLCJpbmplY3RlZCIsInRvYXN0cyIsImFkZFRvYXN0IiwibmV3VG9hc3QiLCJjbGVhclRvYXN0cyIsImNhbmNlbEF1dG9EaXNtaXNzIiwic3RhcnRBdXRvRGlzbWlzcyIsImF1dG9EaXNtaXNzRHVyYXRpb24iLCJ0b2FzdGVyIiwicmVhZG9ubHkiLCJfVHJhbnNpdGlvbkdyb3VwIiwidG9hc3QiLCJhcmdzIiwiVGlkZUFsZXJ0Il0sIm1hcHBpbmdzIjoiO0FBQU8sTUFBTUEsS0FBYztBQUFBLEVBQ3pCLFlBQVk7QUFBQSxFQUNaLFVBQVU7QUFDWixHQ0NhQyxJQUFNO0FBQUEsRUFDakIsZ0JBQWdCLENBQUNDLEdBQXFCQyxNQUM3QkQsRUFBVSxJQUFJLENBQUNFLE1BQVksR0FBR0QsQ0FBVSxJQUFJQyxDQUFPLEVBQUU7QUFBQSxFQUU5RCxPQUFPO0FBQUEsSUFDTCxHQUFHO0FBQUEsTUFDRCxRQUFRO0FBQUEsTUFDUixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixPQUFPO0FBQUEsSUFBQTtBQUFBLElBRVQsR0FBRztBQUFBLE1BQ0QsU0FBUztBQUFBLE1BQ1QsUUFBUTtBQUFBLElBQUE7QUFBQSxFQUNWO0FBQUEsRUFFRixPQUFPO0FBQUEsSUFDTCxRQUFRO0FBQUEsSUFDUixTQUFTO0FBQUEsSUFDVCxRQUFRO0FBQUEsSUFDUixLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsRUFBQTtBQUFBLEVBRVQsT0FBTztBQUFBLElBQ0wsUUFBUTtBQUFBLElBQ1IsUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLElBQ1AsU0FBUztBQUFBLEVBQUE7QUFBQSxFQUVYLElBQUk7QUFBQSxJQUNGLFFBQVE7QUFBQSxNQUNOLFNBQVM7QUFBQSxRQUNQLE9BQU87QUFBQSxRQUNQLE1BQU07QUFBQSxRQUNOLFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxNQUFBO0FBQUEsTUFFWCxTQUFTO0FBQUEsUUFDUCxPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsUUFFVCxNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsTUFBQTtBQUFBLElBQ1Y7QUFBQSxJQUVGLFNBQVM7QUFBQSxJQUNULE1BQU07QUFBQSxJQUNOLFNBQVM7QUFBQSxJQUNULFdBQVc7QUFBQSxJQUNYLFNBQVM7QUFBQSxNQUNQLFFBQVE7QUFBQSxNQUNSLE9BQU87QUFBQSxNQUNQLFNBQVM7QUFBQSxNQUNULFVBQVU7QUFBQSxNQUNWLFVBQVU7QUFBQSxNQUNWLFNBQVM7QUFBQSxNQUNULFNBQVM7QUFBQSxJQUFBO0FBQUEsSUFFWCxhQUFhO0FBQUEsTUFDWCxhQUFhO0FBQUEsTUFDYixhQUFhO0FBQUEsTUFDYixlQUFlO0FBQUEsTUFDZixjQUFjO0FBQUEsSUFBQTtBQUFBLEVBQ2hCO0FBQUEsRUFFRixRQUFRO0FBQUEsSUFDTixPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsUUFFVCxNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsTUFBQTtBQUFBLE1BRVYsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsVUFBVTtBQUFBLE1BQ1YsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLElBQUE7QUFBQSxJQUVYLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsTUFDUixPQUFPO0FBQUEsSUFBQTtBQUFBLElBRVQsUUFBUTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLElBQUE7QUFBQSxJQUVQLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxJQUFB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TUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixPQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsS0FBSztBQUFBLE1BQ0gsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLEVBQ1I7QUFBQSxFQUVGLFFBQVE7QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxJQUNQLFlBQVk7QUFBQSxFQUFBO0FBQUEsRUFFZCxTQUFTO0FBQUEsSUFDUCxVQUFVO0FBQUEsSUFDVixLQUFLO0FBQUEsSUFDTCxJQUFJO0FBQUEsRUFBQTtBQUFBLEVBRU4sVUFBVTtBQUFBLElBQ1IsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLE1BQ1IsUUFBUTtBQUFBLElBQUE7QUFBQSxJQUVWLElBQUk7QUFBQSxNQUNGLE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxJQUFBO0FBQUEsSUFFVixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsSUFBQTtBQUFBLEVBQ1Y7QUFBQSxFQUVGLFNBQVM7QUFBQSxJQUNQLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLE9BQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixLQUFLO0FBQUEsTUFDSCxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7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Q0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxtQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxrREFBQSxNQUFBLE9BQUEsc0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsa0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsa0NBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxrREFBQSxNQUFBLE9BQUEsc0NBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxtQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxnREFBQSxNQUFBLE9BQUEsb0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxt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YUFBYTtBQUFBLEVBQ2IsT0FBTztBQUFBLEVBQ1AsZ0JBQWdCO0FBQUEsRUFDaEIsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsaUJBQWlCO0FBQUEsRUFDakIsTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsZUFBZTtBQUFBLEVBQ2Ysc0JBQXNCO0FBQUEsRUFDdEIsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1Asb0JBQW9CO0FBQUEsRUFDcEIsUUFBUTtBQUFBLEVBQ1IsWUFBWTtBQUFBLEVBQ1osTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsZ0JBQWdCO0FBQUEsRUFDaEIsV0FBVztBQUFBLEVBQ1gsZ0JBQWdCO0FBQUEsRUFDaEIsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osTUFBTTtBQUFBLEVBQ04sZUFBZTtBQUFBLEVBQ2YsVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsZUFBZTtBQUFBLEVBQ2YsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsTUFBTTtBQUFBLEVBQ04sZ0JBQWdCO0FBQUEsRUFDaEIsT0FBTztBQUFB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
|