tide-design-system 2.2.13 → 2.2.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/IconAccountBalance-Ck1QODok.js +16 -0
- package/dist/IconAccountBalance-DUpdmQFe.cjs +2 -0
- package/dist/IconAcute-Dy5x_yJL.js +16 -0
- package/dist/IconAcute-bU4QJ8V7.cjs +2 -0
- package/dist/IconAdd-CoVrVzyk.js +16 -0
- package/dist/IconAdd-DcDrqXYF.cjs +2 -0
- package/dist/IconAiDescription-6Pv0Y_Yt.js +20 -0
- package/dist/IconAiDescription-CEkom1qc.cjs +2 -0
- package/dist/IconAlignSpaceEven-BF_GmIrK.js +16 -0
- package/dist/IconAlignSpaceEven-cqO2Dlov.cjs +2 -0
- package/dist/IconApplePay-C56V1wAj.cjs +2 -0
- package/dist/IconApplePay-oQ4zV5vN.js +16 -0
- package/dist/IconArrowBack-BP2TEpuq.js +16 -0
- package/dist/IconArrowBack-FzFtQ6Wh.cjs +2 -0
- package/dist/IconArrowCycle-CqKlSl5d.cjs +2 -0
- package/dist/IconArrowCycle-TQa-fbVD.js +16 -0
- package/dist/IconArrowForward-CkA2-WZe.cjs +2 -0
- package/dist/IconArrowForward-VWVINc35.js +16 -0
- package/dist/IconArrowRight-BJYT2e-d.js +16 -0
- package/dist/IconArrowRight-BxQWtz80.cjs +2 -0
- package/dist/IconArrowUp-BM37-Uxb.cjs +2 -0
- package/dist/IconArrowUp-JSl5zOyP.js +16 -0
- package/dist/IconAssignment-B13NJfNm.cjs +2 -0
- package/dist/IconAssignment-CSn4vDyt.js +16 -0
- package/dist/IconAttachMoney-CIYp4I2h.js +16 -0
- package/dist/IconAttachMoney-CUjPtX-U.cjs +2 -0
- package/dist/IconAtvAtv-DDtMKkiz.cjs +2 -0
- package/dist/IconAtvAtv-GFhgoQXA.js +20 -0
- package/dist/IconAtvDuneBuggy-CmVFELlj.cjs +2 -0
- package/dist/IconAtvDuneBuggy-Eou8hc_1.js +20 -0
- package/dist/IconAtvGoKart-Cj3k54oS.js +20 -0
- package/dist/IconAtvGoKart-D200V7pq.cjs +2 -0
- package/dist/IconAtvGolfCart-BGqnqb3G.cjs +2 -0
- package/dist/IconAtvGolfCart-CCQwt0_I.js +20 -0
- package/dist/IconAtvSandRail-C5P5lWt6.cjs +2 -0
- package/dist/IconAtvSandRail-HpaJVocj.js +20 -0
- package/dist/IconAtvSideBySide-BxqtCex8.js +20 -0
- package/dist/IconAtvSideBySide-dbhLoB1-.cjs +2 -0
- package/dist/IconAtvTrailer-CTlZZ8Wn.js +20 -0
- package/dist/IconAtvTrailer-tohF8f6D.cjs +2 -0
- package/dist/IconAutoRenew-C77Hq4T0.cjs +2 -0
- package/dist/IconAutoRenew-Dp5h0lzF.js +16 -0
- package/dist/IconAwardStar-CNBpPsCx.cjs +2 -0
- package/dist/IconAwardStar-CdAw4NY5.js +16 -0
- package/dist/IconBed-B1u5P61X.js +16 -0
- package/dist/IconBed-Du8uU-Fq.cjs +2 -0
- package/dist/IconBoatmartPwc-CcE6IBYS.cjs +2 -0
- package/dist/IconBoatmartPwc-D6wQ7mNA.js +20 -0
- package/dist/IconBoatmartTrailer-CfIANY7t.cjs +2 -0
- package/dist/IconBoatmartTrailer-hKiD_NXI.js +20 -0
- package/dist/IconBolt-CskRJDT1.js +16 -0
- package/dist/IconBolt-D3QlzyVv.cjs +2 -0
- package/dist/IconBookmark-Dc_xQALq.cjs +2 -0
- package/dist/IconBookmark-DsEGlmme.js +16 -0
- package/dist/IconBunkhouse-BLo-n_Mb.js +16 -0
- package/dist/IconBunkhouse-BUPqUZFs.cjs +2 -0
- package/dist/IconCalendarMonth-Cfs-ZKLJ.js +16 -0
- package/dist/IconCalendarMonth-ztc4w4Tw.cjs +2 -0
- package/dist/IconCall-BCjepEju.js +16 -0
- package/dist/IconCall-BKYdkS16.cjs +2 -0
- package/dist/IconCallQuality-BRfc8Y1K.cjs +2 -0
- package/dist/IconCallQuality-c7UaokVa.js +16 -0
- package/dist/IconCarRental-CkVWcpTh.cjs +2 -0
- package/dist/IconCarRental-D-qYjRe5.js +16 -0
- package/dist/IconCheck-D0w_fKOH.cjs +2 -0
- package/dist/IconCheck-DVE4Knnl.js +16 -0
- package/dist/IconChevronLeft-DStWQfoj.js +16 -0
- package/dist/IconChevronLeft-DhX3pOQ3.cjs +2 -0
- package/dist/IconChevronRight-3vFVvnNb.js +16 -0
- package/dist/IconChevronRight-BCv__YUh.cjs +2 -0
- package/dist/IconClear-D5yRmb93.cjs +2 -0
- package/dist/IconClear-F6afoxzY.js +16 -0
- package/dist/IconClose-Y-mY3AiS.cjs +2 -0
- package/dist/IconClose-eMGGtfEC.js +16 -0
- package/dist/IconContract-D6nGc_5y.cjs +2 -0
- package/dist/IconContract-f9bj5j-_.js +16 -0
- package/dist/IconCrash-B2l3Ie38.js +16 -0
- package/dist/IconCrash-BhwhKaB1.cjs +2 -0
- package/dist/IconDashboardCustomize-CyQTFASs.js +16 -0
- package/dist/IconDashboardCustomize-N7cHDhjT.cjs +2 -0
- package/dist/IconDelete-Couv2iBA.js +16 -0
- package/dist/IconDelete-LlUqnq04.cjs +2 -0
- package/dist/IconDiamond-sol6SUrB.js +16 -0
- package/dist/IconDiamond-t4Tf48_s.cjs +2 -0
- package/dist/IconDirectionsBoat-IZhI7oCN.cjs +2 -0
- package/dist/IconDirectionsBoat-S07T_dm_.js +16 -0
- package/dist/IconDomain-DSyC0Set.cjs +2 -0
- package/dist/IconDomain-ECxC_qj-.js +16 -0
- package/dist/IconDraft-BFxB85ro.js +16 -0
- package/dist/IconDraft-DL8E6d1f.cjs +2 -0
- package/dist/IconEdit-BoLO_nL5.js +16 -0
- package/dist/IconEdit-HzbIdd3z.cjs +2 -0
- package/dist/IconEngine-BBaqQJ6N.js +20 -0
- package/dist/IconEngine-DCKjsg0s.cjs +2 -0
- package/dist/IconEngineering-C60OP34_.js +16 -0
- package/dist/IconEngineering-WPQWx43h.cjs +2 -0
- package/dist/IconError-CAjFP9Jy.cjs +2 -0
- package/dist/IconError-Dd2H7cOG.js +16 -0
- package/dist/IconExpandContent-C1xzfkui.js +16 -0
- package/dist/IconExpandContent-UDkqNF-G.cjs +2 -0
- package/dist/IconExpandLess-Bf6Nypx3.js +16 -0
- package/dist/IconExpandLess-HiL8c2v-.cjs +2 -0
- package/dist/IconExpandMore-BffI3rnY.js +16 -0
- package/dist/IconExpandMore-tOo2Ynbv.cjs +2 -0
- package/dist/IconFacebook-7dq6Uz6i.cjs +2 -0
- package/dist/IconFacebook-Cki8sZRt.js +16 -0
- package/dist/IconFavorite-C6ZJCuY6.cjs +2 -0
- package/dist/IconFavorite-CyRSAVdw.js +16 -0
- package/dist/IconFavoriteFilled-DJIL-WYR.cjs +2 -0
- package/dist/IconFavoriteFilled-DeNJvMmm.js +16 -0
- package/dist/IconFlag-a6YLysex.cjs +2 -0
- package/dist/IconFlag-aeogw6hc.js +16 -0
- package/dist/IconFormatBold-CtYxihT6.js +16 -0
- package/dist/IconFormatBold-Yo5bdAwc.cjs +2 -0
- package/dist/IconFormatItalic-DSJCzNMj.cjs +2 -0
- package/dist/IconFormatItalic-EUVbp7Qb.js +16 -0
- package/dist/IconFormatListBulleted-CT9Ocq27.cjs +2 -0
- package/dist/IconFormatListBulleted-D-VQIabf.js +16 -0
- package/dist/IconForum-BrjEMf33.js +16 -0
- package/dist/IconForum-DQrwT4Pb.cjs +2 -0
- package/dist/IconGas-D_rJSqnT.js +16 -0
- package/dist/IconGas-DaKcTfiu.cjs +2 -0
- package/dist/IconGavel-D9XWUMJt.js +16 -0
- package/dist/IconGavel-ZdfEJ5bP.cjs +2 -0
- package/dist/IconGears-BlhP9t4o.cjs +2 -0
- package/dist/IconGears-Cavx6RDS.js +16 -0
- package/dist/IconGlobeLocationPin-CdwVS7ad.js +16 -0
- package/dist/IconGlobeLocationPin-Dz_hajhl.cjs +2 -0
- package/dist/IconGoogle-CW-JtHsA.js +31 -0
- package/dist/IconGoogle-DaDS3i9U.cjs +2 -0
- package/dist/IconGooglePay-ByaG5WLE.cjs +2 -0
- package/dist/IconGooglePay-lhVEuNTf.js +16 -0
- package/dist/IconGrid-4jZ_E7sN.cjs +2 -0
- package/dist/IconGrid-B-Z-t5S5.js +16 -0
- package/dist/IconHandshake-CCtEDb5s.js +16 -0
- package/dist/IconHandshake-Dm6HyjPZ.cjs +2 -0
- package/dist/IconHandyman-CeFGeaUD.js +16 -0
- package/dist/IconHandyman-DWBuUdrY.cjs +2 -0
- package/dist/IconHeight-CU7292SF.js +16 -0
- package/dist/IconHeight-DdZD0XDB.cjs +2 -0
- package/dist/IconHelp-CpHZAsX2.js +16 -0
- package/dist/IconHelp-Ks-iBsna.cjs +2 -0
- package/dist/IconInfo-Du8txE_y.js +16 -0
- package/dist/IconInfo-xZBbCBpg.cjs +2 -0
- package/dist/IconInformation-DnC1dUkM.cjs +2 -0
- package/dist/IconInformation-fpX8-lfe.js +16 -0
- package/dist/IconInsertText-B50Ml556.js +16 -0
- package/dist/IconInsertText-DRLSQCif.cjs +2 -0
- package/dist/IconInstagram-BAydhrdp.cjs +2 -0
- package/dist/IconInstagram-x9ut2Rvt.js +16 -0
- package/dist/IconIosShare-BAZa5TGR.js +16 -0
- package/dist/IconIosShare-ln3UX-op.cjs +2 -0
- package/dist/IconLayout-B7PSx75m.cjs +2 -0
- package/dist/IconLayout-Ctl5Nh6E.js +16 -0
- package/dist/IconLevellingJack-Cv_L_Xt-.cjs +2 -0
- package/dist/IconLevellingJack-OIJRh7On.js +20 -0
- package/dist/IconLinkedIn-DpuBRGWk.js +16 -0
- package/dist/IconLinkedIn-yIN3rQkH.cjs +2 -0
- package/dist/IconLocalShipping-CECgkii_.cjs +2 -0
- package/dist/IconLocalShipping-DFGIrDiT.js +16 -0
- package/dist/IconLock-CgnOY2yE.cjs +2 -0
- package/dist/IconLock-Kkxyx6xF.js +16 -0
- package/dist/IconMail-C52wU0bj.cjs +2 -0
- package/dist/IconMail-C_KZ99bY.js +16 -0
- package/dist/IconMenu-Bgr0cuPj.cjs +2 -0
- package/dist/IconMenu-DdVdEPQY.js +16 -0
- package/dist/IconMoneyBag-Bpwqj4h_.js +16 -0
- package/dist/IconMoneyBag-DIgjDYQp.cjs +2 -0
- package/dist/IconMoreHoriz-CMqeM-vy.js +16 -0
- package/dist/IconMoreHoriz-CopFNsjL.cjs +2 -0
- package/dist/IconNotifications-C-5jqVsp.js +16 -0
- package/dist/IconNotifications-CowlXF8e.cjs +2 -0
- package/dist/IconOdometer-8X8BZK7G.cjs +2 -0
- package/dist/IconOdometer-DOvJTqMC.js +16 -0
- package/dist/IconOpenInNew-BECM_cge.js +16 -0
- package/dist/IconOpenInNew-NIE7_GBf.cjs +2 -0
- package/dist/IconPalette-BnkMmdjx.cjs +2 -0
- package/dist/IconPalette-cNHa_Dl9.js +16 -0
- package/dist/IconPaypal-0MB9NiPi.js +16 -0
- package/dist/IconPaypal-Cm4sbOWR.cjs +2 -0
- package/dist/IconPerson-BlD3wl56.cjs +2 -0
- package/dist/IconPerson-C9FdsFRF.js +16 -0
- package/dist/IconPersonSearch-BAwODsOw.js +16 -0
- package/dist/IconPersonSearch-CvzxD13q.cjs +2 -0
- package/dist/IconPhotoCamera-Dhq3zkZ1.js +16 -0
- package/dist/IconPhotoCamera-LE83ELYg.cjs +2 -0
- package/dist/IconPinterest-B2ilympx.js +16 -0
- package/dist/IconPinterest-LMg3EmCf.cjs +2 -0
- package/dist/IconPlayArrow-DWY4o6mi.js +16 -0
- package/dist/IconPlayArrow-DaK8Rma5.cjs +2 -0
- package/dist/IconPolicy-CPfGoBvS.cjs +2 -0
- package/dist/IconPolicy-CTm0qx9m.js +16 -0
- package/dist/IconPower-BNYJxFS-.cjs +2 -0
- package/dist/IconPower-El-f1YpW.js +16 -0
- package/dist/IconPowerOff-BeF6a0I_.js +16 -0
- package/dist/IconPowerOff-BzVbrhfQ.cjs +2 -0
- package/dist/IconPriorityHigh-BOUPMj-c.js +16 -0
- package/dist/IconPriorityHigh-De-QwFs9.cjs +2 -0
- package/dist/IconRemove-DJ8Ats3O.js +16 -0
- package/dist/IconRemove-FRKIQpXX.cjs +2 -0
- package/dist/IconRequestQuote-63Pc7nFl.cjs +2 -0
- package/dist/IconRequestQuote-Dx73kEAB.js +16 -0
- package/dist/IconResetWrench-Cszjots_.cjs +2 -0
- package/dist/IconResetWrench-afPLSCCR.js +16 -0
- package/dist/IconRoad-CXNsqXt3.cjs +2 -0
- package/dist/IconRoad-D8LbDPzU.js +16 -0
- package/dist/IconRoundedCorner-CBFrVTjO.js +16 -0
- package/dist/IconRoundedCorner-s0eqhrw-.cjs +2 -0
- package/dist/IconRuler-BbrDrxik.js +16 -0
- package/dist/IconRuler-CS4llN2v.cjs +2 -0
- package/dist/IconRvClassA-IHRP4eXR.cjs +2 -0
- package/dist/IconRvClassA-pAChL2Qm.js +20 -0
- package/dist/IconRvClassB-BWEVHWYh.cjs +2 -0
- package/dist/IconRvClassB-BWaLlkdV.js +20 -0
- package/dist/IconRvClassC-CeDhPBYp.js +20 -0
- package/dist/IconRvClassC-CiUYMt7R.cjs +2 -0
- package/dist/IconRvFifthWheel-D98H64pq.js +20 -0
- package/dist/IconRvFifthWheel-tllq5hmh.cjs +2 -0
- package/dist/IconRvFishHouse-B9v3_c4m.js +20 -0
- package/dist/IconRvFishHouse-C5B0w81b.cjs +2 -0
- package/dist/IconRvParkModel-DJjJJFrS.js +20 -0
- package/dist/IconRvParkModel-DU9WYpvA.cjs +2 -0
- package/dist/IconRvPopUpCamper-C_L-wpFq.cjs +2 -0
- package/dist/IconRvPopUpCamper-DC5JLH5u.js +20 -0
- package/dist/IconRvTravelTrailer-CUzyIoJH.js +20 -0
- package/dist/IconRvTravelTrailer-DfoQmo80.cjs +2 -0
- package/dist/IconRvTruckCamper-CHLJEty2.js +20 -0
- package/dist/IconRvTruckCamper-CI5jKToo.cjs +2 -0
- package/dist/IconSailing-CP278bNv.cjs +2 -0
- package/dist/IconSailing-Ct5A7oe-.js +16 -0
- package/dist/IconSchool-DCJoiRB2.cjs +2 -0
- package/dist/IconSchool-DkD-by-f.js +16 -0
- package/dist/IconSearch-C3_cVelm.js +16 -0
- package/dist/IconSearch-CG3sTqyY.cjs +2 -0
- package/dist/IconSeating-B2-FR2aI.js +16 -0
- package/dist/IconSeating-DPz7Itl5.cjs +2 -0
- package/dist/IconSell-B01QAmJJ.js +16 -0
- package/dist/IconSell-tiqkK8HB.cjs +2 -0
- package/dist/IconSensors-B2yoU18I.cjs +2 -0
- package/dist/IconSensors-C9ikFDSl.js +16 -0
- package/dist/IconSettings-6iUt_j-N.cjs +2 -0
- package/dist/IconSettings-C7CzSyB_.js +16 -0
- package/dist/IconShare-CC3TgzM9.js +16 -0
- package/dist/IconShare-z3eso-fS.cjs +2 -0
- package/dist/IconShieldCheck-BKdiIhJ-.js +16 -0
- package/dist/IconShieldCheck-Dn0h4Aut.cjs +2 -0
- package/dist/IconShoppingCart-CQZWosiy.js +16 -0
- package/dist/IconShoppingCart-Dn7aCgYi.cjs +2 -0
- package/dist/IconSleeps-DDIWvIh8.js +16 -0
- package/dist/IconSleeps-DMXZj5P6.cjs +2 -0
- package/dist/IconSms-Bb3mhfHH.cjs +2 -0
- package/dist/IconSms-C22lp6yM.js +16 -0
- package/dist/IconSnowflake-DEJHKYBl.cjs +2 -0
- package/dist/IconSnowflake-aBZ4o4X2.js +16 -0
- package/dist/IconStar-2gDebu9X.js +16 -0
- package/dist/IconStar-COuoApVn.cjs +2 -0
- package/dist/IconStarFilled-BvH24VJ3.cjs +2 -0
- package/dist/IconStarFilled-CI8JFRKm.js +16 -0
- package/dist/IconStarHalf-9Mtxrxy2.js +16 -0
- package/dist/IconStarHalf-Cf3yNdfW.cjs +2 -0
- package/dist/IconSummarize-DdMTFwCZ.cjs +2 -0
- package/dist/IconSummarize-DjgKmXYf.js +16 -0
- package/dist/IconSwapHoriz-BI3V7cXl.js +16 -0
- package/dist/IconSwapHoriz-CHbH-rb1.cjs +2 -0
- package/dist/IconSwapVert-Bxn4iSnZ.js +16 -0
- package/dist/IconSwapVert-DT_2E9ir.cjs +2 -0
- package/dist/IconThreeDRotation-C5sf5vQe.js +29 -0
- package/dist/IconThreeDRotation-tzEyR04j.cjs +2 -0
- package/dist/IconThumbUp-Bewoaeaz.js +16 -0
- package/dist/IconThumbUp-Cv6VtGa7.cjs +2 -0
- package/dist/IconTrendingDown-ClqzR4Gm.js +16 -0
- package/dist/IconTrendingDown-YxmY8_d7.cjs +2 -0
- package/dist/IconTrophy-BvyInFpa.js +16 -0
- package/dist/IconTrophy-D68upC1Z.cjs +2 -0
- package/dist/IconTune-BeT6cJNb.cjs +2 -0
- package/dist/IconTune-DM9oNvly.js +16 -0
- package/dist/IconTwitter-CDK1k6Um.cjs +2 -0
- package/dist/IconTwitter-Di3mFm4J.js +16 -0
- package/dist/IconUmbrella-DdgZRF8v.cjs +2 -0
- package/dist/IconUmbrella-KarDrV_0.js +16 -0
- package/dist/IconVerified-BSLc-Tng.js +20 -0
- package/dist/IconVerified-CE6bl5Tr.cjs +2 -0
- package/dist/IconVideocam-Bk2i6zSL.js +16 -0
- package/dist/IconVideocam-DFAhIy60.cjs +2 -0
- package/dist/IconViewInAr-CyH3TuS9.js +16 -0
- package/dist/IconViewInAr-cJRKU-n8.cjs +2 -0
- package/dist/IconVisibility-C7r-OBqZ.js +16 -0
- package/dist/IconVisibility-CoZqOmFs.cjs +2 -0
- package/dist/IconVolumeOff-B1VwsF7D.cjs +2 -0
- package/dist/IconVolumeOff-DrXwzNlx.js +16 -0
- package/dist/IconVolumeOn-ByK04AMO.cjs +2 -0
- package/dist/IconVolumeOn-DMqPq3mL.js +16 -0
- package/dist/IconWarehouse-B-WGdkxc.cjs +2 -0
- package/dist/IconWarehouse-BLILe5TP.js +16 -0
- package/dist/IconWarning-BGb_hd4L.js +16 -0
- package/dist/IconWarning-BmJVooFC.cjs +2 -0
- package/dist/IconWater-BFIBeGBM.js +16 -0
- package/dist/IconWater-BcVoUC58.cjs +2 -0
- package/dist/IconWeight-BzjjPVJo.cjs +2 -0
- package/dist/IconWeight-IXMjxgaM.js +16 -0
- package/dist/IconWidth-CWT_XoXm.js +16 -0
- package/dist/IconWidth-DK12b7aq.cjs +2 -0
- package/dist/IconWorkspacePremium-B_CTpaCF.js +16 -0
- package/dist/IconWorkspacePremium-Dwj3FxW1.cjs +2 -0
- package/dist/IconWrench-CHHIpkKv.cjs +2 -0
- package/dist/IconWrench-CgaRK8xS.js +16 -0
- package/dist/IconYoutube-BBBj6jXd.js +16 -0
- package/dist/IconYoutube-DIFl6ykK.cjs +2 -0
- package/dist/style.css +1 -1
- package/dist/tide-design-system.cjs +2 -2
- package/dist/tide-design-system.esm.js +612 -629
- package/package.json +2 -2
- package/src/components/TidePopover.vue +3 -1
- package/src/components/TideSheet.vue +13 -3
- package/dist/IconAccountBalance-0a430d19.cjs +0 -2
- package/dist/IconAccountBalance-ad4f4a95.js +0 -16
- package/dist/IconAcute-ad6bc5da.js +0 -16
- package/dist/IconAcute-b1e43123.cjs +0 -2
- package/dist/IconAdd-917e055b.js +0 -16
- package/dist/IconAdd-91de604b.cjs +0 -2
- package/dist/IconAiDescription-674cca6d.cjs +0 -2
- package/dist/IconAiDescription-e6f8ed46.js +0 -20
- package/dist/IconAlignSpaceEven-7ee811f8.cjs +0 -2
- package/dist/IconAlignSpaceEven-a1d90758.js +0 -16
- package/dist/IconApplePay-7742e162.js +0 -16
- package/dist/IconApplePay-92395240.cjs +0 -2
- package/dist/IconArrowBack-1810092d.js +0 -16
- package/dist/IconArrowBack-3d47d166.cjs +0 -2
- package/dist/IconArrowCycle-7b7c7325.cjs +0 -2
- package/dist/IconArrowCycle-f8d882fe.js +0 -16
- package/dist/IconArrowForward-613e128c.cjs +0 -2
- package/dist/IconArrowForward-ddabefc9.js +0 -16
- package/dist/IconArrowRight-9f39cdbb.cjs +0 -2
- package/dist/IconArrowRight-d93347c3.js +0 -16
- package/dist/IconArrowUp-75edebad.js +0 -16
- package/dist/IconArrowUp-c0afd43d.cjs +0 -2
- package/dist/IconAssignment-7171d067.cjs +0 -2
- package/dist/IconAssignment-b1d2ffa2.js +0 -16
- package/dist/IconAttachMoney-1360c507.js +0 -16
- package/dist/IconAttachMoney-6d3087ab.cjs +0 -2
- package/dist/IconAtvAtv-c2e11398.cjs +0 -2
- package/dist/IconAtvAtv-d10d11c0.js +0 -20
- package/dist/IconAtvDuneBuggy-458e7a9c.js +0 -20
- package/dist/IconAtvDuneBuggy-ff1f7a23.cjs +0 -2
- package/dist/IconAtvGoKart-0eab678e.js +0 -20
- package/dist/IconAtvGoKart-d1ad6a03.cjs +0 -2
- package/dist/IconAtvGolfCart-9b3569bc.cjs +0 -2
- package/dist/IconAtvGolfCart-c549f7f3.js +0 -20
- package/dist/IconAtvSandRail-d71aa55b.cjs +0 -2
- package/dist/IconAtvSandRail-e8913dd9.js +0 -20
- package/dist/IconAtvSideBySide-50377701.js +0 -20
- package/dist/IconAtvSideBySide-f734e90f.cjs +0 -2
- package/dist/IconAtvTrailer-062da3ab.js +0 -20
- package/dist/IconAtvTrailer-ee1d6ec1.cjs +0 -2
- package/dist/IconAutoRenew-00afcc33.js +0 -16
- package/dist/IconAutoRenew-bcd665a4.cjs +0 -2
- package/dist/IconAwardStar-447cf4fc.cjs +0 -2
- package/dist/IconAwardStar-8128aca1.js +0 -16
- package/dist/IconBed-3b1fa670.js +0 -16
- package/dist/IconBed-8bcac0c0.cjs +0 -2
- package/dist/IconBoatmartPwc-7a3c368a.js +0 -20
- package/dist/IconBoatmartPwc-9de80564.cjs +0 -2
- package/dist/IconBoatmartTrailer-68276601.js +0 -20
- package/dist/IconBoatmartTrailer-ff1f376f.cjs +0 -2
- package/dist/IconBolt-36fc8ef9.cjs +0 -2
- package/dist/IconBolt-83121ee2.js +0 -16
- package/dist/IconBookmark-3f6454d9.cjs +0 -2
- package/dist/IconBookmark-7d88d664.js +0 -16
- package/dist/IconBunkhouse-348a1518.cjs +0 -2
- package/dist/IconBunkhouse-e7cb965d.js +0 -16
- package/dist/IconCalendarMonth-2fd1e713.js +0 -16
- package/dist/IconCalendarMonth-bb5bbb9b.cjs +0 -2
- package/dist/IconCall-08f3119f.cjs +0 -2
- package/dist/IconCall-8aa582d9.js +0 -16
- package/dist/IconCallQuality-1edf4c35.js +0 -16
- package/dist/IconCallQuality-56ee01fb.cjs +0 -2
- package/dist/IconCarRental-7709e091.js +0 -16
- package/dist/IconCarRental-b0af42ff.cjs +0 -2
- package/dist/IconCheck-910929df.cjs +0 -2
- package/dist/IconCheck-cf7470ee.js +0 -16
- package/dist/IconChevronLeft-558206bb.js +0 -16
- package/dist/IconChevronLeft-6626777e.cjs +0 -2
- package/dist/IconChevronRight-28930a0b.js +0 -16
- package/dist/IconChevronRight-91bc7ad1.cjs +0 -2
- package/dist/IconClear-4db1f7d4.cjs +0 -2
- package/dist/IconClear-5cf9e8be.js +0 -16
- package/dist/IconClose-538a540f.cjs +0 -2
- package/dist/IconClose-abfb6177.js +0 -16
- package/dist/IconContract-0acea45b.cjs +0 -2
- package/dist/IconContract-289a7094.js +0 -16
- package/dist/IconCrash-8d91a8db.cjs +0 -2
- package/dist/IconCrash-d87f6517.js +0 -16
- package/dist/IconDashboardCustomize-5321091b.cjs +0 -2
- package/dist/IconDashboardCustomize-f74fde35.js +0 -16
- package/dist/IconDelete-5cc224a1.cjs +0 -2
- package/dist/IconDelete-67b69553.js +0 -16
- package/dist/IconDiamond-4e736f5f.cjs +0 -2
- package/dist/IconDiamond-93af488a.js +0 -16
- package/dist/IconDirectionsBoat-11aaf49c.cjs +0 -2
- package/dist/IconDirectionsBoat-4d41fb87.js +0 -16
- package/dist/IconDomain-05540c31.cjs +0 -2
- package/dist/IconDomain-377b91aa.js +0 -16
- package/dist/IconDraft-26850369.cjs +0 -2
- package/dist/IconDraft-6e70e48f.js +0 -16
- package/dist/IconEdit-16d34325.js +0 -16
- package/dist/IconEdit-b4d5f175.cjs +0 -2
- package/dist/IconEngine-e51389f9.cjs +0 -2
- package/dist/IconEngine-ee5f92d4.js +0 -20
- package/dist/IconEngineering-a74e5efe.cjs +0 -2
- package/dist/IconEngineering-e18db558.js +0 -16
- package/dist/IconError-4ad48be1.cjs +0 -2
- package/dist/IconError-a2922b95.js +0 -16
- package/dist/IconExpandContent-03a28bfb.cjs +0 -2
- package/dist/IconExpandContent-7e144d1c.js +0 -16
- package/dist/IconExpandLess-3a8a0552.js +0 -16
- package/dist/IconExpandLess-59a80211.cjs +0 -2
- package/dist/IconExpandMore-c600148e.js +0 -16
- package/dist/IconExpandMore-edf55cdd.cjs +0 -2
- package/dist/IconFacebook-a83c1949.cjs +0 -2
- package/dist/IconFacebook-fb3f93e3.js +0 -16
- package/dist/IconFavorite-43091cef.cjs +0 -2
- package/dist/IconFavorite-d23faefe.js +0 -16
- package/dist/IconFavoriteFilled-71277849.cjs +0 -2
- package/dist/IconFavoriteFilled-aa0d6d5e.js +0 -16
- package/dist/IconFlag-0243bbb9.cjs +0 -2
- package/dist/IconFlag-8bafa50c.js +0 -16
- package/dist/IconFormatBold-4faa5f99.cjs +0 -2
- package/dist/IconFormatBold-70a5cacf.js +0 -16
- package/dist/IconFormatItalic-c06504d7.js +0 -16
- package/dist/IconFormatItalic-fee490fc.cjs +0 -2
- package/dist/IconFormatListBulleted-9493858a.js +0 -16
- package/dist/IconFormatListBulleted-d0a77d0e.cjs +0 -2
- package/dist/IconForum-22217aa0.cjs +0 -2
- package/dist/IconForum-ae4ad63f.js +0 -16
- package/dist/IconGas-198d529d.js +0 -16
- package/dist/IconGas-9d623313.cjs +0 -2
- package/dist/IconGavel-44c29036.js +0 -16
- package/dist/IconGavel-aacae653.cjs +0 -2
- package/dist/IconGears-a52f8ce9.js +0 -16
- package/dist/IconGears-c3b1ba71.cjs +0 -2
- package/dist/IconGlobeLocationPin-4b7fb00b.js +0 -16
- package/dist/IconGlobeLocationPin-b869a4e7.cjs +0 -2
- package/dist/IconGoogle-77ec192e.cjs +0 -2
- package/dist/IconGoogle-febad0d8.js +0 -31
- package/dist/IconGooglePay-049e93ec.cjs +0 -2
- package/dist/IconGooglePay-8cf0286e.js +0 -16
- package/dist/IconGrid-1693599f.cjs +0 -2
- package/dist/IconGrid-25f665e0.js +0 -16
- package/dist/IconHandshake-33b452a7.cjs +0 -2
- package/dist/IconHandshake-7c9f1e84.js +0 -16
- package/dist/IconHandyman-73c7c329.js +0 -16
- package/dist/IconHandyman-ffc0fafb.cjs +0 -2
- package/dist/IconHeight-4fae7545.js +0 -16
- package/dist/IconHeight-d8ee424f.cjs +0 -2
- package/dist/IconHelp-340ee4fb.js +0 -16
- package/dist/IconHelp-43137a66.cjs +0 -2
- package/dist/IconInfo-2d14575c.cjs +0 -2
- package/dist/IconInfo-efead10b.js +0 -16
- package/dist/IconInformation-790c598a.js +0 -16
- package/dist/IconInformation-be043a15.cjs +0 -2
- package/dist/IconInsertText-00236a65.js +0 -16
- package/dist/IconInsertText-14c80b9a.cjs +0 -2
- package/dist/IconInstagram-9f642623.cjs +0 -2
- package/dist/IconInstagram-db345e15.js +0 -16
- package/dist/IconIosShare-167aa8c4.js +0 -16
- package/dist/IconIosShare-526a016a.cjs +0 -2
- package/dist/IconLayout-6963184f.js +0 -16
- package/dist/IconLayout-d0d278c5.cjs +0 -2
- package/dist/IconLevellingJack-04860178.js +0 -20
- package/dist/IconLevellingJack-40c63f7c.cjs +0 -2
- package/dist/IconLinkedIn-2fa1ac20.cjs +0 -2
- package/dist/IconLinkedIn-9c4740a6.js +0 -16
- package/dist/IconLocalShipping-901a3e4c.js +0 -16
- package/dist/IconLocalShipping-9bca5a95.cjs +0 -2
- package/dist/IconLock-1c996287.cjs +0 -2
- package/dist/IconLock-47669e20.js +0 -16
- package/dist/IconMail-9b85058a.js +0 -16
- package/dist/IconMail-f2b8fee4.cjs +0 -2
- package/dist/IconMenu-4bed57f3.js +0 -16
- package/dist/IconMenu-c7c2b143.cjs +0 -2
- package/dist/IconMoneyBag-4a01a10a.js +0 -16
- package/dist/IconMoneyBag-a3d297f5.cjs +0 -2
- package/dist/IconMoreHoriz-2aabe29f.js +0 -16
- package/dist/IconMoreHoriz-2c82da62.cjs +0 -2
- package/dist/IconNotifications-01f7658b.cjs +0 -2
- package/dist/IconNotifications-bcbf1d8c.js +0 -16
- package/dist/IconOdometer-709f4f00.js +0 -16
- package/dist/IconOdometer-a1bc108b.cjs +0 -2
- package/dist/IconOpenInNew-78fffcfe.js +0 -16
- package/dist/IconOpenInNew-9032f1db.cjs +0 -2
- package/dist/IconPalette-22865300.js +0 -16
- package/dist/IconPalette-269c7286.cjs +0 -2
- package/dist/IconPaypal-427e8667.cjs +0 -2
- package/dist/IconPaypal-c28e6dbe.js +0 -16
- package/dist/IconPerson-7ada8b07.js +0 -16
- package/dist/IconPerson-ee87961e.cjs +0 -2
- package/dist/IconPersonSearch-1ccccee1.js +0 -16
- package/dist/IconPersonSearch-b0c1a4e5.cjs +0 -2
- package/dist/IconPhotoCamera-31a58b85.js +0 -16
- package/dist/IconPhotoCamera-56cb060d.cjs +0 -2
- package/dist/IconPinterest-87034fbf.cjs +0 -2
- package/dist/IconPinterest-fe5cc414.js +0 -16
- package/dist/IconPlayArrow-1ed5d884.js +0 -16
- package/dist/IconPlayArrow-80f601bf.cjs +0 -2
- package/dist/IconPolicy-0a3a02bc.js +0 -16
- package/dist/IconPolicy-8f5ca682.cjs +0 -2
- package/dist/IconPower-bfe4f81a.js +0 -16
- package/dist/IconPower-d41e067d.cjs +0 -2
- package/dist/IconPowerOff-0e3118bf.cjs +0 -2
- package/dist/IconPowerOff-dbade32b.js +0 -16
- package/dist/IconPriorityHigh-aae28a02.cjs +0 -2
- package/dist/IconPriorityHigh-ab1b4a95.js +0 -16
- package/dist/IconRemove-73b05132.cjs +0 -2
- package/dist/IconRemove-bab221ba.js +0 -16
- package/dist/IconRequestQuote-e24db541.cjs +0 -2
- package/dist/IconRequestQuote-f6364b1e.js +0 -16
- package/dist/IconResetWrench-5b5c4f74.cjs +0 -2
- package/dist/IconResetWrench-8791a5a9.js +0 -16
- package/dist/IconRoad-3124bbd8.cjs +0 -2
- package/dist/IconRoad-efce130e.js +0 -16
- package/dist/IconRoundedCorner-53cb2cfc.cjs +0 -2
- package/dist/IconRoundedCorner-adbcfd09.js +0 -16
- package/dist/IconRuler-0ceea80a.js +0 -16
- package/dist/IconRuler-5feb5a83.cjs +0 -2
- package/dist/IconRvClassA-80da0dc5.cjs +0 -2
- package/dist/IconRvClassA-e2335760.js +0 -20
- package/dist/IconRvClassB-2032c703.cjs +0 -2
- package/dist/IconRvClassB-ae8261fe.js +0 -20
- package/dist/IconRvClassC-1d11671a.cjs +0 -2
- package/dist/IconRvClassC-c1ff2a5a.js +0 -20
- package/dist/IconRvFifthWheel-b234c67c.cjs +0 -2
- package/dist/IconRvFifthWheel-d201d502.js +0 -20
- package/dist/IconRvFishHouse-b35e6ac1.js +0 -20
- package/dist/IconRvFishHouse-f6edfbbd.cjs +0 -2
- package/dist/IconRvParkModel-20bf39bc.js +0 -20
- package/dist/IconRvParkModel-3707f77a.cjs +0 -2
- package/dist/IconRvPopUpCamper-14ac6a8d.js +0 -20
- package/dist/IconRvPopUpCamper-912c58c2.cjs +0 -2
- package/dist/IconRvTravelTrailer-44a5f64d.cjs +0 -2
- package/dist/IconRvTravelTrailer-e7c21b4c.js +0 -20
- package/dist/IconRvTruckCamper-661b0c28.js +0 -20
- package/dist/IconRvTruckCamper-ce2393f4.cjs +0 -2
- package/dist/IconSailing-19762955.js +0 -16
- package/dist/IconSailing-fa136eea.cjs +0 -2
- package/dist/IconSchool-0bca17f9.cjs +0 -2
- package/dist/IconSchool-2f3ff8d7.js +0 -16
- package/dist/IconSearch-45b2c0e5.cjs +0 -2
- package/dist/IconSearch-f8faefb4.js +0 -16
- package/dist/IconSeating-2ca8921d.js +0 -16
- package/dist/IconSeating-bc19b98f.cjs +0 -2
- package/dist/IconSell-b011ac2d.js +0 -16
- package/dist/IconSell-bcede586.cjs +0 -2
- package/dist/IconSensors-c4387bc9.js +0 -16
- package/dist/IconSensors-f35e7566.cjs +0 -2
- package/dist/IconSettings-32dd2125.js +0 -16
- package/dist/IconSettings-b8848783.cjs +0 -2
- package/dist/IconShare-57f28ce3.js +0 -16
- package/dist/IconShare-ff50a973.cjs +0 -2
- package/dist/IconShieldCheck-0c47755d.js +0 -16
- package/dist/IconShieldCheck-b57fd628.cjs +0 -2
- package/dist/IconShoppingCart-b532dab0.js +0 -16
- package/dist/IconShoppingCart-eee95744.cjs +0 -2
- package/dist/IconSleeps-b994bd2f.js +0 -16
- package/dist/IconSleeps-ffe0dd67.cjs +0 -2
- package/dist/IconSms-0575f458.cjs +0 -2
- package/dist/IconSms-378f373a.js +0 -16
- package/dist/IconSnowflake-2fccf99d.cjs +0 -2
- package/dist/IconSnowflake-9d956143.js +0 -16
- package/dist/IconStar-1b8ad0f9.js +0 -16
- package/dist/IconStar-e2a88836.cjs +0 -2
- package/dist/IconStarFilled-9f4d0d62.cjs +0 -2
- package/dist/IconStarFilled-b73e12dc.js +0 -16
- package/dist/IconStarHalf-0b663cd6.js +0 -16
- package/dist/IconStarHalf-65db4ff6.cjs +0 -2
- package/dist/IconSummarize-69ab122a.js +0 -16
- package/dist/IconSummarize-f73dec0e.cjs +0 -2
- package/dist/IconSwapHoriz-2d9550c3.js +0 -16
- package/dist/IconSwapHoriz-4a33bd68.cjs +0 -2
- package/dist/IconSwapVert-29258e96.cjs +0 -2
- package/dist/IconSwapVert-8085e942.js +0 -16
- package/dist/IconThreeDRotation-33f086a7.js +0 -29
- package/dist/IconThreeDRotation-7be89ff8.cjs +0 -2
- package/dist/IconThumbUp-722d3c77.cjs +0 -2
- package/dist/IconThumbUp-72caf64e.js +0 -16
- package/dist/IconTrendingDown-3da4b7d4.cjs +0 -2
- package/dist/IconTrendingDown-ff3969c7.js +0 -16
- package/dist/IconTrophy-4d05eb75.cjs +0 -2
- package/dist/IconTrophy-f4be8b54.js +0 -16
- package/dist/IconTune-0913ba01.js +0 -16
- package/dist/IconTune-1276696d.cjs +0 -2
- package/dist/IconTwitter-55b8ba63.cjs +0 -2
- package/dist/IconTwitter-9acefb07.js +0 -16
- package/dist/IconUmbrella-775b11b8.js +0 -16
- package/dist/IconUmbrella-81fdaa63.cjs +0 -2
- package/dist/IconVerified-000f615f.js +0 -20
- package/dist/IconVerified-b71255f2.cjs +0 -2
- package/dist/IconVideocam-33650e6f.js +0 -16
- package/dist/IconVideocam-f5b07935.cjs +0 -2
- package/dist/IconViewInAr-a583aff8.cjs +0 -2
- package/dist/IconViewInAr-d1534ef2.js +0 -16
- package/dist/IconVisibility-4984bcac.cjs +0 -2
- package/dist/IconVisibility-a1c21dd0.js +0 -16
- package/dist/IconVolumeOff-35d350ee.cjs +0 -2
- package/dist/IconVolumeOff-8e121ef3.js +0 -16
- package/dist/IconVolumeOn-386ad18b.cjs +0 -2
- package/dist/IconVolumeOn-992e16dd.js +0 -16
- package/dist/IconWarehouse-23085045.cjs +0 -2
- package/dist/IconWarehouse-764da944.js +0 -16
- package/dist/IconWarning-54f3a9ac.cjs +0 -2
- package/dist/IconWarning-6f490acf.js +0 -16
- package/dist/IconWater-0b57b8cc.cjs +0 -2
- package/dist/IconWater-a5f94879.js +0 -16
- package/dist/IconWeight-c6ddd367.cjs +0 -2
- package/dist/IconWeight-e3b3daa6.js +0 -16
- package/dist/IconWidth-a556befc.cjs +0 -2
- package/dist/IconWidth-c81dbc7a.js +0 -16
- package/dist/IconWorkspacePremium-bc3aeb0c.cjs +0 -2
- package/dist/IconWorkspacePremium-efd0a531.js +0 -16
- package/dist/IconWrench-6c52ef4f.js +0 -16
- package/dist/IconWrench-bd1d2907.cjs +0 -2
- package/dist/IconYoutube-a6224033.js +0 -16
- package/dist/IconYoutube-ed951c21.cjs +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent as
|
|
1
|
+
import { defineComponent as b, createElementBlock as p, openBlock as E, normalizeClass as c, createElementVNode as v, unref as e, ref as F, watch as K, defineAsyncComponent as Mt, markRaw as xt, createBlock as P, createCommentVNode as S, resolveDynamicComponent as Le, createVNode as x, toDisplayString as C, renderSlot as V, withCtx as Re, Fragment as ee, renderList as le, createTextVNode as Yt, onMounted as we, onUnmounted as It, onUpdated as Wt, computed as U, normalizeStyle as Ke, withModifiers as Ee, withDirectives as Ge, vModelSelect as Xt, vModelDynamic as Vt, vModelText as $t, nextTick as Tt, withKeys as gt, shallowRef as Kt, getCurrentScope as zt, onScopeDispose as Qt, shallowReadonly as Ae, watchEffect as Zt, onBeforeMount as mt, Teleport as Nt, Transition as qt, vShow as jt } from "vue";
|
|
2
2
|
const it = {
|
|
3
3
|
HORIZONTAL: "horizontal",
|
|
4
4
|
VERTICAL: "vertical"
|
|
@@ -507,7 +507,7 @@ const it = {
|
|
|
507
507
|
}
|
|
508
508
|
}, Jt = {
|
|
509
509
|
class: /* @__PURE__ */ c(["tide-divider"])
|
|
510
|
-
}, es = /* @__PURE__ */
|
|
510
|
+
}, es = /* @__PURE__ */ b({
|
|
511
511
|
__name: "TideDivider",
|
|
512
512
|
props: {
|
|
513
513
|
orientation: { default: it.HORIZONTAL }
|
|
@@ -523,16 +523,22 @@ const it = {
|
|
|
523
523
|
}, null, 2)
|
|
524
524
|
]));
|
|
525
525
|
}
|
|
526
|
-
})
|
|
527
|
-
const w = (i, s) => {
|
|
526
|
+
}), G = (i, s) => {
|
|
528
527
|
const o = i.__vccOpts || i;
|
|
529
528
|
for (const [n, a] of s)
|
|
530
529
|
o[n] = a;
|
|
531
530
|
return o;
|
|
532
|
-
}, Ve = /* @__PURE__ */
|
|
533
|
-
const
|
|
534
|
-
return
|
|
535
|
-
(typeof queueMicrotask == "function" ? queueMicrotask : setTimeout)(
|
|
531
|
+
}, Ve = /* @__PURE__ */ G(es, [["__scopeId", "data-v-c2dc7d09"]]), nt = (i, s, o) => {
|
|
532
|
+
const n = i[s];
|
|
533
|
+
return n ? typeof n == "function" ? n() : Promise.resolve(n) : new Promise((a, d) => {
|
|
534
|
+
(typeof queueMicrotask == "function" ? queueMicrotask : setTimeout)(
|
|
535
|
+
d.bind(
|
|
536
|
+
null,
|
|
537
|
+
new Error(
|
|
538
|
+
"Unknown variable dynamic import: " + s + (s.split("/").length !== o ? ". Note that variables only represent file names one level deep." : "")
|
|
539
|
+
)
|
|
540
|
+
)
|
|
541
|
+
);
|
|
536
542
|
});
|
|
537
543
|
}, ts = {
|
|
538
544
|
AERO: "aero",
|
|
@@ -570,34 +576,33 @@ const w = (i, s) => {
|
|
|
570
576
|
break;
|
|
571
577
|
}
|
|
572
578
|
return s;
|
|
573
|
-
}, is = (i) => `$${i ? ze(i) : String(i || "0")}`, H = /* @__PURE__ */
|
|
579
|
+
}, is = (i) => `$${i ? ze(i) : String(i || "0")}`, H = /* @__PURE__ */ b({
|
|
574
580
|
__name: "TideIcon",
|
|
575
581
|
props: {
|
|
576
582
|
icon: {},
|
|
577
583
|
size: { default: Y.SMALL }
|
|
578
584
|
},
|
|
579
585
|
setup(i) {
|
|
580
|
-
const s = i, o =
|
|
586
|
+
const s = i, o = F();
|
|
581
587
|
return K(
|
|
582
588
|
() => s.icon,
|
|
583
589
|
async () => {
|
|
584
|
-
const n = s.icon, a = ss(n), [d] = n.split("-"), r = ts[d == null ? void 0 : d.toUpperCase()], l = xt(() => r ? nt(/* @__PURE__ */ Object.assign({ "../assets/svg/icons/realm/atv/IconAtvAtv.svg": () => import("./IconAtvAtv-d10d11c0.js"), "../assets/svg/icons/realm/atv/IconAtvDuneBuggy.svg": () => import("./IconAtvDuneBuggy-458e7a9c.js"), "../assets/svg/icons/realm/atv/IconAtvGoKart.svg": () => import("./IconAtvGoKart-0eab678e.js"), "../assets/svg/icons/realm/atv/IconAtvGolfCart.svg": () => import("./IconAtvGolfCart-c549f7f3.js"), "../assets/svg/icons/realm/atv/IconAtvSandRail.svg": () => import("./IconAtvSandRail-e8913dd9.js"), "../assets/svg/icons/realm/atv/IconAtvSideBySide.svg": () => import("./IconAtvSideBySide-50377701.js"), "../assets/svg/icons/realm/atv/IconAtvTrailer.svg": () => import("./IconAtvTrailer-062da3ab.js"), "../assets/svg/icons/realm/boatmart/IconBoatmartPwc.svg": () => import("./IconBoatmartPwc-7a3c368a.js"), "../assets/svg/icons/realm/boatmart/IconBoatmartTrailer.svg": () => import("./IconBoatmartTrailer-68276601.js"), "../assets/svg/icons/realm/rv/IconRvClassA.svg": () => import("./IconRvClassA-e2335760.js"), "../assets/svg/icons/realm/rv/IconRvClassB.svg": () => import("./IconRvClassB-ae8261fe.js"), "../assets/svg/icons/realm/rv/IconRvClassC.svg": () => import("./IconRvClassC-c1ff2a5a.js"), "../assets/svg/icons/realm/rv/IconRvFifthWheel.svg": () => import("./IconRvFifthWheel-d201d502.js"), "../assets/svg/icons/realm/rv/IconRvFishHouse.svg": () => import("./IconRvFishHouse-b35e6ac1.js"), "../assets/svg/icons/realm/rv/IconRvParkModel.svg": () => import("./IconRvParkModel-20bf39bc.js"), "../assets/svg/icons/realm/rv/IconRvPopUpCamper.svg": () => import("./IconRvPopUpCamper-14ac6a8d.js"), "../assets/svg/icons/realm/rv/IconRvTravelTrailer.svg": () => import("./IconRvTravelTrailer-e7c21b4c.js"), "../assets/svg/icons/realm/rv/IconRvTruckCamper.svg": () => import("./IconRvTruckCamper-661b0c28.js") }), `../assets/svg/icons/realm/${r}/Icon${a}.svg`) : nt(/* @__PURE__ */ Object.assign({ "../assets/svg/icons/IconAccountBalance.svg": () => import("./IconAccountBalance-ad4f4a95.js"), "../assets/svg/icons/IconAcute.svg": () => import("./IconAcute-ad6bc5da.js"), "../assets/svg/icons/IconAdd.svg": () => import("./IconAdd-917e055b.js"), "../assets/svg/icons/IconAiDescription.svg": () => import("./IconAiDescription-e6f8ed46.js"), "../assets/svg/icons/IconAlignSpaceEven.svg": () => import("./IconAlignSpaceEven-a1d90758.js"), "../assets/svg/icons/IconApplePay.svg": () => import("./IconApplePay-7742e162.js"), "../assets/svg/icons/IconArrowBack.svg": () => import("./IconArrowBack-1810092d.js"), "../assets/svg/icons/IconArrowCycle.svg": () => import("./IconArrowCycle-f8d882fe.js"), "../assets/svg/icons/IconArrowForward.svg": () => import("./IconArrowForward-ddabefc9.js"), "../assets/svg/icons/IconArrowRight.svg": () => import("./IconArrowRight-d93347c3.js"), "../assets/svg/icons/IconArrowUp.svg": () => import("./IconArrowUp-75edebad.js"), "../assets/svg/icons/IconAssignment.svg": () => import("./IconAssignment-b1d2ffa2.js"), "../assets/svg/icons/IconAttachMoney.svg": () => import("./IconAttachMoney-1360c507.js"), "../assets/svg/icons/IconAutoRenew.svg": () => import("./IconAutoRenew-00afcc33.js"), "../assets/svg/icons/IconAwardStar.svg": () => import("./IconAwardStar-8128aca1.js"), "../assets/svg/icons/IconBed.svg": () => import("./IconBed-3b1fa670.js"), "../assets/svg/icons/IconBolt.svg": () => import("./IconBolt-83121ee2.js"), "../assets/svg/icons/IconBookmark.svg": () => import("./IconBookmark-7d88d664.js"), "../assets/svg/icons/IconBunkhouse.svg": () => import("./IconBunkhouse-e7cb965d.js"), "../assets/svg/icons/IconCalendarMonth.svg": () => import("./IconCalendarMonth-2fd1e713.js"), "../assets/svg/icons/IconCall.svg": () => import("./IconCall-8aa582d9.js"), "../assets/svg/icons/IconCallQuality.svg": () => import("./IconCallQuality-1edf4c35.js"), "../assets/svg/icons/IconCarRental.svg": () => import("./IconCarRental-7709e091.js"), "../assets/svg/icons/IconCheck.svg": () => import("./IconCheck-cf7470ee.js"), "../assets/svg/icons/IconChevronLeft.svg": () => import("./IconChevronLeft-558206bb.js"), "../assets/svg/icons/IconChevronRight.svg": () => import("./IconChevronRight-28930a0b.js"), "../assets/svg/icons/IconClear.svg": () => import("./IconClear-5cf9e8be.js"), "../assets/svg/icons/IconClose.svg": () => import("./IconClose-abfb6177.js"), "../assets/svg/icons/IconContract.svg": () => import("./IconContract-289a7094.js"), "../assets/svg/icons/IconCrash.svg": () => import("./IconCrash-d87f6517.js"), "../assets/svg/icons/IconDashboardCustomize.svg": () => import("./IconDashboardCustomize-f74fde35.js"), "../assets/svg/icons/IconDelete.svg": () => import("./IconDelete-67b69553.js"), "../assets/svg/icons/IconDiamond.svg": () => import("./IconDiamond-93af488a.js"), "../assets/svg/icons/IconDirectionsBoat.svg": () => import("./IconDirectionsBoat-4d41fb87.js"), "../assets/svg/icons/IconDomain.svg": () => import("./IconDomain-377b91aa.js"), "../assets/svg/icons/IconDraft.svg": () => import("./IconDraft-6e70e48f.js"), "../assets/svg/icons/IconEdit.svg": () => import("./IconEdit-16d34325.js"), "../assets/svg/icons/IconEngine.svg": () => import("./IconEngine-ee5f92d4.js"), "../assets/svg/icons/IconEngineering.svg": () => import("./IconEngineering-e18db558.js"), "../assets/svg/icons/IconError.svg": () => import("./IconError-a2922b95.js"), "../assets/svg/icons/IconExpandContent.svg": () => import("./IconExpandContent-7e144d1c.js"), "../assets/svg/icons/IconExpandLess.svg": () => import("./IconExpandLess-3a8a0552.js"), "../assets/svg/icons/IconExpandMore.svg": () => import("./IconExpandMore-c600148e.js"), "../assets/svg/icons/IconFacebook.svg": () => import("./IconFacebook-fb3f93e3.js"), "../assets/svg/icons/IconFavorite.svg": () => import("./IconFavorite-d23faefe.js"), "../assets/svg/icons/IconFavoriteFilled.svg": () => import("./IconFavoriteFilled-aa0d6d5e.js"), "../assets/svg/icons/IconFlag.svg": () => import("./IconFlag-8bafa50c.js"), "../assets/svg/icons/IconFormatBold.svg": () => import("./IconFormatBold-70a5cacf.js"), "../assets/svg/icons/IconFormatItalic.svg": () => import("./IconFormatItalic-c06504d7.js"), "../assets/svg/icons/IconFormatListBulleted.svg": () => import("./IconFormatListBulleted-9493858a.js"), "../assets/svg/icons/IconForum.svg": () => import("./IconForum-ae4ad63f.js"), "../assets/svg/icons/IconGas.svg": () => import("./IconGas-198d529d.js"), "../assets/svg/icons/IconGavel.svg": () => import("./IconGavel-44c29036.js"), "../assets/svg/icons/IconGears.svg": () => import("./IconGears-a52f8ce9.js"), "../assets/svg/icons/IconGlobeLocationPin.svg": () => import("./IconGlobeLocationPin-4b7fb00b.js"), "../assets/svg/icons/IconGoogle.svg": () => import("./IconGoogle-febad0d8.js"), "../assets/svg/icons/IconGooglePay.svg": () => import("./IconGooglePay-8cf0286e.js"), "../assets/svg/icons/IconGrid.svg": () => import("./IconGrid-25f665e0.js"), "../assets/svg/icons/IconHandshake.svg": () => import("./IconHandshake-7c9f1e84.js"), "../assets/svg/icons/IconHandyman.svg": () => import("./IconHandyman-73c7c329.js"), "../assets/svg/icons/IconHeight.svg": () => import("./IconHeight-4fae7545.js"), "../assets/svg/icons/IconHelp.svg": () => import("./IconHelp-340ee4fb.js"), "../assets/svg/icons/IconInfo.svg": () => import("./IconInfo-efead10b.js"), "../assets/svg/icons/IconInformation.svg": () => import("./IconInformation-790c598a.js"), "../assets/svg/icons/IconInsertText.svg": () => import("./IconInsertText-00236a65.js"), "../assets/svg/icons/IconInstagram.svg": () => import("./IconInstagram-db345e15.js"), "../assets/svg/icons/IconIosShare.svg": () => import("./IconIosShare-167aa8c4.js"), "../assets/svg/icons/IconLayout.svg": () => import("./IconLayout-6963184f.js"), "../assets/svg/icons/IconLevellingJack.svg": () => import("./IconLevellingJack-04860178.js"), "../assets/svg/icons/IconLinkedIn.svg": () => import("./IconLinkedIn-9c4740a6.js"), "../assets/svg/icons/IconLocalShipping.svg": () => import("./IconLocalShipping-901a3e4c.js"), "../assets/svg/icons/IconLock.svg": () => import("./IconLock-47669e20.js"), "../assets/svg/icons/IconMail.svg": () => import("./IconMail-9b85058a.js"), "../assets/svg/icons/IconMenu.svg": () => import("./IconMenu-4bed57f3.js"), "../assets/svg/icons/IconMoneyBag.svg": () => import("./IconMoneyBag-4a01a10a.js"), "../assets/svg/icons/IconMoreHoriz.svg": () => import("./IconMoreHoriz-2aabe29f.js"), "../assets/svg/icons/IconNotifications.svg": () => import("./IconNotifications-bcbf1d8c.js"), "../assets/svg/icons/IconOdometer.svg": () => import("./IconOdometer-709f4f00.js"), "../assets/svg/icons/IconOpenInNew.svg": () => import("./IconOpenInNew-78fffcfe.js"), "../assets/svg/icons/IconPalette.svg": () => import("./IconPalette-22865300.js"), "../assets/svg/icons/IconPaypal.svg": () => import("./IconPaypal-c28e6dbe.js"), "../assets/svg/icons/IconPerson.svg": () => import("./IconPerson-7ada8b07.js"), "../assets/svg/icons/IconPersonSearch.svg": () => import("./IconPersonSearch-1ccccee1.js"), "../assets/svg/icons/IconPhotoCamera.svg": () => import("./IconPhotoCamera-31a58b85.js"), "../assets/svg/icons/IconPinterest.svg": () => import("./IconPinterest-fe5cc414.js"), "../assets/svg/icons/IconPlayArrow.svg": () => import("./IconPlayArrow-1ed5d884.js"), "../assets/svg/icons/IconPolicy.svg": () => import("./IconPolicy-0a3a02bc.js"), "../assets/svg/icons/IconPower.svg": () => import("./IconPower-bfe4f81a.js"), "../assets/svg/icons/IconPowerOff.svg": () => import("./IconPowerOff-dbade32b.js"), "../assets/svg/icons/IconPriorityHigh.svg": () => import("./IconPriorityHigh-ab1b4a95.js"), "../assets/svg/icons/IconRemove.svg": () => import("./IconRemove-bab221ba.js"), "../assets/svg/icons/IconRequestQuote.svg": () => import("./IconRequestQuote-f6364b1e.js"), "../assets/svg/icons/IconResetWrench.svg": () => import("./IconResetWrench-8791a5a9.js"), "../assets/svg/icons/IconRoad.svg": () => import("./IconRoad-efce130e.js"), "../assets/svg/icons/IconRoundedCorner.svg": () => import("./IconRoundedCorner-adbcfd09.js"), "../assets/svg/icons/IconRuler.svg": () => import("./IconRuler-0ceea80a.js"), "../assets/svg/icons/IconSailing.svg": () => import("./IconSailing-19762955.js"), "../assets/svg/icons/IconSchool.svg": () => import("./IconSchool-2f3ff8d7.js"), "../assets/svg/icons/IconSearch.svg": () => import("./IconSearch-f8faefb4.js"), "../assets/svg/icons/IconSeating.svg": () => import("./IconSeating-2ca8921d.js"), "../assets/svg/icons/IconSell.svg": () => import("./IconSell-b011ac2d.js"), "../assets/svg/icons/IconSensors.svg": () => import("./IconSensors-c4387bc9.js"), "../assets/svg/icons/IconSettings.svg": () => import("./IconSettings-32dd2125.js"), "../assets/svg/icons/IconShare.svg": () => import("./IconShare-57f28ce3.js"), "../assets/svg/icons/IconShieldCheck.svg": () => import("./IconShieldCheck-0c47755d.js"), "../assets/svg/icons/IconShoppingCart.svg": () => import("./IconShoppingCart-b532dab0.js"), "../assets/svg/icons/IconSleeps.svg": () => import("./IconSleeps-b994bd2f.js"), "../assets/svg/icons/IconSms.svg": () => import("./IconSms-378f373a.js"), "../assets/svg/icons/IconSnowflake.svg": () => import("./IconSnowflake-9d956143.js"), "../assets/svg/icons/IconStar.svg": () => import("./IconStar-1b8ad0f9.js"), "../assets/svg/icons/IconStarFilled.svg": () => import("./IconStarFilled-b73e12dc.js"), "../assets/svg/icons/IconStarHalf.svg": () => import("./IconStarHalf-0b663cd6.js"), "../assets/svg/icons/IconSummarize.svg": () => import("./IconSummarize-69ab122a.js"), "../assets/svg/icons/IconSwapHoriz.svg": () => import("./IconSwapHoriz-2d9550c3.js"), "../assets/svg/icons/IconSwapVert.svg": () => import("./IconSwapVert-8085e942.js"), "../assets/svg/icons/IconThreeDRotation.svg": () => import("./IconThreeDRotation-33f086a7.js"), "../assets/svg/icons/IconThumbUp.svg": () => import("./IconThumbUp-72caf64e.js"), "../assets/svg/icons/IconTrendingDown.svg": () => import("./IconTrendingDown-ff3969c7.js"), "../assets/svg/icons/IconTrophy.svg": () => import("./IconTrophy-f4be8b54.js"), "../assets/svg/icons/IconTune.svg": () => import("./IconTune-0913ba01.js"), "../assets/svg/icons/IconTwitter.svg": () => import("./IconTwitter-9acefb07.js"), "../assets/svg/icons/IconUmbrella.svg": () => import("./IconUmbrella-775b11b8.js"), "../assets/svg/icons/IconVerified.svg": () => import("./IconVerified-000f615f.js"), "../assets/svg/icons/IconVideocam.svg": () => import("./IconVideocam-33650e6f.js"), "../assets/svg/icons/IconViewInAr.svg": () => import("./IconViewInAr-d1534ef2.js"), "../assets/svg/icons/IconVisibility.svg": () => import("./IconVisibility-a1c21dd0.js"), "../assets/svg/icons/IconVolumeOff.svg": () => import("./IconVolumeOff-8e121ef3.js"), "../assets/svg/icons/IconVolumeOn.svg": () => import("./IconVolumeOn-992e16dd.js"), "../assets/svg/icons/IconWarehouse.svg": () => import("./IconWarehouse-764da944.js"), "../assets/svg/icons/IconWarning.svg": () => import("./IconWarning-6f490acf.js"), "../assets/svg/icons/IconWater.svg": () => import("./IconWater-a5f94879.js"), "../assets/svg/icons/IconWeight.svg": () => import("./IconWeight-e3b3daa6.js"), "../assets/svg/icons/IconWidth.svg": () => import("./IconWidth-c81dbc7a.js"), "../assets/svg/icons/IconWorkspacePremium.svg": () => import("./IconWorkspacePremium-efd0a531.js"), "../assets/svg/icons/IconWrench.svg": () => import("./IconWrench-6c52ef4f.js"), "../assets/svg/icons/IconYoutube.svg": () => import("./IconYoutube-a6224033.js") }), `../assets/svg/icons/Icon${a}.svg`));
|
|
585
|
-
o.value =
|
|
590
|
+
const n = s.icon, a = ss(n), [d] = n.split("-"), r = ts[d == null ? void 0 : d.toUpperCase()], l = Mt(() => r ? nt(/* @__PURE__ */ Object.assign({ "../assets/svg/icons/realm/atv/IconAtvAtv.svg": () => import("./IconAtvAtv-GFhgoQXA.js"), "../assets/svg/icons/realm/atv/IconAtvDuneBuggy.svg": () => import("./IconAtvDuneBuggy-Eou8hc_1.js"), "../assets/svg/icons/realm/atv/IconAtvGoKart.svg": () => import("./IconAtvGoKart-Cj3k54oS.js"), "../assets/svg/icons/realm/atv/IconAtvGolfCart.svg": () => import("./IconAtvGolfCart-CCQwt0_I.js"), "../assets/svg/icons/realm/atv/IconAtvSandRail.svg": () => import("./IconAtvSandRail-HpaJVocj.js"), "../assets/svg/icons/realm/atv/IconAtvSideBySide.svg": () => import("./IconAtvSideBySide-BxqtCex8.js"), "../assets/svg/icons/realm/atv/IconAtvTrailer.svg": () => import("./IconAtvTrailer-CTlZZ8Wn.js"), "../assets/svg/icons/realm/boatmart/IconBoatmartPwc.svg": () => import("./IconBoatmartPwc-D6wQ7mNA.js"), "../assets/svg/icons/realm/boatmart/IconBoatmartTrailer.svg": () => import("./IconBoatmartTrailer-hKiD_NXI.js"), "../assets/svg/icons/realm/rv/IconRvClassA.svg": () => import("./IconRvClassA-pAChL2Qm.js"), "../assets/svg/icons/realm/rv/IconRvClassB.svg": () => import("./IconRvClassB-BWaLlkdV.js"), "../assets/svg/icons/realm/rv/IconRvClassC.svg": () => import("./IconRvClassC-CeDhPBYp.js"), "../assets/svg/icons/realm/rv/IconRvFifthWheel.svg": () => import("./IconRvFifthWheel-D98H64pq.js"), "../assets/svg/icons/realm/rv/IconRvFishHouse.svg": () => import("./IconRvFishHouse-B9v3_c4m.js"), "../assets/svg/icons/realm/rv/IconRvParkModel.svg": () => import("./IconRvParkModel-DJjJJFrS.js"), "../assets/svg/icons/realm/rv/IconRvPopUpCamper.svg": () => import("./IconRvPopUpCamper-DC5JLH5u.js"), "../assets/svg/icons/realm/rv/IconRvTravelTrailer.svg": () => import("./IconRvTravelTrailer-CUzyIoJH.js"), "../assets/svg/icons/realm/rv/IconRvTruckCamper.svg": () => import("./IconRvTruckCamper-CHLJEty2.js") }), `../assets/svg/icons/realm/${r}/Icon${a}.svg`, 7) : nt(/* @__PURE__ */ Object.assign({ "../assets/svg/icons/IconAccountBalance.svg": () => import("./IconAccountBalance-Ck1QODok.js"), "../assets/svg/icons/IconAcute.svg": () => import("./IconAcute-Dy5x_yJL.js"), "../assets/svg/icons/IconAdd.svg": () => import("./IconAdd-CoVrVzyk.js"), "../assets/svg/icons/IconAiDescription.svg": () => import("./IconAiDescription-6Pv0Y_Yt.js"), "../assets/svg/icons/IconAlignSpaceEven.svg": () => import("./IconAlignSpaceEven-BF_GmIrK.js"), "../assets/svg/icons/IconApplePay.svg": () => import("./IconApplePay-oQ4zV5vN.js"), "../assets/svg/icons/IconArrowBack.svg": () => import("./IconArrowBack-BP2TEpuq.js"), "../assets/svg/icons/IconArrowCycle.svg": () => import("./IconArrowCycle-TQa-fbVD.js"), "../assets/svg/icons/IconArrowForward.svg": () => import("./IconArrowForward-VWVINc35.js"), "../assets/svg/icons/IconArrowRight.svg": () => import("./IconArrowRight-BJYT2e-d.js"), "../assets/svg/icons/IconArrowUp.svg": () => import("./IconArrowUp-JSl5zOyP.js"), "../assets/svg/icons/IconAssignment.svg": () => import("./IconAssignment-CSn4vDyt.js"), "../assets/svg/icons/IconAttachMoney.svg": () => import("./IconAttachMoney-CIYp4I2h.js"), "../assets/svg/icons/IconAutoRenew.svg": () => import("./IconAutoRenew-Dp5h0lzF.js"), "../assets/svg/icons/IconAwardStar.svg": () => import("./IconAwardStar-CdAw4NY5.js"), "../assets/svg/icons/IconBed.svg": () => import("./IconBed-B1u5P61X.js"), "../assets/svg/icons/IconBolt.svg": () => import("./IconBolt-CskRJDT1.js"), "../assets/svg/icons/IconBookmark.svg": () => import("./IconBookmark-DsEGlmme.js"), "../assets/svg/icons/IconBunkhouse.svg": () => import("./IconBunkhouse-BLo-n_Mb.js"), "../assets/svg/icons/IconCalendarMonth.svg": () => import("./IconCalendarMonth-Cfs-ZKLJ.js"), "../assets/svg/icons/IconCall.svg": () => import("./IconCall-BCjepEju.js"), "../assets/svg/icons/IconCallQuality.svg": () => import("./IconCallQuality-c7UaokVa.js"), "../assets/svg/icons/IconCarRental.svg": () => import("./IconCarRental-D-qYjRe5.js"), "../assets/svg/icons/IconCheck.svg": () => import("./IconCheck-DVE4Knnl.js"), "../assets/svg/icons/IconChevronLeft.svg": () => import("./IconChevronLeft-DStWQfoj.js"), "../assets/svg/icons/IconChevronRight.svg": () => import("./IconChevronRight-3vFVvnNb.js"), "../assets/svg/icons/IconClear.svg": () => import("./IconClear-F6afoxzY.js"), "../assets/svg/icons/IconClose.svg": () => import("./IconClose-eMGGtfEC.js"), "../assets/svg/icons/IconContract.svg": () => import("./IconContract-f9bj5j-_.js"), "../assets/svg/icons/IconCrash.svg": () => import("./IconCrash-B2l3Ie38.js"), "../assets/svg/icons/IconDashboardCustomize.svg": () => import("./IconDashboardCustomize-CyQTFASs.js"), "../assets/svg/icons/IconDelete.svg": () => import("./IconDelete-Couv2iBA.js"), "../assets/svg/icons/IconDiamond.svg": () => import("./IconDiamond-sol6SUrB.js"), "../assets/svg/icons/IconDirectionsBoat.svg": () => import("./IconDirectionsBoat-S07T_dm_.js"), "../assets/svg/icons/IconDomain.svg": () => import("./IconDomain-ECxC_qj-.js"), "../assets/svg/icons/IconDraft.svg": () => import("./IconDraft-BFxB85ro.js"), "../assets/svg/icons/IconEdit.svg": () => import("./IconEdit-BoLO_nL5.js"), "../assets/svg/icons/IconEngine.svg": () => import("./IconEngine-BBaqQJ6N.js"), "../assets/svg/icons/IconEngineering.svg": () => import("./IconEngineering-C60OP34_.js"), "../assets/svg/icons/IconError.svg": () => import("./IconError-Dd2H7cOG.js"), "../assets/svg/icons/IconExpandContent.svg": () => import("./IconExpandContent-C1xzfkui.js"), "../assets/svg/icons/IconExpandLess.svg": () => import("./IconExpandLess-Bf6Nypx3.js"), "../assets/svg/icons/IconExpandMore.svg": () => import("./IconExpandMore-BffI3rnY.js"), "../assets/svg/icons/IconFacebook.svg": () => import("./IconFacebook-Cki8sZRt.js"), "../assets/svg/icons/IconFavorite.svg": () => import("./IconFavorite-CyRSAVdw.js"), "../assets/svg/icons/IconFavoriteFilled.svg": () => import("./IconFavoriteFilled-DeNJvMmm.js"), "../assets/svg/icons/IconFlag.svg": () => import("./IconFlag-aeogw6hc.js"), "../assets/svg/icons/IconFormatBold.svg": () => import("./IconFormatBold-CtYxihT6.js"), "../assets/svg/icons/IconFormatItalic.svg": () => import("./IconFormatItalic-EUVbp7Qb.js"), "../assets/svg/icons/IconFormatListBulleted.svg": () => import("./IconFormatListBulleted-D-VQIabf.js"), "../assets/svg/icons/IconForum.svg": () => import("./IconForum-BrjEMf33.js"), "../assets/svg/icons/IconGas.svg": () => import("./IconGas-D_rJSqnT.js"), "../assets/svg/icons/IconGavel.svg": () => import("./IconGavel-D9XWUMJt.js"), "../assets/svg/icons/IconGears.svg": () => import("./IconGears-Cavx6RDS.js"), "../assets/svg/icons/IconGlobeLocationPin.svg": () => import("./IconGlobeLocationPin-CdwVS7ad.js"), "../assets/svg/icons/IconGoogle.svg": () => import("./IconGoogle-CW-JtHsA.js"), "../assets/svg/icons/IconGooglePay.svg": () => import("./IconGooglePay-lhVEuNTf.js"), "../assets/svg/icons/IconGrid.svg": () => import("./IconGrid-B-Z-t5S5.js"), "../assets/svg/icons/IconHandshake.svg": () => import("./IconHandshake-CCtEDb5s.js"), "../assets/svg/icons/IconHandyman.svg": () => import("./IconHandyman-CeFGeaUD.js"), "../assets/svg/icons/IconHeight.svg": () => import("./IconHeight-CU7292SF.js"), "../assets/svg/icons/IconHelp.svg": () => import("./IconHelp-CpHZAsX2.js"), "../assets/svg/icons/IconInfo.svg": () => import("./IconInfo-Du8txE_y.js"), "../assets/svg/icons/IconInformation.svg": () => import("./IconInformation-fpX8-lfe.js"), "../assets/svg/icons/IconInsertText.svg": () => import("./IconInsertText-B50Ml556.js"), "../assets/svg/icons/IconInstagram.svg": () => import("./IconInstagram-x9ut2Rvt.js"), "../assets/svg/icons/IconIosShare.svg": () => import("./IconIosShare-BAZa5TGR.js"), "../assets/svg/icons/IconLayout.svg": () => import("./IconLayout-Ctl5Nh6E.js"), "../assets/svg/icons/IconLevellingJack.svg": () => import("./IconLevellingJack-OIJRh7On.js"), "../assets/svg/icons/IconLinkedIn.svg": () => import("./IconLinkedIn-DpuBRGWk.js"), "../assets/svg/icons/IconLocalShipping.svg": () => import("./IconLocalShipping-DFGIrDiT.js"), "../assets/svg/icons/IconLock.svg": () => import("./IconLock-Kkxyx6xF.js"), "../assets/svg/icons/IconMail.svg": () => import("./IconMail-C_KZ99bY.js"), "../assets/svg/icons/IconMenu.svg": () => import("./IconMenu-DdVdEPQY.js"), "../assets/svg/icons/IconMoneyBag.svg": () => import("./IconMoneyBag-Bpwqj4h_.js"), "../assets/svg/icons/IconMoreHoriz.svg": () => import("./IconMoreHoriz-CMqeM-vy.js"), "../assets/svg/icons/IconNotifications.svg": () => import("./IconNotifications-C-5jqVsp.js"), "../assets/svg/icons/IconOdometer.svg": () => import("./IconOdometer-DOvJTqMC.js"), "../assets/svg/icons/IconOpenInNew.svg": () => import("./IconOpenInNew-BECM_cge.js"), "../assets/svg/icons/IconPalette.svg": () => import("./IconPalette-cNHa_Dl9.js"), "../assets/svg/icons/IconPaypal.svg": () => import("./IconPaypal-0MB9NiPi.js"), "../assets/svg/icons/IconPerson.svg": () => import("./IconPerson-C9FdsFRF.js"), "../assets/svg/icons/IconPersonSearch.svg": () => import("./IconPersonSearch-BAwODsOw.js"), "../assets/svg/icons/IconPhotoCamera.svg": () => import("./IconPhotoCamera-Dhq3zkZ1.js"), "../assets/svg/icons/IconPinterest.svg": () => import("./IconPinterest-B2ilympx.js"), "../assets/svg/icons/IconPlayArrow.svg": () => import("./IconPlayArrow-DWY4o6mi.js"), "../assets/svg/icons/IconPolicy.svg": () => import("./IconPolicy-CTm0qx9m.js"), "../assets/svg/icons/IconPower.svg": () => import("./IconPower-El-f1YpW.js"), "../assets/svg/icons/IconPowerOff.svg": () => import("./IconPowerOff-BeF6a0I_.js"), "../assets/svg/icons/IconPriorityHigh.svg": () => import("./IconPriorityHigh-BOUPMj-c.js"), "../assets/svg/icons/IconRemove.svg": () => import("./IconRemove-DJ8Ats3O.js"), "../assets/svg/icons/IconRequestQuote.svg": () => import("./IconRequestQuote-Dx73kEAB.js"), "../assets/svg/icons/IconResetWrench.svg": () => import("./IconResetWrench-afPLSCCR.js"), "../assets/svg/icons/IconRoad.svg": () => import("./IconRoad-D8LbDPzU.js"), "../assets/svg/icons/IconRoundedCorner.svg": () => import("./IconRoundedCorner-CBFrVTjO.js"), "../assets/svg/icons/IconRuler.svg": () => import("./IconRuler-BbrDrxik.js"), "../assets/svg/icons/IconSailing.svg": () => import("./IconSailing-Ct5A7oe-.js"), "../assets/svg/icons/IconSchool.svg": () => import("./IconSchool-DkD-by-f.js"), "../assets/svg/icons/IconSearch.svg": () => import("./IconSearch-C3_cVelm.js"), "../assets/svg/icons/IconSeating.svg": () => import("./IconSeating-B2-FR2aI.js"), "../assets/svg/icons/IconSell.svg": () => import("./IconSell-B01QAmJJ.js"), "../assets/svg/icons/IconSensors.svg": () => import("./IconSensors-C9ikFDSl.js"), "../assets/svg/icons/IconSettings.svg": () => import("./IconSettings-C7CzSyB_.js"), "../assets/svg/icons/IconShare.svg": () => import("./IconShare-CC3TgzM9.js"), "../assets/svg/icons/IconShieldCheck.svg": () => import("./IconShieldCheck-BKdiIhJ-.js"), "../assets/svg/icons/IconShoppingCart.svg": () => import("./IconShoppingCart-CQZWosiy.js"), "../assets/svg/icons/IconSleeps.svg": () => import("./IconSleeps-DDIWvIh8.js"), "../assets/svg/icons/IconSms.svg": () => import("./IconSms-C22lp6yM.js"), "../assets/svg/icons/IconSnowflake.svg": () => import("./IconSnowflake-aBZ4o4X2.js"), "../assets/svg/icons/IconStar.svg": () => import("./IconStar-2gDebu9X.js"), "../assets/svg/icons/IconStarFilled.svg": () => import("./IconStarFilled-CI8JFRKm.js"), "../assets/svg/icons/IconStarHalf.svg": () => import("./IconStarHalf-9Mtxrxy2.js"), "../assets/svg/icons/IconSummarize.svg": () => import("./IconSummarize-DjgKmXYf.js"), "../assets/svg/icons/IconSwapHoriz.svg": () => import("./IconSwapHoriz-BI3V7cXl.js"), "../assets/svg/icons/IconSwapVert.svg": () => import("./IconSwapVert-Bxn4iSnZ.js"), "../assets/svg/icons/IconThreeDRotation.svg": () => import("./IconThreeDRotation-C5sf5vQe.js"), "../assets/svg/icons/IconThumbUp.svg": () => import("./IconThumbUp-Bewoaeaz.js"), "../assets/svg/icons/IconTrendingDown.svg": () => import("./IconTrendingDown-ClqzR4Gm.js"), "../assets/svg/icons/IconTrophy.svg": () => import("./IconTrophy-BvyInFpa.js"), "../assets/svg/icons/IconTune.svg": () => import("./IconTune-DM9oNvly.js"), "../assets/svg/icons/IconTwitter.svg": () => import("./IconTwitter-Di3mFm4J.js"), "../assets/svg/icons/IconUmbrella.svg": () => import("./IconUmbrella-KarDrV_0.js"), "../assets/svg/icons/IconVerified.svg": () => import("./IconVerified-BSLc-Tng.js"), "../assets/svg/icons/IconVideocam.svg": () => import("./IconVideocam-Bk2i6zSL.js"), "../assets/svg/icons/IconViewInAr.svg": () => import("./IconViewInAr-CyH3TuS9.js"), "../assets/svg/icons/IconVisibility.svg": () => import("./IconVisibility-C7r-OBqZ.js"), "../assets/svg/icons/IconVolumeOff.svg": () => import("./IconVolumeOff-DrXwzNlx.js"), "../assets/svg/icons/IconVolumeOn.svg": () => import("./IconVolumeOn-DMqPq3mL.js"), "../assets/svg/icons/IconWarehouse.svg": () => import("./IconWarehouse-BLILe5TP.js"), "../assets/svg/icons/IconWarning.svg": () => import("./IconWarning-BGb_hd4L.js"), "../assets/svg/icons/IconWater.svg": () => import("./IconWater-BFIBeGBM.js"), "../assets/svg/icons/IconWeight.svg": () => import("./IconWeight-IXMjxgaM.js"), "../assets/svg/icons/IconWidth.svg": () => import("./IconWidth-CWT_XoXm.js"), "../assets/svg/icons/IconWorkspacePremium.svg": () => import("./IconWorkspacePremium-B_CTpaCF.js"), "../assets/svg/icons/IconWrench.svg": () => import("./IconWrench-CgaRK8xS.js"), "../assets/svg/icons/IconYoutube.svg": () => import("./IconYoutube-BBBj6jXd.js") }), `../assets/svg/icons/Icon${a}.svg`, 5));
|
|
591
|
+
o.value = xt(l);
|
|
586
592
|
},
|
|
587
593
|
{ immediate: !0 }
|
|
588
594
|
), (n, a) => (E(), p("div", {
|
|
589
595
|
class: c(["tide-icon", s.size])
|
|
590
596
|
}, [
|
|
591
|
-
o.value ? (E(), P(
|
|
597
|
+
o.value ? (E(), P(Le(o.value), {
|
|
592
598
|
key: 0,
|
|
593
599
|
class: c([e(t).DISPLAY.BLOCK]),
|
|
594
600
|
"data-icon": n.icon,
|
|
595
601
|
fill: "currentColor"
|
|
596
|
-
}, null, 8, ["class", "data-icon"])) :
|
|
602
|
+
}, null, 8, ["class", "data-icon"])) : S("", !0)
|
|
597
603
|
], 2));
|
|
598
604
|
}
|
|
599
|
-
})
|
|
600
|
-
const G = {
|
|
605
|
+
}), w = {
|
|
601
606
|
ACCOUNT_BALANCE: "account-balance",
|
|
602
607
|
ACUTE: "acute",
|
|
603
608
|
ADD: "add",
|
|
@@ -731,7 +736,7 @@ const G = {
|
|
|
731
736
|
WORKSPACE_PREMIUM: "workspace-premium",
|
|
732
737
|
WRENCH: "wrench",
|
|
733
738
|
YOUTUBE: "youtube"
|
|
734
|
-
},
|
|
739
|
+
}, Jo = {
|
|
735
740
|
ATV: {
|
|
736
741
|
ATV: "atv-atv",
|
|
737
742
|
DUNE_BUGGY: "atv-dune-buggy",
|
|
@@ -756,7 +761,7 @@ const G = {
|
|
|
756
761
|
TRAVEL_TRAILER: "rv-travel-trailer",
|
|
757
762
|
TRUCK_CAMPER: "rv-truck-camper"
|
|
758
763
|
}
|
|
759
|
-
}, ns = { class: "tide-accordion-item" }, as = /* @__PURE__ */
|
|
764
|
+
}, ns = { class: "tide-accordion-item" }, as = /* @__PURE__ */ b({
|
|
760
765
|
__name: "TideAccordionItem",
|
|
761
766
|
props: {
|
|
762
767
|
hasBottomDivider: { type: Boolean, default: !1 },
|
|
@@ -771,7 +776,7 @@ const G = {
|
|
|
771
776
|
s("toggle");
|
|
772
777
|
};
|
|
773
778
|
return (a, d) => (E(), p("div", ns, [
|
|
774
|
-
o.hasTopDivider ? (E(), P(Ve, { key: 0 })) :
|
|
779
|
+
o.hasTopDivider ? (E(), P(Ve, { key: 0 })) : S("", !0),
|
|
775
780
|
v("div", {
|
|
776
781
|
class: c(["tide-accordion-head", e(t).DISPLAY.FLEX, e(t).AXIS1.BETWEEN, e(t).PADDING.Y.HALF, e(t).CURSOR.POINTER]),
|
|
777
782
|
onClick: n
|
|
@@ -779,14 +784,14 @@ const G = {
|
|
|
779
784
|
v("div", {
|
|
780
785
|
class: c([e(t).DISPLAY.FLEX, e(t).AXIS2.CENTER, e(t).GAP.HALF, e(t).FONT.ROLE.LABEL_1_SEMIBOLD])
|
|
781
786
|
}, [
|
|
782
|
-
v("span", null,
|
|
787
|
+
v("span", null, C(o.label), 1),
|
|
783
788
|
o.isOptional ? (E(), p("span", {
|
|
784
789
|
key: 0,
|
|
785
790
|
class: c([e(t).FONT.COLOR.SURFACE.VARIANT])
|
|
786
|
-
}, " (optional) ", 2)) :
|
|
791
|
+
}, " (optional) ", 2)) : S("", !0)
|
|
787
792
|
], 2),
|
|
788
|
-
|
|
789
|
-
icon: a.isExpanded ? e(
|
|
793
|
+
x(H, {
|
|
794
|
+
icon: a.isExpanded ? e(w).EXPAND_LESS : e(w).EXPAND_MORE,
|
|
790
795
|
size: e(Y).LARGE
|
|
791
796
|
}, null, 8, ["icon", "size"])
|
|
792
797
|
], 2),
|
|
@@ -799,11 +804,10 @@ const G = {
|
|
|
799
804
|
V(a.$slots, "default", {}, void 0, !0)
|
|
800
805
|
], 2)
|
|
801
806
|
], 2),
|
|
802
|
-
o.hasBottomDivider ? (E(), P(Ve, { key: 1 })) :
|
|
807
|
+
o.hasBottomDivider ? (E(), P(Ve, { key: 1 })) : S("", !0)
|
|
803
808
|
]));
|
|
804
809
|
}
|
|
805
|
-
})
|
|
806
|
-
const Jo = /* @__PURE__ */ w(as, [["__scopeId", "data-v-d5fdff3b"]]), k = {
|
|
810
|
+
}), ei = /* @__PURE__ */ G(as, [["__scopeId", "data-v-d5fdff3b"]]), M = {
|
|
807
811
|
BUTTON: "button",
|
|
808
812
|
LINK: "a"
|
|
809
813
|
}, re = {
|
|
@@ -819,11 +823,11 @@ const Jo = /* @__PURE__ */ w(as, [["__scopeId", "data-v-d5fdff3b"]]), k = {
|
|
|
819
823
|
}, se = {
|
|
820
824
|
BLANK: "_blank",
|
|
821
825
|
SELF: void 0
|
|
822
|
-
}, Z = /* @__PURE__ */
|
|
826
|
+
}, Z = /* @__PURE__ */ b({
|
|
823
827
|
__name: "TideButtonIcon",
|
|
824
828
|
props: {
|
|
825
829
|
disabled: { type: Boolean, default: !1 },
|
|
826
|
-
element: { default:
|
|
830
|
+
element: { default: M.BUTTON },
|
|
827
831
|
href: { default: void 0 },
|
|
828
832
|
icon: { default: void 0 },
|
|
829
833
|
isNewTab: { type: Boolean, default: !1 },
|
|
@@ -831,24 +835,24 @@ const Jo = /* @__PURE__ */ w(as, [["__scopeId", "data-v-d5fdff3b"]]), k = {
|
|
|
831
835
|
},
|
|
832
836
|
setup(i) {
|
|
833
837
|
const s = i;
|
|
834
|
-
return (o, n) => (E(), P(
|
|
838
|
+
return (o, n) => (E(), P(Le(s.element === e(M).LINK ? "a" : "button"), {
|
|
835
839
|
"aria-label": s.icon,
|
|
836
840
|
class: c([
|
|
837
|
-
s.element === e(
|
|
841
|
+
s.element === e(M).LINK ? "tide-link-as-button-icon" : "tide-button-icon",
|
|
838
842
|
s.priority && `tide-button-${s.priority}`,
|
|
839
843
|
[e(t).DISPLAY.FLEX, e(t).AXIS1.CENTER, e(t).AXIS2.CENTER, e(t).BORDER.RADIUS.FULL, e(t).PADDING.FULL.HALF],
|
|
840
|
-
s.element === e(
|
|
844
|
+
s.element === e(M).LINK ? [e(t).UNDERLINE.REST.OFF] : ""
|
|
841
845
|
]),
|
|
842
|
-
disabled: s.element === e(
|
|
843
|
-
href: s.element === e(
|
|
844
|
-
target: s.element === e(
|
|
846
|
+
disabled: s.element === e(M).BUTTON && s.disabled,
|
|
847
|
+
href: s.element === e(M).LINK && s.href ? s.href : void 0,
|
|
848
|
+
target: s.element === e(M).LINK && s.isNewTab ? e(se).BLANK : e(se).SELF
|
|
845
849
|
}, {
|
|
846
|
-
default:
|
|
850
|
+
default: Re(() => [
|
|
847
851
|
s.icon ? (E(), P(H, {
|
|
848
852
|
key: 0,
|
|
849
853
|
icon: s.icon,
|
|
850
854
|
size: e(Y).LARGE
|
|
851
|
-
}, null, 8, ["icon", "size"])) :
|
|
855
|
+
}, null, 8, ["icon", "size"])) : S("", !0)
|
|
852
856
|
]),
|
|
853
857
|
_: 1
|
|
854
858
|
}, 8, ["aria-label", "class", "disabled", "href", "target"]));
|
|
@@ -858,7 +862,7 @@ const Jo = /* @__PURE__ */ w(as, [["__scopeId", "data-v-d5fdff3b"]]), k = {
|
|
|
858
862
|
INFO: "info",
|
|
859
863
|
SUCCESS: "success",
|
|
860
864
|
WARNING: "warning"
|
|
861
|
-
}, rs = /* @__PURE__ */
|
|
865
|
+
}, rs = /* @__PURE__ */ b({
|
|
862
866
|
__name: "TideAlert",
|
|
863
867
|
props: {
|
|
864
868
|
heading: { default: void 0 },
|
|
@@ -884,7 +888,7 @@ const Jo = /* @__PURE__ */ w(as, [["__scopeId", "data-v-d5fdff3b"]]), k = {
|
|
|
884
888
|
o.isToast ? [e(t).BG.SECONDARY, e(t).FONT.COLOR.SECONDARY, e(t).SHADOW.BOTTOM] : e(t).BORDER.LEFT.TWO
|
|
885
889
|
])
|
|
886
890
|
}, [
|
|
887
|
-
o.isToast ?
|
|
891
|
+
o.isToast ? S("", !0) : (E(), p("div", {
|
|
888
892
|
key: 0,
|
|
889
893
|
class: c([
|
|
890
894
|
"tide-alert-icon",
|
|
@@ -897,8 +901,8 @@ const Jo = /* @__PURE__ */ w(as, [["__scopeId", "data-v-d5fdff3b"]]), k = {
|
|
|
897
901
|
o.type === e(ae).WARNING && e(t).BG.GLOBAL.PRIMARY.WARNING
|
|
898
902
|
])
|
|
899
903
|
}, [
|
|
900
|
-
|
|
901
|
-
icon: e(
|
|
904
|
+
x(H, {
|
|
905
|
+
icon: e(w).INFORMATION,
|
|
902
906
|
size: e(Y).SMALL
|
|
903
907
|
}, null, 8, ["icon", "size"])
|
|
904
908
|
], 2)),
|
|
@@ -907,16 +911,16 @@ const Jo = /* @__PURE__ */ w(as, [["__scopeId", "data-v-d5fdff3b"]]), k = {
|
|
|
907
911
|
}, [
|
|
908
912
|
v("h2", {
|
|
909
913
|
class: c([e(t).FONT.ROLE.LABEL_1_SEMIBOLD])
|
|
910
|
-
},
|
|
914
|
+
}, C(o.heading), 3)
|
|
911
915
|
], 2),
|
|
912
916
|
n.isDismissible ? (E(), P(Z, {
|
|
913
917
|
key: 1,
|
|
914
918
|
class: c(["tide-alert-close", e(t).AXIS2.CENTER, e(t).FONT.COLOR.SURFACE.DEFAULT]),
|
|
915
|
-
icon: e(
|
|
919
|
+
icon: e(w).CLOSE,
|
|
916
920
|
priority: e($).QUATERNARY,
|
|
917
921
|
onClick: a[0] || (a[0] = (d) => s("close")),
|
|
918
922
|
"aria-label": "Close alert"
|
|
919
|
-
}, null, 8, ["class", "icon", "priority"])) :
|
|
923
|
+
}, null, 8, ["class", "icon", "priority"])) : S("", !0),
|
|
920
924
|
v("div", {
|
|
921
925
|
class: c(["tide-alert-body", e(t).FONT.ROLE.LABEL_1, !o.isToast && e(t).FONT.COLOR.SURFACE.VARIANT])
|
|
922
926
|
}, [
|
|
@@ -924,8 +928,7 @@ const Jo = /* @__PURE__ */ w(as, [["__scopeId", "data-v-d5fdff3b"]]), k = {
|
|
|
924
928
|
], 2)
|
|
925
929
|
], 2));
|
|
926
930
|
}
|
|
927
|
-
})
|
|
928
|
-
const ei = /* @__PURE__ */ w(rs, [["__scopeId", "data-v-4ce7b6b8"]]), J = {
|
|
931
|
+
}), ti = /* @__PURE__ */ G(rs, [["__scopeId", "data-v-4ce7b6b8"]]), J = {
|
|
929
932
|
BLACK: "black",
|
|
930
933
|
BLUE: "blue",
|
|
931
934
|
GREEN: "green",
|
|
@@ -981,7 +984,7 @@ const ei = /* @__PURE__ */ w(rs, [["__scopeId", "data-v-4ce7b6b8"]]), J = {
|
|
|
981
984
|
YEARS_10: "10",
|
|
982
985
|
YEARS_15: "15",
|
|
983
986
|
YEARS_5: "5"
|
|
984
|
-
},
|
|
987
|
+
}, si = /* @__PURE__ */ b({
|
|
985
988
|
__name: "TideBadge",
|
|
986
989
|
props: {
|
|
987
990
|
color: { default: void 0 },
|
|
@@ -1011,13 +1014,13 @@ const ei = /* @__PURE__ */ w(rs, [["__scopeId", "data-v-4ce7b6b8"]]), J = {
|
|
|
1011
1014
|
key: 0,
|
|
1012
1015
|
class: c([e(t).FLEX.SHRINK.OFF, s.color && e(at)[s.color].iconColor]),
|
|
1013
1016
|
icon: s.iconLeading
|
|
1014
|
-
}, null, 8, ["class", "icon"])) :
|
|
1017
|
+
}, null, 8, ["class", "icon"])) : S("", !0),
|
|
1015
1018
|
v("span", {
|
|
1016
1019
|
class: c([e(t).ELLIPSIS])
|
|
1017
|
-
},
|
|
1020
|
+
}, C(s.label), 3)
|
|
1018
1021
|
], 2));
|
|
1019
1022
|
}
|
|
1020
|
-
}),
|
|
1023
|
+
}), oi = /* @__PURE__ */ b({
|
|
1021
1024
|
__name: "TideBadgeTrustedPartner",
|
|
1022
1025
|
props: {
|
|
1023
1026
|
years: { default: ls.YEARS_5 }
|
|
@@ -1038,18 +1041,18 @@ const ei = /* @__PURE__ */ w(rs, [["__scopeId", "data-v-4ce7b6b8"]]), J = {
|
|
|
1038
1041
|
e(t).WHITESPACE_WRAP.OFF
|
|
1039
1042
|
])
|
|
1040
1043
|
}, [
|
|
1041
|
-
|
|
1044
|
+
x(H, {
|
|
1042
1045
|
class: c([e(t).FLEX.SHRINK.OFF]),
|
|
1043
|
-
icon: e(
|
|
1046
|
+
icon: e(w).AWARD_STAR
|
|
1044
1047
|
}, null, 8, ["class", "icon"]),
|
|
1045
1048
|
v("div", {
|
|
1046
1049
|
class: c([e(t).ELLIPSIS])
|
|
1047
1050
|
}, [
|
|
1048
|
-
v("span", null,
|
|
1051
|
+
v("span", null, C(s.years) + " year trusted partner", 1)
|
|
1049
1052
|
], 2)
|
|
1050
1053
|
], 2));
|
|
1051
1054
|
}
|
|
1052
|
-
}), cs = /* @__PURE__ */
|
|
1055
|
+
}), cs = /* @__PURE__ */ b({
|
|
1053
1056
|
__name: "TideBadgeVerifiedVehicle",
|
|
1054
1057
|
setup(i) {
|
|
1055
1058
|
return (s, o) => (E(), p("div", {
|
|
@@ -1068,17 +1071,16 @@ const ei = /* @__PURE__ */ w(rs, [["__scopeId", "data-v-4ce7b6b8"]]), J = {
|
|
|
1068
1071
|
e(t).WHITESPACE_WRAP.OFF
|
|
1069
1072
|
])
|
|
1070
1073
|
}, [
|
|
1071
|
-
|
|
1074
|
+
x(H, {
|
|
1072
1075
|
class: c([e(t).FLEX.SHRINK.OFF]),
|
|
1073
|
-
icon: e(
|
|
1076
|
+
icon: e(w).VERIFIED
|
|
1074
1077
|
}, null, 8, ["class", "icon"]),
|
|
1075
1078
|
v("span", {
|
|
1076
1079
|
class: c([e(t).ELLIPSIS])
|
|
1077
1080
|
}, "Verified vehicle", 2)
|
|
1078
1081
|
], 2));
|
|
1079
1082
|
}
|
|
1080
|
-
})
|
|
1081
|
-
const oi = /* @__PURE__ */ w(cs, [["__scopeId", "data-v-c6d1b806"]]), ds = ["data-track", "href"], us = ["data-track"], Es = { key: 0 }, ii = /* @__PURE__ */ C({
|
|
1083
|
+
}), ii = /* @__PURE__ */ G(cs, [["__scopeId", "data-v-c6d1b806"]]), ds = ["data-track", "href"], us = ["data-track"], Es = { key: 0 }, ni = /* @__PURE__ */ b({
|
|
1082
1084
|
__name: "TideBreadCrumbs",
|
|
1083
1085
|
props: {
|
|
1084
1086
|
breadCrumbs: { default: void 0 }
|
|
@@ -1099,26 +1101,26 @@ const oi = /* @__PURE__ */ w(cs, [["__scopeId", "data-v-c6d1b806"]]), ds = ["dat
|
|
|
1099
1101
|
class: c([e(t).FONT.ROLE.LINK_2, e(t).FONT.COLOR.SURFACE.DEFAULT]),
|
|
1100
1102
|
"data-track": a.dataTrack || void 0,
|
|
1101
1103
|
href: a.url
|
|
1102
|
-
},
|
|
1104
|
+
}, C(a.label), 11, ds)) : (E(), p("span", {
|
|
1103
1105
|
key: 1,
|
|
1104
1106
|
class: c([e(t).FONT.ROLE.LABEL_2, e(t).FONT.COLOR.SURFACE.VARIANT]),
|
|
1105
1107
|
"data-track": a.dataTrack || void 0
|
|
1106
|
-
},
|
|
1108
|
+
}, C(a.label), 11, us))
|
|
1107
1109
|
], 2),
|
|
1108
1110
|
s.breadCrumbs && d < s.breadCrumbs.length - 1 ? (E(), p("li", Es, [
|
|
1109
|
-
|
|
1110
|
-
icon: e(
|
|
1111
|
+
x(H, {
|
|
1112
|
+
icon: e(w).ARROW_RIGHT,
|
|
1111
1113
|
size: e(Y).SMALL
|
|
1112
1114
|
}, null, 8, ["icon", "size"])
|
|
1113
|
-
])) :
|
|
1115
|
+
])) : S("", !0)
|
|
1114
1116
|
], 64))), 128))
|
|
1115
1117
|
], 2));
|
|
1116
1118
|
}
|
|
1117
|
-
}),
|
|
1119
|
+
}), ai = /* @__PURE__ */ b({
|
|
1118
1120
|
__name: "TideButton",
|
|
1119
1121
|
props: {
|
|
1120
1122
|
disabled: { type: Boolean, default: !1 },
|
|
1121
|
-
element: { default:
|
|
1123
|
+
element: { default: M.BUTTON },
|
|
1122
1124
|
href: { default: void 0 },
|
|
1123
1125
|
iconLeading: { default: void 0 },
|
|
1124
1126
|
iconTrailing: { default: void 0 },
|
|
@@ -1129,12 +1131,12 @@ const oi = /* @__PURE__ */ w(cs, [["__scopeId", "data-v-c6d1b806"]]), ds = ["dat
|
|
|
1129
1131
|
},
|
|
1130
1132
|
setup(i) {
|
|
1131
1133
|
const s = i;
|
|
1132
|
-
return (o, n) => (E(), P(
|
|
1134
|
+
return (o, n) => (E(), P(Le(s.element === e(M).LINK ? e(M).LINK : e(M).BUTTON), {
|
|
1133
1135
|
class: c([
|
|
1134
1136
|
"tide-button",
|
|
1135
1137
|
s.priority && `tide-button-${s.priority}`,
|
|
1136
|
-
s.element === e(
|
|
1137
|
-
s.element === e(
|
|
1138
|
+
s.element === e(M).LINK ? [e(t).DISPLAY.INLINE_FLEX] : [e(t).DISPLAY.FLEX],
|
|
1139
|
+
s.element === e(M).LINK ? e(t).UNDERLINE.REST.OFF : "",
|
|
1138
1140
|
o.size === e(me).SMALL && [e(t).FONT.ROLE.BUTTON_2, e(t).PADDING.X.ONE, e(t).PADDING.Y.HALF],
|
|
1139
1141
|
o.size === e(me).LARGE && [e(t).FONT.ROLE.BUTTON_1, e(t).PADDING.X.TWO, e(t).PADDING.Y.ONE],
|
|
1140
1142
|
e(t).AXIS1.CENTER,
|
|
@@ -1143,27 +1145,27 @@ const oi = /* @__PURE__ */ w(cs, [["__scopeId", "data-v-c6d1b806"]]), ds = ["dat
|
|
|
1143
1145
|
e(t).BORDER.RADIUS.HALF,
|
|
1144
1146
|
e(t).FONT.ROLE.LABEL_1_SEMIBOLD
|
|
1145
1147
|
]),
|
|
1146
|
-
disabled: s.element === e(
|
|
1147
|
-
href: s.element === e(
|
|
1148
|
-
target: s.element === e(
|
|
1148
|
+
disabled: s.element === e(M).BUTTON && s.disabled,
|
|
1149
|
+
href: s.element === e(M).LINK && s.href ? s.href : void 0,
|
|
1150
|
+
target: s.element === e(M).LINK && s.isNewTab ? e(se).BLANK : e(se).SELF
|
|
1149
1151
|
}, {
|
|
1150
|
-
default:
|
|
1152
|
+
default: Re(() => [
|
|
1151
1153
|
s.iconLeading ? (E(), P(H, {
|
|
1152
1154
|
key: 0,
|
|
1153
1155
|
icon: s.iconLeading,
|
|
1154
1156
|
size: o.size === e(me).LARGE ? e(Y).LARGE : e(Y).SMALL
|
|
1155
|
-
}, null, 8, ["icon", "size"])) :
|
|
1156
|
-
|
|
1157
|
+
}, null, 8, ["icon", "size"])) : S("", !0),
|
|
1158
|
+
Yt(" " + C(s.label) + " ", 1),
|
|
1157
1159
|
s.iconTrailing ? (E(), P(H, {
|
|
1158
1160
|
key: 1,
|
|
1159
1161
|
icon: s.iconTrailing,
|
|
1160
1162
|
size: o.size === e(me).LARGE ? e(Y).LARGE : e(Y).SMALL
|
|
1161
|
-
}, null, 8, ["icon", "size"])) :
|
|
1163
|
+
}, null, 8, ["icon", "size"])) : S("", !0)
|
|
1162
1164
|
]),
|
|
1163
1165
|
_: 1
|
|
1164
1166
|
}, 8, ["class", "disabled", "href", "target"]));
|
|
1165
1167
|
}
|
|
1166
|
-
}), Os = /* @__PURE__ */
|
|
1168
|
+
}), Os = /* @__PURE__ */ b({
|
|
1167
1169
|
__name: "TideButtonPagination",
|
|
1168
1170
|
props: {
|
|
1169
1171
|
disabled: { type: Boolean, default: !1 },
|
|
@@ -1173,7 +1175,7 @@ const oi = /* @__PURE__ */ w(cs, [["__scopeId", "data-v-c6d1b806"]]), ds = ["dat
|
|
|
1173
1175
|
},
|
|
1174
1176
|
setup(i) {
|
|
1175
1177
|
const s = i;
|
|
1176
|
-
return (o, n) => (E(), P(
|
|
1178
|
+
return (o, n) => (E(), P(Le(
|
|
1177
1179
|
s.element === e(re).LINK ? "a" : s.element === e(re).BUTTON ? "button" : "div"
|
|
1178
1180
|
), {
|
|
1179
1181
|
class: c([
|
|
@@ -1186,16 +1188,15 @@ const oi = /* @__PURE__ */ w(cs, [["__scopeId", "data-v-c6d1b806"]]), ds = ["dat
|
|
|
1186
1188
|
disabled: s.element === e(re).BUTTON && s.disabled,
|
|
1187
1189
|
href: s.element === e(re).LINK && s.href ? s.href : void 0
|
|
1188
1190
|
}, {
|
|
1189
|
-
default:
|
|
1191
|
+
default: Re(() => [
|
|
1190
1192
|
v("span", {
|
|
1191
1193
|
class: c(["label", e(t).DISPLAY.FLEX, e(t).AXIS1.CENTER, e(t).AXIS2.CENTER])
|
|
1192
|
-
},
|
|
1194
|
+
}, C(s.label), 3)
|
|
1193
1195
|
]),
|
|
1194
1196
|
_: 1
|
|
1195
1197
|
}, 8, ["class", "disabled", "href"]));
|
|
1196
1198
|
}
|
|
1197
|
-
})
|
|
1198
|
-
const Ls = /* @__PURE__ */ w(Os, [["__scopeId", "data-v-0e4f62c0"]]), Rs = ["data-track", "onClick"], ps = /* @__PURE__ */ C({
|
|
1199
|
+
}), Ls = /* @__PURE__ */ G(Os, [["__scopeId", "data-v-0e4f62c0"]]), Rs = ["data-track", "onClick"], ps = /* @__PURE__ */ b({
|
|
1199
1200
|
__name: "TideButtonSegmented",
|
|
1200
1201
|
props: {
|
|
1201
1202
|
activeTab: { default: 0 },
|
|
@@ -1236,20 +1237,19 @@ const Ls = /* @__PURE__ */ w(Os, [["__scopeId", "data-v-0e4f62c0"]]), Rs = ["dat
|
|
|
1236
1237
|
}, [
|
|
1237
1238
|
v("span", {
|
|
1238
1239
|
class: c([e(t).FONT.ROLE.LABEL_2_SEMIBOLD])
|
|
1239
|
-
},
|
|
1240
|
+
}, C(r.label), 3),
|
|
1240
1241
|
r.count && r.count > 0 ? (E(), p("span", {
|
|
1241
1242
|
key: 0,
|
|
1242
1243
|
class: c([e(t).FONT.ROLE.LABEL_2_SEMIBOLD])
|
|
1243
|
-
}, " (" +
|
|
1244
|
+
}, " (" + C(r.count) + ") ", 3)) : S("", !0)
|
|
1244
1245
|
], 10, Rs))), 128))
|
|
1245
1246
|
], 2));
|
|
1246
1247
|
}
|
|
1247
|
-
})
|
|
1248
|
-
const ai = /* @__PURE__ */ w(ps, [["__scopeId", "data-v-4e385d0b"]]), ye = {
|
|
1248
|
+
}), ri = /* @__PURE__ */ G(ps, [["__scopeId", "data-v-4e385d0b"]]), ye = {
|
|
1249
1249
|
ACTIONABLE: "action",
|
|
1250
1250
|
INFORMATIONAL: "informational",
|
|
1251
1251
|
SELECTABLE: "select"
|
|
1252
|
-
}, vs = /* @__PURE__ */
|
|
1252
|
+
}, vs = /* @__PURE__ */ b({
|
|
1253
1253
|
__name: "TideCard",
|
|
1254
1254
|
props: {
|
|
1255
1255
|
description: { default: void 0 },
|
|
@@ -1260,7 +1260,7 @@ const ai = /* @__PURE__ */ w(ps, [["__scopeId", "data-v-4e385d0b"]]), ye = {
|
|
|
1260
1260
|
href: { default: void 0 }
|
|
1261
1261
|
},
|
|
1262
1262
|
setup(i) {
|
|
1263
|
-
return (s, o) => (E(), P(
|
|
1263
|
+
return (s, o) => (E(), P(Le(s.href ? "a" : s.type === e(ye).INFORMATIONAL ? "div" : "button"), {
|
|
1264
1264
|
class: c([
|
|
1265
1265
|
"tide-card",
|
|
1266
1266
|
e(t).BORDER.COLOR.LOW,
|
|
@@ -1277,30 +1277,29 @@ const ai = /* @__PURE__ */ w(ps, [["__scopeId", "data-v-4e385d0b"]]), ye = {
|
|
|
1277
1277
|
]),
|
|
1278
1278
|
href: s.href
|
|
1279
1279
|
}, {
|
|
1280
|
-
default:
|
|
1280
|
+
default: Re(() => [
|
|
1281
1281
|
s.icon ? (E(), P(H, {
|
|
1282
1282
|
key: 0,
|
|
1283
1283
|
class: c([e(t).FLEX.GROW.OFF, e(t).FLEX.SHRINK.OFF]),
|
|
1284
1284
|
icon: s.icon,
|
|
1285
1285
|
size: e(Y).SMALL
|
|
1286
|
-
}, null, 8, ["class", "icon", "size"])) :
|
|
1286
|
+
}, null, 8, ["class", "icon", "size"])) : S("", !0),
|
|
1287
1287
|
v("div", {
|
|
1288
1288
|
class: c([e(t).AXIS2.START, e(t).DISPLAY.FLEX, e(t).FLEX.DIRECTION.COLUMN, e(t).GAP.HALF])
|
|
1289
1289
|
}, [
|
|
1290
1290
|
v("div", {
|
|
1291
1291
|
class: c([e(t).FONT.ROLE.LABEL_1_SEMIBOLD, e(t).FONT.COLOR.SURFACE.DEFAULT])
|
|
1292
|
-
},
|
|
1292
|
+
}, C(s.heading), 3),
|
|
1293
1293
|
s.description ? (E(), p("div", {
|
|
1294
1294
|
key: 0,
|
|
1295
1295
|
class: c([e(t).FONT.ROLE.LABEL_2, e(t).FONT.COLOR.SURFACE.VARIANT])
|
|
1296
|
-
},
|
|
1296
|
+
}, C(s.description), 3)) : S("", !0)
|
|
1297
1297
|
], 2)
|
|
1298
1298
|
]),
|
|
1299
1299
|
_: 1
|
|
1300
1300
|
}, 8, ["class", "href"]));
|
|
1301
1301
|
}
|
|
1302
|
-
})
|
|
1303
|
-
const ri = /* @__PURE__ */ w(vs, [["__scopeId", "data-v-98f24c4f"]]), fs = /* @__PURE__ */ C({
|
|
1302
|
+
}), li = /* @__PURE__ */ G(vs, [["__scopeId", "data-v-98f24c4f"]]), As = /* @__PURE__ */ b({
|
|
1304
1303
|
__name: "TideCarousel",
|
|
1305
1304
|
props: {
|
|
1306
1305
|
bleed: { default: void 0 },
|
|
@@ -1313,38 +1312,36 @@ const ri = /* @__PURE__ */ w(vs, [["__scopeId", "data-v-98f24c4f"]]), fs = /* @_
|
|
|
1313
1312
|
},
|
|
1314
1313
|
emits: ["slideChange", "slidesAddedToView"],
|
|
1315
1314
|
setup(i, { emit: s }) {
|
|
1316
|
-
const o = i, n =
|
|
1317
|
-
o.bleed != null && n.value !== null && (
|
|
1315
|
+
const o = i, n = F(null), a = F(null), d = F(null), r = F(), l = F(), u = F(0), O = F(), L = F(), R = F(), f = F(), A = F(), m = F(), N = () => {
|
|
1316
|
+
o.bleed != null && n.value !== null && (f.value && m.value ? (n.value.style.margin = `-${o.bleed}px -${o.bleed}px -${o.bleed}px 0`, n.value.style.padding = `${o.bleed}px ${o.bleed}px ${o.bleed}px 0`) : (n.value.style.margin = `-${o.bleed}px 0 -${o.bleed}px -${o.bleed}px`, n.value.style.padding = `${o.bleed}px 0 ${o.bleed}px ${o.bleed}px`));
|
|
1318
1317
|
}, I = () => {
|
|
1319
1318
|
const B = n.value;
|
|
1320
|
-
if (!B)
|
|
1321
|
-
return;
|
|
1319
|
+
if (!B) return;
|
|
1322
1320
|
const X = Array.from(B.children).map(
|
|
1323
1321
|
(ne) => ne.offsetLeft
|
|
1324
1322
|
);
|
|
1325
|
-
if (X.length === 0)
|
|
1326
|
-
return;
|
|
1323
|
+
if (X.length === 0) return;
|
|
1327
1324
|
const W = B.scrollLeft, Q = X.reduce(
|
|
1328
|
-
(ne,
|
|
1325
|
+
(ne, ve) => Math.abs(ve - W) < Math.abs(ne - W) ? ve : ne
|
|
1329
1326
|
);
|
|
1330
1327
|
u.value = X.indexOf(Q), N();
|
|
1331
1328
|
}, T = () => {
|
|
1332
|
-
n.value !== null && (r.value = Math.round(n.value.scrollLeft + n.value.clientWidth), l.value = n.value.scrollWidth, O.value = n.value.clientWidth, L.value = l.value > O.value, R.value = u.value === 0,
|
|
1329
|
+
n.value !== null && (r.value = Math.round(n.value.scrollLeft + n.value.clientWidth), l.value = n.value.scrollWidth, O.value = n.value.clientWidth, L.value = l.value > O.value, R.value = u.value === 0, f.value = r.value === l.value, A.value = n.value.scrollWidth - n.value.clientWidth, m.value = L.value && !o.isTouchscreen, I());
|
|
1333
1330
|
}, g = () => {
|
|
1334
1331
|
T();
|
|
1335
|
-
},
|
|
1332
|
+
}, D = (B) => {
|
|
1336
1333
|
n.value !== null && n.value.scrollTo({
|
|
1337
1334
|
behavior: "smooth",
|
|
1338
1335
|
left: n.value.children[B].offsetLeft
|
|
1339
1336
|
});
|
|
1340
|
-
},
|
|
1337
|
+
}, y = () => {
|
|
1341
1338
|
n.value !== null && (r.value > l.value ? n.value.scrollTo({
|
|
1342
1339
|
behavior: "smooth",
|
|
1343
1340
|
left: l.value
|
|
1344
|
-
}) :
|
|
1345
|
-
},
|
|
1346
|
-
R.value ||
|
|
1347
|
-
},
|
|
1341
|
+
}) : f.value || D(u.value + 1));
|
|
1342
|
+
}, h = () => {
|
|
1343
|
+
R.value || D(u.value - 1);
|
|
1344
|
+
}, k = () => {
|
|
1348
1345
|
var X;
|
|
1349
1346
|
const B = {
|
|
1350
1347
|
root: n == null ? void 0 : n.value,
|
|
@@ -1355,24 +1352,24 @@ const ri = /* @__PURE__ */ w(vs, [["__scopeId", "data-v-98f24c4f"]]), fs = /* @_
|
|
|
1355
1352
|
let Q = [];
|
|
1356
1353
|
W.forEach((ne) => {
|
|
1357
1354
|
var ot;
|
|
1358
|
-
const
|
|
1359
|
-
ne.isIntersecting && Q.push(
|
|
1355
|
+
const ve = Array.from(((ot = n.value) == null ? void 0 : ot.children) ?? []).indexOf(ne.target);
|
|
1356
|
+
ne.isIntersecting && Q.push(ve);
|
|
1360
1357
|
}), Q.length > 0 && s("slidesAddedToView", Q);
|
|
1361
1358
|
}, B), Array.from(((X = n.value) == null ? void 0 : X.children) ?? []).forEach((W) => {
|
|
1362
1359
|
a.value && a.value.observe(W);
|
|
1363
1360
|
});
|
|
1364
|
-
},
|
|
1361
|
+
}, _ = () => {
|
|
1365
1362
|
const B = () => {
|
|
1366
|
-
|
|
1363
|
+
k();
|
|
1367
1364
|
};
|
|
1368
1365
|
d.value = new MutationObserver(B), n.value && d.value.observe(n.value, { childList: !0 });
|
|
1369
1366
|
};
|
|
1370
|
-
return
|
|
1371
|
-
window && window.addEventListener("resize", T), T(),
|
|
1367
|
+
return we(() => {
|
|
1368
|
+
window && window.addEventListener("resize", T), T(), k(), _();
|
|
1372
1369
|
}), It(() => {
|
|
1373
1370
|
var B, X;
|
|
1374
1371
|
window.removeEventListener("resize", T), (B = a.value) == null || B.disconnect(), (X = d.value) == null || X.disconnect();
|
|
1375
|
-
}),
|
|
1372
|
+
}), Wt(() => {
|
|
1376
1373
|
T();
|
|
1377
1374
|
}), K(u, () => {
|
|
1378
1375
|
s("slideChange", u.value);
|
|
@@ -1398,30 +1395,30 @@ const ri = /* @__PURE__ */ w(vs, [["__scopeId", "data-v-98f24c4f"]]), fs = /* @_
|
|
|
1398
1395
|
o.title ? (E(), p("div", {
|
|
1399
1396
|
key: 0,
|
|
1400
1397
|
class: c([B.isHeadline1 ? e(t).FONT.ROLE.HEADLINE_1 : e(t).FONT.ROLE.HEADLINE_2])
|
|
1401
|
-
},
|
|
1398
|
+
}, C(o.title), 3)) : S("", !0),
|
|
1402
1399
|
o.subtitle ? (E(), p("div", {
|
|
1403
1400
|
key: 1,
|
|
1404
1401
|
class: c([e(t).FONT.ROLE.LABEL_2, e(t).FONT.COLOR.SURFACE.VARIANT])
|
|
1405
|
-
},
|
|
1406
|
-
], 2)) :
|
|
1402
|
+
}, C(o.subtitle), 3)) : S("", !0)
|
|
1403
|
+
], 2)) : S("", !0),
|
|
1407
1404
|
m.value ? (E(), p("div", {
|
|
1408
1405
|
key: 1,
|
|
1409
1406
|
class: c([e(t).DISPLAY.FLEX, e(t).AXIS2.CENTER, e(t).GAP.ONE])
|
|
1410
1407
|
}, [
|
|
1411
|
-
|
|
1408
|
+
x(Z, {
|
|
1412
1409
|
disabled: u.value === 0,
|
|
1413
|
-
icon: e(
|
|
1410
|
+
icon: e(w).CHEVRON_LEFT,
|
|
1414
1411
|
priority: e($).TERTIARY,
|
|
1415
|
-
onClick:
|
|
1412
|
+
onClick: h
|
|
1416
1413
|
}, null, 8, ["disabled", "icon", "priority"]),
|
|
1417
|
-
|
|
1418
|
-
disabled:
|
|
1419
|
-
icon: e(
|
|
1414
|
+
x(Z, {
|
|
1415
|
+
disabled: f.value,
|
|
1416
|
+
icon: e(w).CHEVRON_RIGHT,
|
|
1420
1417
|
priority: e($).TERTIARY,
|
|
1421
|
-
onClick:
|
|
1418
|
+
onClick: y
|
|
1422
1419
|
}, null, 8, ["disabled", "icon", "priority"])
|
|
1423
|
-
], 2)) :
|
|
1424
|
-
], 2)) :
|
|
1420
|
+
], 2)) : S("", !0)
|
|
1421
|
+
], 2)) : S("", !0),
|
|
1425
1422
|
V(B.$slots, "misc", {}, void 0, !0),
|
|
1426
1423
|
v("div", {
|
|
1427
1424
|
class: c([e(t).POSITION.RELATIVE])
|
|
@@ -1459,35 +1456,34 @@ const ri = /* @__PURE__ */ w(vs, [["__scopeId", "data-v-98f24c4f"]]), fs = /* @_
|
|
|
1459
1456
|
o.isHideawayButtons ? "hideaway" : ""
|
|
1460
1457
|
])
|
|
1461
1458
|
}, [
|
|
1462
|
-
|
|
1459
|
+
x(Z, {
|
|
1463
1460
|
class: c([e(t).MARGIN.LEFT.ONE, e(t).POINTER_EVENTS.ON]),
|
|
1464
1461
|
disabled: u.value === 0,
|
|
1465
|
-
icon: e(
|
|
1462
|
+
icon: e(w).CHEVRON_LEFT,
|
|
1466
1463
|
priority: e($).QUATERNARY,
|
|
1467
|
-
onClick:
|
|
1464
|
+
onClick: h
|
|
1468
1465
|
}, null, 8, ["class", "disabled", "icon", "priority"]),
|
|
1469
|
-
|
|
1466
|
+
x(Z, {
|
|
1470
1467
|
class: c([e(t).MARGIN.RIGHT.ONE, e(t).POINTER_EVENTS.ON]),
|
|
1471
|
-
disabled:
|
|
1472
|
-
icon: e(
|
|
1468
|
+
disabled: f.value,
|
|
1469
|
+
icon: e(w).CHEVRON_RIGHT,
|
|
1473
1470
|
priority: e($).QUATERNARY,
|
|
1474
|
-
onClick:
|
|
1471
|
+
onClick: y
|
|
1475
1472
|
}, null, 8, ["class", "disabled", "icon", "priority"])
|
|
1476
|
-
], 2)) :
|
|
1473
|
+
], 2)) : S("", !0)
|
|
1477
1474
|
], 2));
|
|
1478
1475
|
}
|
|
1479
|
-
})
|
|
1480
|
-
const li = /* @__PURE__ */ w(fs, [["__scopeId", "data-v-f6e14c22"]]), As = /* @__PURE__ */ C({
|
|
1476
|
+
}), ci = /* @__PURE__ */ G(As, [["__scopeId", "data-v-f6e14c22"]]), fs = /* @__PURE__ */ b({
|
|
1481
1477
|
__name: "TideChipAction",
|
|
1482
1478
|
props: {
|
|
1483
|
-
element: { default:
|
|
1479
|
+
element: { default: M.LINK },
|
|
1484
1480
|
href: { default: void 0 },
|
|
1485
1481
|
isNewTab: { type: Boolean, default: !1 },
|
|
1486
1482
|
label: {}
|
|
1487
1483
|
},
|
|
1488
1484
|
setup(i) {
|
|
1489
1485
|
const s = i;
|
|
1490
|
-
return (o, n) => (E(), P(
|
|
1486
|
+
return (o, n) => (E(), P(Le(o.element), {
|
|
1491
1487
|
class: c([
|
|
1492
1488
|
"tide-chip-action",
|
|
1493
1489
|
e(t).DISPLAY.FLEX,
|
|
@@ -1505,17 +1501,16 @@ const li = /* @__PURE__ */ w(fs, [["__scopeId", "data-v-f6e14c22"]]), As = /* @_
|
|
|
1505
1501
|
href: s.href,
|
|
1506
1502
|
target: s.isNewTab ? e(se).BLANK : e(se).SELF
|
|
1507
1503
|
}, {
|
|
1508
|
-
default:
|
|
1509
|
-
|
|
1510
|
-
icon: e(
|
|
1504
|
+
default: Re(() => [
|
|
1505
|
+
x(H, {
|
|
1506
|
+
icon: e(w).SEARCH
|
|
1511
1507
|
}, null, 8, ["icon"]),
|
|
1512
|
-
v("span", null,
|
|
1508
|
+
v("span", null, C(s.label), 1)
|
|
1513
1509
|
]),
|
|
1514
1510
|
_: 1
|
|
1515
1511
|
}, 8, ["class", "href", "target"]));
|
|
1516
1512
|
}
|
|
1517
|
-
})
|
|
1518
|
-
const ci = /* @__PURE__ */ w(As, [["__scopeId", "data-v-2f57438d"]]), Is = /* @__PURE__ */ C({
|
|
1513
|
+
}), di = /* @__PURE__ */ G(fs, [["__scopeId", "data-v-2f57438d"]]), Is = /* @__PURE__ */ b({
|
|
1519
1514
|
__name: "TideChipFilter",
|
|
1520
1515
|
props: {
|
|
1521
1516
|
isActive: { type: Boolean },
|
|
@@ -1544,12 +1539,11 @@ const ci = /* @__PURE__ */ w(As, [["__scopeId", "data-v-2f57438d"]]), Is = /* @_
|
|
|
1544
1539
|
}, [
|
|
1545
1540
|
v("span", {
|
|
1546
1541
|
class: c([s.isActive ? "" : "icon-spacing", e(t).FONT.ROLE.LABEL_1, e(t).WHITESPACE_WRAP.OFF])
|
|
1547
|
-
},
|
|
1542
|
+
}, C(s.label), 3)
|
|
1548
1543
|
], 2)
|
|
1549
1544
|
], 2));
|
|
1550
1545
|
}
|
|
1551
|
-
})
|
|
1552
|
-
const di = /* @__PURE__ */ w(Is, [["__scopeId", "data-v-6ddce1c2"]]), Ts = /* @__PURE__ */ C({
|
|
1546
|
+
}), ui = /* @__PURE__ */ G(Is, [["__scopeId", "data-v-6ddce1c2"]]), Ts = /* @__PURE__ */ b({
|
|
1553
1547
|
__name: "TideChipInput",
|
|
1554
1548
|
props: {
|
|
1555
1549
|
label: {}
|
|
@@ -1571,14 +1565,13 @@ const di = /* @__PURE__ */ w(Is, [["__scopeId", "data-v-6ddce1c2"]]), Ts = /* @_
|
|
|
1571
1565
|
e(t).FONT.ROLE.LABEL_2
|
|
1572
1566
|
])
|
|
1573
1567
|
}, [
|
|
1574
|
-
v("span", null,
|
|
1575
|
-
|
|
1576
|
-
icon: e(
|
|
1568
|
+
v("span", null, C(s.label), 1),
|
|
1569
|
+
x(H, {
|
|
1570
|
+
icon: e(w).CLOSE
|
|
1577
1571
|
}, null, 8, ["icon"])
|
|
1578
1572
|
], 2));
|
|
1579
1573
|
}
|
|
1580
|
-
})
|
|
1581
|
-
const ui = /* @__PURE__ */ w(Ts, [["__scopeId", "data-v-42611a29"]]), gs = { class: "tide-columns" }, ms = { class: "tide-columns-column" }, Ns = { class: "tide-columns-column" }, _s = { class: "tide-columns-column" }, Fs = { class: "tide-columns-column" }, Ss = /* @__PURE__ */ C({
|
|
1574
|
+
}), Ei = /* @__PURE__ */ G(Ts, [["__scopeId", "data-v-42611a29"]]), gs = { class: "tide-columns" }, ms = { class: "tide-columns-column" }, Ns = { class: "tide-columns-column" }, Fs = { class: "tide-columns-column" }, Ss = { class: "tide-columns-column" }, hs = /* @__PURE__ */ b({
|
|
1582
1575
|
__name: "TideColumns",
|
|
1583
1576
|
props: {
|
|
1584
1577
|
heading: { default: "" }
|
|
@@ -1588,7 +1581,7 @@ const ui = /* @__PURE__ */ w(Ts, [["__scopeId", "data-v-42611a29"]]), gs = { cla
|
|
|
1588
1581
|
return (o, n) => (E(), p("section", gs, [
|
|
1589
1582
|
v("h2", {
|
|
1590
1583
|
class: c([e(t).MARGIN.BOTTOM.HALF])
|
|
1591
|
-
},
|
|
1584
|
+
}, C(s.heading), 3),
|
|
1592
1585
|
v("ul", {
|
|
1593
1586
|
class: c([e(t).DISPLAY.FLEX, e(t).FLEX.WRAP, e(t).GAP.TWO, e(t).LIST_BULLETS.OFF])
|
|
1594
1587
|
}, [
|
|
@@ -1598,21 +1591,20 @@ const ui = /* @__PURE__ */ w(Ts, [["__scopeId", "data-v-42611a29"]]), gs = { cla
|
|
|
1598
1591
|
v("li", Ns, [
|
|
1599
1592
|
V(o.$slots, "section2", {}, void 0, !0)
|
|
1600
1593
|
]),
|
|
1601
|
-
v("li",
|
|
1594
|
+
v("li", Fs, [
|
|
1602
1595
|
V(o.$slots, "section3", {}, void 0, !0)
|
|
1603
1596
|
]),
|
|
1604
|
-
v("li",
|
|
1597
|
+
v("li", Ss, [
|
|
1605
1598
|
V(o.$slots, "section4", {}, void 0, !0)
|
|
1606
1599
|
])
|
|
1607
1600
|
], 2)
|
|
1608
1601
|
]));
|
|
1609
1602
|
}
|
|
1610
|
-
})
|
|
1611
|
-
const Ei = /* @__PURE__ */ w(Ss, [["__scopeId", "data-v-c92a6639"]]), fe = {
|
|
1603
|
+
}), Oi = /* @__PURE__ */ G(hs, [["__scopeId", "data-v-c92a6639"]]), fe = {
|
|
1612
1604
|
CONTAIN: "contain",
|
|
1613
1605
|
COVER: "cover",
|
|
1614
1606
|
SCALE_DOWN: "scale-down"
|
|
1615
|
-
},
|
|
1607
|
+
}, Ds = ["media", "srcset"], Cs = ["alt", "fetchpriority", "loading", "src"], We = "https://cdn-static.tilabs.io/marketplace/common/image-coming-soon.svg", ys = /* @__PURE__ */ b({
|
|
1616
1608
|
__name: "TideImage",
|
|
1617
1609
|
props: {
|
|
1618
1610
|
alt: { default: "" },
|
|
@@ -1624,7 +1616,7 @@ const Ei = /* @__PURE__ */ w(Ss, [["__scopeId", "data-v-c92a6639"]]), fe = {
|
|
|
1624
1616
|
width: { default: void 0 }
|
|
1625
1617
|
},
|
|
1626
1618
|
setup(i) {
|
|
1627
|
-
const s = i, o =
|
|
1619
|
+
const s = i, o = F(), n = F(), a = U(() => {
|
|
1628
1620
|
switch (s.objectFit) {
|
|
1629
1621
|
case fe.CONTAIN:
|
|
1630
1622
|
return t.OBJECT.CONTAIN;
|
|
@@ -1655,7 +1647,7 @@ const Ei = /* @__PURE__ */ w(Ss, [["__scopeId", "data-v-c92a6639"]]), fe = {
|
|
|
1655
1647
|
key: u.srcset,
|
|
1656
1648
|
media: `(min-width:${u.media}px)`,
|
|
1657
1649
|
srcset: u.srcset
|
|
1658
|
-
}, null, 8,
|
|
1650
|
+
}, null, 8, Ds))), 128)),
|
|
1659
1651
|
v("img", {
|
|
1660
1652
|
alt: r.alt,
|
|
1661
1653
|
class: c([e(t).WIDTH.FULL, e(t).HEIGHT.FULL, e(t).OBJECT.CENTER, a.value]),
|
|
@@ -1665,10 +1657,10 @@ const Ei = /* @__PURE__ */ w(Ss, [["__scopeId", "data-v-c92a6639"]]), fe = {
|
|
|
1665
1657
|
ref: n,
|
|
1666
1658
|
src: r.src ?? We,
|
|
1667
1659
|
onError: d
|
|
1668
|
-
}, null, 42,
|
|
1660
|
+
}, null, 42, Cs)
|
|
1669
1661
|
], 6));
|
|
1670
1662
|
}
|
|
1671
|
-
}),
|
|
1663
|
+
}), _s = /* @__PURE__ */ b({
|
|
1672
1664
|
__name: "TideImageBackground",
|
|
1673
1665
|
props: {
|
|
1674
1666
|
alt: { default: "" },
|
|
@@ -1691,7 +1683,7 @@ const Ei = /* @__PURE__ */ w(Ss, [["__scopeId", "data-v-c92a6639"]]), fe = {
|
|
|
1691
1683
|
e(t).AXIS2.CENTER
|
|
1692
1684
|
])
|
|
1693
1685
|
}, [
|
|
1694
|
-
|
|
1686
|
+
x(ys, {
|
|
1695
1687
|
alt: s.alt,
|
|
1696
1688
|
class: c([e(t).WIDTH.FULL, e(t).HEIGHT.FULL]),
|
|
1697
1689
|
"is-lazy": s.isLazy,
|
|
@@ -1703,11 +1695,10 @@ const Ei = /* @__PURE__ */ w(Ss, [["__scopeId", "data-v-c92a6639"]]), fe = {
|
|
|
1703
1695
|
V(o.$slots, "default", {}, void 0, !0)
|
|
1704
1696
|
], 2));
|
|
1705
1697
|
}
|
|
1706
|
-
})
|
|
1707
|
-
const Oi = /* @__PURE__ */ w(Cs, [["__scopeId", "data-v-0d40d1c6"]]), bs = {
|
|
1698
|
+
}), Li = /* @__PURE__ */ G(_s, [["__scopeId", "data-v-0d40d1c6"]]), bs = {
|
|
1708
1699
|
key: 0,
|
|
1709
1700
|
class: /* @__PURE__ */ c(["tide-indicator-label"])
|
|
1710
|
-
}, Bs = /* @__PURE__ */
|
|
1701
|
+
}, Bs = /* @__PURE__ */ b({
|
|
1711
1702
|
__name: "TideIndicator",
|
|
1712
1703
|
props: {
|
|
1713
1704
|
label: { default: void 0 }
|
|
@@ -1726,11 +1717,10 @@ const Oi = /* @__PURE__ */ w(Cs, [["__scopeId", "data-v-0d40d1c6"]]), bs = {
|
|
|
1726
1717
|
s.label ? [e(t).POSITION.RELATIVE, e(t).FONT.ROLE.LABEL_3, e(t).FONT.COLOR.SURFACE.INVERSE] : [e(t).BORDER.FULL.ONE]
|
|
1727
1718
|
])
|
|
1728
1719
|
}, [
|
|
1729
|
-
s.label ? (E(), p("div", bs,
|
|
1720
|
+
s.label ? (E(), p("div", bs, C(s.label), 1)) : S("", !0)
|
|
1730
1721
|
], 2));
|
|
1731
1722
|
}
|
|
1732
|
-
})
|
|
1733
|
-
const Li = /* @__PURE__ */ w(Bs, [["__scopeId", "data-v-d402ac82"]]), Us = ["data-track"], Ps = ["checked", "disabled", "name", "id"], Gs = ["for"], ws = /* @__PURE__ */ C({
|
|
1723
|
+
}), Ri = /* @__PURE__ */ G(Bs, [["__scopeId", "data-v-d402ac82"]]), Us = ["data-track"], Ps = ["checked", "disabled", "name", "id"], ws = ["for"], Gs = /* @__PURE__ */ b({
|
|
1734
1724
|
__name: "TideInputCheckbox",
|
|
1735
1725
|
props: {
|
|
1736
1726
|
checked: { type: Boolean, default: !1 },
|
|
@@ -1761,7 +1751,7 @@ const Li = /* @__PURE__ */ w(Bs, [["__scopeId", "data-v-d402ac82"]]), Us = ["dat
|
|
|
1761
1751
|
disabled: s.disabled,
|
|
1762
1752
|
name: s.name,
|
|
1763
1753
|
ref: "input",
|
|
1764
|
-
onClick: a[0] || (a[0] =
|
|
1754
|
+
onClick: a[0] || (a[0] = Ee(() => {
|
|
1765
1755
|
}, ["prevent"])),
|
|
1766
1756
|
id: s.inputId,
|
|
1767
1757
|
type: "checkbox"
|
|
@@ -1784,9 +1774,9 @@ const Li = /* @__PURE__ */ w(Bs, [["__scopeId", "data-v-d402ac82"]]), Us = ["dat
|
|
|
1784
1774
|
o.value ? (E(), P(H, {
|
|
1785
1775
|
key: 0,
|
|
1786
1776
|
class: c([e(t).FONT.COLOR.SECONDARY]),
|
|
1787
|
-
icon: s.indeterminate ? e(
|
|
1777
|
+
icon: s.indeterminate ? e(w).REMOVE : e(w).CHECK,
|
|
1788
1778
|
size: e(Y).SMALL
|
|
1789
|
-
}, null, 8, ["class", "icon", "size"])) :
|
|
1779
|
+
}, null, 8, ["class", "icon", "size"])) : S("", !0)
|
|
1790
1780
|
], 2),
|
|
1791
1781
|
n.label ? (E(), p("label", {
|
|
1792
1782
|
key: 0,
|
|
@@ -1797,19 +1787,18 @@ const Li = /* @__PURE__ */ w(Bs, [["__scopeId", "data-v-d402ac82"]]), Us = ["dat
|
|
|
1797
1787
|
n.disabled ? e(t).CURSOR.NOT_ALLOWED : e(t).CURSOR.POINTER
|
|
1798
1788
|
]),
|
|
1799
1789
|
for: s.inputId,
|
|
1800
|
-
onClick: a[1] || (a[1] =
|
|
1790
|
+
onClick: a[1] || (a[1] = Ee(() => {
|
|
1801
1791
|
}, ["prevent"]))
|
|
1802
1792
|
}, [
|
|
1803
|
-
v("span", null,
|
|
1793
|
+
v("span", null, C(n.label), 1),
|
|
1804
1794
|
s.number ? (E(), p("span", {
|
|
1805
1795
|
key: 0,
|
|
1806
1796
|
class: c([e(t).FONT.COLOR.SURFACE.VARIANT])
|
|
1807
|
-
}, " (" +
|
|
1808
|
-
], 10,
|
|
1797
|
+
}, " (" + C(e(ze)(s.number)) + ") ", 3)) : S("", !0)
|
|
1798
|
+
], 10, ws)) : S("", !0)
|
|
1809
1799
|
], 10, Us));
|
|
1810
1800
|
}
|
|
1811
|
-
})
|
|
1812
|
-
const Ri = /* @__PURE__ */ w(ws, [["__scopeId", "data-v-1a2e222c"]]), Hs = ["checked", "data-track", "id"], xs = ["for"], ks = /* @__PURE__ */ C({
|
|
1801
|
+
}), pi = /* @__PURE__ */ G(Gs, [["__scopeId", "data-v-1a2e222c"]]), Hs = ["checked", "data-track", "id"], ks = ["for"], Ms = /* @__PURE__ */ b({
|
|
1813
1802
|
__name: "TideInputRadio",
|
|
1814
1803
|
props: {
|
|
1815
1804
|
checked: { type: Boolean, default: !1 },
|
|
@@ -1820,7 +1809,7 @@ const Ri = /* @__PURE__ */ w(ws, [["__scopeId", "data-v-1a2e222c"]]), Hs = ["che
|
|
|
1820
1809
|
name: {}
|
|
1821
1810
|
},
|
|
1822
1811
|
setup(i) {
|
|
1823
|
-
const s = i, o =
|
|
1812
|
+
const s = i, o = F(s.checked);
|
|
1824
1813
|
return K(
|
|
1825
1814
|
() => s.checked,
|
|
1826
1815
|
(n, a) => {
|
|
@@ -1868,15 +1857,14 @@ const Ri = /* @__PURE__ */ w(ws, [["__scopeId", "data-v-1a2e222c"]]), Hs = ["che
|
|
|
1868
1857
|
v("label", {
|
|
1869
1858
|
class: c([e(t).FONT.ROLE.BODY_1, e(t).CURSOR.POINTER, e(t).POINTER_EVENTS.ON]),
|
|
1870
1859
|
for: s.inputId
|
|
1871
|
-
},
|
|
1860
|
+
}, C(s.label), 11, ks)
|
|
1872
1861
|
], 2));
|
|
1873
1862
|
}
|
|
1874
|
-
})
|
|
1875
|
-
const pi = /* @__PURE__ */ w(ks, [["__scopeId", "data-v-3310d547"]]), Qe = "Please enter a valid value.", Ms = {
|
|
1863
|
+
}), vi = /* @__PURE__ */ G(Ms, [["__scopeId", "data-v-3310d547"]]), Qe = "Please enter a valid value.", xs = {
|
|
1876
1864
|
message: "",
|
|
1877
1865
|
valid: !0
|
|
1878
1866
|
}, Ne = (i) => (s) => {
|
|
1879
|
-
let o =
|
|
1867
|
+
let o = xs;
|
|
1880
1868
|
return s.trim().match(i) || (o = {
|
|
1881
1869
|
message: Qe,
|
|
1882
1870
|
valid: !1
|
|
@@ -1884,7 +1872,7 @@ const pi = /* @__PURE__ */ w(ks, [["__scopeId", "data-v-3310d547"]]), Qe = "Plea
|
|
|
1884
1872
|
}, Ze = (i, s) => typeof i == "string" && i.length > 0 ? i : typeof s == "string" && s.length > 0 ? s : Qe, qe = (i, s) => i !== !1 || s !== !1, Ys = ({ maxlength: i, minlength: s, required: o, value: n }) => {
|
|
1885
1873
|
const a = n.length === 0 && !o, d = i && n.length > i;
|
|
1886
1874
|
return !(!a && s && n.length < s) && !d;
|
|
1887
|
-
},
|
|
1875
|
+
}, Ft = ({
|
|
1888
1876
|
error: i,
|
|
1889
1877
|
errorFromProps: s,
|
|
1890
1878
|
maxlength: o,
|
|
@@ -1934,7 +1922,7 @@ function Xs(i, s) {
|
|
|
1934
1922
|
valid: !0
|
|
1935
1923
|
};
|
|
1936
1924
|
}
|
|
1937
|
-
const Vs = ["for"], $s = ["disabled", "name", "required", "id"], Ks = ["label"], zs = ["value"], Qs = ["selected", "value"], Zs = ["selected", "value"], qs = /* @__PURE__ */
|
|
1925
|
+
const Vs = ["for"], $s = ["disabled", "name", "required", "id"], Ks = ["label"], zs = ["value"], Qs = ["selected", "value"], Zs = ["selected", "value"], qs = /* @__PURE__ */ b({
|
|
1938
1926
|
__name: "TideInputSelect",
|
|
1939
1927
|
props: {
|
|
1940
1928
|
inputId: { default: void 0 },
|
|
@@ -1949,7 +1937,7 @@ const Vs = ["for"], $s = ["disabled", "name", "required", "id"], Ks = ["label"],
|
|
|
1949
1937
|
value: { default: void 0 }
|
|
1950
1938
|
},
|
|
1951
1939
|
setup(i, { expose: s }) {
|
|
1952
|
-
const o = i, n =
|
|
1940
|
+
const o = i, n = F(o.error), a = F(!1), d = F(null), r = F(o.required), l = F(o.value), u = U(() => Ze(o.error, n.value)), O = U(() => o.required ? `${o.label} *` : o.label), L = U(() => o.required && !l.value || qe(n.value, o.error)), R = U(() => a.value || !f.value), f = U(() => l.value === void 0), A = () => {
|
|
1953
1941
|
var T;
|
|
1954
1942
|
const I = new MouseEvent("mousedown");
|
|
1955
1943
|
(T = d == null ? void 0 : d.value) == null || T.dispatchEvent(I);
|
|
@@ -1985,7 +1973,7 @@ const Vs = ["for"], $s = ["disabled", "name", "required", "id"], Ks = ["label"],
|
|
|
1985
1973
|
o.disabled ? e(t).CURSOR.NOT_ALLOWED : "",
|
|
1986
1974
|
e(t).OVERFLOW.XY.HIDDEN
|
|
1987
1975
|
]),
|
|
1988
|
-
onClick:
|
|
1976
|
+
onClick: A
|
|
1989
1977
|
}, [
|
|
1990
1978
|
v("div", {
|
|
1991
1979
|
class: c([e(t).DISPLAY.FLEX, e(t).FLEX.DIRECTION.COLUMN, e(t).WIDTH.FULL])
|
|
@@ -2002,8 +1990,8 @@ const Vs = ["for"], $s = ["disabled", "name", "required", "id"], Ks = ["label"],
|
|
|
2002
1990
|
e(t).POINTER_EVENTS.OFF
|
|
2003
1991
|
]),
|
|
2004
1992
|
for: o.inputId
|
|
2005
|
-
},
|
|
2006
|
-
|
|
1993
|
+
}, C(O.value), 11, Vs)) : S("", !0),
|
|
1994
|
+
Ge(v("select", {
|
|
2007
1995
|
class: c([
|
|
2008
1996
|
e(t).PADDING.BOTTOM.HALF,
|
|
2009
1997
|
e(t).PADDING.X.ONE,
|
|
@@ -2027,31 +2015,31 @@ const Vs = ["for"], $s = ["disabled", "name", "required", "id"], Ks = ["label"],
|
|
|
2027
2015
|
key: g.label,
|
|
2028
2016
|
label: g.label
|
|
2029
2017
|
}, [
|
|
2030
|
-
(E(!0), p(ee, null, le(g.options, (
|
|
2018
|
+
(E(!0), p(ee, null, le(g.options, (D) => (E(), p("option", {
|
|
2031
2019
|
class: c([e(t).WIDTH.FULL, e(t).BG.SURFACE.DEFAULT]),
|
|
2032
|
-
key:
|
|
2033
|
-
value:
|
|
2034
|
-
}, D
|
|
2020
|
+
key: D.value,
|
|
2021
|
+
value: D.value
|
|
2022
|
+
}, C(D.label), 11, zs))), 128))
|
|
2035
2023
|
], 10, Ks)) : (E(), p("option", {
|
|
2036
2024
|
class: c([e(t).WIDTH.FULL, e(t).BG.SURFACE.DEFAULT]),
|
|
2037
2025
|
key: g.value,
|
|
2038
2026
|
selected: l.value === g.value ? !0 : void 0,
|
|
2039
2027
|
value: g.value
|
|
2040
|
-
},
|
|
2028
|
+
}, C(g.label), 11, Qs))
|
|
2041
2029
|
], 64))), 256)),
|
|
2042
2030
|
(E(!0), p(ee, null, le(I.options, (g) => (E(), p("option", {
|
|
2043
2031
|
class: c([e(t).WIDTH.FULL, e(t).BG.SURFACE.DEFAULT]),
|
|
2044
2032
|
key: g.value,
|
|
2045
2033
|
selected: l.value === g.value ? !0 : void 0,
|
|
2046
2034
|
value: g.value
|
|
2047
|
-
},
|
|
2035
|
+
}, C(g.label), 11, Zs))), 128))
|
|
2048
2036
|
], 42, $s), [
|
|
2049
|
-
[
|
|
2037
|
+
[Xt, l.value]
|
|
2050
2038
|
])
|
|
2051
2039
|
], 2),
|
|
2052
|
-
|
|
2040
|
+
x(H, {
|
|
2053
2041
|
class: c([e(t).POSITION.ABSOLUTE, e(t).POSITIONING.RIGHT, e(t).MARGIN.RIGHT.ONE, e(t).POINTER_EVENTS.OFF]),
|
|
2054
|
-
icon: e(
|
|
2042
|
+
icon: e(w).EXPAND_MORE,
|
|
2055
2043
|
size: e(Y).SMALL
|
|
2056
2044
|
}, null, 8, ["class", "icon", "size"])
|
|
2057
2045
|
], 2),
|
|
@@ -2062,17 +2050,16 @@ const Vs = ["for"], $s = ["disabled", "name", "required", "id"], Ks = ["label"],
|
|
|
2062
2050
|
L.value ? (E(), P(H, {
|
|
2063
2051
|
key: 0,
|
|
2064
2052
|
class: c([]),
|
|
2065
|
-
icon: e(
|
|
2053
|
+
icon: e(w).ERROR,
|
|
2066
2054
|
size: e(Y).SMALL
|
|
2067
|
-
}, null, 8, ["icon", "size"])) :
|
|
2055
|
+
}, null, 8, ["icon", "size"])) : S("", !0),
|
|
2068
2056
|
v("div", {
|
|
2069
2057
|
class: c([e(t).FONT.ROLE.LABEL_3])
|
|
2070
|
-
},
|
|
2071
|
-
], 2)) :
|
|
2058
|
+
}, C(L.value ? u.value : o.supportingText), 3)
|
|
2059
|
+
], 2)) : S("", !0)
|
|
2072
2060
|
], 2));
|
|
2073
2061
|
}
|
|
2074
|
-
})
|
|
2075
|
-
const vi = /* @__PURE__ */ w(qs, [["__scopeId", "data-v-2da267e1"]]), _e = {
|
|
2062
|
+
}), Ai = /* @__PURE__ */ G(qs, [["__scopeId", "data-v-2da267e1"]]), Fe = {
|
|
2076
2063
|
DATE: "date",
|
|
2077
2064
|
DATETIME_LOCAL: "datetime-local",
|
|
2078
2065
|
EMAIL: "email",
|
|
@@ -2085,7 +2072,7 @@ const vi = /* @__PURE__ */ w(qs, [["__scopeId", "data-v-2da267e1"]]), _e = {
|
|
|
2085
2072
|
TIME: "time",
|
|
2086
2073
|
URL: "url",
|
|
2087
2074
|
WEEK: "week"
|
|
2088
|
-
}, js = ["for"], Js = ["autocomplete", "data-track", "disabled", "maxlength", "minlength", "name", "required", "type", "id"], eo = /* @__PURE__ */
|
|
2075
|
+
}, js = ["for"], Js = ["autocomplete", "data-track", "disabled", "maxlength", "minlength", "name", "required", "type", "id"], eo = /* @__PURE__ */ b({
|
|
2089
2076
|
__name: "TideInputText",
|
|
2090
2077
|
props: {
|
|
2091
2078
|
autocomplete: { type: Boolean, default: !1 },
|
|
@@ -2104,30 +2091,30 @@ const vi = /* @__PURE__ */ w(qs, [["__scopeId", "data-v-2da267e1"]]), _e = {
|
|
|
2104
2091
|
suffix: { default: void 0 },
|
|
2105
2092
|
supportingText: { default: void 0 },
|
|
2106
2093
|
transformValue: { type: Function, default: void 0 },
|
|
2107
|
-
type: { default:
|
|
2094
|
+
type: { default: Fe.TEXT },
|
|
2108
2095
|
validators: { default: void 0 },
|
|
2109
2096
|
value: { default: void 0 }
|
|
2110
2097
|
},
|
|
2111
2098
|
setup(i, { expose: s }) {
|
|
2112
|
-
const o = i, n =
|
|
2099
|
+
const o = i, n = F(o.error), a = F(!1), d = F(null), r = F(!1), l = F(o.value), u = U(() => Ze(o.error, n.value)), O = U(() => o.required && o.label ? `${o.label} *` : o.label), L = U(() => o.hasClear && l.value), R = U(
|
|
2113
2100
|
() => o.required && l.value !== void 0 && !l.value || qe(n.value, o.error)
|
|
2114
|
-
),
|
|
2115
|
-
() => o.type ===
|
|
2101
|
+
), f = U(() => a.value || !A.value), A = U(() => l.value === "" || l.value === void 0), m = U(
|
|
2102
|
+
() => o.type === Fe.PASSWORD && r.value === !0 ? Fe.TEXT : o.type
|
|
2116
2103
|
), N = () => {
|
|
2117
|
-
var
|
|
2118
|
-
l.value = "", (
|
|
2104
|
+
var h;
|
|
2105
|
+
l.value = "", (h = d.value) == null || h.focus();
|
|
2119
2106
|
}, I = () => {
|
|
2120
2107
|
a.value = !0;
|
|
2121
2108
|
}, T = () => {
|
|
2122
|
-
a.value = !1, l.value || (l.value = ""),
|
|
2109
|
+
a.value = !1, l.value || (l.value = ""), D();
|
|
2123
2110
|
}, g = () => {
|
|
2124
|
-
var
|
|
2111
|
+
var h, k;
|
|
2125
2112
|
if (o.transformValue) {
|
|
2126
|
-
const
|
|
2127
|
-
l.value =
|
|
2113
|
+
const _ = ((k = (h = l.value) == null ? void 0 : h.match(/\d/g)) == null ? void 0 : k.join("")) || void 0;
|
|
2114
|
+
l.value = _ ? o.transformValue(_) : "";
|
|
2128
2115
|
}
|
|
2129
|
-
},
|
|
2130
|
-
|
|
2116
|
+
}, D = () => {
|
|
2117
|
+
Ft({
|
|
2131
2118
|
error: n,
|
|
2132
2119
|
errorFromProps: o.error,
|
|
2133
2120
|
maxlength: o.maxlength,
|
|
@@ -2136,26 +2123,26 @@ const vi = /* @__PURE__ */ w(qs, [["__scopeId", "data-v-2da267e1"]]), _e = {
|
|
|
2136
2123
|
validators: o.validators,
|
|
2137
2124
|
value: l
|
|
2138
2125
|
});
|
|
2139
|
-
},
|
|
2140
|
-
l.value =
|
|
2126
|
+
}, y = (h) => {
|
|
2127
|
+
l.value = h;
|
|
2141
2128
|
};
|
|
2142
2129
|
return K(
|
|
2143
2130
|
() => o.value,
|
|
2144
|
-
(
|
|
2145
|
-
(
|
|
2131
|
+
(h, k) => {
|
|
2132
|
+
(h !== k || h !== l.value) && (l.value = h);
|
|
2146
2133
|
}
|
|
2147
2134
|
), s({
|
|
2148
2135
|
error: n,
|
|
2149
2136
|
required: o.required,
|
|
2150
|
-
updateValue:
|
|
2137
|
+
updateValue: y,
|
|
2151
2138
|
value: l
|
|
2152
|
-
}), (
|
|
2139
|
+
}), (h, k) => (E(), p("div", {
|
|
2153
2140
|
class: c([
|
|
2154
2141
|
"tide-input-text",
|
|
2155
2142
|
e(t).DISPLAY.FLEX,
|
|
2156
2143
|
e(t).FLEX.DIRECTION.COLUMN,
|
|
2157
2144
|
e(t).GAP.QUARTER,
|
|
2158
|
-
|
|
2145
|
+
h.disabled && "disabled",
|
|
2159
2146
|
R.value && "error"
|
|
2160
2147
|
])
|
|
2161
2148
|
}, [
|
|
@@ -2178,7 +2165,7 @@ const vi = /* @__PURE__ */ w(qs, [["__scopeId", "data-v-2da267e1"]]), _e = {
|
|
|
2178
2165
|
class: c([e(t).FONT.COLOR.SURFACE.VARIANT]),
|
|
2179
2166
|
icon: o.iconLeading,
|
|
2180
2167
|
size: e(Y).SMALL
|
|
2181
|
-
}, null, 8, ["class", "icon", "size"])) :
|
|
2168
|
+
}, null, 8, ["class", "icon", "size"])) : S("", !0),
|
|
2182
2169
|
v("div", {
|
|
2183
2170
|
class: c([e(t).DISPLAY.FLEX, e(t).AXIS2.CENTER, e(t).GAP.QUARTER, e(t).WIDTH.FULL])
|
|
2184
2171
|
}, [
|
|
@@ -2189,29 +2176,29 @@ const vi = /* @__PURE__ */ w(qs, [["__scopeId", "data-v-2da267e1"]]), _e = {
|
|
|
2189
2176
|
e(t).FONT.ROLE.BODY_1,
|
|
2190
2177
|
,
|
|
2191
2178
|
!R.value && e(t).FONT.COLOR.SURFACE.VARIANT,
|
|
2192
|
-
|
|
2179
|
+
f.value ? "" : "offset"
|
|
2193
2180
|
])
|
|
2194
|
-
},
|
|
2181
|
+
}, C(o.prefix), 3)) : S("", !0),
|
|
2195
2182
|
v("div", {
|
|
2196
2183
|
class: c([e(t).DISPLAY.FLEX, e(t).FLEX.DIRECTION.COLUMN, e(t).WIDTH.FULL]),
|
|
2197
|
-
onClick:
|
|
2184
|
+
onClick: k[1] || (k[1] = Ee((_) => {
|
|
2198
2185
|
var B;
|
|
2199
2186
|
return (B = d.value) == null ? void 0 : B.focus();
|
|
2200
2187
|
}, ["prevent"]))
|
|
2201
2188
|
}, [
|
|
2202
|
-
|
|
2189
|
+
h.label ? (E(), p("label", {
|
|
2203
2190
|
key: 0,
|
|
2204
2191
|
class: c([
|
|
2205
|
-
|
|
2192
|
+
f.value ? ["minilabel", e(t).FONT.ROLE.LABEL_3] : e(t).FONT.ROLE.LABEL_1,
|
|
2206
2193
|
!R.value && e(t).FONT.COLOR.SURFACE.VARIANT,
|
|
2207
2194
|
e(t).CURSOR.TEXT,
|
|
2208
2195
|
e(t).POINTER_EVENTS.OFF
|
|
2209
2196
|
]),
|
|
2210
2197
|
for: o.inputId
|
|
2211
|
-
},
|
|
2212
|
-
|
|
2213
|
-
autocomplete:
|
|
2214
|
-
class: c([e(t).WIDTH.FULL,
|
|
2198
|
+
}, C(O.value), 11, js)) : S("", !0),
|
|
2199
|
+
Ge(v("input", {
|
|
2200
|
+
autocomplete: h.autocomplete ? "on" : "off",
|
|
2201
|
+
class: c([e(t).WIDTH.FULL, h.disabled && e(t).CURSOR.NOT_ALLOWED, e(t).FONT.ROLE.BODY_1]),
|
|
2215
2202
|
"data-track": o.dataTrack,
|
|
2216
2203
|
disabled: o.disabled,
|
|
2217
2204
|
maxlength: o.maxlength,
|
|
@@ -2221,14 +2208,14 @@ const vi = /* @__PURE__ */ w(qs, [["__scopeId", "data-v-2da267e1"]]), _e = {
|
|
|
2221
2208
|
ref: d,
|
|
2222
2209
|
required: o.required,
|
|
2223
2210
|
type: m.value,
|
|
2224
|
-
onChange:
|
|
2211
|
+
onChange: D,
|
|
2225
2212
|
onFocus: I,
|
|
2226
2213
|
onFocusout: T,
|
|
2227
2214
|
onInput: g,
|
|
2228
2215
|
id: o.inputId,
|
|
2229
|
-
"onUpdate:modelValue":
|
|
2216
|
+
"onUpdate:modelValue": k[0] || (k[0] = (_) => l.value = _)
|
|
2230
2217
|
}, null, 42, Js), [
|
|
2231
|
-
[
|
|
2218
|
+
[Vt, l.value]
|
|
2232
2219
|
])
|
|
2233
2220
|
], 2),
|
|
2234
2221
|
o.suffix ? (E(), p("div", {
|
|
@@ -2237,24 +2224,24 @@ const vi = /* @__PURE__ */ w(qs, [["__scopeId", "data-v-2da267e1"]]), _e = {
|
|
|
2237
2224
|
"tide-input-text-suffix",
|
|
2238
2225
|
e(t).FONT.ROLE.BODY_1,
|
|
2239
2226
|
!R.value && e(t).FONT.COLOR.SURFACE.VARIANT,
|
|
2240
|
-
|
|
2227
|
+
f.value ? "" : "offset"
|
|
2241
2228
|
])
|
|
2242
|
-
},
|
|
2229
|
+
}, C(o.suffix), 3)) : S("", !0)
|
|
2243
2230
|
], 2),
|
|
2244
|
-
L.value && o.type !== e(
|
|
2231
|
+
L.value && o.type !== e(Fe).PASSWORD ? (E(), P(H, {
|
|
2245
2232
|
key: 1,
|
|
2246
2233
|
class: c([e(t).PADDING.Y.HALF, e(t).PADDING.FULL.HALF, e(t).CURSOR.POINTER]),
|
|
2247
|
-
icon: e(
|
|
2234
|
+
icon: e(w).CLOSE,
|
|
2248
2235
|
size: e(Y).SMALL,
|
|
2249
2236
|
onClick: N
|
|
2250
|
-
}, null, 8, ["class", "icon", "size"])) :
|
|
2251
|
-
o.type === e(
|
|
2237
|
+
}, null, 8, ["class", "icon", "size"])) : S("", !0),
|
|
2238
|
+
o.type === e(Fe).PASSWORD ? (E(), P(H, {
|
|
2252
2239
|
key: 2,
|
|
2253
2240
|
class: c([e(t).PADDING.Y.HALF, e(t).PADDING.FULL.HALF, e(t).CURSOR.POINTER]),
|
|
2254
|
-
icon: e(
|
|
2241
|
+
icon: e(w).VISIBILITY,
|
|
2255
2242
|
size: e(Y).SMALL,
|
|
2256
|
-
onClick:
|
|
2257
|
-
}, null, 8, ["class", "icon", "size"])) :
|
|
2243
|
+
onClick: k[2] || (k[2] = (_) => r.value = !r.value)
|
|
2244
|
+
}, null, 8, ["class", "icon", "size"])) : S("", !0)
|
|
2258
2245
|
], 2),
|
|
2259
2246
|
o.supportingText || R.value ? (E(), p("div", {
|
|
2260
2247
|
key: 0,
|
|
@@ -2263,17 +2250,16 @@ const vi = /* @__PURE__ */ w(qs, [["__scopeId", "data-v-2da267e1"]]), _e = {
|
|
|
2263
2250
|
R.value ? (E(), P(H, {
|
|
2264
2251
|
key: 0,
|
|
2265
2252
|
class: c([]),
|
|
2266
|
-
icon: e(
|
|
2253
|
+
icon: e(w).ERROR,
|
|
2267
2254
|
size: e(Y).SMALL
|
|
2268
|
-
}, null, 8, ["icon", "size"])) :
|
|
2255
|
+
}, null, 8, ["icon", "size"])) : S("", !0),
|
|
2269
2256
|
v("div", {
|
|
2270
2257
|
class: c([e(t).FONT.ROLE.LABEL_3])
|
|
2271
|
-
},
|
|
2272
|
-
], 2)) :
|
|
2258
|
+
}, C(R.value ? u.value : o.supportingText), 3)
|
|
2259
|
+
], 2)) : S("", !0)
|
|
2273
2260
|
], 2));
|
|
2274
2261
|
}
|
|
2275
|
-
})
|
|
2276
|
-
const fi = /* @__PURE__ */ w(eo, [["__scopeId", "data-v-d369bda5"]]), to = ["for"], so = ["data-track", "maxlength", "minlength", "name", "required", "rows", "id"], oo = /* @__PURE__ */ C({
|
|
2262
|
+
}), fi = /* @__PURE__ */ G(eo, [["__scopeId", "data-v-d369bda5"]]), to = ["for"], so = ["data-track", "maxlength", "minlength", "name", "required", "rows", "id"], oo = /* @__PURE__ */ b({
|
|
2277
2263
|
__name: "TideInputTextarea",
|
|
2278
2264
|
props: {
|
|
2279
2265
|
dataTrack: { default: "" },
|
|
@@ -2289,13 +2275,13 @@ const fi = /* @__PURE__ */ w(eo, [["__scopeId", "data-v-d369bda5"]]), to = ["for
|
|
|
2289
2275
|
value: { default: void 0 }
|
|
2290
2276
|
},
|
|
2291
2277
|
setup(i, { expose: s }) {
|
|
2292
|
-
const o = i, n =
|
|
2278
|
+
const o = i, n = F(o.error), a = F(!1), d = F(null), r = F(o.value), l = U(() => Ze(o.error, n.value)), u = U(() => o.required ? `${o.label} *` : o.label), O = U(
|
|
2293
2279
|
() => o.required && r.value !== void 0 && !r.value || qe(n.value, o.error)
|
|
2294
|
-
), L = U(() => a.value || !R.value), R = U(() => r.value === "" || r.value === void 0),
|
|
2280
|
+
), L = U(() => a.value || !R.value), R = U(() => r.value === "" || r.value === void 0), f = () => {
|
|
2295
2281
|
a.value = !0;
|
|
2296
|
-
},
|
|
2282
|
+
}, A = () => {
|
|
2297
2283
|
a.value = !1, r.value || (r.value = "");
|
|
2298
|
-
}, m = () =>
|
|
2284
|
+
}, m = () => Ft({
|
|
2299
2285
|
error: n,
|
|
2300
2286
|
errorFromProps: o.error,
|
|
2301
2287
|
maxlength: o.maxlength,
|
|
@@ -2337,8 +2323,8 @@ const fi = /* @__PURE__ */ w(eo, [["__scopeId", "data-v-d369bda5"]]), to = ["for
|
|
|
2337
2323
|
]),
|
|
2338
2324
|
for: o.inputId,
|
|
2339
2325
|
ref: "label"
|
|
2340
|
-
},
|
|
2341
|
-
|
|
2326
|
+
}, C(u.value), 11, to)) : S("", !0),
|
|
2327
|
+
Ge(v("textarea", {
|
|
2342
2328
|
class: c([e(t).WIDTH.FULL, e(t).FONT.ROLE.BODY_1]),
|
|
2343
2329
|
"data-track": o.dataTrack,
|
|
2344
2330
|
maxlength: o.maxlength,
|
|
@@ -2349,12 +2335,12 @@ const fi = /* @__PURE__ */ w(eo, [["__scopeId", "data-v-d369bda5"]]), to = ["for
|
|
|
2349
2335
|
required: o.required,
|
|
2350
2336
|
rows: o.rows,
|
|
2351
2337
|
onChange: m,
|
|
2352
|
-
onFocus:
|
|
2353
|
-
onFocusout:
|
|
2338
|
+
onFocus: f,
|
|
2339
|
+
onFocusout: A,
|
|
2354
2340
|
id: o.inputId,
|
|
2355
2341
|
"onUpdate:modelValue": I[0] || (I[0] = (T) => r.value = T)
|
|
2356
2342
|
}, null, 42, so), [
|
|
2357
|
-
[
|
|
2343
|
+
[$t, r.value]
|
|
2358
2344
|
])
|
|
2359
2345
|
], 2),
|
|
2360
2346
|
o.supportingText || O.value ? (E(), p("div", {
|
|
@@ -2363,20 +2349,19 @@ const fi = /* @__PURE__ */ w(eo, [["__scopeId", "data-v-d369bda5"]]), to = ["for
|
|
|
2363
2349
|
}, [
|
|
2364
2350
|
O.value ? (E(), P(H, {
|
|
2365
2351
|
key: 0,
|
|
2366
|
-
icon: e(
|
|
2352
|
+
icon: e(w).ERROR,
|
|
2367
2353
|
size: e(Y).SMALL
|
|
2368
|
-
}, null, 8, ["icon", "size"])) :
|
|
2354
|
+
}, null, 8, ["icon", "size"])) : S("", !0),
|
|
2369
2355
|
v("div", {
|
|
2370
2356
|
class: c([e(t).FONT.ROLE.LABEL_3])
|
|
2371
|
-
},
|
|
2372
|
-
], 2)) :
|
|
2357
|
+
}, C(O.value ? l.value : o.supportingText), 3)
|
|
2358
|
+
], 2)) : S("", !0)
|
|
2373
2359
|
], 2));
|
|
2374
2360
|
}
|
|
2375
|
-
})
|
|
2376
|
-
const Ai = /* @__PURE__ */ w(oo, [["__scopeId", "data-v-2105ab99"]]), Ii = /* @__PURE__ */ C({
|
|
2361
|
+
}), Ii = /* @__PURE__ */ G(oo, [["__scopeId", "data-v-2105ab99"]]), Ti = /* @__PURE__ */ b({
|
|
2377
2362
|
__name: "TideLink",
|
|
2378
2363
|
props: {
|
|
2379
|
-
element: { default:
|
|
2364
|
+
element: { default: M.LINK },
|
|
2380
2365
|
href: { default: void 0 },
|
|
2381
2366
|
iconLeading: { default: void 0 },
|
|
2382
2367
|
iconTrailing: { default: void 0 },
|
|
@@ -2386,7 +2371,7 @@ const Ai = /* @__PURE__ */ w(oo, [["__scopeId", "data-v-2105ab99"]]), Ii = /* @_
|
|
|
2386
2371
|
},
|
|
2387
2372
|
setup(i) {
|
|
2388
2373
|
const s = i;
|
|
2389
|
-
return (o, n) => (E(), P(
|
|
2374
|
+
return (o, n) => (E(), P(Le(s.element === e(M).LINK ? e(M).LINK : e(M).BUTTON), {
|
|
2390
2375
|
class: c([
|
|
2391
2376
|
"tide-link",
|
|
2392
2377
|
e(t).DISPLAY.INLINE,
|
|
@@ -2396,20 +2381,20 @@ const Ai = /* @__PURE__ */ w(oo, [["__scopeId", "data-v-2105ab99"]]), Ii = /* @_
|
|
|
2396
2381
|
href: s.href,
|
|
2397
2382
|
target: s.isNewTab ? e(se).BLANK : e(se).SELF
|
|
2398
2383
|
}, {
|
|
2399
|
-
default:
|
|
2384
|
+
default: Re(() => [
|
|
2400
2385
|
s.iconLeading ? (E(), P(H, {
|
|
2401
2386
|
key: 0,
|
|
2402
2387
|
class: c([e(t).DISPLAY.INLINE_BLOCK, e(t).ALIGN.Y.MIDDLE, e(t).MARGIN.RIGHT.QUARTER]),
|
|
2403
2388
|
icon: s.iconLeading
|
|
2404
|
-
}, null, 8, ["class", "icon"])) :
|
|
2389
|
+
}, null, 8, ["class", "icon"])) : S("", !0),
|
|
2405
2390
|
v("span", {
|
|
2406
2391
|
class: c([e(t).ALIGN.Y.MIDDLE])
|
|
2407
|
-
},
|
|
2392
|
+
}, C(s.label), 3),
|
|
2408
2393
|
s.iconTrailing ? (E(), P(H, {
|
|
2409
2394
|
key: 1,
|
|
2410
2395
|
class: c([e(t).DISPLAY.INLINE_BLOCK, e(t).ALIGN.Y.MIDDLE, e(t).MARGIN.LEFT.QUARTER]),
|
|
2411
2396
|
icon: s.iconTrailing
|
|
2412
|
-
}, null, 8, ["class", "icon"])) :
|
|
2397
|
+
}, null, 8, ["class", "icon"])) : S("", !0)
|
|
2413
2398
|
]),
|
|
2414
2399
|
_: 1
|
|
2415
2400
|
}, 8, ["class", "href", "target"]));
|
|
@@ -2419,12 +2404,12 @@ const Ai = /* @__PURE__ */ w(oo, [["__scopeId", "data-v-2105ab99"]]), Ii = /* @_
|
|
|
2419
2404
|
MD: "md",
|
|
2420
2405
|
LG: "lg",
|
|
2421
2406
|
XL: "xl"
|
|
2422
|
-
},
|
|
2407
|
+
}, gi = {
|
|
2423
2408
|
SM: 768,
|
|
2424
2409
|
MD: 992,
|
|
2425
2410
|
LG: 1232,
|
|
2426
2411
|
XL: 1920
|
|
2427
|
-
},
|
|
2412
|
+
}, St = async (i) => {
|
|
2428
2413
|
const s = document.body;
|
|
2429
2414
|
if (i) {
|
|
2430
2415
|
if (!s.dataset.scrollLockY) {
|
|
@@ -2438,10 +2423,10 @@ const Ai = /* @__PURE__ */ w(oo, [["__scopeId", "data-v-2105ab99"]]), Ii = /* @_
|
|
|
2438
2423
|
top: o
|
|
2439
2424
|
}), delete s.dataset.scrollLockY;
|
|
2440
2425
|
}
|
|
2441
|
-
}, be = "tide-top-layer",
|
|
2426
|
+
}, be = "tide-top-layer", ht = () => {
|
|
2442
2427
|
let i = document.getElementById(be);
|
|
2443
2428
|
i || (i = document.createElement("div"), i.id = be, i.setAttribute("data-css-scope", ""), document.body.appendChild(i)), i.style.isolation = "isolate";
|
|
2444
|
-
}, no = ["onClick", "onKeydown"], ao = ["textContent"], ro = /* @__PURE__ */
|
|
2429
|
+
}, no = ["onClick", "onKeydown"], ao = ["textContent"], ro = /* @__PURE__ */ b({
|
|
2445
2430
|
__name: "TideModal",
|
|
2446
2431
|
props: {
|
|
2447
2432
|
isBackButton: { type: Boolean, default: !1 },
|
|
@@ -2452,7 +2437,7 @@ const Ai = /* @__PURE__ */ w(oo, [["__scopeId", "data-v-2105ab99"]]), Ii = /* @_
|
|
|
2452
2437
|
},
|
|
2453
2438
|
emits: ["close", "back"],
|
|
2454
2439
|
setup(i, { emit: s }) {
|
|
2455
|
-
const o = i, n =
|
|
2440
|
+
const o = i, n = F(), a = F(), d = () => {
|
|
2456
2441
|
var L;
|
|
2457
2442
|
(L = a.value) == null || L.showModal();
|
|
2458
2443
|
}, r = () => {
|
|
@@ -2470,19 +2455,19 @@ const Ai = /* @__PURE__ */ w(oo, [["__scopeId", "data-v-2105ab99"]]), Ii = /* @_
|
|
|
2470
2455
|
return K(
|
|
2471
2456
|
() => o.isOpen,
|
|
2472
2457
|
(L) => {
|
|
2473
|
-
a.value && (L ? (d(), l()) : r(),
|
|
2458
|
+
a.value && (L ? (d(), l()) : r(), St(L));
|
|
2474
2459
|
}
|
|
2475
|
-
),
|
|
2460
|
+
), we(() => {
|
|
2476
2461
|
o.isOpen && d();
|
|
2477
2462
|
}), (L, R) => (E(), p("dialog", {
|
|
2478
2463
|
class: c(["tide-modal", e(t).BG.INITIAL, e(t).HEIGHT.FULL, e(t).WIDTH.FULL, e(t).OVERFLOW.XY.HIDDEN]),
|
|
2479
2464
|
ref_key: "modalDialog",
|
|
2480
2465
|
ref: a,
|
|
2481
2466
|
style: Ke({ "--modal-width": o.width }),
|
|
2482
|
-
onClick:
|
|
2483
|
-
onClose: R[2] || (R[2] =
|
|
2467
|
+
onClick: Ee(u, ["self"]),
|
|
2468
|
+
onClose: R[2] || (R[2] = Ee(() => {
|
|
2484
2469
|
}, ["prevent"])),
|
|
2485
|
-
onKeydown:
|
|
2470
|
+
onKeydown: gt(O, ["escape"])
|
|
2486
2471
|
}, [
|
|
2487
2472
|
v("div", {
|
|
2488
2473
|
class: c([
|
|
@@ -2513,22 +2498,22 @@ const Ai = /* @__PURE__ */ w(oo, [["__scopeId", "data-v-2105ab99"]]), Ii = /* @_
|
|
|
2513
2498
|
}, [
|
|
2514
2499
|
L.isBackButton ? (E(), P(Z, {
|
|
2515
2500
|
key: 0,
|
|
2516
|
-
icon: e(
|
|
2501
|
+
icon: e(w).CHEVRON_LEFT,
|
|
2517
2502
|
priority: e($).QUATERNARY,
|
|
2518
|
-
onClick: R[0] || (R[0] = (
|
|
2503
|
+
onClick: R[0] || (R[0] = (f) => s("back")),
|
|
2519
2504
|
title: "Back"
|
|
2520
|
-
}, null, 8, ["icon", "priority"])) :
|
|
2505
|
+
}, null, 8, ["icon", "priority"])) : S("", !0),
|
|
2521
2506
|
v("div", {
|
|
2522
2507
|
class: c([e(t).FONT.ROLE.HEADLINE_2]),
|
|
2523
|
-
textContent:
|
|
2508
|
+
textContent: C(L.title)
|
|
2524
2509
|
}, null, 10, ao),
|
|
2525
2510
|
L.isDismissible ? (E(), P(Z, {
|
|
2526
2511
|
key: 1,
|
|
2527
2512
|
class: c([e(t).FLEX.GROW.OFF, e(t).FLEX.SHRINK.OFF, e(t).MARGIN.LEFT.AUTO]),
|
|
2528
|
-
icon: e(
|
|
2513
|
+
icon: e(w).CLOSE,
|
|
2529
2514
|
priority: e($).QUATERNARY,
|
|
2530
|
-
onClick: R[1] || (R[1] = (
|
|
2531
|
-
}, null, 8, ["class", "icon", "priority"])) :
|
|
2515
|
+
onClick: R[1] || (R[1] = (f) => s("close"))
|
|
2516
|
+
}, null, 8, ["class", "icon", "priority"])) : S("", !0)
|
|
2532
2517
|
], 2),
|
|
2533
2518
|
v("div", {
|
|
2534
2519
|
class: c([
|
|
@@ -2549,12 +2534,11 @@ const Ai = /* @__PURE__ */ w(oo, [["__scopeId", "data-v-2105ab99"]]), Ii = /* @_
|
|
|
2549
2534
|
class: c(["tide-modal-footer", e(t).AXIS1.END, e(t).DISPLAY.FLEX, e(t).GAP.TWO, e(t).PADDING.Y.ONE, e(t).SHADOW.TOP])
|
|
2550
2535
|
}, [
|
|
2551
2536
|
V(L.$slots, "footer", {}, void 0, !0)
|
|
2552
|
-
], 2)) :
|
|
2537
|
+
], 2)) : S("", !0)
|
|
2553
2538
|
], 2)
|
|
2554
2539
|
], 46, no));
|
|
2555
2540
|
}
|
|
2556
|
-
})
|
|
2557
|
-
const gi = /* @__PURE__ */ w(ro, [["__scopeId", "data-v-1598252f"]]), mi = /* @__PURE__ */ C({
|
|
2541
|
+
}), mi = /* @__PURE__ */ G(ro, [["__scopeId", "data-v-1598252f"]]), Ni = /* @__PURE__ */ b({
|
|
2558
2542
|
__name: "TidePagination",
|
|
2559
2543
|
props: {
|
|
2560
2544
|
pageCurrent: { default: 1 },
|
|
@@ -2562,15 +2546,15 @@ const gi = /* @__PURE__ */ w(ro, [["__scopeId", "data-v-1598252f"]]), mi = /* @_
|
|
|
2562
2546
|
},
|
|
2563
2547
|
emits: ["change"],
|
|
2564
2548
|
setup(i, { emit: s }) {
|
|
2565
|
-
const o = i, n =
|
|
2549
|
+
const o = i, n = F(o.pageCurrent), a = U(() => new Array(o.pageTotal).fill("").map((r, l) => l + 1)), d = (r) => {
|
|
2566
2550
|
n.value = r, s("change", event, r);
|
|
2567
2551
|
};
|
|
2568
2552
|
return (r, l) => (E(), p("section", {
|
|
2569
2553
|
class: c(["tide-pagination", e(t).DISPLAY.FLEX, e(t).AXIS1.CENTER, e(t).AXIS2.CENTER, e(t).GAP.QUARTER, e(t).WIDTH.FULL])
|
|
2570
2554
|
}, [
|
|
2571
|
-
|
|
2555
|
+
x(Z, {
|
|
2572
2556
|
disabled: n.value === 1,
|
|
2573
|
-
icon: e(
|
|
2557
|
+
icon: e(w).CHEVRON_LEFT,
|
|
2574
2558
|
priority: e($).QUATERNARY,
|
|
2575
2559
|
onClick: l[0] || (l[0] = (u) => d(n.value - 1))
|
|
2576
2560
|
}, null, 8, ["disabled", "icon", "priority"]),
|
|
@@ -2578,7 +2562,7 @@ const gi = /* @__PURE__ */ w(ro, [["__scopeId", "data-v-1598252f"]]), mi = /* @_
|
|
|
2578
2562
|
class: c([e(t).DISPLAY.FLEX, e(t).AXIS2.CENTER, e(t).GAP.QUARTER, e(t).LIST_BULLETS.OFF])
|
|
2579
2563
|
}, [
|
|
2580
2564
|
(E(!0), p(ee, null, le(a.value, (u) => (E(), p("li", { key: u }, [
|
|
2581
|
-
|
|
2565
|
+
x(Ls, {
|
|
2582
2566
|
disabled: n.value === u,
|
|
2583
2567
|
label: u,
|
|
2584
2568
|
priority: e($).QUATERNARY,
|
|
@@ -2586,15 +2570,15 @@ const gi = /* @__PURE__ */ w(ro, [["__scopeId", "data-v-1598252f"]]), mi = /* @_
|
|
|
2586
2570
|
}, null, 8, ["disabled", "label", "priority", "onClick"])
|
|
2587
2571
|
]))), 128))
|
|
2588
2572
|
], 2),
|
|
2589
|
-
|
|
2573
|
+
x(Z, {
|
|
2590
2574
|
disabled: n.value === a.value[a.value.length - 1],
|
|
2591
|
-
icon: e(
|
|
2575
|
+
icon: e(w).CHEVRON_RIGHT,
|
|
2592
2576
|
priority: e($).QUATERNARY,
|
|
2593
2577
|
onClick: l[1] || (l[1] = (u) => d(n.value + 1))
|
|
2594
2578
|
}, null, 8, ["disabled", "icon", "priority"])
|
|
2595
2579
|
], 2));
|
|
2596
2580
|
}
|
|
2597
|
-
}), lo = ["top", "right", "bottom", "left"], rt = ["start", "end"], lt = /* @__PURE__ */ lo.reduce((i, s) => i.concat(s, s + "-" + rt[0], s + "-" + rt[1]), []), Be = Math.min, ue = Math.max, Ue = Math.round,
|
|
2581
|
+
}), lo = ["top", "right", "bottom", "left"], rt = ["start", "end"], lt = /* @__PURE__ */ lo.reduce((i, s) => i.concat(s, s + "-" + rt[0], s + "-" + rt[1]), []), Be = Math.min, ue = Math.max, Ue = Math.round, _e = Math.floor, te = (i) => ({
|
|
2598
2582
|
x: i,
|
|
2599
2583
|
y: i
|
|
2600
2584
|
}), co = {
|
|
@@ -2618,21 +2602,21 @@ function ge(i) {
|
|
|
2618
2602
|
function ce(i) {
|
|
2619
2603
|
return i.split("-")[1];
|
|
2620
2604
|
}
|
|
2621
|
-
function
|
|
2605
|
+
function Dt(i) {
|
|
2622
2606
|
return i === "x" ? "y" : "x";
|
|
2623
2607
|
}
|
|
2624
|
-
function
|
|
2608
|
+
function Ct(i) {
|
|
2625
2609
|
return i === "y" ? "height" : "width";
|
|
2626
2610
|
}
|
|
2627
|
-
function
|
|
2611
|
+
function ke(i) {
|
|
2628
2612
|
return ["top", "bottom"].includes(ge(i)) ? "y" : "x";
|
|
2629
2613
|
}
|
|
2630
|
-
function
|
|
2631
|
-
return
|
|
2614
|
+
function yt(i) {
|
|
2615
|
+
return Dt(ke(i));
|
|
2632
2616
|
}
|
|
2633
2617
|
function Eo(i, s, o) {
|
|
2634
2618
|
o === void 0 && (o = !1);
|
|
2635
|
-
const n = ce(i), a =
|
|
2619
|
+
const n = ce(i), a = yt(i), d = Ct(a);
|
|
2636
2620
|
let r = a === "x" ? n === (o ? "end" : "start") ? "right" : "left" : n === "start" ? "bottom" : "top";
|
|
2637
2621
|
return s.reference[d] > s.floating[d] && (r = dt(r)), [r, dt(r)];
|
|
2638
2622
|
}
|
|
@@ -2682,48 +2666,48 @@ function ut(i, s, o) {
|
|
|
2682
2666
|
reference: n,
|
|
2683
2667
|
floating: a
|
|
2684
2668
|
} = i;
|
|
2685
|
-
const d =
|
|
2686
|
-
let
|
|
2669
|
+
const d = ke(s), r = yt(s), l = Ct(r), u = ge(s), O = d === "y", L = n.x + n.width / 2 - a.width / 2, R = n.y + n.height / 2 - a.height / 2, f = n[l] / 2 - a[l] / 2;
|
|
2670
|
+
let A;
|
|
2687
2671
|
switch (u) {
|
|
2688
2672
|
case "top":
|
|
2689
|
-
|
|
2673
|
+
A = {
|
|
2690
2674
|
x: L,
|
|
2691
2675
|
y: n.y - a.height
|
|
2692
2676
|
};
|
|
2693
2677
|
break;
|
|
2694
2678
|
case "bottom":
|
|
2695
|
-
|
|
2679
|
+
A = {
|
|
2696
2680
|
x: L,
|
|
2697
2681
|
y: n.y + n.height
|
|
2698
2682
|
};
|
|
2699
2683
|
break;
|
|
2700
2684
|
case "right":
|
|
2701
|
-
|
|
2685
|
+
A = {
|
|
2702
2686
|
x: n.x + n.width,
|
|
2703
2687
|
y: R
|
|
2704
2688
|
};
|
|
2705
2689
|
break;
|
|
2706
2690
|
case "left":
|
|
2707
|
-
|
|
2691
|
+
A = {
|
|
2708
2692
|
x: n.x - a.width,
|
|
2709
2693
|
y: R
|
|
2710
2694
|
};
|
|
2711
2695
|
break;
|
|
2712
2696
|
default:
|
|
2713
|
-
|
|
2697
|
+
A = {
|
|
2714
2698
|
x: n.x,
|
|
2715
2699
|
y: n.y
|
|
2716
2700
|
};
|
|
2717
2701
|
}
|
|
2718
2702
|
switch (ce(s)) {
|
|
2719
2703
|
case "start":
|
|
2720
|
-
|
|
2704
|
+
A[r] -= f * (o && O ? -1 : 1);
|
|
2721
2705
|
break;
|
|
2722
2706
|
case "end":
|
|
2723
|
-
|
|
2707
|
+
A[r] += f * (o && O ? -1 : 1);
|
|
2724
2708
|
break;
|
|
2725
2709
|
}
|
|
2726
|
-
return
|
|
2710
|
+
return A;
|
|
2727
2711
|
}
|
|
2728
2712
|
const po = async (i, s, o) => {
|
|
2729
2713
|
const {
|
|
@@ -2739,23 +2723,23 @@ const po = async (i, s, o) => {
|
|
|
2739
2723
|
}), {
|
|
2740
2724
|
x: L,
|
|
2741
2725
|
y: R
|
|
2742
|
-
} = ut(O, n, u),
|
|
2726
|
+
} = ut(O, n, u), f = n, A = {}, m = 0;
|
|
2743
2727
|
for (let N = 0; N < l.length; N++) {
|
|
2744
2728
|
const {
|
|
2745
2729
|
name: I,
|
|
2746
2730
|
fn: T
|
|
2747
2731
|
} = l[N], {
|
|
2748
2732
|
x: g,
|
|
2749
|
-
y:
|
|
2750
|
-
data:
|
|
2751
|
-
reset:
|
|
2733
|
+
y: D,
|
|
2734
|
+
data: y,
|
|
2735
|
+
reset: h
|
|
2752
2736
|
} = await T({
|
|
2753
2737
|
x: L,
|
|
2754
2738
|
y: R,
|
|
2755
2739
|
initialPlacement: n,
|
|
2756
|
-
placement:
|
|
2740
|
+
placement: f,
|
|
2757
2741
|
strategy: a,
|
|
2758
|
-
middlewareData:
|
|
2742
|
+
middlewareData: A,
|
|
2759
2743
|
rects: O,
|
|
2760
2744
|
platform: r,
|
|
2761
2745
|
elements: {
|
|
@@ -2763,30 +2747,30 @@ const po = async (i, s, o) => {
|
|
|
2763
2747
|
floating: s
|
|
2764
2748
|
}
|
|
2765
2749
|
});
|
|
2766
|
-
L = g ?? L, R =
|
|
2767
|
-
...
|
|
2750
|
+
L = g ?? L, R = D ?? R, A = {
|
|
2751
|
+
...A,
|
|
2768
2752
|
[I]: {
|
|
2769
|
-
...
|
|
2770
|
-
...
|
|
2753
|
+
...A[I],
|
|
2754
|
+
...y
|
|
2771
2755
|
}
|
|
2772
|
-
},
|
|
2756
|
+
}, h && m <= 50 && (m++, typeof h == "object" && (h.placement && (f = h.placement), h.rects && (O = h.rects === !0 ? await r.getElementRects({
|
|
2773
2757
|
reference: i,
|
|
2774
2758
|
floating: s,
|
|
2775
2759
|
strategy: a
|
|
2776
|
-
}) :
|
|
2760
|
+
}) : h.rects), {
|
|
2777
2761
|
x: L,
|
|
2778
2762
|
y: R
|
|
2779
|
-
} = ut(O,
|
|
2763
|
+
} = ut(O, f, u)), N = -1);
|
|
2780
2764
|
}
|
|
2781
2765
|
return {
|
|
2782
2766
|
x: L,
|
|
2783
2767
|
y: R,
|
|
2784
|
-
placement:
|
|
2768
|
+
placement: f,
|
|
2785
2769
|
strategy: a,
|
|
2786
|
-
middlewareData:
|
|
2770
|
+
middlewareData: A
|
|
2787
2771
|
};
|
|
2788
2772
|
};
|
|
2789
|
-
async function
|
|
2773
|
+
async function _t(i, s) {
|
|
2790
2774
|
var o;
|
|
2791
2775
|
s === void 0 && (s = {});
|
|
2792
2776
|
const {
|
|
@@ -2800,9 +2784,9 @@ async function yt(i, s) {
|
|
|
2800
2784
|
boundary: O = "clippingAncestors",
|
|
2801
2785
|
rootBoundary: L = "viewport",
|
|
2802
2786
|
elementContext: R = "floating",
|
|
2803
|
-
altBoundary:
|
|
2804
|
-
padding:
|
|
2805
|
-
} = He(s, i), m = Ro(
|
|
2787
|
+
altBoundary: f = !1,
|
|
2788
|
+
padding: A = 0
|
|
2789
|
+
} = He(s, i), m = Ro(A), I = l[f ? R === "floating" ? "reference" : "floating" : R], T = Pe(await d.getClippingRect({
|
|
2806
2790
|
element: (o = await (d.isElement == null ? void 0 : d.isElement(I))) == null || o ? I : I.contextElement || await (d.getDocumentElement == null ? void 0 : d.getDocumentElement(l.floating)),
|
|
2807
2791
|
boundary: O,
|
|
2808
2792
|
rootBoundary: L,
|
|
@@ -2812,29 +2796,29 @@ async function yt(i, s) {
|
|
|
2812
2796
|
y: a,
|
|
2813
2797
|
width: r.floating.width,
|
|
2814
2798
|
height: r.floating.height
|
|
2815
|
-
} : r.reference,
|
|
2799
|
+
} : r.reference, D = await (d.getOffsetParent == null ? void 0 : d.getOffsetParent(l.floating)), y = await (d.isElement == null ? void 0 : d.isElement(D)) ? await (d.getScale == null ? void 0 : d.getScale(D)) || {
|
|
2816
2800
|
x: 1,
|
|
2817
2801
|
y: 1
|
|
2818
2802
|
} : {
|
|
2819
2803
|
x: 1,
|
|
2820
2804
|
y: 1
|
|
2821
|
-
},
|
|
2805
|
+
}, h = Pe(d.convertOffsetParentRelativeRectToViewportRelativeRect ? await d.convertOffsetParentRelativeRectToViewportRelativeRect({
|
|
2822
2806
|
elements: l,
|
|
2823
2807
|
rect: g,
|
|
2824
|
-
offsetParent:
|
|
2808
|
+
offsetParent: D,
|
|
2825
2809
|
strategy: u
|
|
2826
2810
|
}) : g);
|
|
2827
2811
|
return {
|
|
2828
|
-
top: (T.top -
|
|
2829
|
-
bottom: (
|
|
2830
|
-
left: (T.left -
|
|
2831
|
-
right: (
|
|
2812
|
+
top: (T.top - h.top + m.top) / y.y,
|
|
2813
|
+
bottom: (h.bottom - T.bottom + m.bottom) / y.y,
|
|
2814
|
+
left: (T.left - h.left + m.left) / y.x,
|
|
2815
|
+
right: (h.right - T.right + m.right) / y.x
|
|
2832
2816
|
};
|
|
2833
2817
|
}
|
|
2834
2818
|
function vo(i, s, o) {
|
|
2835
2819
|
return (i ? [...o.filter((a) => ce(a) === i), ...o.filter((a) => ce(a) !== i)] : o.filter((a) => ge(a) === a)).filter((a) => i ? ce(a) === i || (s ? Oo(a) !== a : !1) : !0);
|
|
2836
2820
|
}
|
|
2837
|
-
const
|
|
2821
|
+
const Ao = function(i) {
|
|
2838
2822
|
return i === void 0 && (i = {}), {
|
|
2839
2823
|
name: "autoPlacement",
|
|
2840
2824
|
options: i,
|
|
@@ -2849,52 +2833,52 @@ const fo = function(i) {
|
|
|
2849
2833
|
} = s, {
|
|
2850
2834
|
crossAxis: L = !1,
|
|
2851
2835
|
alignment: R,
|
|
2852
|
-
allowedPlacements:
|
|
2853
|
-
autoAlignment:
|
|
2836
|
+
allowedPlacements: f = lt,
|
|
2837
|
+
autoAlignment: A = !0,
|
|
2854
2838
|
...m
|
|
2855
|
-
} = He(i, s), N = R !== void 0 ||
|
|
2839
|
+
} = He(i, s), N = R !== void 0 || f === lt ? vo(R || null, A, f) : f, I = await _t(s, m), T = ((o = r.autoPlacement) == null ? void 0 : o.index) || 0, g = N[T];
|
|
2856
2840
|
if (g == null)
|
|
2857
2841
|
return {};
|
|
2858
|
-
const
|
|
2842
|
+
const D = Eo(g, d, await (u.isRTL == null ? void 0 : u.isRTL(O.floating)));
|
|
2859
2843
|
if (l !== g)
|
|
2860
2844
|
return {
|
|
2861
2845
|
reset: {
|
|
2862
2846
|
placement: N[0]
|
|
2863
2847
|
}
|
|
2864
2848
|
};
|
|
2865
|
-
const
|
|
2849
|
+
const y = [I[ge(g)], I[D[0]], I[D[1]]], h = [...((n = r.autoPlacement) == null ? void 0 : n.overflows) || [], {
|
|
2866
2850
|
placement: g,
|
|
2867
|
-
overflows:
|
|
2868
|
-
}],
|
|
2869
|
-
if (
|
|
2851
|
+
overflows: y
|
|
2852
|
+
}], k = N[T + 1];
|
|
2853
|
+
if (k)
|
|
2870
2854
|
return {
|
|
2871
2855
|
data: {
|
|
2872
2856
|
index: T + 1,
|
|
2873
|
-
overflows:
|
|
2857
|
+
overflows: h
|
|
2874
2858
|
},
|
|
2875
2859
|
reset: {
|
|
2876
|
-
placement:
|
|
2860
|
+
placement: k
|
|
2877
2861
|
}
|
|
2878
2862
|
};
|
|
2879
|
-
const
|
|
2863
|
+
const _ = h.map((W) => {
|
|
2880
2864
|
const Q = ce(W.placement);
|
|
2881
2865
|
return [W.placement, Q && L ? (
|
|
2882
2866
|
// Check along the mainAxis and main crossAxis side.
|
|
2883
|
-
W.overflows.slice(0, 2).reduce((ne,
|
|
2867
|
+
W.overflows.slice(0, 2).reduce((ne, ve) => ne + ve, 0)
|
|
2884
2868
|
) : (
|
|
2885
2869
|
// Check only the mainAxis.
|
|
2886
2870
|
W.overflows[0]
|
|
2887
2871
|
), W.overflows];
|
|
2888
|
-
}).sort((W, Q) => W[1] - Q[1]), X = ((a =
|
|
2872
|
+
}).sort((W, Q) => W[1] - Q[1]), X = ((a = _.filter((W) => W[2].slice(
|
|
2889
2873
|
0,
|
|
2890
2874
|
// Aligned placements should not check their opposite crossAxis
|
|
2891
2875
|
// side.
|
|
2892
2876
|
ce(W[0]) ? 2 : 3
|
|
2893
|
-
).every((Q) => Q <= 0))[0]) == null ? void 0 : a[0]) ||
|
|
2877
|
+
).every((Q) => Q <= 0))[0]) == null ? void 0 : a[0]) || _[0][0];
|
|
2894
2878
|
return X !== l ? {
|
|
2895
2879
|
data: {
|
|
2896
2880
|
index: T + 1,
|
|
2897
|
-
overflows:
|
|
2881
|
+
overflows: h
|
|
2898
2882
|
},
|
|
2899
2883
|
reset: {
|
|
2900
2884
|
placement: X
|
|
@@ -2903,15 +2887,15 @@ const fo = function(i) {
|
|
|
2903
2887
|
}
|
|
2904
2888
|
};
|
|
2905
2889
|
};
|
|
2906
|
-
async function
|
|
2890
|
+
async function fo(i, s) {
|
|
2907
2891
|
const {
|
|
2908
2892
|
placement: o,
|
|
2909
2893
|
platform: n,
|
|
2910
2894
|
elements: a
|
|
2911
|
-
} = i, d = await (n.isRTL == null ? void 0 : n.isRTL(a.floating)), r = ge(o), l = ce(o), u =
|
|
2895
|
+
} = i, d = await (n.isRTL == null ? void 0 : n.isRTL(a.floating)), r = ge(o), l = ce(o), u = ke(o) === "y", O = ["left", "top"].includes(r) ? -1 : 1, L = d && u ? -1 : 1, R = He(s, i);
|
|
2912
2896
|
let {
|
|
2913
|
-
mainAxis:
|
|
2914
|
-
crossAxis:
|
|
2897
|
+
mainAxis: f,
|
|
2898
|
+
crossAxis: A,
|
|
2915
2899
|
alignmentAxis: m
|
|
2916
2900
|
} = typeof R == "number" ? {
|
|
2917
2901
|
mainAxis: R,
|
|
@@ -2922,12 +2906,12 @@ async function Ao(i, s) {
|
|
|
2922
2906
|
crossAxis: R.crossAxis || 0,
|
|
2923
2907
|
alignmentAxis: R.alignmentAxis
|
|
2924
2908
|
};
|
|
2925
|
-
return l && typeof m == "number" && (
|
|
2926
|
-
x:
|
|
2927
|
-
y:
|
|
2909
|
+
return l && typeof m == "number" && (A = l === "end" ? m * -1 : m), u ? {
|
|
2910
|
+
x: A * L,
|
|
2911
|
+
y: f * O
|
|
2928
2912
|
} : {
|
|
2929
|
-
x:
|
|
2930
|
-
y:
|
|
2913
|
+
x: f * O,
|
|
2914
|
+
y: A * L
|
|
2931
2915
|
};
|
|
2932
2916
|
}
|
|
2933
2917
|
const Io = function(i) {
|
|
@@ -2941,7 +2925,7 @@ const Io = function(i) {
|
|
|
2941
2925
|
y: d,
|
|
2942
2926
|
placement: r,
|
|
2943
2927
|
middlewareData: l
|
|
2944
|
-
} = s, u = await
|
|
2928
|
+
} = s, u = await fo(s, i);
|
|
2945
2929
|
return r === ((o = l.offset) == null ? void 0 : o.placement) && (n = l.arrow) != null && n.alignmentOffset ? {} : {
|
|
2946
2930
|
x: a + u.x,
|
|
2947
2931
|
y: d + u.y,
|
|
@@ -2980,19 +2964,19 @@ const Io = function(i) {
|
|
|
2980
2964
|
} = He(i, s), O = {
|
|
2981
2965
|
x: o,
|
|
2982
2966
|
y: n
|
|
2983
|
-
}, L = await
|
|
2984
|
-
let
|
|
2967
|
+
}, L = await _t(s, u), R = ke(ge(a)), f = Dt(R);
|
|
2968
|
+
let A = O[f], m = O[R];
|
|
2985
2969
|
if (d) {
|
|
2986
|
-
const I =
|
|
2987
|
-
|
|
2970
|
+
const I = f === "y" ? "top" : "left", T = f === "y" ? "bottom" : "right", g = A + L[I], D = A - L[T];
|
|
2971
|
+
A = ct(g, A, D);
|
|
2988
2972
|
}
|
|
2989
2973
|
if (r) {
|
|
2990
|
-
const I = R === "y" ? "top" : "left", T = R === "y" ? "bottom" : "right", g = m + L[I],
|
|
2991
|
-
m = ct(g, m,
|
|
2974
|
+
const I = R === "y" ? "top" : "left", T = R === "y" ? "bottom" : "right", g = m + L[I], D = m - L[T];
|
|
2975
|
+
m = ct(g, m, D);
|
|
2992
2976
|
}
|
|
2993
2977
|
const N = l.fn({
|
|
2994
2978
|
...s,
|
|
2995
|
-
[
|
|
2979
|
+
[f]: A,
|
|
2996
2980
|
[R]: m
|
|
2997
2981
|
});
|
|
2998
2982
|
return {
|
|
@@ -3001,7 +2985,7 @@ const Io = function(i) {
|
|
|
3001
2985
|
x: N.x - o,
|
|
3002
2986
|
y: N.y - n,
|
|
3003
2987
|
enabled: {
|
|
3004
|
-
[
|
|
2988
|
+
[f]: d,
|
|
3005
2989
|
[R]: r
|
|
3006
2990
|
}
|
|
3007
2991
|
}
|
|
@@ -3009,10 +2993,10 @@ const Io = function(i) {
|
|
|
3009
2993
|
}
|
|
3010
2994
|
};
|
|
3011
2995
|
};
|
|
3012
|
-
function
|
|
2996
|
+
function Me() {
|
|
3013
2997
|
return typeof window < "u";
|
|
3014
2998
|
}
|
|
3015
|
-
function
|
|
2999
|
+
function pe(i) {
|
|
3016
3000
|
return je(i) ? (i.nodeName || "").toLowerCase() : "#document";
|
|
3017
3001
|
}
|
|
3018
3002
|
function z(i) {
|
|
@@ -3024,18 +3008,18 @@ function ie(i) {
|
|
|
3024
3008
|
return (s = (je(i) ? i.ownerDocument : i.document) || window.document) == null ? void 0 : s.documentElement;
|
|
3025
3009
|
}
|
|
3026
3010
|
function je(i) {
|
|
3027
|
-
return
|
|
3011
|
+
return Me() ? i instanceof Node || i instanceof z(i).Node : !1;
|
|
3028
3012
|
}
|
|
3029
3013
|
function q(i) {
|
|
3030
|
-
return
|
|
3014
|
+
return Me() ? i instanceof Element || i instanceof z(i).Element : !1;
|
|
3031
3015
|
}
|
|
3032
3016
|
function oe(i) {
|
|
3033
|
-
return
|
|
3017
|
+
return Me() ? i instanceof HTMLElement || i instanceof z(i).HTMLElement : !1;
|
|
3034
3018
|
}
|
|
3035
3019
|
function Et(i) {
|
|
3036
|
-
return !
|
|
3020
|
+
return !Me() || typeof ShadowRoot > "u" ? !1 : i instanceof ShadowRoot || i instanceof z(i).ShadowRoot;
|
|
3037
3021
|
}
|
|
3038
|
-
function
|
|
3022
|
+
function Ce(i) {
|
|
3039
3023
|
const {
|
|
3040
3024
|
overflow: s,
|
|
3041
3025
|
overflowX: o,
|
|
@@ -3045,9 +3029,9 @@ function De(i) {
|
|
|
3045
3029
|
return /auto|scroll|overlay|hidden|clip/.test(s + n + o) && !["inline", "contents"].includes(a);
|
|
3046
3030
|
}
|
|
3047
3031
|
function go(i) {
|
|
3048
|
-
return ["table", "td", "th"].includes(
|
|
3032
|
+
return ["table", "td", "th"].includes(pe(i));
|
|
3049
3033
|
}
|
|
3050
|
-
function
|
|
3034
|
+
function xe(i) {
|
|
3051
3035
|
return [":popover-open", ":modal"].some((s) => {
|
|
3052
3036
|
try {
|
|
3053
3037
|
return i.matches(s);
|
|
@@ -3065,7 +3049,7 @@ function mo(i) {
|
|
|
3065
3049
|
for (; oe(s) && !Te(s); ) {
|
|
3066
3050
|
if (Je(s))
|
|
3067
3051
|
return s;
|
|
3068
|
-
if (
|
|
3052
|
+
if (xe(s))
|
|
3069
3053
|
return null;
|
|
3070
3054
|
s = de(s);
|
|
3071
3055
|
}
|
|
@@ -3075,7 +3059,7 @@ function et() {
|
|
|
3075
3059
|
return typeof CSS > "u" || !CSS.supports ? !1 : CSS.supports("-webkit-backdrop-filter", "none");
|
|
3076
3060
|
}
|
|
3077
3061
|
function Te(i) {
|
|
3078
|
-
return ["html", "body", "#document"].includes(
|
|
3062
|
+
return ["html", "body", "#document"].includes(pe(i));
|
|
3079
3063
|
}
|
|
3080
3064
|
function j(i) {
|
|
3081
3065
|
return z(i).getComputedStyle(i);
|
|
@@ -3090,7 +3074,7 @@ function Ye(i) {
|
|
|
3090
3074
|
};
|
|
3091
3075
|
}
|
|
3092
3076
|
function de(i) {
|
|
3093
|
-
if (
|
|
3077
|
+
if (pe(i) === "html")
|
|
3094
3078
|
return i;
|
|
3095
3079
|
const s = (
|
|
3096
3080
|
// Step into the shadow DOM of the parent of a slotted node.
|
|
@@ -3101,24 +3085,24 @@ function de(i) {
|
|
|
3101
3085
|
);
|
|
3102
3086
|
return Et(s) ? s.host : s;
|
|
3103
3087
|
}
|
|
3104
|
-
function
|
|
3088
|
+
function bt(i) {
|
|
3105
3089
|
const s = de(i);
|
|
3106
|
-
return Te(s) ? i.ownerDocument ? i.ownerDocument.body : i.body : oe(s) &&
|
|
3090
|
+
return Te(s) ? i.ownerDocument ? i.ownerDocument.body : i.body : oe(s) && Ce(s) ? s : bt(s);
|
|
3107
3091
|
}
|
|
3108
|
-
function
|
|
3092
|
+
function De(i, s, o) {
|
|
3109
3093
|
var n;
|
|
3110
3094
|
s === void 0 && (s = []), o === void 0 && (o = !0);
|
|
3111
|
-
const a =
|
|
3095
|
+
const a = bt(i), d = a === ((n = i.ownerDocument) == null ? void 0 : n.body), r = z(a);
|
|
3112
3096
|
if (d) {
|
|
3113
3097
|
const l = $e(r);
|
|
3114
|
-
return s.concat(r, r.visualViewport || [],
|
|
3098
|
+
return s.concat(r, r.visualViewport || [], Ce(a) ? a : [], l && o ? De(l) : []);
|
|
3115
3099
|
}
|
|
3116
|
-
return s.concat(a,
|
|
3100
|
+
return s.concat(a, De(a, [], o));
|
|
3117
3101
|
}
|
|
3118
3102
|
function $e(i) {
|
|
3119
3103
|
return i.parent && Object.getPrototypeOf(i.parent) ? i.frameElement : null;
|
|
3120
3104
|
}
|
|
3121
|
-
function
|
|
3105
|
+
function Bt(i) {
|
|
3122
3106
|
const s = j(i);
|
|
3123
3107
|
let o = parseFloat(s.width) || 0, n = parseFloat(s.height) || 0;
|
|
3124
3108
|
const a = oe(i), d = a ? i.offsetWidth : o, r = a ? i.offsetHeight : n, l = Ue(o) !== d || Ue(n) !== r;
|
|
@@ -3131,7 +3115,7 @@ function bt(i) {
|
|
|
3131
3115
|
function tt(i) {
|
|
3132
3116
|
return q(i) ? i : i.contextElement;
|
|
3133
3117
|
}
|
|
3134
|
-
function
|
|
3118
|
+
function Ie(i) {
|
|
3135
3119
|
const s = tt(i);
|
|
3136
3120
|
if (!oe(s))
|
|
3137
3121
|
return te(1);
|
|
@@ -3139,7 +3123,7 @@ function Ae(i) {
|
|
|
3139
3123
|
width: n,
|
|
3140
3124
|
height: a,
|
|
3141
3125
|
$: d
|
|
3142
|
-
} =
|
|
3126
|
+
} = Bt(s);
|
|
3143
3127
|
let r = (d ? Ue(o.width) : o.width) / n, l = (d ? Ue(o.height) : o.height) / a;
|
|
3144
3128
|
return (!r || !Number.isFinite(r)) && (r = 1), (!l || !Number.isFinite(l)) && (l = 1), {
|
|
3145
3129
|
x: r,
|
|
@@ -3147,29 +3131,29 @@ function Ae(i) {
|
|
|
3147
3131
|
};
|
|
3148
3132
|
}
|
|
3149
3133
|
const No = /* @__PURE__ */ te(0);
|
|
3150
|
-
function
|
|
3134
|
+
function Ut(i) {
|
|
3151
3135
|
const s = z(i);
|
|
3152
3136
|
return !et() || !s.visualViewport ? No : {
|
|
3153
3137
|
x: s.visualViewport.offsetLeft,
|
|
3154
3138
|
y: s.visualViewport.offsetTop
|
|
3155
3139
|
};
|
|
3156
3140
|
}
|
|
3157
|
-
function
|
|
3141
|
+
function Fo(i, s, o) {
|
|
3158
3142
|
return s === void 0 && (s = !1), !o || s && o !== z(i) ? !1 : s;
|
|
3159
3143
|
}
|
|
3160
|
-
function
|
|
3144
|
+
function Oe(i, s, o, n) {
|
|
3161
3145
|
s === void 0 && (s = !1), o === void 0 && (o = !1);
|
|
3162
3146
|
const a = i.getBoundingClientRect(), d = tt(i);
|
|
3163
3147
|
let r = te(1);
|
|
3164
|
-
s && (n ? q(n) && (r =
|
|
3165
|
-
const l =
|
|
3148
|
+
s && (n ? q(n) && (r = Ie(n)) : r = Ie(i));
|
|
3149
|
+
const l = Fo(d, o, n) ? Ut(d) : te(0);
|
|
3166
3150
|
let u = (a.left + l.x) / r.x, O = (a.top + l.y) / r.y, L = a.width / r.x, R = a.height / r.y;
|
|
3167
3151
|
if (d) {
|
|
3168
|
-
const
|
|
3169
|
-
let m =
|
|
3170
|
-
for (; N && n &&
|
|
3171
|
-
const I =
|
|
3172
|
-
u *= I.x, O *= I.y, L *= I.x, R *= I.y, u +=
|
|
3152
|
+
const f = z(d), A = n && q(n) ? z(n) : n;
|
|
3153
|
+
let m = f, N = $e(m);
|
|
3154
|
+
for (; N && n && A !== m; ) {
|
|
3155
|
+
const I = Ie(N), T = N.getBoundingClientRect(), g = j(N), D = T.left + (N.clientLeft + parseFloat(g.paddingLeft)) * I.x, y = T.top + (N.clientTop + parseFloat(g.paddingTop)) * I.y;
|
|
3156
|
+
u *= I.x, O *= I.y, L *= I.x, R *= I.y, u += D, O += y, m = z(N), N = $e(m);
|
|
3173
3157
|
}
|
|
3174
3158
|
}
|
|
3175
3159
|
return Pe({
|
|
@@ -3181,9 +3165,9 @@ function Ee(i, s, o, n) {
|
|
|
3181
3165
|
}
|
|
3182
3166
|
function st(i, s) {
|
|
3183
3167
|
const o = Ye(i).scrollLeft;
|
|
3184
|
-
return s ? s.left + o :
|
|
3168
|
+
return s ? s.left + o : Oe(ie(i)).left + o;
|
|
3185
3169
|
}
|
|
3186
|
-
function
|
|
3170
|
+
function Pt(i, s, o) {
|
|
3187
3171
|
o === void 0 && (o = !1);
|
|
3188
3172
|
const n = i.getBoundingClientRect(), a = n.left + s.scrollLeft - (o ? 0 : (
|
|
3189
3173
|
// RTL <body> scrollbar.
|
|
@@ -3194,14 +3178,14 @@ function Ut(i, s, o) {
|
|
|
3194
3178
|
y: d
|
|
3195
3179
|
};
|
|
3196
3180
|
}
|
|
3197
|
-
function
|
|
3181
|
+
function So(i) {
|
|
3198
3182
|
let {
|
|
3199
3183
|
elements: s,
|
|
3200
3184
|
rect: o,
|
|
3201
3185
|
offsetParent: n,
|
|
3202
3186
|
strategy: a
|
|
3203
3187
|
} = i;
|
|
3204
|
-
const d = a === "fixed", r = ie(n), l = s ?
|
|
3188
|
+
const d = a === "fixed", r = ie(n), l = s ? xe(s.floating) : !1;
|
|
3205
3189
|
if (n === r || l && d)
|
|
3206
3190
|
return o;
|
|
3207
3191
|
let u = {
|
|
@@ -3209,22 +3193,22 @@ function Fo(i) {
|
|
|
3209
3193
|
scrollTop: 0
|
|
3210
3194
|
}, O = te(1);
|
|
3211
3195
|
const L = te(0), R = oe(n);
|
|
3212
|
-
if ((R || !R && !d) && ((
|
|
3213
|
-
const
|
|
3214
|
-
O =
|
|
3196
|
+
if ((R || !R && !d) && ((pe(n) !== "body" || Ce(r)) && (u = Ye(n)), oe(n))) {
|
|
3197
|
+
const A = Oe(n);
|
|
3198
|
+
O = Ie(n), L.x = A.x + n.clientLeft, L.y = A.y + n.clientTop;
|
|
3215
3199
|
}
|
|
3216
|
-
const
|
|
3200
|
+
const f = r && !R && !d ? Pt(r, u, !0) : te(0);
|
|
3217
3201
|
return {
|
|
3218
3202
|
width: o.width * O.x,
|
|
3219
3203
|
height: o.height * O.y,
|
|
3220
|
-
x: o.x * O.x - u.scrollLeft * O.x + L.x +
|
|
3221
|
-
y: o.y * O.y - u.scrollTop * O.y + L.y +
|
|
3204
|
+
x: o.x * O.x - u.scrollLeft * O.x + L.x + f.x,
|
|
3205
|
+
y: o.y * O.y - u.scrollTop * O.y + L.y + f.y
|
|
3222
3206
|
};
|
|
3223
3207
|
}
|
|
3224
|
-
function
|
|
3208
|
+
function ho(i) {
|
|
3225
3209
|
return Array.from(i.getClientRects());
|
|
3226
3210
|
}
|
|
3227
|
-
function
|
|
3211
|
+
function Do(i) {
|
|
3228
3212
|
const s = ie(i), o = Ye(i), n = i.ownerDocument.body, a = ue(s.scrollWidth, s.clientWidth, n.scrollWidth, n.clientWidth), d = ue(s.scrollHeight, s.clientHeight, n.scrollHeight, n.clientHeight);
|
|
3229
3213
|
let r = -o.scrollLeft + st(i);
|
|
3230
3214
|
const l = -o.scrollTop;
|
|
@@ -3235,7 +3219,7 @@ function ho(i) {
|
|
|
3235
3219
|
y: l
|
|
3236
3220
|
};
|
|
3237
3221
|
}
|
|
3238
|
-
function
|
|
3222
|
+
function Co(i, s) {
|
|
3239
3223
|
const o = z(i), n = ie(i), a = o.visualViewport;
|
|
3240
3224
|
let d = n.clientWidth, r = n.clientHeight, l = 0, u = 0;
|
|
3241
3225
|
if (a) {
|
|
@@ -3251,7 +3235,7 @@ function Do(i, s) {
|
|
|
3251
3235
|
};
|
|
3252
3236
|
}
|
|
3253
3237
|
function yo(i, s) {
|
|
3254
|
-
const o =
|
|
3238
|
+
const o = Oe(i, !0, s === "fixed"), n = o.top + i.clientTop, a = o.left + i.clientLeft, d = oe(i) ? Ie(i) : te(1), r = i.clientWidth * d.x, l = i.clientHeight * d.y, u = a * d.x, O = n * d.y;
|
|
3255
3239
|
return {
|
|
3256
3240
|
width: r,
|
|
3257
3241
|
height: l,
|
|
@@ -3262,13 +3246,13 @@ function yo(i, s) {
|
|
|
3262
3246
|
function Ot(i, s, o) {
|
|
3263
3247
|
let n;
|
|
3264
3248
|
if (s === "viewport")
|
|
3265
|
-
n =
|
|
3249
|
+
n = Co(i, o);
|
|
3266
3250
|
else if (s === "document")
|
|
3267
|
-
n =
|
|
3251
|
+
n = Do(ie(i));
|
|
3268
3252
|
else if (q(s))
|
|
3269
3253
|
n = yo(s, o);
|
|
3270
3254
|
else {
|
|
3271
|
-
const a =
|
|
3255
|
+
const a = Ut(i);
|
|
3272
3256
|
n = {
|
|
3273
3257
|
x: s.x - a.x,
|
|
3274
3258
|
y: s.y - a.y,
|
|
@@ -3278,20 +3262,20 @@ function Ot(i, s, o) {
|
|
|
3278
3262
|
}
|
|
3279
3263
|
return Pe(n);
|
|
3280
3264
|
}
|
|
3281
|
-
function
|
|
3265
|
+
function wt(i, s) {
|
|
3282
3266
|
const o = de(i);
|
|
3283
|
-
return o === s || !q(o) || Te(o) ? !1 : j(o).position === "fixed" ||
|
|
3267
|
+
return o === s || !q(o) || Te(o) ? !1 : j(o).position === "fixed" || wt(o, s);
|
|
3284
3268
|
}
|
|
3285
|
-
function
|
|
3269
|
+
function _o(i, s) {
|
|
3286
3270
|
const o = s.get(i);
|
|
3287
3271
|
if (o)
|
|
3288
3272
|
return o;
|
|
3289
|
-
let n =
|
|
3273
|
+
let n = De(i, [], !1).filter((l) => q(l) && pe(l) !== "body"), a = null;
|
|
3290
3274
|
const d = j(i).position === "fixed";
|
|
3291
3275
|
let r = d ? de(i) : i;
|
|
3292
3276
|
for (; q(r) && !Te(r); ) {
|
|
3293
3277
|
const l = j(r), u = Je(r);
|
|
3294
|
-
!u && l.position === "fixed" && (a = null), (d ? !u && !a : !u && l.position === "static" && !!a && ["absolute", "fixed"].includes(a.position) ||
|
|
3278
|
+
!u && l.position === "fixed" && (a = null), (d ? !u && !a : !u && l.position === "static" && !!a && ["absolute", "fixed"].includes(a.position) || Ce(r) && !u && wt(i, r)) ? n = n.filter((L) => L !== r) : a = l, r = de(r);
|
|
3295
3279
|
}
|
|
3296
3280
|
return s.set(i, n), n;
|
|
3297
3281
|
}
|
|
@@ -3302,7 +3286,7 @@ function bo(i) {
|
|
|
3302
3286
|
rootBoundary: n,
|
|
3303
3287
|
strategy: a
|
|
3304
3288
|
} = i;
|
|
3305
|
-
const r = [...o === "clippingAncestors" ?
|
|
3289
|
+
const r = [...o === "clippingAncestors" ? xe(s) ? [] : _o(s, this._c) : [].concat(o), n], l = r[0], u = r.reduce((O, L) => {
|
|
3306
3290
|
const R = Ot(s, L, a);
|
|
3307
3291
|
return O.top = ue(R.top, O.top), O.right = Be(R.right, O.right), O.bottom = Be(R.bottom, O.bottom), O.left = ue(R.left, O.left), O;
|
|
3308
3292
|
}, Ot(s, l, a));
|
|
@@ -3317,26 +3301,25 @@ function Bo(i) {
|
|
|
3317
3301
|
const {
|
|
3318
3302
|
width: s,
|
|
3319
3303
|
height: o
|
|
3320
|
-
} =
|
|
3304
|
+
} = Bt(i);
|
|
3321
3305
|
return {
|
|
3322
3306
|
width: s,
|
|
3323
3307
|
height: o
|
|
3324
3308
|
};
|
|
3325
3309
|
}
|
|
3326
3310
|
function Uo(i, s, o) {
|
|
3327
|
-
const n = oe(s), a = ie(s), d = o === "fixed", r =
|
|
3311
|
+
const n = oe(s), a = ie(s), d = o === "fixed", r = Oe(i, !0, d, s);
|
|
3328
3312
|
let l = {
|
|
3329
3313
|
scrollLeft: 0,
|
|
3330
3314
|
scrollTop: 0
|
|
3331
3315
|
};
|
|
3332
3316
|
const u = te(0);
|
|
3333
3317
|
if (n || !n && !d)
|
|
3334
|
-
if ((
|
|
3335
|
-
const
|
|
3336
|
-
u.x =
|
|
3337
|
-
} else
|
|
3338
|
-
|
|
3339
|
-
const O = a && !n && !d ? Ut(a, l) : te(0), L = r.left + l.scrollLeft - u.x - O.x, R = r.top + l.scrollTop - u.y - O.y;
|
|
3318
|
+
if ((pe(s) !== "body" || Ce(a)) && (l = Ye(s)), n) {
|
|
3319
|
+
const f = Oe(s, !0, d, s);
|
|
3320
|
+
u.x = f.x + s.clientLeft, u.y = f.y + s.clientTop;
|
|
3321
|
+
} else a && (u.x = st(a));
|
|
3322
|
+
const O = a && !n && !d ? Pt(a, l) : te(0), L = r.left + l.scrollLeft - u.x - O.x, R = r.top + l.scrollTop - u.y - O.y;
|
|
3340
3323
|
return {
|
|
3341
3324
|
x: L,
|
|
3342
3325
|
y: R,
|
|
@@ -3357,7 +3340,7 @@ function Lt(i, s) {
|
|
|
3357
3340
|
}
|
|
3358
3341
|
function Gt(i, s) {
|
|
3359
3342
|
const o = z(i);
|
|
3360
|
-
if (
|
|
3343
|
+
if (xe(i))
|
|
3361
3344
|
return o;
|
|
3362
3345
|
if (!oe(i)) {
|
|
3363
3346
|
let a = de(i);
|
|
@@ -3385,22 +3368,22 @@ const Po = async function(i) {
|
|
|
3385
3368
|
}
|
|
3386
3369
|
};
|
|
3387
3370
|
};
|
|
3388
|
-
function
|
|
3371
|
+
function wo(i) {
|
|
3389
3372
|
return j(i).direction === "rtl";
|
|
3390
3373
|
}
|
|
3391
|
-
const
|
|
3392
|
-
convertOffsetParentRelativeRectToViewportRelativeRect:
|
|
3374
|
+
const Go = {
|
|
3375
|
+
convertOffsetParentRelativeRectToViewportRelativeRect: So,
|
|
3393
3376
|
getDocumentElement: ie,
|
|
3394
3377
|
getClippingRect: bo,
|
|
3395
3378
|
getOffsetParent: Gt,
|
|
3396
3379
|
getElementRects: Po,
|
|
3397
|
-
getClientRects:
|
|
3380
|
+
getClientRects: ho,
|
|
3398
3381
|
getDimensions: Bo,
|
|
3399
|
-
getScale:
|
|
3382
|
+
getScale: Ie,
|
|
3400
3383
|
isElement: q,
|
|
3401
|
-
isRTL:
|
|
3384
|
+
isRTL: wo
|
|
3402
3385
|
};
|
|
3403
|
-
function
|
|
3386
|
+
function Ht(i, s) {
|
|
3404
3387
|
return i.x === s.x && i.y === s.y && i.width === s.width && i.height === s.height;
|
|
3405
3388
|
}
|
|
3406
3389
|
function Ho(i, s) {
|
|
@@ -3415,41 +3398,41 @@ function Ho(i, s) {
|
|
|
3415
3398
|
const O = i.getBoundingClientRect(), {
|
|
3416
3399
|
left: L,
|
|
3417
3400
|
top: R,
|
|
3418
|
-
width:
|
|
3419
|
-
height:
|
|
3401
|
+
width: f,
|
|
3402
|
+
height: A
|
|
3420
3403
|
} = O;
|
|
3421
|
-
if (l || s(), !
|
|
3404
|
+
if (l || s(), !f || !A)
|
|
3422
3405
|
return;
|
|
3423
|
-
const m =
|
|
3406
|
+
const m = _e(R), N = _e(a.clientWidth - (L + f)), I = _e(a.clientHeight - (R + A)), T = _e(L), D = {
|
|
3424
3407
|
rootMargin: -m + "px " + -N + "px " + -I + "px " + -T + "px",
|
|
3425
3408
|
threshold: ue(0, Be(1, u)) || 1
|
|
3426
3409
|
};
|
|
3427
|
-
let
|
|
3428
|
-
function
|
|
3429
|
-
const
|
|
3430
|
-
if (
|
|
3431
|
-
if (!
|
|
3410
|
+
let y = !0;
|
|
3411
|
+
function h(k) {
|
|
3412
|
+
const _ = k[0].intersectionRatio;
|
|
3413
|
+
if (_ !== u) {
|
|
3414
|
+
if (!y)
|
|
3432
3415
|
return r();
|
|
3433
|
-
|
|
3416
|
+
_ ? r(!1, _) : n = setTimeout(() => {
|
|
3434
3417
|
r(!1, 1e-7);
|
|
3435
3418
|
}, 1e3);
|
|
3436
3419
|
}
|
|
3437
|
-
|
|
3420
|
+
_ === 1 && !Ht(O, i.getBoundingClientRect()) && r(), y = !1;
|
|
3438
3421
|
}
|
|
3439
3422
|
try {
|
|
3440
|
-
o = new IntersectionObserver(
|
|
3441
|
-
...
|
|
3423
|
+
o = new IntersectionObserver(h, {
|
|
3424
|
+
...D,
|
|
3442
3425
|
// Handle <iframe>s
|
|
3443
3426
|
root: a.ownerDocument
|
|
3444
3427
|
});
|
|
3445
3428
|
} catch {
|
|
3446
|
-
o = new IntersectionObserver(
|
|
3429
|
+
o = new IntersectionObserver(h, D);
|
|
3447
3430
|
}
|
|
3448
3431
|
o.observe(i);
|
|
3449
3432
|
}
|
|
3450
3433
|
return r(!0), d;
|
|
3451
3434
|
}
|
|
3452
|
-
function
|
|
3435
|
+
function ko(i, s, o, n) {
|
|
3453
3436
|
n === void 0 && (n = {});
|
|
3454
3437
|
const {
|
|
3455
3438
|
ancestorScroll: a = !0,
|
|
@@ -3457,37 +3440,37 @@ function xo(i, s, o, n) {
|
|
|
3457
3440
|
elementResize: r = typeof ResizeObserver == "function",
|
|
3458
3441
|
layoutShift: l = typeof IntersectionObserver == "function",
|
|
3459
3442
|
animationFrame: u = !1
|
|
3460
|
-
} = n, O = tt(i), L = a || d ? [...O ?
|
|
3443
|
+
} = n, O = tt(i), L = a || d ? [...O ? De(O) : [], ...De(s)] : [];
|
|
3461
3444
|
L.forEach((T) => {
|
|
3462
3445
|
a && T.addEventListener("scroll", o, {
|
|
3463
3446
|
passive: !0
|
|
3464
3447
|
}), d && T.addEventListener("resize", o);
|
|
3465
3448
|
});
|
|
3466
3449
|
const R = O && l ? Ho(O, o) : null;
|
|
3467
|
-
let
|
|
3468
|
-
r && (
|
|
3450
|
+
let f = -1, A = null;
|
|
3451
|
+
r && (A = new ResizeObserver((T) => {
|
|
3469
3452
|
let [g] = T;
|
|
3470
|
-
g && g.target === O &&
|
|
3471
|
-
var
|
|
3472
|
-
(
|
|
3453
|
+
g && g.target === O && A && (A.unobserve(s), cancelAnimationFrame(f), f = requestAnimationFrame(() => {
|
|
3454
|
+
var D;
|
|
3455
|
+
(D = A) == null || D.observe(s);
|
|
3473
3456
|
})), o();
|
|
3474
|
-
}), O && !u &&
|
|
3475
|
-
let m, N = u ?
|
|
3457
|
+
}), O && !u && A.observe(O), A.observe(s));
|
|
3458
|
+
let m, N = u ? Oe(i) : null;
|
|
3476
3459
|
u && I();
|
|
3477
3460
|
function I() {
|
|
3478
|
-
const T =
|
|
3479
|
-
N && !
|
|
3461
|
+
const T = Oe(i);
|
|
3462
|
+
N && !Ht(N, T) && o(), N = T, m = requestAnimationFrame(I);
|
|
3480
3463
|
}
|
|
3481
3464
|
return o(), () => {
|
|
3482
3465
|
var T;
|
|
3483
3466
|
L.forEach((g) => {
|
|
3484
3467
|
a && g.removeEventListener("scroll", o), d && g.removeEventListener("resize", o);
|
|
3485
|
-
}), R == null || R(), (T =
|
|
3468
|
+
}), R == null || R(), (T = A) == null || T.disconnect(), A = null, u && cancelAnimationFrame(m);
|
|
3486
3469
|
};
|
|
3487
3470
|
}
|
|
3488
|
-
const Rt = Io, pt =
|
|
3471
|
+
const Rt = Io, pt = Ao, vt = To, Mo = (i, s, o) => {
|
|
3489
3472
|
const n = /* @__PURE__ */ new Map(), a = {
|
|
3490
|
-
platform:
|
|
3473
|
+
platform: Go,
|
|
3491
3474
|
...o
|
|
3492
3475
|
}, d = {
|
|
3493
3476
|
...a.platform,
|
|
@@ -3498,167 +3481,165 @@ const Rt = Io, pt = fo, vt = To, ko = (i, s, o) => {
|
|
|
3498
3481
|
platform: d
|
|
3499
3482
|
});
|
|
3500
3483
|
};
|
|
3501
|
-
function
|
|
3484
|
+
function xo(i) {
|
|
3502
3485
|
return i != null && typeof i == "object" && "$el" in i;
|
|
3503
3486
|
}
|
|
3504
|
-
function
|
|
3505
|
-
if (
|
|
3487
|
+
function At(i) {
|
|
3488
|
+
if (xo(i)) {
|
|
3506
3489
|
const s = i.$el;
|
|
3507
|
-
return je(s) &&
|
|
3490
|
+
return je(s) && pe(s) === "#comment" ? null : s;
|
|
3508
3491
|
}
|
|
3509
3492
|
return i;
|
|
3510
3493
|
}
|
|
3511
|
-
function
|
|
3494
|
+
function Se(i) {
|
|
3512
3495
|
return typeof i == "function" ? i() : e(i);
|
|
3513
3496
|
}
|
|
3514
|
-
function
|
|
3497
|
+
function kt(i) {
|
|
3515
3498
|
return typeof window > "u" ? 1 : (i.ownerDocument.defaultView || window).devicePixelRatio || 1;
|
|
3516
3499
|
}
|
|
3517
|
-
function
|
|
3518
|
-
const o =
|
|
3500
|
+
function ft(i, s) {
|
|
3501
|
+
const o = kt(i);
|
|
3519
3502
|
return Math.round(s * o) / o;
|
|
3520
3503
|
}
|
|
3521
3504
|
function Yo(i, s, o) {
|
|
3522
3505
|
o === void 0 && (o = {});
|
|
3523
3506
|
const n = o.whileElementsMounted, a = U(() => {
|
|
3524
|
-
var
|
|
3525
|
-
return (
|
|
3526
|
-
}), d = U(() =>
|
|
3527
|
-
var
|
|
3528
|
-
return (
|
|
3507
|
+
var _;
|
|
3508
|
+
return (_ = Se(o.open)) != null ? _ : !0;
|
|
3509
|
+
}), d = U(() => Se(o.middleware)), r = U(() => {
|
|
3510
|
+
var _;
|
|
3511
|
+
return (_ = Se(o.placement)) != null ? _ : "bottom";
|
|
3529
3512
|
}), l = U(() => {
|
|
3530
|
-
var
|
|
3531
|
-
return (
|
|
3513
|
+
var _;
|
|
3514
|
+
return (_ = Se(o.strategy)) != null ? _ : "absolute";
|
|
3532
3515
|
}), u = U(() => {
|
|
3533
|
-
var
|
|
3534
|
-
return (
|
|
3535
|
-
}), O = U(() =>
|
|
3536
|
-
const
|
|
3537
|
-
position:
|
|
3516
|
+
var _;
|
|
3517
|
+
return (_ = Se(o.transform)) != null ? _ : !0;
|
|
3518
|
+
}), O = U(() => At(i.value)), L = U(() => At(s.value)), R = F(0), f = F(0), A = F(l.value), m = F(r.value), N = Kt({}), I = F(!1), T = U(() => {
|
|
3519
|
+
const _ = {
|
|
3520
|
+
position: A.value,
|
|
3538
3521
|
left: "0",
|
|
3539
3522
|
top: "0"
|
|
3540
3523
|
};
|
|
3541
3524
|
if (!L.value)
|
|
3542
|
-
return
|
|
3543
|
-
const B =
|
|
3525
|
+
return _;
|
|
3526
|
+
const B = ft(L.value, R.value), X = ft(L.value, f.value);
|
|
3544
3527
|
return u.value ? {
|
|
3545
|
-
...
|
|
3528
|
+
..._,
|
|
3546
3529
|
transform: "translate(" + B + "px, " + X + "px)",
|
|
3547
|
-
...
|
|
3530
|
+
...kt(L.value) >= 1.5 && {
|
|
3548
3531
|
willChange: "transform"
|
|
3549
3532
|
}
|
|
3550
3533
|
} : {
|
|
3551
|
-
position:
|
|
3534
|
+
position: A.value,
|
|
3552
3535
|
left: B + "px",
|
|
3553
3536
|
top: X + "px"
|
|
3554
3537
|
};
|
|
3555
3538
|
});
|
|
3556
3539
|
let g;
|
|
3557
|
-
function
|
|
3540
|
+
function D() {
|
|
3558
3541
|
if (O.value == null || L.value == null)
|
|
3559
3542
|
return;
|
|
3560
|
-
const
|
|
3561
|
-
|
|
3543
|
+
const _ = a.value;
|
|
3544
|
+
Mo(O.value, L.value, {
|
|
3562
3545
|
middleware: d.value,
|
|
3563
3546
|
placement: r.value,
|
|
3564
3547
|
strategy: l.value
|
|
3565
3548
|
}).then((B) => {
|
|
3566
|
-
R.value = B.x,
|
|
3549
|
+
R.value = B.x, f.value = B.y, A.value = B.strategy, m.value = B.placement, N.value = B.middlewareData, I.value = _ !== !1;
|
|
3567
3550
|
});
|
|
3568
3551
|
}
|
|
3569
|
-
function
|
|
3552
|
+
function y() {
|
|
3570
3553
|
typeof g == "function" && (g(), g = void 0);
|
|
3571
3554
|
}
|
|
3572
|
-
function
|
|
3573
|
-
if (
|
|
3574
|
-
|
|
3555
|
+
function h() {
|
|
3556
|
+
if (y(), n === void 0) {
|
|
3557
|
+
D();
|
|
3575
3558
|
return;
|
|
3576
3559
|
}
|
|
3577
3560
|
if (O.value != null && L.value != null) {
|
|
3578
|
-
g = n(O.value, L.value,
|
|
3561
|
+
g = n(O.value, L.value, D);
|
|
3579
3562
|
return;
|
|
3580
3563
|
}
|
|
3581
3564
|
}
|
|
3582
|
-
function
|
|
3565
|
+
function k() {
|
|
3583
3566
|
a.value || (I.value = !1);
|
|
3584
3567
|
}
|
|
3585
|
-
return K([d, r, l, a],
|
|
3568
|
+
return K([d, r, l, a], D, {
|
|
3586
3569
|
flush: "sync"
|
|
3587
|
-
}), K([O, L],
|
|
3570
|
+
}), K([O, L], h, {
|
|
3588
3571
|
flush: "sync"
|
|
3589
|
-
}), K(a,
|
|
3572
|
+
}), K(a, k, {
|
|
3590
3573
|
flush: "sync"
|
|
3591
|
-
}), zt() && Qt(
|
|
3592
|
-
x:
|
|
3593
|
-
y:
|
|
3594
|
-
strategy:
|
|
3595
|
-
placement:
|
|
3596
|
-
middlewareData:
|
|
3597
|
-
isPositioned:
|
|
3574
|
+
}), zt() && Qt(y), {
|
|
3575
|
+
x: Ae(R),
|
|
3576
|
+
y: Ae(f),
|
|
3577
|
+
strategy: Ae(A),
|
|
3578
|
+
placement: Ae(m),
|
|
3579
|
+
middlewareData: Ae(N),
|
|
3580
|
+
isPositioned: Ae(I),
|
|
3598
3581
|
floatingStyles: T,
|
|
3599
|
-
update:
|
|
3582
|
+
update: D
|
|
3600
3583
|
};
|
|
3601
3584
|
}
|
|
3602
|
-
const Wo = (i, s) => !(Array.isArray(s) ? s : [s]).some((n) => n.contains(i.target)), Xo = /* @__PURE__ */
|
|
3585
|
+
const Wo = (i, s) => !(Array.isArray(s) ? s : [s]).some((n) => n.contains(i.target)), Xo = /* @__PURE__ */ b({
|
|
3603
3586
|
__name: "TidePopover",
|
|
3604
3587
|
props: {
|
|
3605
3588
|
anchorId: {},
|
|
3606
3589
|
offset: { default: 16 }
|
|
3607
3590
|
},
|
|
3608
3591
|
setup(i) {
|
|
3609
|
-
const s = i, o =
|
|
3592
|
+
const s = i, o = F(null), n = F(null), a = F(null), d = F(!1), r = F(!1), l = F([pt(), Rt({ mainAxis: s.offset }), vt({ padding: 16 })]), u = U(() => d.value || r.value), { floatingStyles: O } = Yo(o, n, {
|
|
3610
3593
|
middleware: l,
|
|
3611
3594
|
strategy: "fixed",
|
|
3612
|
-
whileElementsMounted:
|
|
3613
|
-
}), L = (
|
|
3614
|
-
!o.value || !n.value || Wo(
|
|
3595
|
+
whileElementsMounted: ko
|
|
3596
|
+
}), L = (y) => {
|
|
3597
|
+
!o.value || !n.value || Wo(y, [o.value, n.value]) && (y.stopImmediatePropagation(), r.value = !1);
|
|
3615
3598
|
}, R = () => {
|
|
3616
3599
|
d.value = !0;
|
|
3617
|
-
}, A = () => {
|
|
3618
|
-
d.value = !1;
|
|
3619
3600
|
}, f = () => {
|
|
3620
|
-
|
|
3601
|
+
d.value = !1;
|
|
3602
|
+
}, A = (y) => {
|
|
3603
|
+
r.value = !0, y.stopPropagation(), y.preventDefault();
|
|
3621
3604
|
}, m = () => {
|
|
3622
|
-
if (!o.value)
|
|
3623
|
-
|
|
3624
|
-
o.value.addEventListener("mouseover", R), o.value.addEventListener("mouseleave", A), o.value.addEventListener("click", f);
|
|
3605
|
+
if (!o.value) return null;
|
|
3606
|
+
o.value.addEventListener("mouseover", R), o.value.addEventListener("mouseleave", f), o.value.addEventListener("click", A);
|
|
3625
3607
|
}, N = () => {
|
|
3626
|
-
if (!o.value)
|
|
3627
|
-
|
|
3628
|
-
|
|
3629
|
-
|
|
3630
|
-
b.key === "Escape" && (r.value = !1);
|
|
3608
|
+
if (!o.value) return null;
|
|
3609
|
+
o.value.removeEventListener("mouseover", R), o.value.removeEventListener("mouseleave", f), o.value.removeEventListener("click", A);
|
|
3610
|
+
}, I = (y) => {
|
|
3611
|
+
y.key === "Escape" && (r.value = !1);
|
|
3631
3612
|
}, T = () => {
|
|
3632
3613
|
a.value && (a.value.addEventListener("click", L, !0), a.value.addEventListener("keydown", I));
|
|
3633
3614
|
}, g = () => {
|
|
3634
3615
|
a.value && (a.value.removeEventListener("click", L, !0), a.value.removeEventListener("keydown", I));
|
|
3635
|
-
},
|
|
3616
|
+
}, D = () => {
|
|
3636
3617
|
o.value = document.getElementById(s.anchorId);
|
|
3637
3618
|
};
|
|
3638
3619
|
return K(
|
|
3639
3620
|
() => r.value,
|
|
3640
|
-
(
|
|
3641
|
-
|
|
3621
|
+
(y) => {
|
|
3622
|
+
y ? T() : g();
|
|
3642
3623
|
}
|
|
3643
3624
|
), K(
|
|
3644
3625
|
() => s.anchorId,
|
|
3645
3626
|
() => {
|
|
3646
|
-
N(),
|
|
3627
|
+
N(), D(), m();
|
|
3647
3628
|
}
|
|
3648
3629
|
), Zt(() => {
|
|
3649
3630
|
l.value = [pt(), Rt({ mainAxis: s.offset }), vt({ padding: 16 })];
|
|
3650
|
-
}),
|
|
3651
|
-
|
|
3652
|
-
}),
|
|
3653
|
-
|
|
3631
|
+
}), mt(() => {
|
|
3632
|
+
ht();
|
|
3633
|
+
}), we(() => {
|
|
3634
|
+
D(), a.value = document.documentElement, m();
|
|
3654
3635
|
}), It(() => {
|
|
3655
3636
|
N();
|
|
3656
|
-
}), (
|
|
3637
|
+
}), (y, h) => (E(), P(Nt, {
|
|
3657
3638
|
to: `#${e(be)}`
|
|
3658
3639
|
}, [
|
|
3659
|
-
|
|
3660
|
-
default:
|
|
3661
|
-
|
|
3640
|
+
x(qt, null, {
|
|
3641
|
+
default: Re(() => [
|
|
3642
|
+
Ge(v("div", {
|
|
3662
3643
|
class: c([
|
|
3663
3644
|
"tide-popover",
|
|
3664
3645
|
e(t).BG.SURFACE.DEFAULT,
|
|
@@ -3673,7 +3654,7 @@ const Wo = (i, s) => !(Array.isArray(s) ? s : [s]).some((n) => n.contains(i.targ
|
|
|
3673
3654
|
ref: n,
|
|
3674
3655
|
style: Ke({ ...e(O) })
|
|
3675
3656
|
}, [
|
|
3676
|
-
V(
|
|
3657
|
+
V(y.$slots, "default", {}, void 0, !0)
|
|
3677
3658
|
], 6), [
|
|
3678
3659
|
[jt, u.value]
|
|
3679
3660
|
])
|
|
@@ -3682,8 +3663,7 @@ const Wo = (i, s) => !(Array.isArray(s) ? s : [s]).some((n) => n.contains(i.targ
|
|
|
3682
3663
|
})
|
|
3683
3664
|
], 8, ["to"]));
|
|
3684
3665
|
}
|
|
3685
|
-
})
|
|
3686
|
-
const Ni = /* @__PURE__ */ w(Xo, [["__scopeId", "data-v-d3e831ff"]]), Vo = { class: "tide-seo-links" }, $o = ["href", "target"], Ko = /* @__PURE__ */ C({
|
|
3666
|
+
}), Fi = /* @__PURE__ */ G(Xo, [["__scopeId", "data-v-49335fed"]]), Vo = { class: "tide-seo-links" }, $o = ["href", "target"], Ko = /* @__PURE__ */ b({
|
|
3687
3667
|
__name: "TideSeoLinks",
|
|
3688
3668
|
props: {
|
|
3689
3669
|
heading: { default: "" },
|
|
@@ -3694,7 +3674,7 @@ const Ni = /* @__PURE__ */ w(Xo, [["__scopeId", "data-v-d3e831ff"]]), Vo = { cla
|
|
|
3694
3674
|
return (o, n) => (E(), p("section", Vo, [
|
|
3695
3675
|
v("h2", {
|
|
3696
3676
|
class: c([e(t).MARGIN.BOTTOM.HALF])
|
|
3697
|
-
},
|
|
3677
|
+
}, C(s.heading), 3),
|
|
3698
3678
|
v("ul", {
|
|
3699
3679
|
class: c([e(t).DISPLAY.FLEX, e(t).FLEX.WRAP, e(t).GAP.TWO, e(t).LIST_BULLETS.OFF])
|
|
3700
3680
|
}, [
|
|
@@ -3706,13 +3686,12 @@ const Ni = /* @__PURE__ */ w(Xo, [["__scopeId", "data-v-d3e831ff"]]), Vo = { cla
|
|
|
3706
3686
|
class: c([e(t).UNDERLINE.REST.OFF]),
|
|
3707
3687
|
href: a.url,
|
|
3708
3688
|
target: a.isNewTab ? e(se).BLANK : e(se).SELF
|
|
3709
|
-
},
|
|
3689
|
+
}, C(a.label), 11, $o)
|
|
3710
3690
|
], 2))), 128))
|
|
3711
3691
|
], 2)
|
|
3712
3692
|
]));
|
|
3713
3693
|
}
|
|
3714
|
-
})
|
|
3715
|
-
const _i = /* @__PURE__ */ w(Ko, [["__scopeId", "data-v-e655eb08"]]), zo = /* @__PURE__ */ C({
|
|
3694
|
+
}), Si = /* @__PURE__ */ G(Ko, [["__scopeId", "data-v-e655eb08"]]), zo = ["onClick", "onKeydown"], Qo = /* @__PURE__ */ b({
|
|
3716
3695
|
__name: "TideSheet",
|
|
3717
3696
|
props: {
|
|
3718
3697
|
isOpen: { type: Boolean },
|
|
@@ -3720,31 +3699,37 @@ const _i = /* @__PURE__ */ w(Ko, [["__scopeId", "data-v-e655eb08"]]), zo = /* @_
|
|
|
3720
3699
|
},
|
|
3721
3700
|
emits: ["back", "close"],
|
|
3722
3701
|
setup(i, { emit: s }) {
|
|
3723
|
-
const o = i, n =
|
|
3724
|
-
var
|
|
3725
|
-
(
|
|
3702
|
+
const o = i, n = F(null), a = () => {
|
|
3703
|
+
var u;
|
|
3704
|
+
(u = n.value) == null || u.showModal();
|
|
3726
3705
|
}, d = () => {
|
|
3727
|
-
var
|
|
3728
|
-
(
|
|
3706
|
+
var u;
|
|
3707
|
+
(u = n.value) == null || u.close();
|
|
3708
|
+
}, r = () => {
|
|
3709
|
+
s("close");
|
|
3710
|
+
}, l = (u) => {
|
|
3711
|
+
u.preventDefault(), s("close");
|
|
3729
3712
|
};
|
|
3730
3713
|
return K(
|
|
3731
3714
|
() => o.isOpen,
|
|
3732
|
-
(
|
|
3733
|
-
n.value && (
|
|
3715
|
+
(u) => {
|
|
3716
|
+
n.value && (u ? a() : d(), St(u));
|
|
3734
3717
|
}
|
|
3735
|
-
),
|
|
3736
|
-
|
|
3737
|
-
}),
|
|
3718
|
+
), mt(() => {
|
|
3719
|
+
ht();
|
|
3720
|
+
}), we(() => {
|
|
3738
3721
|
o.isOpen && a();
|
|
3739
|
-
}), (
|
|
3722
|
+
}), (u, O) => (E(), P(Nt, {
|
|
3740
3723
|
to: `#${e(be)}`
|
|
3741
3724
|
}, [
|
|
3742
3725
|
v("dialog", {
|
|
3743
3726
|
class: c(["tide-sheet", e(t).BG.INITIAL, e(t).HEIGHT.FULL, e(t).WIDTH.FULL, e(t).OVERFLOW.XY.HIDDEN]),
|
|
3744
3727
|
ref_key: "dialogElement",
|
|
3745
3728
|
ref: n,
|
|
3746
|
-
onClick:
|
|
3747
|
-
onClose:
|
|
3729
|
+
onClick: Ee(r, ["self"]),
|
|
3730
|
+
onClose: O[2] || (O[2] = Ee(() => {
|
|
3731
|
+
}, ["prevent"])),
|
|
3732
|
+
onKeydown: gt(l, ["escape"])
|
|
3748
3733
|
}, [
|
|
3749
3734
|
v("div", {
|
|
3750
3735
|
class: c([
|
|
@@ -3760,21 +3745,21 @@ const _i = /* @__PURE__ */ w(Ko, [["__scopeId", "data-v-e655eb08"]]), zo = /* @_
|
|
|
3760
3745
|
v("header", {
|
|
3761
3746
|
class: c([e(t).DISPLAY.FLEX, e(t).PADDING.X.ONE, e(t).PADDING.TOP.ONE])
|
|
3762
3747
|
}, [
|
|
3763
|
-
|
|
3748
|
+
u.isBackButton ? (E(), P(Z, {
|
|
3764
3749
|
key: 0,
|
|
3765
3750
|
class: c([e(t).FLEX.GROW.OFF, e(t).FLEX.SHRINK.OFF]),
|
|
3766
|
-
icon: e(
|
|
3751
|
+
icon: e(w).CHEVRON_LEFT,
|
|
3767
3752
|
priority: e($).QUATERNARY,
|
|
3768
|
-
onClick:
|
|
3769
|
-
}, null, 8, ["class", "icon", "priority"])) :
|
|
3770
|
-
|
|
3753
|
+
onClick: O[0] || (O[0] = (L) => s("back"))
|
|
3754
|
+
}, null, 8, ["class", "icon", "priority"])) : S("", !0),
|
|
3755
|
+
x(Z, {
|
|
3771
3756
|
class: c([e(t).FLEX.GROW.OFF, e(t).FLEX.SHRINK.OFF, e(t).MARGIN.LEFT.AUTO]),
|
|
3772
|
-
icon: e(
|
|
3757
|
+
icon: e(w).CLOSE,
|
|
3773
3758
|
priority: e($).QUATERNARY,
|
|
3774
|
-
onClick:
|
|
3759
|
+
onClick: O[1] || (O[1] = (L) => s("close"))
|
|
3775
3760
|
}, null, 8, ["class", "icon", "priority"])
|
|
3776
3761
|
], 2),
|
|
3777
|
-
|
|
3762
|
+
x(Ve),
|
|
3778
3763
|
v("div", {
|
|
3779
3764
|
class: c([
|
|
3780
3765
|
"tide-sheet-content",
|
|
@@ -3785,14 +3770,13 @@ const _i = /* @__PURE__ */ w(Ko, [["__scopeId", "data-v-e655eb08"]]), zo = /* @_
|
|
|
3785
3770
|
e(t).PADDING.BOTTOM.ONE
|
|
3786
3771
|
])
|
|
3787
3772
|
}, [
|
|
3788
|
-
V(
|
|
3773
|
+
V(u.$slots, "default", {}, void 0, !0)
|
|
3789
3774
|
], 2)
|
|
3790
3775
|
], 2)
|
|
3791
|
-
],
|
|
3776
|
+
], 42, zo)
|
|
3792
3777
|
], 8, ["to"]));
|
|
3793
3778
|
}
|
|
3794
|
-
})
|
|
3795
|
-
const Fi = /* @__PURE__ */ w(zo, [["__scopeId", "data-v-57dc17f8"]]), Qo = ["disabled"], Zo = /* @__PURE__ */ C({
|
|
3779
|
+
}), hi = /* @__PURE__ */ G(Qo, [["__scopeId", "data-v-55f9b807"]]), Zo = ["disabled"], qo = /* @__PURE__ */ b({
|
|
3796
3780
|
__name: "TideSwitch",
|
|
3797
3781
|
props: {
|
|
3798
3782
|
disabled: { type: Boolean, default: !1 },
|
|
@@ -3830,19 +3814,18 @@ const Fi = /* @__PURE__ */ w(zo, [["__scopeId", "data-v-57dc17f8"]]), Qo = ["dis
|
|
|
3830
3814
|
o.isActive ? e(t).BG.SURFACE.DEFAULT : e(t).BG.SECONDARY
|
|
3831
3815
|
])
|
|
3832
3816
|
}, [
|
|
3833
|
-
|
|
3834
|
-
icon: e(
|
|
3817
|
+
x(H, {
|
|
3818
|
+
icon: e(w).CHECK,
|
|
3835
3819
|
size: e(Y).LARGE
|
|
3836
3820
|
}, null, 8, ["icon", "size"])
|
|
3837
3821
|
], 2)
|
|
3838
|
-
], 10,
|
|
3822
|
+
], 10, Zo));
|
|
3839
3823
|
}
|
|
3840
|
-
})
|
|
3841
|
-
const Si = /* @__PURE__ */ w(Zo, [["__scopeId", "data-v-9bdb658a"]]), hi = {
|
|
3824
|
+
}), Di = /* @__PURE__ */ G(qo, [["__scopeId", "data-v-9bdb658a"]]), Ci = {
|
|
3842
3825
|
NUMBER: ze,
|
|
3843
3826
|
PHONE: os,
|
|
3844
3827
|
PRICE: is
|
|
3845
|
-
},
|
|
3828
|
+
}, he = {
|
|
3846
3829
|
alpha: /^[a-zA-Z]+$/g,
|
|
3847
3830
|
alphaNumberOrEmpty: /^$|^[a-z0-9]+$/i,
|
|
3848
3831
|
alphaSpace: /^[a-zA-Z ]+$/g,
|
|
@@ -3850,33 +3833,33 @@ const Si = /* @__PURE__ */ w(Zo, [["__scopeId", "data-v-9bdb658a"]]), hi = {
|
|
|
3850
3833
|
numberFormatted: /^$|(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,
|
|
3851
3834
|
phone: /^(?:\d{3}-\d{3}-\d{4}|\d{1}-\d{3}-\d{3}-\d{4})?$/,
|
|
3852
3835
|
price: /(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/
|
|
3853
|
-
},
|
|
3836
|
+
}, yi = {
|
|
3854
3837
|
IMAGE: {
|
|
3855
3838
|
FLOORPLAN: "floorplan",
|
|
3856
3839
|
IMAGE: "image"
|
|
3857
3840
|
},
|
|
3858
3841
|
VIDEO: "video",
|
|
3859
3842
|
VR: "vr"
|
|
3860
|
-
},
|
|
3861
|
-
ALPHA_NUMBER_EMPTY: Ne(
|
|
3862
|
-
ALPHA_SPACE: Ne(
|
|
3863
|
-
EMAIL: Ne(
|
|
3864
|
-
NUMBER: Ne(
|
|
3865
|
-
PHONE: Ne(
|
|
3843
|
+
}, _i = {
|
|
3844
|
+
ALPHA_NUMBER_EMPTY: Ne(he.alphaNumberOrEmpty),
|
|
3845
|
+
ALPHA_SPACE: Ne(he.alphaSpace),
|
|
3846
|
+
EMAIL: Ne(he.email),
|
|
3847
|
+
NUMBER: Ne(he.numberFormatted),
|
|
3848
|
+
PHONE: Ne(he.phone)
|
|
3866
3849
|
};
|
|
3867
3850
|
export {
|
|
3868
3851
|
ae as ALERT,
|
|
3869
3852
|
ls as BADGE_TRUSTED,
|
|
3870
3853
|
io as BREAKPOINT,
|
|
3871
3854
|
t as CSS,
|
|
3872
|
-
|
|
3855
|
+
M as ELEMENT,
|
|
3873
3856
|
re as ELEMENT_TEXT_AS_ICON,
|
|
3874
|
-
|
|
3875
|
-
|
|
3876
|
-
|
|
3877
|
-
|
|
3878
|
-
|
|
3879
|
-
|
|
3857
|
+
Ci as FORMAT,
|
|
3858
|
+
he as FORMAT_REGEX,
|
|
3859
|
+
w as ICON,
|
|
3860
|
+
Jo as ICON_REALM,
|
|
3861
|
+
gi as MEDIA,
|
|
3862
|
+
yi as MEDIA_SLIDE_TYPES,
|
|
3880
3863
|
fe as OBJECT_FIT,
|
|
3881
3864
|
it as ORIENTATION,
|
|
3882
3865
|
$ as PRIORITY,
|
|
@@ -3884,41 +3867,41 @@ export {
|
|
|
3884
3867
|
Y as SIZE,
|
|
3885
3868
|
me as SIZE_BUTTON,
|
|
3886
3869
|
se as TARGET,
|
|
3887
|
-
|
|
3870
|
+
Fe as TEXT_INPUT_TYPE,
|
|
3888
3871
|
ye as TYPE_CARD,
|
|
3889
|
-
|
|
3890
|
-
|
|
3891
|
-
|
|
3892
|
-
|
|
3893
|
-
|
|
3894
|
-
|
|
3895
|
-
|
|
3872
|
+
ei as TideAccordionItem,
|
|
3873
|
+
ti as TideAlert,
|
|
3874
|
+
si as TideBadge,
|
|
3875
|
+
oi as TideBadgeTrustedPartner,
|
|
3876
|
+
ii as TideBadgeVerifiedVehicle,
|
|
3877
|
+
ni as TideBreadCrumbs,
|
|
3878
|
+
ai as TideButton,
|
|
3896
3879
|
Z as TideButtonIcon,
|
|
3897
3880
|
Ls as TideButtonPagination,
|
|
3898
|
-
|
|
3899
|
-
|
|
3900
|
-
|
|
3901
|
-
|
|
3902
|
-
|
|
3903
|
-
|
|
3904
|
-
|
|
3881
|
+
ri as TideButtonSegmented,
|
|
3882
|
+
li as TideCard,
|
|
3883
|
+
ci as TideCarousel,
|
|
3884
|
+
di as TideChipAction,
|
|
3885
|
+
ui as TideChipFilter,
|
|
3886
|
+
Ei as TideChipInput,
|
|
3887
|
+
Oi as TideColumns,
|
|
3905
3888
|
Ve as TideDivider,
|
|
3906
3889
|
H as TideIcon,
|
|
3907
3890
|
ys as TideImage,
|
|
3908
|
-
|
|
3909
|
-
|
|
3910
|
-
|
|
3911
|
-
|
|
3912
|
-
|
|
3891
|
+
Li as TideImageBackground,
|
|
3892
|
+
Ri as TideIndicator,
|
|
3893
|
+
pi as TideInputCheckbox,
|
|
3894
|
+
vi as TideInputRadio,
|
|
3895
|
+
Ai as TideInputSelect,
|
|
3913
3896
|
fi as TideInputText,
|
|
3914
|
-
|
|
3915
|
-
|
|
3916
|
-
|
|
3917
|
-
|
|
3918
|
-
|
|
3919
|
-
|
|
3920
|
-
|
|
3921
|
-
|
|
3922
|
-
|
|
3897
|
+
Ii as TideInputTextarea,
|
|
3898
|
+
Ti as TideLink,
|
|
3899
|
+
mi as TideModal,
|
|
3900
|
+
Ni as TidePagination,
|
|
3901
|
+
Fi as TidePopover,
|
|
3902
|
+
Si as TideSeoLinks,
|
|
3903
|
+
hi as TideSheet,
|
|
3904
|
+
Di as TideSwitch,
|
|
3905
|
+
_i as VALIDATOR
|
|
3923
3906
|
};
|
|
3924
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmVzbS5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy90eXBlcy9CYWRnZS50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25TZWdtZW50ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0NhcmQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2Fyb3VzZWwudnVlIiwiLi4vc3JjL3R5cGVzL0ltYWdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFJhZGlvLnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFNlbGVjdC52dWUiLCIuLi9zcmMvdHlwZXMvVGV4dElucHV0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0YXJlYS52dWUiLCIuLi9zcmMvdHlwZXMvQnJlYWtwb2ludC50cyIsIi4uL3NyYy91dGlsaXRpZXMvdmlld3BvcnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTW9kYWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVBhZ2luYXRpb24udnVlIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS91dGlscy9kaXN0L2Zsb2F0aW5nLXVpLnV0aWxzLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvY29yZS9kaXN0L2Zsb2F0aW5nLXVpLmNvcmUubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS91dGlscy9kaXN0L2Zsb2F0aW5nLXVpLnV0aWxzLmRvbS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2RvbS9kaXN0L2Zsb2F0aW5nLXVpLmRvbS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3Z1ZS9kaXN0L2Zsb2F0aW5nLXVpLnZ1ZS5tanMiLCIuLi9zcmMvdXRpbGl0aWVzL2V2ZW50LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVBvcG92ZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVNoZWV0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTd2l0Y2gudnVlIiwiLi4vc3JjL3R5cGVzL0Zvcm1hdHRlZC50cyIsIi4uL3NyYy90eXBlcy9MaXN0aW5nTWVkaWEudHMiLCIuLi9zcmMvdHlwZXMvVmFsaWRhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgT1JJRU5UQVRJT04gPSB7XG4gIEhPUklaT05UQUw6ICdob3Jpem9udGFsJyxcbiAgVkVSVElDQUw6ICd2ZXJ0aWNhbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPcmllbnRhdGlvbiA9ICh0eXBlb2YgT1JJRU5UQVRJT04pW2tleW9mIHR5cGVvZiBPUklFTlRBVElPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmltcG9ydCB0eXBlIHsgQnJlYWtwb2ludCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG5cbmV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIHdpdGhCcmVha3BvaW50OiAodXRpbGl0aWVzOiBzdHJpbmdbXSwgYnJlYWtwb2ludDogQnJlYWtwb2ludCk6IHN0cmluZ1tdID0+IHtcbiAgICByZXR1cm4gdXRpbGl0aWVzLm1hcCgodXRpbGl0eSkgPT4gYCR7YnJlYWtwb2ludH0tJHt1dGlsaXR5fWApO1xuICB9LFxuICBBTElHTjoge1xuICAgIFg6IHtcbiAgICAgIENFTlRFUjogJ3RpZGUtdGV4dC1jZW50ZXInLFxuICAgICAgTEVGVDogJ3RpZGUtdGV4dC1sZWZ0JyxcbiAgICAgIFJJR0hUOiAndGlkZS10ZXh0LXJpZ2h0JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIElOSVRJQUw6ICd0aWRlLWFsaWduLWluaXRpYWwnLFxuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICAgIFNUUkVUQ0g6ICd0aWRlLWF4aXMyLXN0cmV0Y2gnLFxuICB9LFxuICBCRzoge1xuICAgIEdMT0JBTDoge1xuICAgICAgUFJJTUFSWToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctcHJpbWFyeS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXByaW1hcnktaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXByaW1hcnktc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXByaW1hcnktd2FybmluZycsXG4gICAgICB9LFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXN1cmZhY2UtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1cmZhY2Utc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXN1cmZhY2Utd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYmctc3VyZmFjZS1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWJnLXN1cmZhY2UtZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1iZy1zdXJmYWNlLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJnLXN1cmZhY2Utb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1iZy1zdXJmYWNlLXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtYmctc3VyZmFjZS1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJnLXN1cmZhY2Utc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtYmctc3VyZmFjZS10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1iZy1zdXJmYWNlLXllbGxvdycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgSU5JVElBTDogJ3RpZGUtYmctaW5pdGlhbCcsXG4gICAgQkxVUjogJ3RpZGUtYmctYmx1cicsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBWQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLXZhcmlhbnQnLFxuICAgIH0sXG4gICAgVFJBTlNQQVJFTlQ6IHtcbiAgICAgIE9ORV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0xMDAnLFxuICAgICAgVFdPX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTIwMCcsXG4gICAgICBUSFJFRV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0zMDAnLFxuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC00MDAnLFxuICAgIH0sXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJvcmRlci1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJvcmRlci1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYm9yZGVyLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1ib3JkZXItd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYm9yZGVyLWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtYm9yZGVyLWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtYm9yZGVyLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJvcmRlci1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWJvcmRlci1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWJvcmRlci1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJvcmRlci1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1ib3JkZXItdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtYm9yZGVyLXllbGxvdycsXG4gICAgICB9LFxuICAgICAgSU5JVElBTDogJ3RpZGUtYm9yZGVyLWNvbG9yLWluaXRpYWwnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYm9yZGVyJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1ib3JkZXItZmxvYXRpbmcnLFxuICAgICAgSElHSDogJ3RpZGUtYm9yZGVyLWhpZ2gnLFxuICAgICAgTE9XOiAndGlkZS1ib3JkZXItbG93JyxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWJvcmRlci1wcmltYXJ5JyxcbiAgICB9LFxuICAgIFJBRElVUzoge1xuICAgICAgWkVSTzogJ3RpZGUtcmFkaXVzLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcmFkaXVzLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1yYWRpdXMtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcmFkaXVzLTEnLFxuICAgICAgRlVMTDogJ3RpZGUtcmFkaXVzLWZ1bGwnLFxuICAgIH0sXG4gICAgU1RZTEU6IHtcbiAgICAgIERBU0hFRDogJ3RpZGUtYm9yZGVyLWRhc2hlZCcsXG4gICAgICBTT0xJRDogJ3RpZGUtYm9yZGVyLXNvbGlkJyxcbiAgICB9LFxuICAgIEJPVFRPTToge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0yJyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItMicsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItbGVmdC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1sZWZ0LTInLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1yaWdodC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItcmlnaHQtMicsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci10b3AtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci10b3AtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci10b3AtMicsXG4gICAgfSxcbiAgfSxcbiAgQk9YX1NJWklORzoge1xuICAgIEJPUkRFUl9CT1g6ICd0aWRlLWJveC1ib3JkZXInLFxuICAgIENPTlRFTlRfQk9YOiAndGlkZS1ib3gtY29udGVudCcsXG4gIH0sXG4gIEJSRUFLX0lOU0lERToge1xuICAgIEFWT0lEX0NPTFVNTjogJ3RpZGUtYnJlYWstaW5zaWRlLWF2b2lkLWNvbHVtbicsXG4gIH0sXG4gIEJSRUFLX1dPUkQ6IHtcbiAgICBPRkY6ICd0aWRlLWJyZWFrLWluaXRpYWwnLFxuICAgIE9OOiAndGlkZS1icmVhay13b3JkJyxcbiAgfSxcbiAgQ09MVU1OUzoge1xuICAgIElOSVRJQUw6ICd0aWRlLWNvbHVtbnMtaW5pdGlhbCcsXG4gICAgT05FOiAndGlkZS1jb2x1bW5zLTEnLFxuICAgIFRXTzogJ3RpZGUtY29sdW1ucy0yJyxcbiAgICBUSFJFRTogJ3RpZGUtY29sdW1ucy0zJyxcbiAgICBGT1VSOiAndGlkZS1jb2x1bW5zLTQnLFxuICB9LFxuICBDVVJTT1I6IHtcbiAgICBOT1RfQUxMT1dFRDogJ3RpZGUtY3Vyc29yLW5vdC1hbGxvd2VkJyxcbiAgICBQT0lOVEVSOiAndGlkZS1jdXJzb3ItcG9pbnRlcicsXG4gICAgVEVYVDogJ3RpZGUtY3Vyc29yLXRleHQnLFxuICB9LFxuICBESVNQTEFZOiB7XG4gICAgQkxPQ0s6ICd0aWRlLWRpc3BsYXktYmxvY2snLFxuICAgIENPTlRFTlRTOiAndGlkZS1kaXNwbGF5LWNvbnRlbnRzJyxcbiAgICBGTEVYOiAndGlkZS1kaXNwbGF5LWZsZXgnLFxuICAgIEdSSUQ6ICd0aWRlLWRpc3BsYXktZ3JpZCcsXG4gICAgSU5JVElBTDogJ3RpZGUtZGlzcGxheS1pbml0aWFsJyxcbiAgICBJTkxJTkU6ICd0aWRlLWRpc3BsYXktaW5saW5lJyxcbiAgICBJTkxJTkVfQkxPQ0s6ICd0aWRlLWRpc3BsYXktaW5saW5lLWJsb2NrJyxcbiAgICBJTkxJTkVfRkxFWDogJ3RpZGUtZGlzcGxheS1pbmxpbmUtZmxleCcsXG4gICAgTk9ORTogJ3RpZGUtZGlzcGxheS1ub25lJyxcbiAgfSxcbiAgRUxMSVBTSVM6ICd0aWRlLWVsbGlwc2lzJyxcbiAgRkxFWDoge1xuICAgIEJBU0lTOiB7XG4gICAgICBBVVRPOiAndGlkZS1mbGV4LWJhc2lzLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtZmxleC1iYXNpcy0wJyxcbiAgICB9LFxuICAgIERJUkVDVElPTjoge1xuICAgICAgQ09MVU1OOiAndGlkZS1mbGV4LWNvbHVtbicsXG4gICAgICBDT0xVTU5fUkVWRVJTRTogJ3RpZGUtZmxleC1jb2x1bW4tcmV2ZXJzZScsXG4gICAgICBST1c6ICd0aWRlLWZsZXgtcm93JyxcbiAgICAgIFJPV19SRVZFUlNFOiAndGlkZS1mbGV4LXJvdy1yZXZlcnNlJyxcbiAgICB9LFxuICAgIEdST1c6IHtcbiAgICAgIE9GRjogJ3RpZGUtZ3Jvdy1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1ncm93JyxcbiAgICB9LFxuICAgIFNIUklOSzoge1xuICAgICAgT0ZGOiAndGlkZS1zaHJpbmstbm9uZScsXG4gICAgICBPTjogJ3RpZGUtc2hyaW5rJyxcbiAgICB9LFxuICAgIFdSQVA6ICd0aWRlLWZsZXgtd3JhcCcsXG4gIH0sXG4gIEZPTlQ6IHtcbiAgICBDT0xPUjoge1xuICAgICAgR0xPQkFMOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1mb250LWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtZm9udC1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtZm9udC1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtZm9udC13YXJuaW5nJyxcblxuICAgICAgICBCTFVFOiAndGlkZS1mb250LWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtZm9udC1ncmVlbicsXG4gICAgICAgIExJTUU6ICd0aWRlLWZvbnQtbGltZScsXG4gICAgICAgIE9SQU5HRTogJ3RpZGUtZm9udC1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWZvbnQtcHVycGxlJyxcbiAgICAgICAgUkVEOiAndGlkZS1mb250LXJlZCcsXG4gICAgICAgIFNBTE1PTjogJ3RpZGUtZm9udC1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1mb250LXRlYWwnLFxuICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQteWVsbG93JyxcblxuICAgICAgICBQUklNQVJZOiB7XG4gICAgICAgICAgQkxVRTogJ3RpZGUtZm9udC1wcmltYXJ5LWJsdWUnLFxuICAgICAgICAgIEdSRUVOOiAndGlkZS1mb250LXByaW1hcnktZ3JlZW4nLFxuICAgICAgICAgIExJTUU6ICd0aWRlLWZvbnQtcHJpbWFyeS1saW1lJyxcbiAgICAgICAgICBPUkFOR0U6ICd0aWRlLWZvbnQtcHJpbWFyeS1vcmFuZ2UnLFxuICAgICAgICAgIFBVUlBMRTogJ3RpZGUtZm9udC1wcmltYXJ5LXB1cnBsZScsXG4gICAgICAgICAgUkVEOiAndGlkZS1mb250LXByaW1hcnktcmVkJyxcbiAgICAgICAgICBTQUxNT046ICd0aWRlLWZvbnQtcHJpbWFyeS1zYWxtb24nLFxuICAgICAgICAgIFRFQUw6ICd0aWRlLWZvbnQtcHJpbWFyeS10ZWFsJyxcbiAgICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQtcHJpbWFyeS15ZWxsb3cnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWZvbnQtb24tcHJpbWFyeScsXG4gICAgICBTRUNPTkRBUlk6ICd0aWRlLWZvbnQtb24tc2Vjb25kYXJ5JyxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgQlJBTkQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1icmFuZCcsXG4gICAgICAgIERFRkFVTFQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZScsXG4gICAgICAgIElOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgICAgVkFSSUFOVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQnLFxuICAgICAgICBWQVJJQU5UX0lOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50LWludmVyc2UnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIFJPTEU6IHtcbiAgICAgIERJU1BMQVlfMTogJ3RpZGUtdHlwb2dyYXBoeS1kaXNwbGF5LTEnLFxuICAgICAgSEVBRExJTkVfMTogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0xJyxcbiAgICAgIEhFQURMSU5FXzI6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMicsXG4gICAgICBIRUFETElORV8zOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTMnLFxuICAgICAgVElUTEVfMTogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0xJyxcbiAgICAgIFRJVExFXzI6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMicsXG4gICAgICBCT0RZXzE6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0xJyxcbiAgICAgIEJPRFlfMjogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTInLFxuICAgICAgTEFCRUxfMTogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xJyxcbiAgICAgIExBQkVMXzFfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMS1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8yOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTInLFxuICAgICAgTEFCRUxfMl9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzM6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMycsXG4gICAgICBMSU5LXzE6ICd0aWRlLXR5cG9ncmFwaHktbGluay0xJyxcbiAgICAgIExJTktfMjogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTInLFxuICAgICAgTElOS18zOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMycsXG4gICAgICBCVVRUT05fMTogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMScsXG4gICAgICBCVVRUT05fMjogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMicsXG4gICAgfSxcbiAgICBTSVpFOiB7XG4gICAgICBUV0VMVkU6ICd0aWRlLWZvbnQtMTInLFxuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgICAgVEhJUlRZX1RXTzogJ3RpZGUtZm9udC0zMicsXG4gICAgfSxcbiAgICBXRUlHSFQ6IHtcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgRklWRV9IVU5EUkVEOiAndGlkZS1mb250LTUwMCcsXG4gICAgICBTSVhfSFVORFJFRDogJ3RpZGUtZm9udC02MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgIH0sXG4gIH0sXG4gIEdBUDoge1xuICAgIFpFUk86ICd0aWRlLWdhcC0wJyxcbiAgICBRVUFSVEVSOiAndGlkZS1nYXAtMS80JyxcbiAgICBIQUxGOiAndGlkZS1nYXAtMS8yJyxcbiAgICBPTkU6ICd0aWRlLWdhcC0xJyxcbiAgICBUV086ICd0aWRlLWdhcC0yJyxcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gIH0sXG4gIEdSSUQ6IHtcbiAgICBGTFVJRDogJ3RpZGUtZmx1aWQnLFxuICAgIElURU06ICd0aWRlLWdyaWQtaXRlbScsXG4gICAgTEFZT1VUOiAndGlkZS1ncmlkLWxheW91dCcsXG4gICAgWEw6ICd0aWRlLWdyaWQteGwnLFxuICB9LFxuICBIRUlHSFQ6IHtcbiAgICBBVVRPOiAndGlkZS1oZWlnaHQtYXV0bycsXG4gICAgWkVSTzogJ3RpZGUtaGVpZ2h0LTAnLFxuICAgIEZVTEw6ICd0aWRlLWhlaWdodC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LWhlaWdodC1mdWxsJyxcbiAgICBNSU5fWkVSTzogJ3RpZGUtbWluLWhlaWdodC0wJyxcbiAgfSxcbiAgSVNPTEFUSU9OOiB7XG4gICAgSVNPTEFURTogJ3RpZGUtaXNvbGF0ZScsXG4gIH0sXG4gIExJU1RfQlVMTEVUUzoge1xuICAgIE9GRjogJ3RpZGUtbGlzdC1ub25lJyxcbiAgfSxcbiAgTUFSR0lOOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tYm90dG9tLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi00JyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1sZWZ0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tbGVmdC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1sZWZ0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tcmlnaHQtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi10b3AtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXRvcC00JyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi14LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXgtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi14LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4teS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi15LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4teS0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4teS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXktMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teS00JyxcbiAgICB9LFxuICB9LFxuICBPQkpFQ1Q6IHtcbiAgICBDRU5URVI6ICd0aWRlLW9iamVjdC1jZW50ZXInLFxuICAgIENPTlRBSU46ICd0aWRlLW9iamVjdC1jb250YWluJyxcbiAgICBDT1ZFUjogJ3RpZGUtb2JqZWN0LWNvdmVyJyxcbiAgICBTQ0FMRV9ET1dOOiAndGlkZS1vYmplY3Qtc2NhbGUtZG93bicsXG4gIH0sXG4gIE9QQUNJVFk6IHtcbiAgICBPRkY6ICd0aWRlLW9wYWNpdHktbm9uZScsXG4gICAgT046ICd0aWRlLW9wYWNpdHknLFxuICB9LFxuICBPVkVSRkxPVzoge1xuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLXgtYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXgtaGlkZGVuJyxcbiAgICAgIFNDUk9MTDogJ3RpZGUteC1zY3JvbGwnLFxuICAgIH0sXG4gICAgWFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXh5LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14eS1oaWRkZW4nLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgQVVUTzogJ3RpZGUteS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteS1oaWRkZW4nLFxuICAgIH0sXG4gIH0sXG4gIFBBRERJTkc6IHtcbiAgICBCT1RUT006IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctYm90dG9tLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctbGVmdC00JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1yaWdodC00JyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy10b3AtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy10b3AtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy10b3AtNCcsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXgtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteC00JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmcteS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmcteS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmcteS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy15LTQnLFxuICAgIH0sXG4gIH0sXG4gIFBPSU5URVJfRVZFTlRTOiB7XG4gICAgT0ZGOiAndGlkZS1wb2ludGVyLWV2ZW50cy1ub25lJyxcbiAgICBPTjogJ3RpZGUtcG9pbnRlci1ldmVudHMnLFxuICB9LFxuICBQT1NJVElPTjoge1xuICAgIEFCU09MVVRFOiAndGlkZS1wb3NpdGlvbi1hYnNvbHV0ZScsXG4gICAgRklYRUQ6ICd0aWRlLXBvc2l0aW9uLWZpeGVkJyxcbiAgICBSRUxBVElWRTogJ3RpZGUtcG9zaXRpb24tcmVsYXRpdmUnLFxuICAgIFNUQVRJQzogJ3RpZGUtcG9zaXRpb24tc3RhdGljJyxcbiAgICBTVElDS1k6ICd0aWRlLXBvc2l0aW9uLXN0aWNreScsXG4gIH0sXG4gIFBPU0lUSU9OSU5HOiB7XG4gICAgQk9UVE9NOiAndGlkZS1ib3R0b20tMCcsXG4gICAgTEVGVDogJ3RpZGUtbGVmdC0wJyxcbiAgICBSSUdIVDogJ3RpZGUtcmlnaHQtMCcsXG4gICAgVE9QOiAndGlkZS10b3AtMCcsXG4gIH0sXG4gIFJBVElPOiB7XG4gICAgT05FX1RPX09ORTogJ3RpZGUtcmF0aW8tMS8xJyxcbiAgICBTSVhURUVOX1RPX05JTkU6ICd0aWRlLXJhdGlvLTE2LzknLFxuICAgIFRIUkVFX1RPX1RXTzogJ3RpZGUtcmF0aW8tMy8yJyxcbiAgfSxcbiAgU0NST0xMQkFSOiB7XG4gICAgT0ZGOiAndGlkZS1zY3JvbGxiYXItbm9uZScsXG4gIH0sXG4gIFNIQURPVzoge1xuICAgIElOSVRJQUw6ICd0aWRlLXNoYWRvdy1pbml0aWFsJyxcbiAgICBCT1RUT006ICd0aWRlLXNoYWRvdy1ib3R0b20nLFxuICAgIFRPUDogJ3RpZGUtc2hhZG93LXRvcCcsXG4gICAgVEVYVDogJ3RpZGUtc2hhZG93LXRleHQnLFxuICB9LFxuICBTTkFQOiB7XG4gICAgT046ICd0aWRlLXNjcm9sbC1zbmFwJyxcbiAgfSxcbiAgU05BUF9BTElHTjoge1xuICAgIFNUQVJUOiAndGlkZS1zY3JvbGwtc25hcC1zdGFydCcsXG4gIH0sXG4gIFRFWFRfVFJBTlNGT1JNOiB7XG4gICAgTE9XRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLWxvd2VyJyxcbiAgICBOT05FOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1ub25lJyxcbiAgICBVUFBFUjogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tdXBwZXInLFxuICB9LFxuICBVTkRFUkxJTkU6IHtcbiAgICBIT1ZFUjoge1xuICAgICAgT046ICd0aWRlLXVuZGVybGluZS1ob3ZlcicsXG4gICAgICBPRkY6ICd0aWRlLXVuZGVybGluZS1ob3Zlci1ub25lJyxcbiAgICB9LFxuICAgIFJFU1Q6IHtcbiAgICAgIE9OOiAndGlkZS11bmRlcmxpbmUnLFxuICAgICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtbm9uZScsXG4gICAgfSxcbiAgfSxcbiAgVklTSUJJTElUWToge1xuICAgIE9GRjogJ3RpZGUtdmlzaWJsZS1ub25lJyxcbiAgICBPTjogJ3RpZGUtdmlzaWJsZScsXG4gIH0sXG4gIFdISVRFU1BBQ0VfV1JBUDoge1xuICAgIE9GRjogJ3RpZGUtd2hpdGVzcGFjZS1ub3dyYXAnLFxuICB9LFxuICBXSURUSDoge1xuICAgIEFVVE86ICd0aWRlLXdpZHRoLWF1dG8nLFxuICAgIFpFUk86ICd0aWRlLXdpZHRoLTAnLFxuICAgIEZVTEw6ICd0aWRlLXdpZHRoLWZ1bGwnLFxuICAgIE1BWF9GVUxMOiAndGlkZS1tYXgtd2lkdGgtZnVsbCcsXG4gICAgTUlOX1pFUk86ICd0aWRlLW1pbi13aWR0aC0wJyxcbiAgfSxcbiAgWl9JTkRFWDoge1xuICAgIElOSVRJQUw6ICd0aWRlLXotaW5kZXgtaW5pdGlhbCcsXG4gICAgT05FOiAndGlkZS16LWluZGV4LTEnLFxuICB9LFxufSBhcyBjb25zdDtcbiIsImV4cG9ydCBjb25zdCBSRUFMTSA9IHtcbiAgQUVSTzogJ2Flcm8nLFxuICBBVFY6ICdhdHYnLFxuICBCT0FUTUFSVDogJ2JvYXRtYXJ0JyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIEVRVUlQTUVOVDogJ2VxdWlwbWVudCcsXG4gIFBXQzogJ3B3YycsXG4gIFJWOiAncnYnLFxuICBTTk9XOiAnc25vdycsXG4gIFRSVUNLOiAndHJ1Y2snLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVhbG1LZXkgPSBrZXlvZiB0eXBlb2YgUkVBTE07XG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW1JlYWxtS2V5XTtcbiIsImV4cG9ydCBjb25zdCBTSVpFID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG5cbmV4cG9ydCBjb25zdCBTSVpFX0JVVFRPTiA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZUJ1dHRvbiA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuIiwiY29uc3QgY2FwaXRhbGl6ZUZpcnN0ID0gKHN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59O1xuXG5jb25zdCBmb3JtYXRDYW1lbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvXltcXHNfLV0vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IHdvcmQgOiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdEtlYmFiQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnLScpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdExhYmVsID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZmFsc2U6ICdObycsXG4gICAgdHJ1ZTogJ1llcycsXG4gIH07XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGxhYmVsTWFwLCB2YWx1ZSkgPyBsYWJlbE1hcFt2YWx1ZV0gOiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChOdW1iZXIoZGlnaXRzKSkge1xuICAgICAgb3V0cHV0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KE51bWJlcihkaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQYXNjYWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBob25lID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IFN0cmluZyhpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcblxuICBzd2l0Y2ggKGRpZ2l0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDc6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzLCA2KX0tJHtkaWdpdHMuc2xpY2UoNil9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMSl9LSR7ZGlnaXRzLnNsaWNlKDEsIDQpfS0ke2RpZ2l0cy5zbGljZSg0LCA3KX0tJHtkaWdpdHMuc2xpY2UoNyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvdXRwdXQgPSBkaWdpdHM7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQcmljZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJCR7b3V0cHV0fWA7XG59O1xuXG5jb25zdCBmb3JtYXRRdW90ZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXCInKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgxLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBmb3JtYXRTZW50ZW5jZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBzZW50ZW5jZUNhc2UgPSBpbnB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZSA9IGlucHV0XG4gICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpO1xuXG4gICAgc2VudGVuY2VDYXNlID0gbG93ZXJDYXNlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsb3dlckNhc2Uuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gc2VudGVuY2VDYXNlO1xufTtcblxuY29uc3QgZm9ybWF0U25ha2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICdfJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VGl0bGVDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRVcmxGcm9tUm9vdCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmxGb3JtYXR0ZWQgPSB1cmwuc3BsaXQoJy5jb20vJyk7XG5cbiAgcmV0dXJuIHVybEZvcm1hdHRlZC5sZW5ndGggPiAxID8gYC8ke3VybEZvcm1hdHRlZFsxXX1gIDogdXJsO1xufTtcblxuY29uc3QgZm9ybWF0V2VpZ2h0ID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAke291dHB1dH0gbGJzYDtcbn07XG5cbmNvbnN0IGdldEFydGljbGUgPSAobm91bjogc3RyaW5nLCBpc1BsdXJhbCA9IGZhbHNlLCBpc0RlZmluaXRlID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgdm93ZWxzID0gWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXTtcbiAgY29uc3QgaXNWb3dlbExlYWRpbmcgPSB2b3dlbHMuaW5jbHVkZXMobm91bi5jaGFyQXQoMCkpO1xuXG4gIHJldHVybiBpc0RlZmluaXRlID8gJ3RoZScgOiBpc1BsdXJhbCA/ICdzb21lJyA6IGlzVm93ZWxMZWFkaW5nID8gJ2FuJyA6ICdhJztcbn07XG5cbmNvbnN0IHByaWNlVG9OdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJywgJycpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59O1xuXG5jb25zdCB1bmZvcm1hdFByaWNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKC9cXCQvZywgJycpLnJlcGxhY2UoLywvZywgJycpO1xuICByZXR1cm4gYCR7b3V0cHV0fWA7XG59O1xuXG5leHBvcnQge1xuICBjYXBpdGFsaXplRmlyc3QsXG4gIGZvcm1hdENhbWVsQ2FzZSxcbiAgZm9ybWF0S2ViYWJDYXNlLFxuICBmb3JtYXRMYWJlbCxcbiAgZm9ybWF0TnVtYmVyLFxuICBmb3JtYXRQYXNjYWxDYXNlLFxuICBmb3JtYXRQaG9uZSxcbiAgZm9ybWF0UHJpY2UsXG4gIGZvcm1hdFF1b3RlcyxcbiAgZm9ybWF0U2VudGVuY2VDYXNlLFxuICBmb3JtYXRTbmFrZUNhc2UsXG4gIGZvcm1hdFRpdGxlQ2FzZSxcbiAgZm9ybWF0VXJsRnJvbVJvb3QsXG4gIGZvcm1hdFdlaWdodCxcbiAgZ2V0QXJ0aWNsZSxcbiAgcHJpY2VUb051bWJlcixcbiAgdW5mb3JtYXRQcmljZSxcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgUkVBTE0gfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0UGFzY2FsQ2FzZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaWNvbjogSWNvbjtcbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IHtcbiAgICAgICAgaWYgKHJlYWxtRm9sZGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9yZWFsbS8ke3JlYWxtRm9sZGVyfS9JY29uJHtuYW1lfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpbm5lclNWRy52YWx1ZSA9IG1hcmtSYXcoY29tcG9uZW50KTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWljb24nLCBwcm9wcy5zaXplXVwiPlxuICAgIDxDb21wb25lbnRcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DS11cIlxuICAgICAgOmRhdGEtaWNvbj1cImljb25cIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlPlxuICAudGlkZS1pY29uIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbi5zbWFsbCB7XG4gICAgd2lkdGg6IDEuMjVyZW07XG4gICAgaGVpZ2h0OiAxLjI1cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbiBzdmcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVhbG1LZXkgfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcblxuZXhwb3J0IGNvbnN0IElDT04gPSB7XG4gIEFDQ09VTlRfQkFMQU5DRTogJ2FjY291bnQtYmFsYW5jZScsXG4gIEFDVVRFOiAnYWN1dGUnLFxuICBBREQ6ICdhZGQnLFxuICBBSV9ERVNDUklQVElPTjogJ2FpLWRlc2NyaXB0aW9uJyxcbiAgQUxJR05fU1BBQ0VfRVZFTjogJ2FsaWduLXNwYWNlLWV2ZW4nLFxuICBBUFBMRV9QQVk6ICdhcHBsZS1wYXknLFxuICBBUlJPV19CQUNLOiAnYXJyb3ctYmFjaycsXG4gIEFSUk9XX0NZQ0xFOiAnYXJyb3ctY3ljbGUnLFxuICBBUlJPV19GT1JXQVJEOiAnYXJyb3ctZm9yd2FyZCcsXG4gIEFSUk9XX1JJR0hUOiAnYXJyb3ctcmlnaHQnLFxuICBBU1NJR05NRU5UOiAnYXNzaWdubWVudCcsXG4gIEFUVEFDSF9NT05FWTogJ2F0dGFjaC1tb25leScsXG4gIEFVVE9fUkVORVc6ICdhdXRvLXJlbmV3JyxcbiAgQVdBUkRfU1RBUjogJ2F3YXJkLXN0YXInLFxuICBCRUQ6ICdiZWQnLFxuICBCT0xUOiAnYm9sdCcsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBCVU5LSE9VU0U6ICdidW5raG91c2UnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDQUxMX1FVQUxJVFk6ICdjYWxsLXF1YWxpdHknLFxuICBDQVJfUkVOVEFMOiAnY2FyLXJlbnRhbCcsXG4gIENIRUNLOiAnY2hlY2snLFxuICBDSEVWUk9OX0xFRlQ6ICdjaGV2cm9uLWxlZnQnLFxuICBDSEVWUk9OX1JJR0hUOiAnY2hldnJvbi1yaWdodCcsXG4gIENMRUFSOiAnY2xlYXInLFxuICBDTE9TRTogJ2Nsb3NlJyxcbiAgQ09OVFJBQ1Q6ICdjb250cmFjdCcsXG4gIENSQVNIOiAnY3Jhc2gnLFxuICBEQVNIQk9BUkRfQ1VTVE9NSVpFOiAnZGFzaGJvYXJkLWN1c3RvbWl6ZScsXG4gIERFTEVURTogJ2RlbGV0ZScsXG4gIERJQU1PTkQ6ICdkaWFtb25kJyxcbiAgRElSRUNUSU9OU19CT0FUOiAnZGlyZWN0aW9ucy1ib2F0JyxcbiAgRE9NQUlOOiAnZG9tYWluJyxcbiAgRFJBRlQ6ICdkcmFmdCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRU5HSU5FOiAnZW5naW5lJyxcbiAgRU5HSU5FRVJJTkc6ICdlbmdpbmVlcmluZycsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBFWFBBTkRfQ09OVEVOVDogJ2V4cGFuZC1jb250ZW50JyxcbiAgRVhQQU5EX0xFU1M6ICdleHBhbmQtbGVzcycsXG4gIEVYUEFORF9NT1JFOiAnZXhwYW5kLW1vcmUnLFxuICBGQUNFQk9PSzogJ2ZhY2Vib29rJyxcbiAgRkFWT1JJVEU6ICdmYXZvcml0ZScsXG4gIEZBVk9SSVRFX0ZJTExFRDogJ2Zhdm9yaXRlLWZpbGxlZCcsXG4gIEZMQUc6ICdmbGFnJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHQVM6ICdnYXMnLFxuICBHQVZFTDogJ2dhdmVsJyxcbiAgR0VBUlM6ICdnZWFycycsXG4gIEdMT0JFX0xPQ0FUSU9OX1BJTjogJ2dsb2JlLWxvY2F0aW9uLXBpbicsXG4gIEdPT0dMRTogJ2dvb2dsZScsXG4gIEdPT0dMRV9QQVk6ICdnb29nbGUtcGF5JyxcbiAgR1JJRDogJ2dyaWQnLFxuICBIQU5EU0hBS0U6ICdoYW5kc2hha2UnLFxuICBIQU5EWU1BTjogJ2hhbmR5bWFuJyxcbiAgSEVJR0hUOiAnaGVpZ2h0JyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElORk9STUFUSU9OOiAnaW5mb3JtYXRpb24nLFxuICBJTlNFUlRfVEVYVDogJ2luc2VydC10ZXh0JyxcbiAgSU5TVEFHUkFNOiAnaW5zdGFncmFtJyxcbiAgSU9TX1NIQVJFOiAnaW9zLXNoYXJlJyxcbiAgTEFZT1VUOiAnbGF5b3V0JyxcbiAgTEVWRUxMSU5HX0pBQ0s6ICdsZXZlbGxpbmctamFjaycsXG4gIExJTktFRF9JTjogJ2xpbmtlZCBpbicsXG4gIExPQ0FMX1NISVBQSU5HOiAnbG9jYWwtc2hpcHBpbmcnLFxuICBMT0NLOiAnbG9jaycsXG4gIE1BSUw6ICdtYWlsJyxcbiAgTUVOVTogJ21lbnUnLFxuICBNT05FWV9CQUc6ICdtb25leS1iYWcnLFxuICBNT1JFX0hPUklaOiAnbW9yZS1ob3JpeicsXG4gIE5PVElGSUNBVElPTlM6ICdub3RpZmljYXRpb25zJyxcbiAgT0RPTUVURVI6ICdvZG9tZXRlcicsXG4gIE9QRU5fSU5fTkVXOiAnb3Blbi1pbi1uZXcnLFxuICBQQUxFVFRFOiAncGFsZXR0ZScsXG4gIFBBWVBBTDogJ3BheXBhbCcsXG4gIFBFUlNPTjogJ3BlcnNvbicsXG4gIFBFUlNPTl9TRUFSQ0g6ICdwZXJzb24tc2VhcmNoJyxcbiAgUEhPVE9fQ0FNRVJBOiAncGhvdG8tY2FtZXJhJyxcbiAgUElOVEVSRVNUOiAncGludGVyZXN0JyxcbiAgUExBWV9BUlJPVzogJ3BsYXktYXJyb3cnLFxuICBQT0xJQ1k6ICdwb2xpY3knLFxuICBQT1dFUjogJ3Bvd2VyJyxcbiAgUE9XRVJfT0ZGOiAncG93ZXItb2ZmJyxcbiAgUFJJT1JJVFlfSElHSDogJ3ByaW9yaXR5LWhpZ2gnLFxuICBSRU1PVkU6ICdyZW1vdmUnLFxuICBSRVFVRVNUX1FVT1RFOiAncmVxdWVzdC1xdW90ZScsXG4gIFJFU0VUX1dSRU5DSDogJ3Jlc2V0LXdyZW5jaCcsXG4gIFJPQUQ6ICdyb2FkJyxcbiAgUk9VTkRFRF9DT1JORVI6ICdyb3VuZGVkLWNvcm5lcicsXG4gIFJVTEVSOiAncnVsZXInLFxuICBTQUlMSU5HOiAnc2FpbGluZycsXG4gIFNDSE9PTDogJ3NjaG9vbCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFNFQVRJTkc6ICdzZWF0aW5nJyxcbiAgU0VMTDogJ3NlbGwnLFxuICBTRU5TT1JTOiAnc2Vuc29ycycsXG4gIFNFVFRJTkdTOiAnc2V0dGluZ3MnLFxuICBTSEFSRTogJ3NoYXJlJyxcbiAgU0hJRUxEX0NIRUNLOiAnc2hpZWxkLWNoZWNrJyxcbiAgU0hPUFBJTkdfQ0FSVDogJ3Nob3BwaW5nLWNhcnQnLFxuICBTTEVFUFM6ICdzbGVlcHMnLFxuICBTTVM6ICdzbXMnLFxuICBTTk9XRkxBS0U6ICdzbm93Zmxha2UnLFxuICBTVEFSOiAnc3RhcicsXG4gIFNVTU1BUklaRTogJ3N1bW1hcml6ZScsXG4gIFNXQVBfSE9SSVo6ICdzd2FwLWhvcml6JyxcbiAgU1dBUF9WRVJUOiAnc3dhcC12ZXJ0JyxcbiAgVEhSRUVfRF9ST1RBVElPTjogJ3RocmVlLWQtcm90YXRpb24nLFxuICBUSFVNQl9VUDogJ3RodW1iLXVwJyxcbiAgVFJFTkRJTkdfRE9XTjogJ3RyZW5kaW5nLWRvd24nLFxuICBUUk9QSFk6ICd0cm9waHknLFxuICBUVU5FOiAndHVuZScsXG4gIFRXSVRURVI6ICd0d2l0dGVyJyxcbiAgVU1CUkVMTEE6ICd1bWJyZWxsYScsXG4gIFZFUklGSUVEOiAndmVyaWZpZWQnLFxuICBWSURFT0NBTTogJ3ZpZGVvY2FtJyxcbiAgVklFV19JTl9BUjogJ3ZpZXctaW4tYXInLFxuICBWSVNJQklMSVRZOiAndmlzaWJpbGl0eScsXG4gIFZPTFVNRV9PRkY6ICd2b2x1bWUtb2ZmJyxcbiAgVk9MVU1FX09OOiAndm9sdW1lLW9uJyxcbiAgV0FSRUhPVVNFOiAnd2FyZWhvdXNlJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBXQVRFUjogJ3dhdGVyJyxcbiAgV0VJR0hUOiAnd2VpZ2h0JyxcbiAgV0lEVEg6ICd3aWR0aCcsXG4gIFdPUktTUEFDRV9QUkVNSVVNOiAnd29ya3NwYWNlLXByZW1pdW0nLFxuICBXUkVOQ0g6ICd3cmVuY2gnLFxuICBZT1VUVUJFOiAneW91dHViZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgSUNPTl9SRUFMTSA9IHtcbiAgQVRWOiB7XG4gICAgQVRWOiAnYXR2LWF0dicsXG4gICAgRFVORV9CVUdHWTogJ2F0di1kdW5lLWJ1Z2d5JyxcbiAgICBHT0xGX0NBUlQ6ICdhdHYtZ29sZi1jYXJ0JyxcbiAgICBHT19LQVJUOiAnYXR2LWdvLWthcnQnLFxuICAgIFNBTkRfUkFJTDogJ2F0di1zYW5kLXJhaWwnLFxuICAgIFNJREVfQllfU0lERTogJ2F0di1zaWRlLWJ5LXNpZGUnLFxuICAgIFRSQUlMRVI6ICdhdHYtdHJhaWxlcicsXG4gIH0sXG4gIEJPQVRNQVJUOiB7XG4gICAgUFdDOiAnYm9hdG1hcnQtcHdjJyxcbiAgICBUUkFJTEVSOiAnYm9hdG1hcnQtdHJhaWxlcicsXG4gIH0sXG4gIFJWOiB7XG4gICAgQ0xBU1NfQTogJ3J2LWNsYXNzLWEnLFxuICAgIENMQVNTX0I6ICdydi1jbGFzcy1iJyxcbiAgICBDTEFTU19DOiAncnYtY2xhc3MtYycsXG4gICAgRklGVEhfV0hFRUw6ICdydi1maWZ0aC13aGVlbCcsXG4gICAgRklTSF9IT1VTRTogJ3J2LWZpc2gtaG91c2UnLFxuICAgIFBBUktfTU9ERUw6ICdydi1wYXJrLW1vZGVsJyxcbiAgICBQT1BfVVBfQ0FNUEVSOiAncnYtcG9wLXVwLWNhbXBlcicsXG4gICAgVFJBVkVMX1RSQUlMRVI6ICdydi10cmF2ZWwtdHJhaWxlcicsXG4gICAgVFJVQ0tfQ0FNUEVSOiAncnYtdHJ1Y2stY2FtcGVyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgUmVhbG1LZXlzV2l0aEljb25zID0gRXh0cmFjdDxSZWFsbUtleSwga2V5b2YgdHlwZW9mIElDT05fUkVBTE0+O1xudHlwZSBSZWFsbUljb24gPSB7XG4gIFtSZWFsbUtleSBpbiBSZWFsbUtleXNXaXRoSWNvbnNdOiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XVtrZXlvZiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XV07XG59W1JlYWxtS2V5c1dpdGhJY29uc107XG5cbmV4cG9ydCB0eXBlIEdsb2JhbEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcbmV4cG9ydCB0eXBlIEljb24gPSBHbG9iYWxJY29uIHwgUmVhbG1JY29uO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ3RvZ2dsZSddKTtcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhhc0JvdHRvbURpdmlkZXI/OiBib29sZWFuO1xuICAgIGhhc1RvcERpdmlkZXI/OiBib29sZWFuO1xuICAgIGlzRXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIGlzT3B0aW9uYWw/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoYXNCb3R0b21EaXZpZGVyOiBmYWxzZSxcbiAgICBoYXNUb3BEaXZpZGVyOiBmYWxzZSxcbiAgICBpc0V4cGFuZGVkOiBmYWxzZSxcbiAgICBpc09wdGlvbmFsOiBmYWxzZSxcbiAgICBsYWJlbDogJycsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUNsaWNrID0gKCkgPT4ge1xuICAgIGVtaXQoJ3RvZ2dsZScpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInRpZGUtYWNjb3JkaW9uLWl0ZW1cIj5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc1RvcERpdmlkZXJcIiAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1oZWFkJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLlkuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVUb2dnbGVDbGlja1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTERdXCI+XG4gICAgICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5pc09wdGlvbmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgIChvcHRpb25hbClcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImlzRXhwYW5kZWQgPyBJQ09OLkVYUEFORF9MRVNTIDogSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWJvZHknLCBwcm9wcy5pc0V4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnLCBDU1MuRElTUExBWS5HUklEXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLk9WRVJGTE9XLlkuSElEREVOLCBDU1MuTUFSR0lOLlkuT05FLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc0JvdHRvbURpdmlkZXJcIiAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFjY29yZGlvbi1ib2R5IHtcbiAgICB0cmFuc2l0aW9uOiBncmlkLXRlbXBsYXRlLXJvd3MgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmV4cGFuZGVkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmNvbGxhcHNlZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAwZnI7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgRUxFTUVOVCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfVEVYVF9BU19JQ09OID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBESVY6ICdkaXYnLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFbGVtZW50ID0gKHR5cGVvZiBFTEVNRU5UKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF07XG5leHBvcnQgdHlwZSBFbGVtZW50VGV4dEFzSWNvbiA9ICh0eXBlb2YgRUxFTUVOVF9URVhUX0FTX0lDT04pW2tleW9mIHR5cGVvZiBFTEVNRU5UX1RFWFRfQVNfSUNPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiZXhwb3J0IGNvbnN0IEFMRVJUID0ge1xuICBFUlJPUjogJ2Vycm9yJyxcbiAgSU5GTzogJ2luZm8nLFxuICBTVUNDRVNTOiAnc3VjY2VzcycsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFsZXJ0ID0gKHR5cGVvZiBBTEVSVClba2V5b2YgdHlwZW9mIEFMRVJUXTtcbiIsImltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuZXhwb3J0IGNvbnN0IEJBREdFX0NPTE9SID0ge1xuICBCTEFDSzogJ2JsYWNrJyxcbiAgQkxVRTogJ2JsdWUnLFxuICBHUkVFTjogJ2dyZWVuJyxcbiAgTElNRTogJ2xpbWUnLFxuICBPUkFOR0U6ICdvcmFuZ2UnLFxuICBQVVJQTEU6ICdwdXJwbGUnLFxuICBSRUQ6ICdyZWQnLFxuICBTQUxNT046ICdzYWxtb24nLFxuICBURUFMOiAndGVhbCcsXG4gIFlFTExPVzogJ3llbGxvdycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgQkFER0VfQ09MT1JfREVUQUlMUzogUmVjb3JkPFxuICBCYWRnZUNvbG9yLFxuICB7XG4gICAgYm9yZGVyQ29sb3I6IHN0cmluZztcbiAgICBpY29uQ29sb3I6IHN0cmluZztcbiAgfVxuPiA9IHtcbiAgW0JBREdFX0NPTE9SLkJMQUNLXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkhJR0gsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5CTFVFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5CTFVFLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuQkxVRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkdSRUVOXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5HUkVFTixcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkdSRUVOLFxuICB9LFxuICBbQkFER0VfQ09MT1IuTElNRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuTElNRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkxJTUUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5PUkFOR0VdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLk9SQU5HRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLk9SQU5HRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlBVUlBMRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuUFVSUExFLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuUFVSUExFLFxuICB9LFxuICBbQkFER0VfQ09MT1IuUkVEXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5SRUQsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5SRUQsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5TQUxNT05dOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlNBTE1PTixcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlNBTE1PTixcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlRFQUxdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlRFQUwsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5URUFMLFxuICB9LFxuICBbQkFER0VfQ09MT1IuWUVMTE9XXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5ZRUxMT1csXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5ZRUxMT1csXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgQkFER0VfVFJVU1RFRCA9IHtcbiAgWUVBUlNfMTA6ICcxMCcsXG4gIFlFQVJTXzE1OiAnMTUnLFxuICBZRUFSU181OiAnNScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBCYWRnZUNvbG9yID0gKHR5cGVvZiBCQURHRV9DT0xPUilba2V5b2YgdHlwZW9mIEJBREdFX0NPTE9SXTtcbmV4cG9ydCB0eXBlIEJhZGdlVHJ1c3RlZFllYXJzID0gKHR5cGVvZiBCQURHRV9UUlVTVEVEKVtrZXlvZiB0eXBlb2YgQkFER0VfVFJVU1RFRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBUYWIgfSBmcm9tICdAL3R5cGVzL1RhYic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhY3RpdmVUYWI6IG51bWJlcjtcbiAgICB0YWJzOiBUYWJbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFjdGl2ZVRhYjogMCxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBlbWl0KCdjaGFuZ2UnLCBpbmRleCk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uLXNlZ21lbnRlZCcsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgXVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWJ1dHRvbi1zZWdtZW50ZWQtdGFiJyxcbiAgICAgICAgaW5kZXggPT09IGFjdGl2ZVRhYlxuICAgICAgICAgID8gW0NTUy5CRy5TVVJGQUNFLkRFRkFVTFQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLlNIQURPVy5CT1RUT01dXG4gICAgICAgICAgOiBbJ2luYWN0aXZlJywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXSxcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLlRXTyxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5RVUFSVEVSLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CVVRUT05fMSxcbiAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICBdXCJcbiAgICAgIDpkYXRhLXRyYWNrPVwidGFiLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgOmtleT1cInRhYi5sYWJlbFwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhpbmRleClcIlxuICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gcHJvcHMudGFic1wiXG4gICAgPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMl9TRU1JQk9MRF1cIj5cbiAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzJfU0VNSUJPTERdXCJcbiAgICAgICAgdi1pZj1cInRhYi5jb3VudCAmJiB0YWIuY291bnQgPiAwXCJcbiAgICAgID5cbiAgICAgICAgKHt7IHRhYi5jb3VudCB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1idXR0b24tc2VnbWVudGVkIHtcbiAgICBtYXgtd2lkdGg6IDIzLjNyZW07XG4gIH1cblxuICAudGlkZS1idXR0b24tc2VnbWVudGVkLXRhYiB7XG4gICAgZmxleDogMTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAuaW5hY3RpdmU6bm90KDpob3Zlcikge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLmluYWN0aXZlOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWRlZmF1bHQpO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRZUEVfQ0FSRCA9IHtcbiAgQUNUSU9OQUJMRTogJ2FjdGlvbicsXG4gIElORk9STUFUSU9OQUw6ICdpbmZvcm1hdGlvbmFsJyxcbiAgU0VMRUNUQUJMRTogJ3NlbGVjdCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBDYXJkVHlwZSA9ICh0eXBlb2YgVFlQRV9DQVJEKVtrZXlvZiB0eXBlb2YgVFlQRV9DQVJEXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIG9uVXBkYXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGJsZWVkPzogbnVtYmVyO1xuICAgIGlzRmxvYXRpbmc/OiBib29sZWFuO1xuICAgIGlzSGVhZGxpbmUxPzogYm9vbGVhbjtcbiAgICBpc0hpZGVhd2F5QnV0dG9ucz86IGJvb2xlYW47XG4gICAgaXNUb3VjaHNjcmVlbj86IGJvb2xlYW47XG4gICAgc3VidGl0bGU/OiBzdHJpbmc7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBibGVlZDogdW5kZWZpbmVkLFxuICAgIGlzRmxvYXRpbmc6IGZhbHNlLFxuICAgIGlzSGVhZGxpbmUxOiBmYWxzZSxcbiAgICBpc0hpZGVhd2F5QnV0dG9uczogdHJ1ZSxcbiAgICBpc1RvdWNoc2NyZWVuOiB1bmRlZmluZWQsXG4gICAgc3VidGl0bGU6IHVuZGVmaW5lZCxcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3NsaWRlQ2hhbmdlJywgc2xpZGVJbmRleDogbnVtYmVyKTogdm9pZDtcbiAgICAoZXZlbnQ6ICdzbGlkZXNBZGRlZFRvVmlldycsIHNsaWRlc0luVmlldzogbnVtYmVyW10pOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBjb250YWluZXJSZWY6IFJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBzbGlkZU9ic2VydmVyID0gcmVmPEludGVyc2VjdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHNsb3RPYnNlcnZlciA9IHJlZjxNdXRhdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGNvbnRlbnRSaWdodEVkZ2UgPSByZWYoKTtcbiAgY29uc3QgY29udGVudFdpZHRoID0gcmVmKCk7XG4gIGNvbnN0IGN1cnJlbnRTbGlkZSA9IHJlZigwKTtcbiAgY29uc3QgZnJhbWVXaWR0aCA9IHJlZigpO1xuICBjb25zdCBoYXNPdmVyZmxvdyA9IHJlZigpO1xuICBjb25zdCBpc0ZpcnN0U2xpZGUgPSByZWYoKTtcbiAgY29uc3QgaXNMYXN0U2xpZGUgPSByZWYoKTtcbiAgY29uc3QgbGFzdFBvc2l0aW9uID0gcmVmKCk7XG4gIGNvbnN0IHNob3dCdXR0b25zID0gcmVmKCk7XG5cbiAgY29uc3QgdXBkYXRlQ29udGFpbmVyQmxlZWQgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLmJsZWVkID09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcblxuICAgIGlmIChpc0xhc3RTbGlkZS52YWx1ZSAmJiBzaG93QnV0dG9ucy52YWx1ZSkge1xuICAgICAgLy8gUHJldmVudCBncmFkaWVudCBmcm9tIGJsZWVkaW5nIG9mZiBsZWZ0IGVkZ2UgaW4gbGFzdCBwb3NpdGlvbi5cbiAgICAgIGNvbnRhaW5lclJlZi52YWx1ZS5zdHlsZS5tYXJnaW4gPSBgLSR7cHJvcHMuYmxlZWR9cHggLSR7cHJvcHMuYmxlZWR9cHggLSR7cHJvcHMuYmxlZWR9cHggMGA7XG4gICAgICBjb250YWluZXJSZWYudmFsdWUuc3R5bGUucGFkZGluZyA9IGAke3Byb3BzLmJsZWVkfXB4ICR7cHJvcHMuYmxlZWR9cHggJHtwcm9wcy5ibGVlZH1weCAwYDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUHJldmVudCBncmFkaWVudCBmcm9tIGJsZWVkaW5nIG9mZiByaWdodCBlZGdlIGluIGZpcnN0IHBvc2l0aW9uLlxuICAgICAgY29udGFpbmVyUmVmLnZhbHVlLnN0eWxlLm1hcmdpbiA9IGAtJHtwcm9wcy5ibGVlZH1weCAwIC0ke3Byb3BzLmJsZWVkfXB4IC0ke3Byb3BzLmJsZWVkfXB4YDtcbiAgICAgIGNvbnRhaW5lclJlZi52YWx1ZS5zdHlsZS5wYWRkaW5nID0gYCR7cHJvcHMuYmxlZWR9cHggMCAke3Byb3BzLmJsZWVkfXB4ICR7cHJvcHMuYmxlZWR9cHhgO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogTWVhc3VyZSB0aGUgY3VycmVudCBzbGlkZSBiYXNlZCBvbiB0aGUgc2Nyb2xsXG4gICAqIHBvc2l0aW9uIG9mIHRoZSBmcmFtZS4gVGhlIGN1cnJlbnQgc2xpZGUgaXNcbiAgICogdGhlIHNsaWRlIHRoYXQgaXMgY2xvc2VzdCB0byB0aGUgbGVmdCBlZGdlIG9mXG4gICAqIHRoZSBmcmFtZS5cbiAgICovXG4gIGNvbnN0IG1lYXN1cmVDdXJyZW50U2xpZGUgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLnZhbHVlO1xuICAgIGlmICghY29udGFpbmVyKSByZXR1cm47XG5cbiAgICAvLyBDYXN0IG9uY2UsIHNvIFRTIGtub3dzIHRoZXNlIGFyZSBIVE1MRWxlbWVudHNcbiAgICBjb25zdCBzbGlkZU9mZnNldHMgPSBBcnJheS5mcm9tKGNvbnRhaW5lci5jaGlsZHJlbiBhcyBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PikubWFwKFxuICAgICAgKHNsaWRlKSA9PiBzbGlkZS5vZmZzZXRMZWZ0XG4gICAgKTtcblxuICAgIGlmIChzbGlkZU9mZnNldHMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBzY3JvbGxMZWZ0ID0gY29udGFpbmVyLnNjcm9sbExlZnQ7XG5cbiAgICBjb25zdCBjbG9zZXN0U2xpZGVPZmZzZXQgPSBzbGlkZU9mZnNldHMucmVkdWNlKChwcmV2LCBjdXJyKSA9PlxuICAgICAgTWF0aC5hYnMoY3VyciAtIHNjcm9sbExlZnQpIDwgTWF0aC5hYnMocHJldiAtIHNjcm9sbExlZnQpID8gY3VyciA6IHByZXZcbiAgICApO1xuXG4gICAgY3VycmVudFNsaWRlLnZhbHVlID0gc2xpZGVPZmZzZXRzLmluZGV4T2YoY2xvc2VzdFNsaWRlT2Zmc2V0KTtcblxuICAgIHVwZGF0ZUNvbnRhaW5lckJsZWVkKCk7XG4gIH07XG5cbiAgY29uc3QgbWVhc3VyZURvbSA9ICgpID0+IHtcbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG4gICAgY29udGVudFJpZ2h0RWRnZS52YWx1ZSA9IE1hdGgucm91bmQoY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbExlZnQgKyBjb250YWluZXJSZWYudmFsdWUuY2xpZW50V2lkdGgpO1xuICAgIGNvbnRlbnRXaWR0aC52YWx1ZSA9IGNvbnRhaW5lclJlZi52YWx1ZS5zY3JvbGxXaWR0aDtcbiAgICBmcmFtZVdpZHRoLnZhbHVlID0gY29udGFpbmVyUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICAgIGhhc092ZXJmbG93LnZhbHVlID0gY29udGVudFdpZHRoLnZhbHVlID4gZnJhbWVXaWR0aC52YWx1ZTtcbiAgICBpc0ZpcnN0U2xpZGUudmFsdWUgPSBjdXJyZW50U2xpZGUudmFsdWUgPT09IDA7XG4gICAgaXNMYXN0U2xpZGUudmFsdWUgPSBjb250ZW50UmlnaHRFZGdlLnZhbHVlID09PSBjb250ZW50V2lkdGgudmFsdWU7XG4gICAgbGFzdFBvc2l0aW9uLnZhbHVlID0gY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFdpZHRoIC0gY29udGFpbmVyUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICAgIHNob3dCdXR0b25zLnZhbHVlID0gaGFzT3ZlcmZsb3cudmFsdWUgJiYgIXByb3BzLmlzVG91Y2hzY3JlZW47XG5cbiAgICBtZWFzdXJlQ3VycmVudFNsaWRlKCk7XG4gIH07XG5cbiAgLy8gVE9ETzogZGVib3VuY2UgdGhpc1xuICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgbWVhc3VyZURvbSgpO1xuICB9O1xuXG4gIGNvbnN0IHNjcm9sbFRvU2xpZGUgPSAoc2xpZGVJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIGNvbnRhaW5lclJlZi52YWx1ZS5zY3JvbGxUbyh7XG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICBsZWZ0OiAoY29udGFpbmVyUmVmLnZhbHVlLmNoaWxkcmVuW3NsaWRlSW5kZXhdIGFzIEhUTUxFbGVtZW50KS5vZmZzZXRMZWZ0LFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHNob3dOZXh0U2xpZGUgPSAoKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIGlmIChjb250ZW50UmlnaHRFZGdlLnZhbHVlID4gY29udGVudFdpZHRoLnZhbHVlKSB7XG4gICAgICBjb250YWluZXJSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgIGxlZnQ6IGNvbnRlbnRXaWR0aC52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIWlzTGFzdFNsaWRlLnZhbHVlKSB7XG4gICAgICBzY3JvbGxUb1NsaWRlKGN1cnJlbnRTbGlkZS52YWx1ZSArIDEpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzaG93UHJldmlvdXNTbGlkZSA9ICgpID0+IHtcbiAgICBpZiAoIWlzRmlyc3RTbGlkZS52YWx1ZSkge1xuICAgICAgc2Nyb2xsVG9TbGlkZShjdXJyZW50U2xpZGUudmFsdWUgLSAxKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb2JzZXJ2ZVNsaWRlcyA9ICgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdDogY29udGFpbmVyUmVmPy52YWx1ZSxcbiAgICAgIHJvb3RNYXJnaW46ICcwcHgnLFxuICAgICAgdGhyZXNob2xkOiAwLjUsXG4gICAgfTtcblxuICAgIHNsaWRlT2JzZXJ2ZXIudmFsdWUgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgIGxldCBzbGlkZXM6IG51bWJlcltdID0gW107XG5cbiAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGVJbmRleCA9IEFycmF5LmZyb20oY29udGFpbmVyUmVmLnZhbHVlPy5jaGlsZHJlbiA/PyBbXSkuaW5kZXhPZihlbnRyeS50YXJnZXQpO1xuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICBzbGlkZXMucHVzaChzbGlkZUluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChzbGlkZXMubGVuZ3RoID4gMCkgZW1pdCgnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXMpO1xuICAgIH0sIG9wdGlvbnMpO1xuICAgIEFycmF5LmZyb20oY29udGFpbmVyUmVmLnZhbHVlPy5jaGlsZHJlbiA/PyBbXSkuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgIGlmIChzbGlkZU9ic2VydmVyLnZhbHVlKSBzbGlkZU9ic2VydmVyLnZhbHVlLm9ic2VydmUoY2hpbGQpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbG90ID0gKCkgPT4ge1xuICAgIGNvbnN0IG9ic2VydmVyQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICBvYnNlcnZlU2xpZGVzKCk7XG4gICAgfTtcbiAgICBzbG90T2JzZXJ2ZXIudmFsdWUgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihvYnNlcnZlckNhbGxiYWNrKTtcbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlKSBzbG90T2JzZXJ2ZXIudmFsdWUub2JzZXJ2ZShjb250YWluZXJSZWYudmFsdWUsIHsgY2hpbGRMaXN0OiB0cnVlIH0pO1xuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKHdpbmRvdykge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG1lYXN1cmVEb20pO1xuICAgIH1cblxuICAgIG1lYXN1cmVEb20oKTtcbiAgICBvYnNlcnZlU2xpZGVzKCk7XG4gICAgb2JzZXJ2ZVNsb3QoKTtcbiAgfSk7XG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgICBzbGlkZU9ic2VydmVyLnZhbHVlPy5kaXNjb25uZWN0KCk7XG4gICAgc2xvdE9ic2VydmVyLnZhbHVlPy5kaXNjb25uZWN0KCk7XG4gIH0pO1xuXG4gIG9uVXBkYXRlZCgoKSA9PiB7XG4gICAgbWVhc3VyZURvbSgpO1xuICB9KTtcblxuICB3YXRjaChjdXJyZW50U2xpZGUsICgpID0+IHtcbiAgICBlbWl0KCdzbGlkZUNoYW5nZScsIGN1cnJlbnRTbGlkZS52YWx1ZSk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jYXJvdXNlbCcsXG4gICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuT05FLFxuICAgICAgQ1NTLldJRFRILk1BWF9GVUxMLFxuICAgIF1cIlxuICAgIHJlZj1cImNhcm91c2VsUmVmXCJcbiAgPlxuICAgIDxzZWN0aW9uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgcHJvcHMudGl0bGUgPyBDU1MuQVhJUzEuQkVUV0VFTiA6IENTUy5BWElTMS5FTkQsIENTUy5BWElTMi5DRU5URVIsIENTUy5XSURUSC5GVUxMXVwiXG4gICAgICB2LWlmPVwiIXByb3BzLmlzRmxvYXRpbmcgJiYgKHNob3dCdXR0b25zIHx8IHByb3BzLnRpdGxlKVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5PTkVdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLnRpdGxlIHx8IHByb3BzLnN1YnRpdGxlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltpc0hlYWRsaW5lMSA/IENTUy5GT05ULlJPTEUuSEVBRExJTkVfMSA6IENTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy50aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy50aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnN1YnRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnN1YnRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuT05FXVwiXG4gICAgICAgIHYtaWY9XCJzaG93QnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpkaXNhYmxlZD1cImN1cnJlbnRTbGlkZSA9PT0gMFwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuVEVSVElBUllcIlxuICAgICAgICAgIEBjbGljaz1cInNob3dQcmV2aW91c1NsaWRlXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0xhc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJzaG93TmV4dFNsaWRlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzbG90IG5hbWU9XCJtaXNjXCIgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5SRUxBVElWRV1cIj5cbiAgICAgIDx1bFxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtY29udGFpbmVyJyxcbiAgICAgICAgICBwcm9wcy5ibGVlZCAmJiAnYmxlZWQnLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkdBUC5PTkUsXG4gICAgICAgICAgQ1NTLkxJU1RfQlVMTEVUUy5PRkYsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlguU0NST0xMLFxuICAgICAgICAgIENTUy5TQ1JPTExCQVIuT0ZGLFxuICAgICAgICAgIENTUy5TTkFQLk9OLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwiY29udGFpbmVyUmVmXCJcbiAgICAgICAgQHNjcm9sbD1cImhhbmRsZVNjcm9sbFwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheScsXG4gICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIHByb3BzLmlzSGlkZWF3YXlCdXR0b25zID8gJ2hpZGVhd2F5JyA6ICcnLFxuICAgICAgXVwiXG4gICAgICB2LWlmPVwiaXNGbG9hdGluZyAmJiBzaG93QnV0dG9uc1wiXG4gICAgPlxuICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkxFRlQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgOmRpc2FibGVkPVwiY3VycmVudFNsaWRlID09PSAwXCJcbiAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICBAY2xpY2s9XCJzaG93UHJldmlvdXNTbGlkZVwiXG4gICAgICAvPlxuXG4gICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgOmRpc2FibGVkPVwiaXNMYXN0U2xpZGVcIlxuICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICBAY2xpY2s9XCJzaG93TmV4dFNsaWRlXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNhcm91c2VsLWNvbnRhaW5lci5ibGVlZCB7XG4gICAgdHJhbnNpdGlvbjogbWFyZ2luIHZhcigtLXRpZGUtYW5pbWF0ZSksIHBhZGRpbmcgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5LmhpZGVhd2F5IHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWw6aG92ZXIgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkuaGlkZWF3YXkge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgT0JKRUNUX0ZJVCA9IHtcbiAgQ09OVEFJTjogJ2NvbnRhaW4nLFxuICBDT1ZFUjogJ2NvdmVyJyxcbiAgU0NBTEVfRE9XTjogJ3NjYWxlLWRvd24nLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgT2JqZWN0Rml0ID0gKHR5cGVvZiBPQkpFQ1RfRklUKVtrZXlvZiB0eXBlb2YgT0JKRUNUX0ZJVF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBPQkpFQ1RfRklUIH0gZnJvbSAnQC90eXBlcy9JbWFnZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IE9iamVjdEZpdCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgdHlwZSB7IFNvdXJjZSB9IGZyb20gJ0AvdHlwZXMvU291cmNlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFsdDogc3RyaW5nO1xuICAgIGhlaWdodD86IHN0cmluZztcbiAgICBpc0xhenk/OiBib29sZWFuO1xuICAgIG9iamVjdEZpdD86IE9iamVjdEZpdDtcbiAgICBzb3VyY2VzPzogU291cmNlW107XG4gICAgc3JjPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBoZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgb2JqZWN0Rml0OiBPQkpFQ1RfRklULkNPVkVSLFxuICAgIHNvdXJjZXM6ICgpID0+IFtdLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHBpY3R1cmUgPSByZWYoKTtcbiAgY29uc3QgaW1nID0gcmVmKCk7XG5cbiAgY29uc3QgaW1hZ2VEZWZhdWx0ID0gJ2h0dHBzOi8vY2RuLXN0YXRpYy50aWxhYnMuaW8vbWFya2V0cGxhY2UvY29tbW9uL2ltYWdlLWNvbWluZy1zb29uLnN2Zyc7XG5cbiAgY29uc3Qgb2JqZWN0Rml0Q2xhc3NOYW1lID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgc3dpdGNoIChwcm9wcy5vYmplY3RGaXQpIHtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5DT05UQUlOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT05UQUlOO1xuICAgICAgY2FzZSBPQkpFQ1RfRklULkNPVkVSOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT1ZFUjtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5TQ0FMRV9ET1dOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5TQ0FMRV9ET1dOO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIE9CSkVDVF9GSVQuQ09WRVI7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBzZXRJbWFnZUZyb21EZWZhdWx0ID0gKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRTcmMgPSBpbWcudmFsdWU/LmN1cnJlbnRTcmM7XG4gICAgY29uc3QgcGljdHVyZVNvdXJjZSA9IHBpY3R1cmUudmFsdWU/LnF1ZXJ5U2VsZWN0b3IoYHNvdXJjZVtzcmNzZXQ9XCIke2N1cnJlbnRTcmN9XCJdYCk7XG5cbiAgICBpZiAoY3VycmVudFNyYyAmJiBwaWN0dXJlU291cmNlKSB7XG4gICAgICBwaWN0dXJlU291cmNlLnNyY3NldCA9IGltYWdlRGVmYXVsdDtcbiAgICB9IGVsc2UgaWYgKGltZy52YWx1ZSkge1xuICAgICAgaW1nLnZhbHVlLnNyYyA9IGltYWdlRGVmYXVsdDtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8cGljdHVyZVxuICAgIDpjbGFzcz1cIlsndGlkZS1pbWFnZScsIENTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgcmVmPVwicGljdHVyZVwiXG4gICAgOnN0eWxlPVwiXG4gICAgICB3aWR0aCB8fCBoZWlnaHRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB3aWR0aDogd2lkdGggfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICBcIlxuICA+XG4gICAgPHNvdXJjZVxuICAgICAgOmtleT1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgOm1lZGlhPVwiYChtaW4td2lkdGg6JHtzb3VyY2UubWVkaWF9cHgpYFwiXG4gICAgICA6c3Jjc2V0PVwic291cmNlLnNyY3NldFwiXG4gICAgICB2LWZvcj1cInNvdXJjZSBpbiBwcm9wcy5zb3VyY2VzXCJcbiAgICAvPlxuXG4gICAgPGltZ1xuICAgICAgOmFsdD1cImFsdFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLk9CSkVDVC5DRU5URVIsIG9iamVjdEZpdENsYXNzTmFtZV1cIlxuICAgICAgOmZldGNocHJpb3JpdHk9XCJpc0xhenkgPyB1bmRlZmluZWQgOiAnaGlnaCdcIlxuICAgICAgOmxvYWRpbmc9XCJwcm9wcy5pc0xhenkgPyAnbGF6eScgOiAnZWFnZXInXCJcbiAgICAgIHJlZj1cImltZ1wiXG4gICAgICA6c3JjPVwic3JjID8/IGltYWdlRGVmYXVsdFwiXG4gICAgICBAZXJyb3I9XCJzZXRJbWFnZUZyb21EZWZhdWx0XCJcbiAgICAvPlxuICA8L3BpY3R1cmU+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGF0YVRyYWNrOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5kZXRlcm1pbmF0ZTogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5jaGVja2VkIHx8IHByb3BzLmluZGV0ZXJtaW5hdGUpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICBkaXNhYmxlZCA/IFsnZGlzYWJsZWQnLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXSA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICBdXCJcbiAgICA6ZGF0YS10cmFjaz1cInByb3BzLmRhdGFUcmFja1wiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiaXNDaGVja2VkXCJcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5OT05FXVwiXG4gICAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICA6bmFtZT1cInByb3BzLm5hbWVcIlxuICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgQGNsaWNrLnByZXZlbnRcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGlzQ2hlY2tlZCA/IFtDU1MuQk9SREVSLkNPTE9SLkhJR0gsIENTUy5CRy5TRUNPTkRBUlldIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICAgIGlzQ2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVwiXG4gICAgICAgIDppY29uPVwicHJvcHMuaW5kZXRlcm1pbmF0ZSA/IElDT04uUkVNT1ZFIDogSUNPTi5DSEVDS1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJpc0NoZWNrZWRcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIEBjbGljay5wcmV2ZW50XG4gICAgICB2LWlmPVwibGFiZWxcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3guZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tIHtcbiAgICB3aWR0aDogdmFyKC0tdGlkZS1mb250LTI4KTtcbiAgICBoZWlnaHQ6IHZhcigtLXRpZGUtZm9udC0yOCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgY2hlY2tlZCA9IHJlZihwcm9wcy5jaGVja2VkKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5jaGVja2VkLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IGNoZWNrZWQudmFsdWUpIHtcbiAgICAgICAgY2hlY2tlZC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1yYWRpbycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICBwcm9wcy5kaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgIF1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImNoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDpkYXRhLXRyYWNrPVwicHJvcHMuZGF0YVRyYWNrXCJcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgbmFtZT1cIlwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXJhZGlvLWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgY2hlY2tlZCA/IENTUy5CT1JERVIuQ09MT1IuSElHSCA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICAgIGNoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8tY2hlY2snLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBwcm9wcy5jaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuQk9EWV8xLCBDU1MuQ1VSU09SLlBPSU5URVIsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1yYWRpby5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jdXN0b20ge1xuICAgIHdpZHRoOiB2YXIoLS10aWRlLWZvbnQtMjgpO1xuICAgIGhlaWdodDogdmFyKC0tdGlkZS1mb250LTI4KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWNoZWNrIHtcbiAgICB3aWR0aDogMXJlbTtcbiAgICBoZWlnaHQ6IDFyZW07XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBwcmljZVRvTnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuaW1wb3J0IHR5cGUgeyBSYW5nZURhdGEgfSBmcm9tICdAL3R5cGVzL0ZhY2V0UmFuZ2UnO1xuaW1wb3J0IHR5cGUgeyBTdHJpbmdJbnB1dCB9IGZyb20gJ0AvdHlwZXMvRm9ybSc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uTGVuZ3RoLCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG5leHBvcnQgY29uc3QgZXJyb3JNZXNzYWdlRGVmYXVsdCA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCB2YWx1ZS4nO1xuXG5leHBvcnQgY29uc3Qgbm9FcnJvciA9IHtcbiAgbWVzc2FnZTogJycsXG4gIHZhbGlkOiB0cnVlLFxufSBhcyBSZWFkb25seTxWYWxpZGF0aW9uUmVzdWx0PjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrRm9ybWF0ID0gKGZvcm1hdDogUmVnRXhwKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCByZXN1bHQgPSBub0Vycm9yO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2VEZWZhdWx0LFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXJyb3JNZXNzYWdlID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG4gIGlmICh0eXBlb2YgZXJyb3JGcm9tUHJvcHMgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVByb3BzLmxlbmd0aCA+IDApIHJldHVybiBlcnJvckZyb21Qcm9wcztcblxuICByZXR1cm4gdHlwZW9mIGVycm9yRnJvbVJlZiA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUmVmLmxlbmd0aCA+IDAgPyBlcnJvckZyb21SZWYgOiBlcnJvck1lc3NhZ2VEZWZhdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkSGFzRXJyb3IgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+XG4gIGVycm9yRnJvbVByb3BzICE9PSBmYWxzZSB8fCBlcnJvckZyb21SZWYgIT09IGZhbHNlO1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRMZW5ndGhJc1ZhbGlkID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKSA9PiB7XG4gIGNvbnN0IGlzRW1wdHlBbmRVbnJlcXVpcmVkID0gdmFsdWUubGVuZ3RoID09PSAwICYmICFyZXF1aXJlZDtcbiAgY29uc3QgaXNUb29Mb25nID0gbWF4bGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heGxlbmd0aDtcbiAgY29uc3QgaXNUb29TaG9ydCA9ICFpc0VtcHR5QW5kVW5yZXF1aXJlZCAmJiBtaW5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWlubGVuZ3RoO1xuXG4gIHJldHVybiAhaXNUb29TaG9ydCAmJiAhaXNUb29Mb25nO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1heFJhbmdlSXNWYWxpZCA9ICh7IG1pbiB9OiBQaWNrPFJhbmdlRGF0YSwgJ21pbic+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWF4OiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNYXggPSAhaXNOYU4obmV3TWF4KSA/IG5ld01heCA6IG51bGw7XG4gICAgaWYgKG1pbiAmJiBuZXdNYXgpIHtcbiAgICAgIGlmIChuZXdNYXggPj0gbWluKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGdyZWF0ZXIgdGhhbiBtaW5gLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1pblJhbmdlSXNWYWxpZCA9ICh7IG1heCB9OiBQaWNrPFJhbmdlRGF0YSwgJ21heCc+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWluOiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNaW4gPSAhaXNOYU4obmV3TWluKSA/IG5ld01pbiA6IG51bGw7XG4gICAgaWYgKG1heCAmJiBuZXdNaW4pIHtcbiAgICAgIGlmIChuZXdNaW4gPD0gbWF4KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGxlc3MgdGhhbiBtYXhgLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdE9wdGlvbnNGcm9tU3RyaW5ncyA9IChzdHJpbmdzOiBzdHJpbmdbXSkgPT5cbiAgc3RyaW5ncy5tYXAoXG4gICAgKG9wdGlvbikgPT5cbiAgICAgICh7XG4gICAgICAgIGxhYmVsOiBvcHRpb24sXG4gICAgICAgIHZhbHVlOiBvcHRpb24sXG4gICAgICB9IGFzIFNlbGVjdE9wdGlvbilcbiAgKTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUZpZWxkVmFsaWRhdGlvbiA9ICh7XG4gIGVycm9yLFxuICBlcnJvckZyb21Qcm9wcyxcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHJlcXVpcmVkID0gZmFsc2UsXG4gIHZhbGlkYXRvcnMsXG4gIHZhbHVlLFxufToge1xuICBlcnJvcjogUmVmPFZhbGlkYXRpb25FcnJvcj47XG4gIGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3I7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU/OiBSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbn0pID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcblxuICBlcnJvci52YWx1ZSA9IGVycm9yRnJvbVByb3BzID8gZXJyb3JGcm9tUHJvcHMgOiBmYWxzZTtcblxuICBpZiAoIWVycm9yLnZhbHVlICYmIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZT8udmFsdWUgfHwgJycsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IHZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWVycm9yLnZhbHVlICYmIChtYXhsZW5ndGggfHwgbWlubGVuZ3RoKSkge1xuICAgIGNvbnN0IGxlbmd0aFZhbGlkYXRpb24gPSB2YWxpZGF0ZUxlbmd0aCh7XG4gICAgICBtYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGgsXG4gICAgICByZXF1aXJlZCxcbiAgICAgIHZhbHVlOiB2YWx1ZT8udmFsdWUgfHwgJycsXG4gICAgfSk7XG5cbiAgICBpZiAoIWxlbmd0aFZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gbGVuZ3RoVmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmllbGRzRnJvbVJlZnMoZmllbGRzOiB7IFtrZXk6IHN0cmluZ106IFJlZjxTdHJpbmdJbnB1dCB8IG51bGw+IH0pIHtcbiAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZHMpIHtcbiAgICBpZiAoZmllbGRzW2tleV0udmFsdWU/LnJlcXVpcmVkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkc1trZXldLnZhbHVlPy52YWx1ZTtcbiAgICAgIHZhbGlkID0gdmFsaWQgJiYgISF2YWx1ZSAmJiB2YWx1ZS50cmltKCkgIT09ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yID0gZmllbGRzW2tleV0udmFsdWU/LmVycm9yO1xuICAgIHZhbGlkID0gdmFsaWQgJiYgIWVycm9yO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVMZW5ndGggPSAoe1xuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsdWUsXG59OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgYmV0d2VlbiAke21pbmxlbmd0aH0gYW5kICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1heGxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbW9yZSB0aGFuICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbGVzcyB0aGFuICR7bWlubGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgdmFsaWRhdG9yczogKCh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0KVtdKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RGaWVsZCB9IGZyb20gJ0AvdHlwZXMvRmllbGQnO1xuICBpbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiwgU2VsZWN0T3B0aW9uR3JvdXAgfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG5cbiAgaW50ZXJmYWNlIFByb3BzIGV4dGVuZHMgU2VsZWN0RmllbGQge1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gIH1cblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHJlcXVpcmVkID0gcmVmKHByb3BzLnJlcXVpcmVkKTtcbiAgY29uc3QgdmFsdWUgPSByZWY8c3RyaW5nIHwgdW5kZWZpbmVkPihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgZXhwYW5kT3B0aW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKTtcbiAgICBpbnB1dD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6ICcnLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJleHBhbmRPcHRpb25zXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlQsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5MRUZULk9ORSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwib3B0Z3JvdXAgaW4gcHJvcHMub3B0Z3JvdXBzXCI+XG4gICAgICAgICAgICA8b3B0Z3JvdXBcbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgOmxhYmVsPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIHYtaWY9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9vcHRncm91cD5cblxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIDp2YWx1ZT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLmxhYmVsIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIDpzZWxlY3RlZD1cInZhbHVlID09PSBvcHRpb24udmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBvcHRpb25zXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5QT1NJVElPTklORy5SSUdIVCwgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHNlbGVjdCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRFWFRfSU5QVVRfVFlQRSA9IHtcbiAgREFURTogJ2RhdGUnLFxuICBEQVRFVElNRV9MT0NBTDogJ2RhdGV0aW1lLWxvY2FsJyxcbiAgRU1BSUw6ICdlbWFpbCcsXG4gIE1PTlRIOiAnbW9udGgnLFxuICBOVU1CRVI6ICdudW1iZXInLFxuICBQQVNTV09SRDogJ3Bhc3N3b3JkJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgVEVMOiAndGVsJyxcbiAgVEVYVDogJ3RleHQnLFxuICBUSU1FOiAndGltZScsXG4gIFVSTDogJ3VybCcsXG4gIFdFRUs6ICd3ZWVrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRleHRJbnB1dFR5cGUgPSAodHlwZW9mIFRFWFRfSU5QVVRfVFlQRSlba2V5b2YgdHlwZW9mIFRFWFRfSU5QVVRfVFlQRV07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgRm9ybVZhbHVlVHJhbnNmb3JtZXIgfSBmcm9tICdAL3R5cGVzL0Zvcm0nO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYXV0b2NvbXBsZXRlPzogYm9vbGVhbjtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGhhc0NsZWFyPzogYm9vbGVhbjtcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc3VmZml4Pzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHRyYW5zZm9ybVZhbHVlPzogRm9ybVZhbHVlVHJhbnNmb3JtZXI7XG4gICAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYXV0b2NvbXBsZXRlOiBmYWxzZSxcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaGFzQ2xlYXI6IGZhbHNlLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdHJhbnNmb3JtVmFsdWU6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBURVhUX0lOUFVUX1RZUEUuVEVYVCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2hvd1Bhc3N3b3JkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgcHJvcHMubGFiZWwgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNDbGVhciA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmhhc0NsZWFyICYmIHZhbHVlLnZhbHVlKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZChcbiAgICAoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKVxuICApO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycgfHwgdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG4gIGNvbnN0IHR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCAmJiBzaG93UGFzc3dvcmQudmFsdWUgPT09IHRydWUgPyBURVhUX0lOUFVUX1RZUEUuVEVYVCA6IHByb3BzLnR5cGVcbiAgKTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBoYW5kbGVWYWxpZGF0aW9uKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXQgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLnRyYW5zZm9ybVZhbHVlKSB7XG4gICAgICBjb25zdCBkaWdpdHMgPSB2YWx1ZS52YWx1ZT8ubWF0Y2goL1xcZC9nKT8uam9pbignJykgfHwgdW5kZWZpbmVkO1xuXG4gICAgICB2YWx1ZS52YWx1ZSA9IGRpZ2l0cyA/IHByb3BzLnRyYW5zZm9ybVZhbHVlKGRpZ2l0cykgOiAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVZhbHVlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHVwZGF0ZVZhbHVlLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC10ZXh0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBoYXNDbGVhciA/IFtDU1MuUEFERElORy5SSUdIVC5IQUxGLCBDU1MuUEFERElORy5MRUZULk9ORV0gOiBbQ1NTLlBBRERJTkcuWC5PTkVdLFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtcHJlZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnByZWZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5wcmVmaXggfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgICAgIEBjbGljay5wcmV2ZW50PVwiaW5wdXQ/LmZvY3VzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmF1dG9jb21wbGV0ZT1cImF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgICAgICA6ZGF0YS10cmFjaz1cInByb3BzLmRhdGFUcmFja1wiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwicHJvcHMubWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJwcm9wcy5taW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInByb3BzLnJlcXVpcmVkXCJcbiAgICAgICAgICAgIDp0eXBlPVwidHlwZVwiXG4gICAgICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICBAaW5wdXQ9XCJoYW5kbGVJbnB1dFwiXG4gICAgICAgICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtc3VmZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnN1ZmZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5zdWZmaXggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUEFERElORy5ZLkhBTEYsIENTUy5QQURESU5HLkZVTEwuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsZWFyXCJcbiAgICAgICAgdi1pZj1cImhhc0NsZWFyICYmIHByb3BzLnR5cGUgIT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICAvPlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLlkuSEFMRiwgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLCBDU1MuQ1VSU09SLlBPSU5URVJdXCJcbiAgICAgICAgOmljb249XCJJQ09OLlZJU0lCSUxJVFlcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdi1pZj1cInByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInByb3BzLnN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQgaW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZXJyb3I/OiBWYWxpZGF0aW9uRXJyb3I7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHJvd3M/OiBudW1iZXI7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHJvd3M6IDgsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICByZXR1cm4gaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dGFyZWEnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIGhhc0Vycm9yICYmICdlcnJvciddXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQnLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGxhYmVsXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgXVwiXG4gICAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgcmVmPVwibGFiZWxcIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9sYWJlbD5cblxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCJcbiAgICAgICAgOmRhdGEtdHJhY2s9XCJwcm9wcy5kYXRhVHJhY2tcIlxuICAgICAgICA6bWF4bGVuZ3RoPVwicHJvcHMubWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cInByb3BzLm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwicHJvcHMubmFtZVwiXG4gICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgOnJlcXVpcmVkPVwicHJvcHMucmVxdWlyZWRcIlxuICAgICAgICA6cm93cz1cInByb3BzLnJvd3NcIlxuICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxuPC9zdHlsZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBCUkVBS1BPSU5UID0ge1xuICBTTTogJ3NtJyxcbiAgTUQ6ICdtZCcsXG4gIExHOiAnbGcnLFxuICBYTDogJ3hsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBNRURJQSA9IHtcbiAgU006IDc2OCxcbiAgTUQ6IDk5MixcbiAgTEc6IDEyMzIsXG4gIFhMOiAxOTIwLFxufTtcblxuZXhwb3J0IHR5cGUgQnJlYWtwb2ludCA9ICh0eXBlb2YgQlJFQUtQT0lOVClba2V5b2YgdHlwZW9mIEJSRUFLUE9JTlRdO1xuZXhwb3J0IHR5cGUgTWVkaWEgPSAodHlwZW9mIE1FRElBKVtrZXlvZiB0eXBlb2YgTUVESUFdO1xuIiwiaW1wb3J0IHsgbmV4dFRpY2sgfSBmcm9tICd2dWUnO1xuXG4vKipcbiAqIERpcmVjdGx5IG1vZGlmaWVzIHRoZSBgPGJvZHk+YCBlbGVtZW50IHRvIGFwcGx5IG9yIHJlbW92ZSBzY3JvbGwgbG9jay5cbiAqIFdoZW4gYGZhbHNlYCBpcyBwcm92aWRlZCwgaXQgb25seSB1bmxvY2tzIHNjcm9sbCBpZiB0aGVyZSBhcmUgbm8gb3BlblxuICogSFRNTCBkaWFsb2cgZWxlbWVudHMuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRTY3JvbGxMb2NrID0gYXN5bmMgKGlzTG9ja2VkOiBib29sZWFuKSA9PiB7XG4gIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gIC8vIGNvbnN0IEJPRFlfTE9DS19DTEFTUyA9ICdib2R5LXNjcm9sbC1sb2NrJztcblxuICBjb25zdCBib2R5ID0gZG9jdW1lbnQuYm9keTtcblxuICBpZiAoaXNMb2NrZWQpIHtcbiAgICBpZiAoIWJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSkge1xuICAgICAgY29uc3Qgc2Nyb2xsWSA9IHdpbmRvdy5zY3JvbGxZO1xuXG4gICAgICBib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kgPSBzY3JvbGxZLnRvU3RyaW5nKCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15JywgYCR7c2Nyb2xsWX1weGApO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnaW5zZXQnLCAnMCcpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLXRvcCcsIGBjYWxjKDBweCAtIHZhcigtLXNhdmVkLXNjcm9sbC15LCAwcHgpKWApO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cteScsICdzY3JvbGwnKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uJywgJ2ZpeGVkJyk7XG5cbiAgICAgIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gICAgICAvLyBib2R5LmNsYXNzTGlzdC5hZGQoQk9EWV9MT0NLX0NMQVNTKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpYWxvZ1tvcGVuXScpKSB7XG4gICAgICBjb25zdCBzYXZlZFNjcm9sbFkgPSBwYXJzZUludChib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kgfHwgJzAnKTtcblxuICAgICAgLy8gQ2Fubm90IGJlIGFwcGxpZWQgdG8gYm9keSB0YWcgaW4gbWFya2V0cGxhY2UgcmVwbyBkdWUgdG8gZGF0YS1jc3Mtc2NvcGVcbiAgICAgIC8vIGJvZHkuY2xhc3NMaXN0LnJlbW92ZShCT0RZX0xPQ0tfQ0xBU1MpO1xuXG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdpbnNldCcpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWFyZ2luVG9wJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdvdmVyZmxvd1knKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3Bvc2l0aW9uJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15Jyk7XG5cbiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICAgIGJlaGF2aW9yOiAnYXV0bycsXG4gICAgICAgIHRvcDogc2F2ZWRTY3JvbGxZLFxuICAgICAgfSk7XG5cbiAgICAgIGRlbGV0ZSBib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1k7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgVE9QX0xBWUVSX0lEID0gJ3RpZGUtdG9wLWxheWVyJztcblxuZXhwb3J0IGNvbnN0IGluaXRGYXV4VG9wTGF5ZXIgPSAoKSA9PiB7XG4gIGxldCB0b3BMYXllciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFRPUF9MQVlFUl9JRCk7XG4gIGlmICghdG9wTGF5ZXIpIHtcbiAgICB0b3BMYXllciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRvcExheWVyLmlkID0gVE9QX0xBWUVSX0lEO1xuICAgIHRvcExheWVyLnNldEF0dHJpYnV0ZSgnZGF0YS1jc3Mtc2NvcGUnLCAnJyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b3BMYXllcik7XG4gIH1cbiAgdG9wTGF5ZXIuc3R5bGUuaXNvbGF0aW9uID0gJ2lzb2xhdGUnO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG5leHRUaWNrLCBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgQlJFQUtQT0lOVCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNCYWNrQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc21pc3NpYmxlPzogYm9vbGVhbjtcbiAgICBpc09wZW46IGJvb2xlYW47XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgd2lkdGg/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBpc0JhY2tCdXR0b246IGZhbHNlLFxuICAgIGlzRGlzbWlzc2libGU6IHRydWUsXG4gICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChlOiAnY2xvc2UnKTogdm9pZDtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kYWxDb250ZW50OiBSZWY8SFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG4gIGNvbnN0IG1vZGFsRGlhbG9nOiBSZWY8SFRNTERpYWxvZ0VsZW1lbnQgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4gPSAoKSA9PiB7XG4gICAgbW9kYWxEaWFsb2cudmFsdWU/LnNob3dNb2RhbCgpO1xuICB9O1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSA9ICgpID0+IHtcbiAgICBtb2RhbERpYWxvZy52YWx1ZT8uY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBzY3JvbGxDb250ZW50VG9Ub3AgPSAoKSA9PiB7XG4gICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgaWYgKCFtb2RhbENvbnRlbnQudmFsdWUpIHJldHVybjtcbiAgICAgIG1vZGFsQ29udGVudC52YWx1ZS5zY3JvbGxUb3AgPSAwO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzRGlzbWlzc2libGUpIGVtaXQoJ2Nsb3NlJyk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXNjYXBlS2V5ZG93biA9IChlOiBFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAocHJvcHMuaXNEaXNtaXNzaWJsZSkgZW1pdCgnY2xvc2UnKTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pc09wZW4sXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAoIW1vZGFsRGlhbG9nLnZhbHVlKSByZXR1cm47XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICAgICAgc2Nyb2xsQ29udGVudFRvVG9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIHNldFNjcm9sbExvY2sobmV3VmFsdWUpO1xuICAgIH1cbiAgKTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChwcm9wcy5pc09wZW4pIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgfVxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaWFsb2dcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtbW9kYWwnLCBDU1MuQkcuSU5JVElBTCwgQ1NTLkhFSUdIVC5GVUxMLCBDU1MuV0lEVEguRlVMTCwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTl1cIlxuICAgIHJlZj1cIm1vZGFsRGlhbG9nXCJcbiAgICA6c3R5bGU9XCJ7ICctLW1vZGFsLXdpZHRoJzogcHJvcHMud2lkdGggfVwiXG4gICAgQGNsaWNrLnNlbGY9XCJoYW5kbGVCYWNrZHJvcENsaWNrXCJcbiAgICBAY2xvc2UucHJldmVudFxuICAgIEBrZXlkb3duLmVzY2FwZT1cImhhbmRsZUVzY2FwZUtleWRvd25cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1tb2RhbC1ib2R5JyxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuT05FLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gICAgICAgIENTUy5TSEFET1cuVE9QLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLldJRFRILk1BWF9GVUxMLFxuICAgICAgICBDU1Mud2l0aEJyZWFrcG9pbnQoW0NTUy5TSEFET1cuQk9UVE9NXSwgQlJFQUtQT0lOVC5TTSksXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8aGVhZGVyXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1tb2RhbC1oZWFkZXInLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5CT1RUT00uT05FLFxuICAgICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiZW1pdCgnYmFjaycpXCJcbiAgICAgICAgICB0aXRsZT1cIkJhY2tcIlxuICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5IRUFETElORV8yXVwiXG4gICAgICAgICAgdi10ZXh0PVwidGl0bGVcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2Nsb3NlJylcIlxuICAgICAgICAgIHYtaWY9XCJpc0Rpc21pc3NpYmxlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvaGVhZGVyPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1tb2RhbC1jb250ZW50JyxcbiAgICAgICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIENTUy5QQURESU5HLlkuVFdPLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwibW9kYWxDb250ZW50XCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Zm9vdGVyXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1tb2RhbC1mb290ZXInLCBDU1MuQVhJUzEuRU5ELCBDU1MuRElTUExBWS5GTEVYLCBDU1MuR0FQLlRXTywgQ1NTLlBBRERJTkcuWS5PTkUsIENTUy5TSEFET1cuVE9QXVwiXG4gICAgICAgIHYtaWY9XCIkc2xvdHMuZm9vdGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiIC8+XG4gICAgICA8L2Zvb3Rlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaWFsb2c+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1tb2RhbCB7XG4gICAgLS1tb2RhbC1wYWRkaW5nLXg6IDIwcHg7XG4gICAgbWF4LXdpZHRoOiB1bnNldDtcbiAgICBtYXgtaGVpZ2h0OiB1bnNldDtcbiAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB9XG4gIC50aWRlLW1vZGFsW29wZW5dIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gIH1cbiAgLnRpZGUtbW9kYWw6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gIH1cbiAgQHN0YXJ0aW5nLXN0eWxlIHtcbiAgICAudGlkZS1tb2RhbFtvcGVuXSB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIH1cbiAgICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gICAgfVxuICB9XG4gIC50aWRlLW1vZGFsLWJvZHkge1xuICAgIHdpZHRoOiB2YXIoLS1tb2RhbC13aWR0aCwgNTc2cHgpO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIHZhcigtLXRpZGUtc3BhY2luZy0yKSk7XG4gIH1cblxuICAudGlkZS1tb2RhbC1oZWFkZXIsXG4gIC50aWRlLW1vZGFsLWZvb3RlciB7XG4gICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLW1vZGFsLXBhZGRpbmcteCk7XG4gIH1cbiAgLnRpZGUtbW9kYWwtY29udGVudCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpIDFmciB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpO1xuICB9XG4gIDp3aGVyZSgudGlkZS1tb2RhbC1jb250ZW50KTpkZWVwKD4gOndoZXJlKCopKSB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cblxuICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgLnRpZGUtbW9kYWwge1xuICAgICAgLS1tb2RhbC1wYWRkaW5nLXg6IHZhcigtLXRpZGUtc3BhY2luZy0yKTtcbiAgICB9XG4gICAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgICBtYXgtaGVpZ2h0OiA4NSU7XG4gICAgICBib3R0b206IGluaXRpYWw7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUJ1dHRvblBhZ2luYXRpb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBwYWdlQ3VycmVudD86IG51bWJlcjtcbiAgICBwYWdlVG90YWw/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBwYWdlQ3VycmVudDogMSxcbiAgICBwYWdlVG90YWw6IDEsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBwYWdlQ3VycmVudCA9IHJlZihwcm9wcy5wYWdlQ3VycmVudCk7XG5cbiAgY29uc3QgcGFnaW5hdGlvbkJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiBuZXcgQXJyYXkocHJvcHMucGFnZVRvdGFsKS5maWxsKCcnKS5tYXAoKGVtcHR5LCBpbmRleCkgPT4gaW5kZXggKyAxKSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIHBhZ2VDdXJyZW50LnZhbHVlID0gaW5kZXg7XG5cbiAgICBlbWl0KCdjaGFuZ2UnLCBldmVudCwgaW5kZXgpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbJ3RpZGUtcGFnaW5hdGlvbicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgPlxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IDFcIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKHBhZ2VDdXJyZW50IC0gMSlcIlxuICAgIC8+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmtleT1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICB2LWZvcj1cInBhZ2luYXRpb25CdXR0b24gaW4gcGFnaW5hdGlvbkJ1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvblBhZ2luYXRpb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOmxhYmVsPVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2socGFnaW5hdGlvbkJ1dHRvbilcIlxuICAgICAgICAvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuXG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvbnNbcGFnaW5hdGlvbkJ1dHRvbnMubGVuZ3RoIC0gMV1cIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhwYWdlQ3VycmVudCArIDEpXCJcbiAgICAvPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPjwvc3R5bGU+XG4iLCIvKipcbiAqIEN1c3RvbSBwb3NpdGlvbmluZyByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy92aXJ0dWFsLWVsZW1lbnRzXG4gKi9cblxuY29uc3Qgc2lkZXMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xuY29uc3QgYWxpZ25tZW50cyA9IFsnc3RhcnQnLCAnZW5kJ107XG5jb25zdCBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL3NpZGVzLnJlZHVjZSgoYWNjLCBzaWRlKSA9PiBhY2MuY29uY2F0KHNpZGUsIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMF0sIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMV0pLCBbXSk7XG5jb25zdCBtaW4gPSBNYXRoLm1pbjtcbmNvbnN0IG1heCA9IE1hdGgubWF4O1xuY29uc3Qgcm91bmQgPSBNYXRoLnJvdW5kO1xuY29uc3QgZmxvb3IgPSBNYXRoLmZsb29yO1xuY29uc3QgY3JlYXRlQ29vcmRzID0gdiA9PiAoe1xuICB4OiB2LFxuICB5OiB2XG59KTtcbmNvbnN0IG9wcG9zaXRlU2lkZU1hcCA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmNvbnN0IG9wcG9zaXRlQWxpZ25tZW50TWFwID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmZ1bmN0aW9uIGNsYW1wKHN0YXJ0LCB2YWx1ZSwgZW5kKSB7XG4gIHJldHVybiBtYXgoc3RhcnQsIG1pbih2YWx1ZSwgZW5kKSk7XG59XG5mdW5jdGlvbiBldmFsdWF0ZSh2YWx1ZSwgcGFyYW0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHBhcmFtKSA6IHZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0U2lkZShwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufVxuZnVuY3Rpb24gZ2V0QXhpc0xlbmd0aChheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG59XG5mdW5jdGlvbiBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSkgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gZ2V0T3Bwb3NpdGVBeGlzKGdldFNpZGVBeGlzKHBsYWNlbWVudCkpO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKSB7XG4gIGlmIChydGwgPT09IHZvaWQgMCkge1xuICAgIHJ0bCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBsZXQgbWFpbkFsaWdubWVudFNpZGUgPSBhbGlnbm1lbnRBeGlzID09PSAneCcgPyBhbGlnbm1lbnQgPT09IChydGwgPyAnZW5kJyA6ICdzdGFydCcpID8gJ3JpZ2h0JyA6ICdsZWZ0JyA6IGFsaWdubWVudCA9PT0gJ3N0YXJ0JyA/ICdib3R0b20nIDogJ3RvcCc7XG4gIGlmIChyZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSA+IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF0pIHtcbiAgICBtYWluQWxpZ25tZW50U2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKTtcbiAgfVxuICByZXR1cm4gW21haW5BbGlnbm1lbnRTaWRlLCBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSldO1xufVxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBjb25zdCBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgYWxpZ25tZW50ID0+IG9wcG9zaXRlQWxpZ25tZW50TWFwW2FsaWdubWVudF0pO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUxpc3Qoc2lkZSwgaXNTdGFydCwgcnRsKSB7XG4gIGNvbnN0IGxyID0gWydsZWZ0JywgJ3JpZ2h0J107XG4gIGNvbnN0IHJsID0gWydyaWdodCcsICdsZWZ0J107XG4gIGNvbnN0IHRiID0gWyd0b3AnLCAnYm90dG9tJ107XG4gIGNvbnN0IGJ0ID0gWydib3R0b20nLCAndG9wJ107XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGlmIChydGwpIHJldHVybiBpc1N0YXJ0ID8gcmwgOiBscjtcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gbHIgOiBybDtcbiAgICBjYXNlICdsZWZ0JzpcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICByZXR1cm4gaXNTdGFydCA/IHRiIDogYnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbXTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhwbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGRpcmVjdGlvbiwgcnRsKSB7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBsZXQgbGlzdCA9IGdldFNpZGVMaXN0KGdldFNpZGUocGxhY2VtZW50KSwgZGlyZWN0aW9uID09PSAnc3RhcnQnLCBydGwpO1xuICBpZiAoYWxpZ25tZW50KSB7XG4gICAgbGlzdCA9IGxpc3QubWFwKHNpZGUgPT4gc2lkZSArIFwiLVwiICsgYWxpZ25tZW50KTtcbiAgICBpZiAoZmxpcEFsaWdubWVudCkge1xuICAgICAgbGlzdCA9IGxpc3QuY29uY2F0KGxpc3QubWFwKGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaXN0O1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIHNpZGUgPT4gb3Bwb3NpdGVTaWRlTWFwW3NpZGVdKTtcbn1cbmZ1bmN0aW9uIGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICAuLi5wYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykgOiB7XG4gICAgdG9wOiBwYWRkaW5nLFxuICAgIHJpZ2h0OiBwYWRkaW5nLFxuICAgIGJvdHRvbTogcGFkZGluZyxcbiAgICBsZWZ0OiBwYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IHJlY3Q7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICBsZWZ0OiB4LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5leHBvcnQgeyBhbGlnbm1lbnRzLCBjbGFtcCwgY3JlYXRlQ29vcmRzLCBldmFsdWF0ZSwgZXhwYW5kUGFkZGluZ09iamVjdCwgZmxvb3IsIGdldEFsaWdubWVudCwgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldEF4aXNMZW5ndGgsIGdldEV4cGFuZGVkUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlQXhpcywgZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQsIGdldFBhZGRpbmdPYmplY3QsIGdldFNpZGUsIGdldFNpZGVBeGlzLCBtYXgsIG1pbiwgcGxhY2VtZW50cywgcmVjdFRvQ2xpZW50UmVjdCwgcm91bmQsIHNpZGVzIH07XG4iLCJpbXBvcnQgeyBnZXRTaWRlQXhpcywgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QXhpc0xlbmd0aCwgZ2V0U2lkZSwgZ2V0QWxpZ25tZW50LCBldmFsdWF0ZSwgZ2V0UGFkZGluZ09iamVjdCwgcmVjdFRvQ2xpZW50UmVjdCwgbWluLCBjbGFtcCwgcGxhY2VtZW50cywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50LCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBzaWRlcywgbWF4LCBnZXRPcHBvc2l0ZUF4aXMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuZXhwb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5cbmZ1bmN0aW9uIGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KF9yZWYsIHBsYWNlbWVudCwgcnRsKSB7XG4gIGxldCB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gPSBfcmVmO1xuICBjb25zdCBzaWRlQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWduTGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChhbGlnbm1lbnRBeGlzKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IHNpZGVBeGlzID09PSAneSc7XG4gIGNvbnN0IGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBmbG9hdGluZy53aWR0aCAvIDI7XG4gIGNvbnN0IGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZmxvYXRpbmcuaGVpZ2h0IC8gMjtcbiAgY29uc3QgY29tbW9uQWxpZ24gPSByZWZlcmVuY2VbYWxpZ25MZW5ndGhdIC8gMiAtIGZsb2F0aW5nW2FsaWduTGVuZ3RoXSAvIDI7XG4gIGxldCBjb29yZHM7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZmxvYXRpbmcuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGZsb2F0aW5nLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG4gIHN3aXRjaCAoZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBjb29yZHNbYWxpZ25tZW50QXhpc10gLT0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kJzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSArPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gY29vcmRzO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqXG4gKiBUaGlzIGV4cG9ydCBkb2VzIG5vdCBoYXZlIGFueSBgcGxhdGZvcm1gIGludGVyZmFjZSBsb2dpYy4gWW91IHdpbGwgbmVlZCB0b1xuICogd3JpdGUgb25lIGZvciB0aGUgcGxhdGZvcm0geW91IGFyZSB1c2luZyBGbG9hdGluZyBVSSB3aXRoLlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSBhc3luYyAocmVmZXJlbmNlLCBmbG9hdGluZywgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IHZhbGlkTWlkZGxld2FyZSA9IG1pZGRsZXdhcmUuZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGZsb2F0aW5nKSk7XG4gIGxldCByZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nLFxuICAgIHN0cmF0ZWd5XG4gIH0pO1xuICBsZXQge1xuICAgIHgsXG4gICAgeVxuICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHBsYWNlbWVudCwgcnRsKTtcbiAgbGV0IHN0YXRlZnVsUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICBsZXQgbWlkZGxld2FyZURhdGEgPSB7fTtcbiAgbGV0IHJlc2V0Q291bnQgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbGlkTWlkZGxld2FyZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHtcbiAgICAgIG5hbWUsXG4gICAgICBmblxuICAgIH0gPSB2YWxpZE1pZGRsZXdhcmVbaV07XG4gICAgY29uc3Qge1xuICAgICAgeDogbmV4dFgsXG4gICAgICB5OiBuZXh0WSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNldFxuICAgIH0gPSBhd2FpdCBmbih7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIGluaXRpYWxQbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH1cbiAgICB9KTtcbiAgICB4ID0gbmV4dFggIT0gbnVsbCA/IG5leHRYIDogeDtcbiAgICB5ID0gbmV4dFkgIT0gbnVsbCA/IG5leHRZIDogeTtcbiAgICBtaWRkbGV3YXJlRGF0YSA9IHtcbiAgICAgIC4uLm1pZGRsZXdhcmVEYXRhLFxuICAgICAgW25hbWVdOiB7XG4gICAgICAgIC4uLm1pZGRsZXdhcmVEYXRhW25hbWVdLFxuICAgICAgICAuLi5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAocmVzZXQgJiYgcmVzZXRDb3VudCA8PSA1MCkge1xuICAgICAgcmVzZXRDb3VudCsrO1xuICAgICAgaWYgKHR5cGVvZiByZXNldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHJlc2V0LnBsYWNlbWVudCkge1xuICAgICAgICAgIHN0YXRlZnVsUGxhY2VtZW50ID0gcmVzZXQucGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNldC5yZWN0cykge1xuICAgICAgICAgIHJlY3RzID0gcmVzZXQucmVjdHMgPT09IHRydWUgPyBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgICAgZmxvYXRpbmcsXG4gICAgICAgICAgICBzdHJhdGVneVxuICAgICAgICAgIH0pIDogcmVzZXQucmVjdHM7XG4gICAgICAgIH1cbiAgICAgICAgKHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHlcbiAgICAgICAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBzdGF0ZWZ1bFBsYWNlbWVudCwgcnRsKSk7XG4gICAgICB9XG4gICAgICBpID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgc3RyYXRlZ3ksXG4gICAgbWlkZGxld2FyZURhdGFcbiAgfTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5hc3luYyBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX2F3YWl0JHBsYXRmb3JtJGlzRWxlO1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhdGZvcm0sXG4gICAgcmVjdHMsXG4gICAgZWxlbWVudHMsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IHN0YXRlO1xuICBjb25zdCB7XG4gICAgYm91bmRhcnkgPSAnY2xpcHBpbmdBbmNlc3RvcnMnLFxuICAgIHJvb3RCb3VuZGFyeSA9ICd2aWV3cG9ydCcsXG4gICAgZWxlbWVudENvbnRleHQgPSAnZmxvYXRpbmcnLFxuICAgIGFsdEJvdW5kYXJ5ID0gZmFsc2UsXG4gICAgcGFkZGluZyA9IDBcbiAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gIGNvbnN0IGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/ICdyZWZlcmVuY2UnIDogJ2Zsb2F0aW5nJztcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgY29uc3QgY2xpcHBpbmdDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChhd2FpdCBwbGF0Zm9ybS5nZXRDbGlwcGluZ1JlY3Qoe1xuICAgIGVsZW1lbnQ6ICgoX2F3YWl0JHBsYXRmb3JtJGlzRWxlID0gYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGVsZW1lbnQpKSkgIT0gbnVsbCA/IF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA6IHRydWUpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgKGF3YWl0IChwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudChlbGVtZW50cy5mbG9hdGluZykpKSxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSkpO1xuICBjb25zdCByZWN0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0cy5mbG9hdGluZy53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3RzLmZsb2F0aW5nLmhlaWdodFxuICB9IDogcmVjdHMucmVmZXJlbmNlO1xuICBjb25zdCBvZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgb2Zmc2V0U2NhbGUgPSAoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KG9mZnNldFBhcmVudCkpKSA/IChhd2FpdCAocGxhdGZvcm0uZ2V0U2NhbGUgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldFNjYWxlKG9mZnNldFBhcmVudCkpKSB8fCB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH0gOiB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCA/IGF3YWl0IHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9KSA6IHJlY3QpO1xuICByZXR1cm4ge1xuICAgIHRvcDogKGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGJvdHRvbTogKGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGxlZnQ6IChjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQpIC8gb2Zmc2V0U2NhbGUueCxcbiAgICByaWdodDogKGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCkgLyBvZmZzZXRTY2FsZS54XG4gIH07XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gb3B0aW9ucyA9PiAoe1xuICBuYW1lOiAnYXJyb3cnLFxuICBvcHRpb25zLFxuICBhc3luYyBmbihzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgbWlkZGxld2FyZURhdGFcbiAgICB9ID0gc3RhdGU7XG4gICAgLy8gU2luY2UgYGVsZW1lbnRgIGlzIHJlcXVpcmVkLCB3ZSBkb24ndCBQYXJ0aWFsPD4gdGhlIHR5cGUuXG4gICAgY29uc3Qge1xuICAgICAgZWxlbWVudCxcbiAgICAgIHBhZGRpbmcgPSAwXG4gICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKSB8fCB7fTtcbiAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgIHgsXG4gICAgICB5XG4gICAgfTtcbiAgICBjb25zdCBheGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYXhpcyk7XG4gICAgY29uc3QgYXJyb3dEaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICBjb25zdCBpc1lBeGlzID0gYXhpcyA9PT0gJ3knO1xuICAgIGNvbnN0IG1pblByb3AgPSBpc1lBeGlzID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgY29uc3QgbWF4UHJvcCA9IGlzWUF4aXMgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgY29uc3QgY2xpZW50UHJvcCA9IGlzWUF4aXMgPyAnY2xpZW50SGVpZ2h0JyA6ICdjbGllbnRXaWR0aCc7XG4gICAgY29uc3QgZW5kRGlmZiA9IHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdICsgcmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gY29vcmRzW2F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICBjb25zdCBzdGFydERpZmYgPSBjb29yZHNbYXhpc10gLSByZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gICAgY29uc3QgYXJyb3dPZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkpO1xuICAgIGxldCBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBhcnJvd09mZnNldFBhcmVudFtjbGllbnRQcm9wXSA6IDA7XG5cbiAgICAvLyBET00gcGxhdGZvcm0gY2FuIHJldHVybiBgd2luZG93YCBhcyB0aGUgYG9mZnNldFBhcmVudGAuXG4gICAgaWYgKCFjbGllbnRTaXplIHx8ICEoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGFycm93T2Zmc2V0UGFyZW50KSkpKSB7XG4gICAgICBjbGllbnRTaXplID0gZWxlbWVudHMuZmxvYXRpbmdbY2xpZW50UHJvcF0gfHwgcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICB9XG4gICAgY29uc3QgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7XG5cbiAgICAvLyBJZiB0aGUgcGFkZGluZyBpcyBsYXJnZSBlbm91Z2ggdGhhdCBpdCBjYXVzZXMgdGhlIGFycm93IHRvIG5vIGxvbmdlciBiZVxuICAgIC8vIGNlbnRlcmVkLCBtb2RpZnkgdGhlIHBhZGRpbmcgc28gdGhhdCBpdCBpcyBjZW50ZXJlZC5cbiAgICBjb25zdCBsYXJnZXN0UG9zc2libGVQYWRkaW5nID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgLSAxO1xuICAgIGNvbnN0IG1pblBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttaW5Qcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG4gICAgY29uc3QgbWF4UGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21heFByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcblxuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgZmxvYXRpbmcgZWxlbWVudCBpZiB0aGUgY2VudGVyXG4gICAgLy8gcG9pbnQgaXMgb3V0c2lkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCdzIGJvdW5kcy5cbiAgICBjb25zdCBtaW4kMSA9IG1pblBhZGRpbmc7XG4gICAgY29uc3QgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC0gbWF4UGFkZGluZztcbiAgICBjb25zdCBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICAgIGNvbnN0IG9mZnNldCA9IGNsYW1wKG1pbiQxLCBjZW50ZXIsIG1heCk7XG5cbiAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsIGVub3VnaCB0aGF0IHRoZSBhcnJvdydzIHBhZGRpbmcgY2F1c2VzIGl0IHRvXG4gICAgLy8gdG8gcG9pbnQgdG8gbm90aGluZyBmb3IgYW4gYWxpZ25lZCBwbGFjZW1lbnQsIGFkanVzdCB0aGUgb2Zmc2V0IG9mIHRoZVxuICAgIC8vIGZsb2F0aW5nIGVsZW1lbnQgaXRzZWxmLiBUbyBlbnN1cmUgYHNoaWZ0KClgIGNvbnRpbnVlcyB0byB0YWtlIGFjdGlvbixcbiAgICAvLyBhIHNpbmdsZSByZXNldCBpcyBwZXJmb3JtZWQgd2hlbiB0aGlzIGlzIHRydWUuXG4gICAgY29uc3Qgc2hvdWxkQWRkT2Zmc2V0ID0gIW1pZGRsZXdhcmVEYXRhLmFycm93ICYmIGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9IG51bGwgJiYgY2VudGVyICE9PSBvZmZzZXQgJiYgcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gLyAyIC0gKGNlbnRlciA8IG1pbiQxID8gbWluUGFkZGluZyA6IG1heFBhZGRpbmcpIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIDwgMDtcbiAgICBjb25zdCBhbGlnbm1lbnRPZmZzZXQgPSBzaG91bGRBZGRPZmZzZXQgPyBjZW50ZXIgPCBtaW4kMSA/IGNlbnRlciAtIG1pbiQxIDogY2VudGVyIC0gbWF4IDogMDtcbiAgICByZXR1cm4ge1xuICAgICAgW2F4aXNdOiBjb29yZHNbYXhpc10gKyBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIFtheGlzXTogb2Zmc2V0LFxuICAgICAgICBjZW50ZXJPZmZzZXQ6IGNlbnRlciAtIG9mZnNldCAtIGFsaWdubWVudE9mZnNldCxcbiAgICAgICAgLi4uKHNob3VsZEFkZE9mZnNldCAmJiB7XG4gICAgICAgICAgYWxpZ25tZW50T2Zmc2V0XG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgcmVzZXQ6IHNob3VsZEFkZE9mZnNldFxuICAgIH07XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIHtcbiAgY29uc3QgYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudCA9IGFsaWdubWVudCA/IFsuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQpLCAuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9PSBhbGlnbm1lbnQpXSA6IGFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0U2lkZShwbGFjZW1lbnQpID09PSBwbGFjZW1lbnQpO1xuICByZXR1cm4gYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudC5maWx0ZXIocGxhY2VtZW50ID0+IHtcbiAgICBpZiAoYWxpZ25tZW50KSB7XG4gICAgICByZXR1cm4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCB8fCAoYXV0b0FsaWdubWVudCA/IGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkgIT09IHBsYWNlbWVudCA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2F1dG9QbGFjZW1lbnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXV0b1AsIF9taWRkbGV3YXJlRGF0YSRhdXRvUDIsIF9wbGFjZW1lbnRzVGhhdEZpdE9uRTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMsXG4gICAgICAgIGF1dG9BbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzJDEgPSBhbGlnbm1lbnQgIT09IHVuZGVmaW5lZCB8fCBhbGxvd2VkUGxhY2VtZW50cyA9PT0gcGxhY2VtZW50cyA/IGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50IHx8IG51bGwsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSA6IGFsbG93ZWRQbGFjZW1lbnRzO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9ICgoX21pZGRsZXdhcmVEYXRhJGF1dG9QID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUC5pbmRleCkgfHwgMDtcbiAgICAgIGNvbnN0IGN1cnJlbnRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4XTtcbiAgICAgIGlmIChjdXJyZW50UGxhY2VtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3QgYWxpZ25tZW50U2lkZXMgPSBnZXRBbGlnbm1lbnRTaWRlcyhjdXJyZW50UGxhY2VtZW50LCByZWN0cywgYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKTtcblxuICAgICAgLy8gTWFrZSBgY29tcHV0ZUNvb3Jkc2Agc3RhcnQgZnJvbSB0aGUgcmlnaHQgcGxhY2UuXG4gICAgICBpZiAocGxhY2VtZW50ICE9PSBjdXJyZW50UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50cyQxWzBdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE92ZXJmbG93cyA9IFtvdmVyZmxvd1tnZXRTaWRlKGN1cnJlbnRQbGFjZW1lbnQpXSwgb3ZlcmZsb3dbYWxpZ25tZW50U2lkZXNbMF1dLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1sxXV1dO1xuICAgICAgY29uc3QgYWxsT3ZlcmZsb3dzID0gWy4uLigoKF9taWRkbGV3YXJlRGF0YSRhdXRvUDIgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QMi5vdmVyZmxvd3MpIHx8IFtdKSwge1xuICAgICAgICBwbGFjZW1lbnQ6IGN1cnJlbnRQbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93czogY3VycmVudE92ZXJmbG93c1xuICAgICAgfV07XG4gICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50cyQxW2N1cnJlbnRJbmRleCArIDFdO1xuXG4gICAgICAvLyBUaGVyZSBhcmUgbW9yZSBwbGFjZW1lbnRzIHRvIGNoZWNrLlxuICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlID0gYWxsT3ZlcmZsb3dzLm1hcChkID0+IHtcbiAgICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KGQucGxhY2VtZW50KTtcbiAgICAgICAgcmV0dXJuIFtkLnBsYWNlbWVudCwgYWxpZ25tZW50ICYmIGNyb3NzQXhpcyA/XG4gICAgICAgIC8vIENoZWNrIGFsb25nIHRoZSBtYWluQXhpcyBhbmQgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgZC5vdmVyZmxvd3Muc2xpY2UoMCwgMikucmVkdWNlKChhY2MsIHYpID0+IGFjYyArIHYsIDApIDpcbiAgICAgICAgLy8gQ2hlY2sgb25seSB0aGUgbWFpbkF4aXMuXG4gICAgICAgIGQub3ZlcmZsb3dzWzBdLCBkLm92ZXJmbG93c107XG4gICAgICB9KS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGUgPSBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UuZmlsdGVyKGQgPT4gZFsyXS5zbGljZSgwLFxuICAgICAgLy8gQWxpZ25lZCBwbGFjZW1lbnRzIHNob3VsZCBub3QgY2hlY2sgdGhlaXIgb3Bwb3NpdGUgY3Jvc3NBeGlzXG4gICAgICAvLyBzaWRlLlxuICAgICAgZ2V0QWxpZ25tZW50KGRbMF0pID8gMiA6IDMpLmV2ZXJ5KHYgPT4gdiA8PSAwKSk7XG4gICAgICBjb25zdCByZXNldFBsYWNlbWVudCA9ICgoX3BsYWNlbWVudHNUaGF0Rml0T25FID0gcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX3BsYWNlbWVudHNUaGF0Rml0T25FWzBdKSB8fCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2VbMF1bMF07XG4gICAgICBpZiAocmVzZXRQbGFjZW1lbnQgIT09IHBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdmbGlwJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGFycm93LCBfbWlkZGxld2FyZURhdGEkZmxpcDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIGluaXRpYWxQbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgICAgZmFsbGJhY2tTdHJhdGVneSA9ICdiZXN0Rml0JyxcbiAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9ICdub25lJyxcbiAgICAgICAgZmxpcEFsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcblxuICAgICAgLy8gSWYgYSByZXNldCBieSB0aGUgYXJyb3cgd2FzIGNhdXNlZCBkdWUgdG8gYW4gYWxpZ25tZW50IG9mZnNldCBiZWluZ1xuICAgICAgLy8gYWRkZWQsIHdlIHNob3VsZCBza2lwIGFueSBsb2dpYyBub3cgc2luY2UgYGZsaXAoKWAgaGFzIGFscmVhZHkgZG9uZSBpdHNcbiAgICAgIC8vIHdvcmsuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI1NDkjaXNzdWVjb21tZW50LTE3MTk2MDE2NDNcbiAgICAgIGlmICgoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaW5pdGlhbFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoaW5pdGlhbFBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc0Jhc2VQbGFjZW1lbnQgPSBnZXRTaWRlKGluaXRpYWxQbGFjZW1lbnQpID09PSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgICAgY29uc3QgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBBbGlnbm1lbnQgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoaW5pdGlhbFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uICE9PSAnbm9uZSc7XG4gICAgICBpZiAoIXNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyAmJiBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50cy5wdXNoKC4uLmdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiwgcnRsKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzID0gW2luaXRpYWxQbGFjZW1lbnQsIC4uLmZhbGxiYWNrUGxhY2VtZW50c107XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dzID0gW107XG4gICAgICBsZXQgb3ZlcmZsb3dzRGF0YSA9ICgoX21pZGRsZXdhcmVEYXRhJGZsaXAgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAub3ZlcmZsb3dzKSB8fCBbXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVdKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBzaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCk7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVzWzBdXSwgb3ZlcmZsb3dbc2lkZXNbMV1dKTtcbiAgICAgIH1cbiAgICAgIG92ZXJmbG93c0RhdGEgPSBbLi4ub3ZlcmZsb3dzRGF0YSwge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93c1xuICAgICAgfV07XG5cbiAgICAgIC8vIE9uZSBvciBtb3JlIHNpZGVzIGlzIG92ZXJmbG93aW5nLlxuICAgICAgaWYgKCFvdmVyZmxvd3MuZXZlcnkoc2lkZSA9PiBzaWRlIDw9IDApKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDIsIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gKCgoX21pZGRsZXdhcmVEYXRhJGZsaXAyID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwMi5pbmRleCkgfHwgMCkgKyAxO1xuICAgICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50c1tuZXh0SW5kZXhdO1xuICAgICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICAgIC8vIFRyeSBuZXh0IHBsYWNlbWVudCBhbmQgcmUtcnVuIHRoZSBsaWZlY3ljbGUuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgaW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dzOiBvdmVyZmxvd3NEYXRhXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcnN0LCBmaW5kIHRoZSBjYW5kaWRhdGVzIHRoYXQgZml0IG9uIHRoZSBtYWluQXhpcyBzaWRlIG9mIG92ZXJmbG93LFxuICAgICAgICAvLyB0aGVuIGZpbmQgdGhlIHBsYWNlbWVudCB0aGF0IGZpdHMgdGhlIGJlc3Qgb24gdGhlIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGxldCByZXNldFBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IGQub3ZlcmZsb3dzWzBdIDw9IDApLnNvcnQoKGEsIGIpID0+IGEub3ZlcmZsb3dzWzFdIC0gYi5vdmVyZmxvd3NbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyLnBsYWNlbWVudDtcblxuICAgICAgICAvLyBPdGhlcndpc2UgZmFsbGJhY2suXG4gICAgICAgIGlmICghcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZhbGxiYWNrU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Jlc3RGaXQnOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFyIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjI7XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlcjIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGQucGxhY2VtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaWRlQXhpcyA9PT0gaW5pdGlhbFNpZGVBeGlzIHx8XG4gICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGJpYXMgdG8gdGhlIGB5YCBzaWRlIGF4aXMgZHVlIHRvIGhvcml6b250YWxcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVhZGluZyBkaXJlY3Rpb25zIGZhdm9yaW5nIGdyZWF0ZXIgd2lkdGguXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTaWRlQXhpcyA9PT0gJ3knO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSkubWFwKGQgPT4gW2QucGxhY2VtZW50LCBkLm92ZXJmbG93cy5maWx0ZXIob3ZlcmZsb3cgPT4gb3ZlcmZsb3cgPiAwKS5yZWR1Y2UoKGFjYywgb3ZlcmZsb3cpID0+IGFjYyArIG92ZXJmbG93LCAwKV0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlcjJbMF07XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudCkge1xuICAgICAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdpbml0aWFsUGxhY2VtZW50JzpcbiAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudCAhPT0gcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoXG4gIH07XG59XG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIHNpZGVzLnNvbWUoc2lkZSA9PiBvdmVyZmxvd1tzaWRlXSA+PSAwKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdoaWRlJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0cmF0ZWd5ID0gJ3JlZmVyZW5jZUhpZGRlbicsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSAncmVmZXJlbmNlSGlkZGVuJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMucmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW5PZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbjogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdlc2NhcGVkJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5mbG9hdGluZyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZE9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgZXNjYXBlZDogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KHJlY3RzKSB7XG4gIGNvbnN0IG1pblggPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gIGNvbnN0IG1pblkgPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC50b3ApKTtcbiAgY29uc3QgbWF4WCA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gIGNvbnN0IG1heFkgPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5ib3R0b20pKTtcbiAgcmV0dXJuIHtcbiAgICB4OiBtaW5YLFxuICAgIHk6IG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJlY3RzQnlMaW5lKHJlY3RzKSB7XG4gIGNvbnN0IHNvcnRlZFJlY3RzID0gcmVjdHMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhLnkgLSBiLnkpO1xuICBjb25zdCBncm91cHMgPSBbXTtcbiAgbGV0IHByZXZSZWN0ID0gbnVsbDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJlY3QgPSBzb3J0ZWRSZWN0c1tpXTtcbiAgICBpZiAoIXByZXZSZWN0IHx8IHJlY3QueSAtIHByZXZSZWN0LnkgPiBwcmV2UmVjdC5oZWlnaHQgLyAyKSB7XG4gICAgICBncm91cHMucHVzaChbcmVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdLnB1c2gocmVjdCk7XG4gICAgfVxuICAgIHByZXZSZWN0ID0gcmVjdDtcbiAgfVxuICByZXR1cm4gZ3JvdXBzLm1hcChyZWN0ID0+IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KHJlY3QpKSk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2lubGluZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICAvLyBBIE1vdXNlRXZlbnQncyBjbGllbnR7WCxZfSBjb29yZHMgY2FuIGJlIHVwIHRvIDIgcGl4ZWxzIG9mZiBhXG4gICAgICAvLyBDbGllbnRSZWN0J3MgYm91bmRzLCBkZXNwaXRlIHRoZSBldmVudCBsaXN0ZW5lciBiZWluZyB0cmlnZ2VyZWQuIEFcbiAgICAgIC8vIHBhZGRpbmcgb2YgMiBzZWVtcyB0byBoYW5kbGUgdGhpcyBpc3N1ZS5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFkZGluZyA9IDIsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBuYXRpdmVDbGllbnRSZWN0cyA9IEFycmF5LmZyb20oKGF3YWl0IChwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMoZWxlbWVudHMucmVmZXJlbmNlKSkpIHx8IFtdKTtcbiAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gZ2V0UmVjdHNCeUxpbmUobmF0aXZlQ2xpZW50UmVjdHMpO1xuICAgICAgY29uc3QgZmFsbGJhY2sgPSByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChuYXRpdmVDbGllbnRSZWN0cykpO1xuICAgICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgICBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICAgIC8vIFRoZXJlIGFyZSB0d28gcmVjdHMgYW5kIHRoZXkgYXJlIGRpc2pvaW5lZC5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA9PT0gMiAmJiBjbGllbnRSZWN0c1swXS5sZWZ0ID4gY2xpZW50UmVjdHNbMV0ucmlnaHQgJiYgeCAhPSBudWxsICYmIHkgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IHJlY3QgaW4gd2hpY2ggdGhlIHBvaW50IGlzIGZ1bGx5IGluc2lkZS5cbiAgICAgICAgICByZXR1cm4gY2xpZW50UmVjdHMuZmluZChyZWN0ID0+IHggPiByZWN0LmxlZnQgLSBwYWRkaW5nT2JqZWN0LmxlZnQgJiYgeCA8IHJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0ICYmIHkgPiByZWN0LnRvcCAtIHBhZGRpbmdPYmplY3QudG9wICYmIHkgPCByZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSB8fCBmYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZXJlIGFyZSAyIG9yIG1vcmUgY29ubmVjdGVkIHJlY3RzLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICBpZiAoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlY3QgPSBjbGllbnRSZWN0c1swXTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gY2xpZW50UmVjdHNbY2xpZW50UmVjdHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBpc1RvcCA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBmaXJzdFJlY3QudG9wO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gbGFzdFJlY3QuYm90dG9tO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IGlzVG9wID8gZmlyc3RSZWN0LmxlZnQgOiBsYXN0UmVjdC5sZWZ0O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBpc1RvcCA/IGZpcnN0UmVjdC5yaWdodCA6IGxhc3RSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNMZWZ0U2lkZSA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ2xlZnQnO1xuICAgICAgICAgIGNvbnN0IG1heFJpZ2h0ID0gbWF4KC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgICAgICAgICBjb25zdCBtaW5MZWZ0ID0gbWluKC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVSZWN0cyA9IGNsaWVudFJlY3RzLmZpbHRlcihyZWN0ID0+IGlzTGVmdFNpZGUgPyByZWN0LmxlZnQgPT09IG1pbkxlZnQgOiByZWN0LnJpZ2h0ID09PSBtYXhSaWdodCk7XG4gICAgICAgICAgY29uc3QgdG9wID0gbWVhc3VyZVJlY3RzWzBdLnRvcDtcbiAgICAgICAgICBjb25zdCBib3R0b20gPSBtZWFzdXJlUmVjdHNbbWVhc3VyZVJlY3RzLmxlbmd0aCAtIDFdLmJvdHRvbTtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gbWluTGVmdDtcbiAgICAgICAgICBjb25zdCByaWdodCA9IG1heFJpZ2h0O1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNldFJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gICAgICAgIH0sXG4gICAgICAgIGZsb2F0aW5nOiBlbGVtZW50cy5mbG9hdGluZyxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlY3RzLnJlZmVyZW5jZS54ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS54IHx8IHJlY3RzLnJlZmVyZW5jZS55ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS55IHx8IHJlY3RzLnJlZmVyZW5jZS53aWR0aCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2Uud2lkdGggfHwgcmVjdHMucmVmZXJlbmNlLmhlaWdodCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiByZXNldFJlY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8vIEZvciB0eXBlIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LCB0aGUgYE9mZnNldE9wdGlvbnNgIHR5cGUgd2FzIGFsc29cbi8vIERlcml2YWJsZS5cblxuYXN5bmMgZnVuY3Rpb24gY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCxcbiAgICBwbGF0Zm9ybSxcbiAgICBlbGVtZW50c1xuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gIGNvbnN0IG1haW5BeGlzTXVsdGkgPSBbJ2xlZnQnLCAndG9wJ10uaW5jbHVkZXMoc2lkZSkgPyAtMSA6IDE7XG4gIGNvbnN0IGNyb3NzQXhpc011bHRpID0gcnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDE7XG4gIGNvbnN0IHJhd1ZhbHVlID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgbGV0IHtcbiAgICBtYWluQXhpcyxcbiAgICBjcm9zc0F4aXMsXG4gICAgYWxpZ25tZW50QXhpc1xuICB9ID0gdHlwZW9mIHJhd1ZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUsXG4gICAgY3Jvc3NBeGlzOiAwLFxuICAgIGFsaWdubWVudEF4aXM6IG51bGxcbiAgfSA6IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUubWFpbkF4aXMgfHwgMCxcbiAgICBjcm9zc0F4aXM6IHJhd1ZhbHVlLmNyb3NzQXhpcyB8fCAwLFxuICAgIGFsaWdubWVudEF4aXM6IHJhd1ZhbHVlLmFsaWdubWVudEF4aXNcbiAgfTtcbiAgaWYgKGFsaWdubWVudCAmJiB0eXBlb2YgYWxpZ25tZW50QXhpcyA9PT0gJ251bWJlcicpIHtcbiAgICBjcm9zc0F4aXMgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gYWxpZ25tZW50QXhpcyAqIC0xIDogYWxpZ25tZW50QXhpcztcbiAgfVxuICByZXR1cm4gaXNWZXJ0aWNhbCA/IHtcbiAgICB4OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aSxcbiAgICB5OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGlcbiAgfSA6IHtcbiAgICB4OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGksXG4gICAgeTogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGlcbiAgfTtcbn1cblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSAwO1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ29mZnNldCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJGFycm93O1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCBkaWZmQ29vcmRzID0gYXdhaXQgY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpO1xuXG4gICAgICAvLyBJZiB0aGUgcGxhY2VtZW50IGlzIHRoZSBzYW1lIGFuZCB0aGUgYXJyb3cgY2F1c2VkIGFuIGFsaWdubWVudCBvZmZzZXRcbiAgICAgIC8vIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBjaGFuZ2UgdGhlIHBvc2l0aW9uaW5nIGNvb3JkaW5hdGVzLlxuICAgICAgaWYgKHBsYWNlbWVudCA9PT0gKChfbWlkZGxld2FyZURhdGEkb2Zmc2UgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UucGxhY2VtZW50KSAmJiAoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiB4ICsgZGlmZkNvb3Jkcy54LFxuICAgICAgICB5OiB5ICsgZGlmZkNvb3Jkcy55LFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4uZGlmZkNvb3JkcyxcbiAgICAgICAgICBwbGFjZW1lbnRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NoaWZ0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudFxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgbGltaXRlciA9IHtcbiAgICAgICAgICBmbjogX3JlZiA9PiB7XG4gICAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9ID0gX3JlZjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMoZ2V0U2lkZShwbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBtYWluQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IG1haW5BeGlzQ29vcmQgLSBvdmVyZmxvd1ttYXhTaWRlXTtcbiAgICAgICAgbWFpbkF4aXNDb29yZCA9IGNsYW1wKG1pbiwgbWFpbkF4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IGNyb3NzQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBjcm9zc0F4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBjcm9zc0F4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGNsYW1wKG1pbiwgY3Jvc3NBeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW1pdGVkQ29vcmRzID0gbGltaXRlci5mbih7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubGltaXRlZENvb3JkcyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHg6IGxpbWl0ZWRDb29yZHMueCAtIHgsXG4gICAgICAgICAgeTogbGltaXRlZENvb3Jkcy55IC0geSxcbiAgICAgICAgICBlbmFibGVkOiB7XG4gICAgICAgICAgICBbbWFpbkF4aXNdOiBjaGVja01haW5BeGlzLFxuICAgICAgICAgICAgW2Nyb3NzQXhpc106IGNoZWNrQ3Jvc3NBeGlzXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG9wdGlvbnMsXG4gICAgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgb2Zmc2V0ID0gMCxcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGNyb3NzQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBtYWluQXhpcyA9IGdldE9wcG9zaXRlQXhpcyhjcm9zc0F4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBjb25zdCByYXdPZmZzZXQgPSBldmFsdWF0ZShvZmZzZXQsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvbXB1dGVkT2Zmc2V0ID0gdHlwZW9mIHJhd09mZnNldCA9PT0gJ251bWJlcicgPyB7XG4gICAgICAgIG1haW5BeGlzOiByYXdPZmZzZXQsXG4gICAgICAgIGNyb3NzQXhpczogMFxuICAgICAgfSA6IHtcbiAgICAgICAgbWFpbkF4aXM6IDAsXG4gICAgICAgIGNyb3NzQXhpczogMCxcbiAgICAgICAgLi4ucmF3T2Zmc2V0XG4gICAgICB9O1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSAtIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBpZiAobWFpbkF4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKG1haW5BeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRvZmZzZTI7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgIGNvbnN0IGlzT3JpZ2luU2lkZSA9IFsndG9wJywgJ2xlZnQnXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIChpc09yaWdpblNpZGUgPyAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZVtjcm9zc0F4aXNdKSB8fCAwIDogMCkgKyAoaXNPcmlnaW5TaWRlID8gMCA6IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSArIChpc09yaWdpblNpZGUgPyAwIDogKChfbWlkZGxld2FyZURhdGEkb2Zmc2UyID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlMltjcm9zc0F4aXNdKSB8fCAwKSAtIChpc09yaWdpblNpZGUgPyBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMgOiAwKTtcbiAgICAgICAgaWYgKGNyb3NzQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKGNyb3NzQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaXplJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX3N0YXRlJG1pZGRsZXdhcmVEYXRhLCBfc3RhdGUkbWlkZGxld2FyZURhdGEyO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYXBwbHkgPSAoKSA9PiB7fSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzWUF4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICAgIH0gPSByZWN0cy5mbG9hdGluZztcbiAgICAgIGxldCBoZWlnaHRTaWRlO1xuICAgICAgbGV0IHdpZHRoU2lkZTtcbiAgICAgIGlmIChzaWRlID09PSAndG9wJyB8fCBzaWRlID09PSAnYm90dG9tJykge1xuICAgICAgICBoZWlnaHRTaWRlID0gc2lkZTtcbiAgICAgICAgd2lkdGhTaWRlID0gYWxpZ25tZW50ID09PSAoKGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSkgPyAnc3RhcnQnIDogJ2VuZCcpID8gJ2xlZnQnIDogJ3JpZ2h0JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpZHRoU2lkZSA9IHNpZGU7XG4gICAgICAgIGhlaWdodFNpZGUgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gJ3RvcCcgOiAnYm90dG9tJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ0hlaWdodCA9IGhlaWdodCAtIG92ZXJmbG93LnRvcCAtIG92ZXJmbG93LmJvdHRvbTtcbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ1dpZHRoID0gd2lkdGggLSBvdmVyZmxvdy5sZWZ0IC0gb3ZlcmZsb3cucmlnaHQ7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodCA9IG1pbihoZWlnaHQgLSBvdmVyZmxvd1toZWlnaHRTaWRlXSwgbWF4aW11bUNsaXBwaW5nSGVpZ2h0KTtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlV2lkdGggPSBtaW4od2lkdGggLSBvdmVyZmxvd1t3aWR0aFNpZGVdLCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCk7XG4gICAgICBjb25zdCBub1NoaWZ0ID0gIXN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0O1xuICAgICAgbGV0IGF2YWlsYWJsZUhlaWdodCA9IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0O1xuICAgICAgbGV0IGF2YWlsYWJsZVdpZHRoID0gb3ZlcmZsb3dBdmFpbGFibGVXaWR0aDtcbiAgICAgIGlmICgoX3N0YXRlJG1pZGRsZXdhcmVEYXRhID0gc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQpICE9IG51bGwgJiYgX3N0YXRlJG1pZGRsZXdhcmVEYXRhLmVuYWJsZWQueCkge1xuICAgICAgICBhdmFpbGFibGVXaWR0aCA9IG1heGltdW1DbGlwcGluZ1dpZHRoO1xuICAgICAgfVxuICAgICAgaWYgKChfc3RhdGUkbWlkZGxld2FyZURhdGEyID0gc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQpICE9IG51bGwgJiYgX3N0YXRlJG1pZGRsZXdhcmVEYXRhMi5lbmFibGVkLnkpIHtcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gbWF4aW11bUNsaXBwaW5nSGVpZ2h0O1xuICAgICAgfVxuICAgICAgaWYgKG5vU2hpZnQgJiYgIWFsaWdubWVudCkge1xuICAgICAgICBjb25zdCB4TWluID0gbWF4KG92ZXJmbG93LmxlZnQsIDApO1xuICAgICAgICBjb25zdCB4TWF4ID0gbWF4KG92ZXJmbG93LnJpZ2h0LCAwKTtcbiAgICAgICAgY29uc3QgeU1pbiA9IG1heChvdmVyZmxvdy50b3AsIDApO1xuICAgICAgICBjb25zdCB5TWF4ID0gbWF4KG92ZXJmbG93LmJvdHRvbSwgMCk7XG4gICAgICAgIGlmIChpc1lBeGlzKSB7XG4gICAgICAgICAgYXZhaWxhYmxlV2lkdGggPSB3aWR0aCAtIDIgKiAoeE1pbiAhPT0gMCB8fCB4TWF4ICE9PSAwID8geE1pbiArIHhNYXggOiBtYXgob3ZlcmZsb3cubGVmdCwgb3ZlcmZsb3cucmlnaHQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBoZWlnaHQgLSAyICogKHlNaW4gIT09IDAgfHwgeU1heCAhPT0gMCA/IHlNaW4gKyB5TWF4IDogbWF4KG92ZXJmbG93LnRvcCwgb3ZlcmZsb3cuYm90dG9tKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcGx5KHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGF2YWlsYWJsZVdpZHRoLFxuICAgICAgICBhdmFpbGFibGVIZWlnaHRcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbmV4dERpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICAgIGlmICh3aWR0aCAhPT0gbmV4dERpbWVuc2lvbnMud2lkdGggfHwgaGVpZ2h0ICE9PSBuZXh0RGltZW5zaW9ucy5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBzaGlmdCwgc2l6ZSB9O1xuIiwiZnVuY3Rpb24gaGFzV2luZG93KCkge1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG59XG5mdW5jdGlvbiBnZXROb2RlTmFtZShub2RlKSB7XG4gIGlmIChpc05vZGUobm9kZSkpIHtcbiAgICByZXR1cm4gKG5vZGUubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgLy8gTW9ja2VkIG5vZGVzIGluIHRlc3RpbmcgZW52aXJvbm1lbnRzIG1heSBub3QgYmUgaW5zdGFuY2VzIG9mIE5vZGUuIEJ5XG4gIC8vIHJldHVybmluZyBgI2RvY3VtZW50YCBhbiBpbmZpbml0ZSBsb29wIHdvbid0IG9jY3VyLlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzIzMTdcbiAgcmV0dXJuICcjZG9jdW1lbnQnO1xufVxuZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gIHJldHVybiAobm9kZSA9PSBudWxsIHx8IChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgd2luZG93O1xufVxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpIHtcbiAgdmFyIF9yZWY7XG4gIHJldHVybiAoX3JlZiA9IChpc05vZGUobm9kZSkgPyBub2RlLm93bmVyRG9jdW1lbnQgOiBub2RlLmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfcmVmLmRvY3VtZW50RWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIE5vZGUgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLk5vZGU7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5FbGVtZW50O1xufVxuZnVuY3Rpb24gaXNIVE1MRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5IVE1MRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpIHx8IHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBTaGFkb3dSb290IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5TaGFkb3dSb290O1xufVxuZnVuY3Rpb24gaXNPdmVyZmxvd0VsZW1lbnQoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgb3ZlcmZsb3csXG4gICAgb3ZlcmZsb3dYLFxuICAgIG92ZXJmbG93WSxcbiAgICBkaXNwbGF5XG4gIH0gPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpICYmICFbJ2lubGluZScsICdjb250ZW50cyddLmluY2x1ZGVzKGRpc3BsYXkpO1xufVxuZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKGVsZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGlzVG9wTGF5ZXIoZWxlbWVudCkge1xuICByZXR1cm4gWyc6cG9wb3Zlci1vcGVuJywgJzptb2RhbCddLnNvbWUoc2VsZWN0b3IgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGlzQ29udGFpbmluZ0Jsb2NrKGVsZW1lbnRPckNzcykge1xuICBjb25zdCB3ZWJraXQgPSBpc1dlYktpdCgpO1xuICBjb25zdCBjc3MgPSBpc0VsZW1lbnQoZWxlbWVudE9yQ3NzKSA/IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudE9yQ3NzKSA6IGVsZW1lbnRPckNzcztcblxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRyYW5zZm9ybXMtMi8jaW5kaXZpZHVhbC10cmFuc2Zvcm1zXG4gIHJldHVybiBbJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUnLCAnc2NhbGUnLCAncm90YXRlJywgJ3BlcnNwZWN0aXZlJ10uc29tZSh2YWx1ZSA9PiBjc3NbdmFsdWVdID8gY3NzW3ZhbHVlXSAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IChjc3MuY29udGFpbmVyVHlwZSA/IGNzcy5jb250YWluZXJUeXBlICE9PSAnbm9ybWFsJyA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuYmFja2Ryb3BGaWx0ZXIgPyBjc3MuYmFja2Ryb3BGaWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuZmlsdGVyID8gY3NzLmZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IFsndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZScsICdzY2FsZScsICdyb3RhdGUnLCAncGVyc3BlY3RpdmUnLCAnZmlsdGVyJ10uc29tZSh2YWx1ZSA9PiAoY3NzLndpbGxDaGFuZ2UgfHwgJycpLmluY2x1ZGVzKHZhbHVlKSkgfHwgWydwYWludCcsICdsYXlvdXQnLCAnc3RyaWN0JywgJ2NvbnRlbnQnXS5zb21lKHZhbHVlID0+IChjc3MuY29udGFpbiB8fCAnJykuaW5jbHVkZXModmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGlmIChpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2UgaWYgKGlzVG9wTGF5ZXIoY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzV2ViS2l0KCkge1xuICBpZiAodHlwZW9mIENTUyA9PT0gJ3VuZGVmaW5lZCcgfHwgIUNTUy5zdXBwb3J0cykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gQ1NTLnN1cHBvcnRzKCctd2Via2l0LWJhY2tkcm9wLWZpbHRlcicsICdub25lJyk7XG59XG5mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUobm9kZSkge1xuICByZXR1cm4gWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUobm9kZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZWxlbWVudCkge1xuICBpZiAoaXNFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxYLFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICBjb25zdCByZXN1bHQgPVxuICAvLyBTdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZS5cbiAgbm9kZS5hc3NpZ25lZFNsb3QgfHxcbiAgLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWQuXG4gIG5vZGUucGFyZW50Tm9kZSB8fFxuICAvLyBTaGFkb3dSb290IGRldGVjdGVkLlxuICBpc1NoYWRvd1Jvb3Qobm9kZSkgJiYgbm9kZS5ob3N0IHx8XG4gIC8vIEZhbGxiYWNrLlxuICBnZXREb2N1bWVudEVsZW1lbnQobm9kZSk7XG4gIHJldHVybiBpc1NoYWRvd1Jvb3QocmVzdWx0KSA/IHJlc3VsdC5ob3N0IDogcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQgPyBub2RlLm93bmVyRG9jdW1lbnQuYm9keSA6IG5vZGUuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cbmZ1bmN0aW9uIGdldE92ZXJmbG93QW5jZXN0b3JzKG5vZGUsIGxpc3QsIHRyYXZlcnNlSWZyYW1lcykge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDI7XG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cbiAgaWYgKHRyYXZlcnNlSWZyYW1lcyA9PT0gdm9pZCAwKSB7XG4gICAgdHJhdmVyc2VJZnJhbWVzID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQyID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudDIuYm9keSk7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhzY3JvbGxhYmxlQW5jZXN0b3IpO1xuICBpZiAoaXNCb2R5KSB7XG4gICAgY29uc3QgZnJhbWVFbGVtZW50ID0gZ2V0RnJhbWVFbGVtZW50KHdpbik7XG4gICAgcmV0dXJuIGxpc3QuY29uY2F0KHdpbiwgd2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc092ZXJmbG93RWxlbWVudChzY3JvbGxhYmxlQW5jZXN0b3IpID8gc2Nyb2xsYWJsZUFuY2VzdG9yIDogW10sIGZyYW1lRWxlbWVudCAmJiB0cmF2ZXJzZUlmcmFtZXMgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhmcmFtZUVsZW1lbnQpIDogW10pO1xuICB9XG4gIHJldHVybiBsaXN0LmNvbmNhdChzY3JvbGxhYmxlQW5jZXN0b3IsIGdldE92ZXJmbG93QW5jZXN0b3JzKHNjcm9sbGFibGVBbmNlc3RvciwgW10sIHRyYXZlcnNlSWZyYW1lcykpO1xufVxuZnVuY3Rpb24gZ2V0RnJhbWVFbGVtZW50KHdpbikge1xuICByZXR1cm4gd2luLnBhcmVudCAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yod2luLnBhcmVudCkgPyB3aW4uZnJhbWVFbGVtZW50IDogbnVsbDtcbn1cblxuZXhwb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgZ2V0Q29udGFpbmluZ0Jsb2NrLCBnZXREb2N1bWVudEVsZW1lbnQsIGdldEZyYW1lRWxlbWVudCwgZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IsIGdldE5vZGVOYW1lLCBnZXROb2RlU2Nyb2xsLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgZ2V0V2luZG93LCBpc0NvbnRhaW5pbmdCbG9jaywgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzTm9kZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGlzU2hhZG93Um9vdCwgaXNUYWJsZUVsZW1lbnQsIGlzVG9wTGF5ZXIsIGlzV2ViS2l0IH07XG4iLCJpbXBvcnQgeyByZWN0VG9DbGllbnRSZWN0LCBkZXRlY3RPdmVyZmxvdyBhcyBkZXRlY3RPdmVyZmxvdyQxLCBvZmZzZXQgYXMgb2Zmc2V0JDEsIGF1dG9QbGFjZW1lbnQgYXMgYXV0b1BsYWNlbWVudCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBmbGlwIGFzIGZsaXAkMSwgc2l6ZSBhcyBzaXplJDEsIGhpZGUgYXMgaGlkZSQxLCBhcnJvdyBhcyBhcnJvdyQxLCBpbmxpbmUgYXMgaW5saW5lJDEsIGxpbWl0U2hpZnQgYXMgbGltaXRTaGlmdCQxLCBjb21wdXRlUG9zaXRpb24gYXMgY29tcHV0ZVBvc2l0aW9uJDEgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5pbXBvcnQgeyByb3VuZCwgY3JlYXRlQ29vcmRzLCBtYXgsIG1pbiwgZmxvb3IgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNIVE1MRWxlbWVudCwgaXNFbGVtZW50LCBnZXRXaW5kb3csIGlzV2ViS2l0LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5vZGVTY3JvbGwsIGdldERvY3VtZW50RWxlbWVudCwgaXNUb3BMYXllciwgZ2V0Tm9kZU5hbWUsIGlzT3ZlcmZsb3dFbGVtZW50LCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc0NvbnRhaW5pbmdCbG9jaywgaXNUYWJsZUVsZW1lbnQsIGdldENvbnRhaW5pbmdCbG9jayB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuZXhwb3J0IHsgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcblxuZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkOiBzaG91bGRGYWxsYmFja1xuICB9O1xufVxuXG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuICFpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRleHRFbGVtZW50IDogZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvb3JkcygxKTtcbiAgfVxuICBjb25zdCByZWN0ID0gZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9ICgkID8gcm91bmQocmVjdC53aWR0aCkgOiByZWN0LndpZHRoKSAvIHdpZHRoO1xuICBsZXQgeSA9ICgkID8gcm91bmQocmVjdC5oZWlnaHQpIDogcmVjdC5oZWlnaHQpIC8gaGVpZ2h0O1xuXG4gIC8vIDAsIE5hTiwgb3IgSW5maW5pdHkgc2hvdWxkIGFsd2F5cyBmYWxsYmFjayB0byAxLlxuXG4gIGlmICgheCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgeCA9IDE7XG4gIH1cbiAgaWYgKCF5IHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICB5ID0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5jb25zdCBub09mZnNldHMgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29vcmRzKDApO1xuZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKCFpc1dlYktpdCgpIHx8ICF3aW4udmlzdWFsVmlld3BvcnQpIHtcbiAgICByZXR1cm4gbm9PZmZzZXRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQsXG4gICAgeTogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcFxuICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhlbGVtZW50LCBpc0ZpeGVkLCBmbG9hdGluZ09mZnNldFBhcmVudCkge1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IGZhbHNlO1xuICB9XG4gIGlmICghZmxvYXRpbmdPZmZzZXRQYXJlbnQgfHwgaXNGaXhlZCAmJiBmbG9hdGluZ09mZnNldFBhcmVudCAhPT0gZ2V0V2luZG93KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc0ZpeGVkO1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgaWYgKGluY2x1ZGVTY2FsZSkge1xuICAgIGlmIChvZmZzZXRQYXJlbnQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSA/IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGxldCB4ID0gKGNsaWVudFJlY3QubGVmdCArIHZpc3VhbE9mZnNldHMueCkgLyBzY2FsZS54O1xuICBsZXQgeSA9IChjbGllbnRSZWN0LnRvcCArIHZpc3VhbE9mZnNldHMueSkgLyBzY2FsZS55O1xuICBsZXQgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGUueDtcbiAgbGV0IGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGUueTtcbiAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZG9tRWxlbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0V2luID0gb2Zmc2V0UGFyZW50ICYmIGlzRWxlbWVudChvZmZzZXRQYXJlbnQpID8gZ2V0V2luZG93KG9mZnNldFBhcmVudCkgOiBvZmZzZXRQYXJlbnQ7XG4gICAgbGV0IGN1cnJlbnRXaW4gPSB3aW47XG4gICAgbGV0IGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgd2hpbGUgKGN1cnJlbnRJRnJhbWUgJiYgb2Zmc2V0UGFyZW50ICYmIG9mZnNldFdpbiAhPT0gY3VycmVudFdpbikge1xuICAgICAgY29uc3QgaWZyYW1lU2NhbGUgPSBnZXRTY2FsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGlmcmFtZVJlY3QgPSBjdXJyZW50SUZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBpZnJhbWVSZWN0LmxlZnQgKyAoY3VycmVudElGcmFtZS5jbGllbnRMZWZ0ICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ0xlZnQpKSAqIGlmcmFtZVNjYWxlLng7XG4gICAgICBjb25zdCB0b3AgPSBpZnJhbWVSZWN0LnRvcCArIChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGxlZnQ7XG4gICAgICB5ICs9IHRvcDtcbiAgICAgIGN1cnJlbnRXaW4gPSBnZXRXaW5kb3coY3VycmVudElGcmFtZSk7XG4gICAgICBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9KTtcbn1cblxuLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuLy8gaW5jb3JyZWN0IGZvciBSVEwuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQsIHJlY3QpIHtcbiAgY29uc3QgbGVmdFNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbiAgaWYgKCFyZWN0KSB7XG4gICAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBsZWZ0U2Nyb2xsO1xuICB9XG4gIHJldHVybiByZWN0LmxlZnQgKyBsZWZ0U2Nyb2xsO1xufVxuXG5mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCBpZ25vcmVTY3JvbGxiYXJYKSB7XG4gIGlmIChpZ25vcmVTY3JvbGxiYXJYID09PSB2b2lkIDApIHtcbiAgICBpZ25vcmVTY3JvbGxiYXJYID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgaHRtbFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHggPSBodG1sUmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSAoaWdub3JlU2Nyb2xsYmFyWCA/IDAgOlxuICAvLyBSVEwgPGJvZHk+IHNjcm9sbGJhci5cbiAgZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQsIGh0bWxSZWN0KSk7XG4gIGNvbnN0IHkgPSBodG1sUmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IHRvcExheWVyID0gZWxlbWVudHMgPyBpc1RvcExheWVyKGVsZW1lbnRzLmZsb2F0aW5nKSA6IGZhbHNlO1xuICBpZiAob2Zmc2V0UGFyZW50ID09PSBkb2N1bWVudEVsZW1lbnQgfHwgdG9wTGF5ZXIgJiYgaXNGaXhlZCkge1xuICAgIHJldHVybiByZWN0O1xuICB9XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgdHJ1ZSkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggKiBzY2FsZS54LFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKiBzY2FsZS55LFxuICAgIHg6IHJlY3QueCAqIHNjYWxlLnggLSBzY3JvbGwuc2Nyb2xsTGVmdCAqIHNjYWxlLnggKyBvZmZzZXRzLnggKyBodG1sT2Zmc2V0LngsXG4gICAgeTogcmVjdC55ICogc2NhbGUueSAtIHNjcm9sbC5zY3JvbGxUb3AgKiBzY2FsZS55ICsgb2Zmc2V0cy55ICsgaHRtbE9mZnNldC55XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RzKGVsZW1lbnQpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKTtcbn1cblxuLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cbmZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCk7XG4gIGNvbnN0IGJvZHkgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgY29uc3Qgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keS5zY3JvbGxXaWR0aCwgYm9keS5jbGllbnRXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5LmNsaWVudEhlaWdodCk7XG4gIGxldCB4ID0gLXNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgY29uc3QgeSA9IC1zY3JvbGwuc2Nyb2xsVG9wO1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1dlYktpdCgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgeDogY2xpcHBpbmdBbmNlc3Rvci54IC0gdmlzdWFsT2Zmc2V0cy54LFxuICAgICAgeTogY2xpcHBpbmdBbmNlc3Rvci55IC0gdmlzdWFsT2Zmc2V0cy55LFxuICAgICAgd2lkdGg6IGNsaXBwaW5nQW5jZXN0b3Iud2lkdGgsXG4gICAgICBoZWlnaHQ6IGNsaXBwaW5nQW5jZXN0b3IuaGVpZ2h0XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdChyZWN0KTtcbn1cbmZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBzdG9wTm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgaWYgKHBhcmVudE5vZGUgPT09IHN0b3BOb2RlIHx8ICFpc0VsZW1lbnQocGFyZW50Tm9kZSkgfHwgaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50LCBbXSwgZmFsc2UpLmZpbHRlcihlbCA9PiBpc0VsZW1lbnQoZWwpICYmIGdldE5vZGVOYW1lKGVsKSAhPT0gJ2JvZHknKTtcbiAgbGV0IGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgY29uc3QgZWxlbWVudElzRml4ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpO1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSXNDb250YWluaW5nID0gaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpO1xuICAgIGlmICghY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzaG91bGREcm9wQ3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiAhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgOiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYgISFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSAmJiBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5jbHVkZXMoY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUucG9zaXRpb24pIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIGN1cnJlbnROb2RlKTtcbiAgICBpZiAoc2hvdWxkRHJvcEN1cnJlbnROb2RlKSB7XG4gICAgICAvLyBEcm9wIG5vbi1jb250YWluaW5nIGJsb2Nrcy5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoYW5jZXN0b3IgPT4gYW5jZXN0b3IgIT09IGN1cnJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVjb3JkIGxhc3QgY29udGFpbmluZyBibG9jayBmb3IgbmV4dCBpdGVyYXRpb24uXG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgY2FjaGUuc2V0KGVsZW1lbnQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIGFuY2VzdG9ycy5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudCxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdBbmNlc3RvcnMnID8gaXNUb3BMYXllcihlbGVtZW50KSA/IFtdIDogZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIHRoaXMuX2MpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgY29uc3QgY2xpcHBpbmdBbmNlc3RvcnMgPSBbLi4uZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzLCByb290Qm91bmRhcnldO1xuICBjb25zdCBmaXJzdENsaXBwaW5nQW5jZXN0b3IgPSBjbGlwcGluZ0FuY2VzdG9yc1swXTtcbiAgY29uc3QgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdBbmNlc3RvcnMucmVkdWNlKChhY2NSZWN0LCBjbGlwcGluZ0FuY2VzdG9yKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcCxcbiAgICB4OiBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICB5OiBjbGlwcGluZ1JlY3QudG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlbGVtZW50LCBvZmZzZXRQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAvLyBJZiB0aGUgPGJvZHk+IHNjcm9sbGJhciBhcHBlYXJzIG9uIHRoZSBsZWZ0IChlLmcuIFJUTCBzeXN0ZW1zKS4gVXNlXG4gICAgICAvLyBGaXJlZm94IHdpdGggbGF5b3V0LnNjcm9sbGJhci5zaWRlID0gMyBpbiBhYm91dDpjb25maWcgdG8gdGVzdCB0aGlzLlxuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwpIDogY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCB4ID0gcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLnggLSBodG1sT2Zmc2V0Lng7XG4gIGNvbnN0IHkgPSByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnkgLSBodG1sT2Zmc2V0Lnk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTdGF0aWNQb3NpdGlvbmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHBvbHlmaWxsKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGVsZW1lbnQpO1xuICB9XG4gIGxldCByYXdPZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcblxuICAvLyBGaXJlZm94IHJldHVybnMgdGhlIDxodG1sPiBlbGVtZW50IGFzIHRoZSBvZmZzZXRQYXJlbnQgaWYgaXQncyBub24tc3RhdGljLFxuICAvLyB3aGlsZSBDaHJvbWUgYW5kIFNhZmFyaSByZXR1cm4gdGhlIDxib2R5PiBlbGVtZW50LiBUaGUgPGJvZHk+IGVsZW1lbnQgbXVzdFxuICAvLyBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgY2FsY3VsYXRpb25zIGV2ZW4gaWYgdGhlIDxodG1sPiBlbGVtZW50IGlzXG4gIC8vIG5vbi1zdGF0aWMuXG4gIGlmIChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgPT09IHJhd09mZnNldFBhcmVudCkge1xuICAgIHJhd09mZnNldFBhcmVudCA9IHJhd09mZnNldFBhcmVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cbiAgcmV0dXJuIHJhd09mZnNldFBhcmVudDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmIChpc1RvcExheWVyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBsZXQgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICB3aGlsZSAoc3ZnT2Zmc2V0UGFyZW50ICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgaWYgKGlzRWxlbWVudChzdmdPZmZzZXRQYXJlbnQpICYmICFpc1N0YXRpY1Bvc2l0aW9uZWQoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgICByZXR1cm4gc3ZnT2Zmc2V0UGFyZW50O1xuICAgICAgfVxuICAgICAgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShzdmdPZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW47XG59XG5cbmNvbnN0IGdldEVsZW1lbnRSZWN0cyA9IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gIGNvbnN0IGZsb2F0aW5nRGltZW5zaW9ucyA9IGF3YWl0IGdldERpbWVuc2lvbnNGbihkYXRhLmZsb2F0aW5nKTtcbiAgcmV0dXJuIHtcbiAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGRhdGEucmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihkYXRhLmZsb2F0aW5nKSwgZGF0YS5zdHJhdGVneSksXG4gICAgZmxvYXRpbmc6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IGZsb2F0aW5nRGltZW5zaW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogZmxvYXRpbmdEaW1lbnNpb25zLmhlaWdodFxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGlzUlRMKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJztcbn1cblxuY29uc3QgcGxhdGZvcm0gPSB7XG4gIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0LFxuICBnZXREb2N1bWVudEVsZW1lbnQsXG4gIGdldENsaXBwaW5nUmVjdCxcbiAgZ2V0T2Zmc2V0UGFyZW50LFxuICBnZXRFbGVtZW50UmVjdHMsXG4gIGdldENsaWVudFJlY3RzLFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRTY2FsZSxcbiAgaXNFbGVtZW50LFxuICBpc1JUTFxufTtcblxuZnVuY3Rpb24gcmVjdHNBcmVFcXVhbChhLCBiKSB7XG4gIHJldHVybiBhLnggPT09IGIueCAmJiBhLnkgPT09IGIueSAmJiBhLndpZHRoID09PSBiLndpZHRoICYmIGEuaGVpZ2h0ID09PSBiLmhlaWdodDtcbn1cblxuLy8gaHR0cHM6Ly9zYW10aG9yLmF1LzIwMjEvb2JzZXJ2aW5nLWRvbS9cbmZ1bmN0aW9uIG9ic2VydmVNb3ZlKGVsZW1lbnQsIG9uTW92ZSkge1xuICBsZXQgaW8gPSBudWxsO1xuICBsZXQgdGltZW91dElkO1xuICBjb25zdCByb290ID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciBfaW87XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgKF9pbyA9IGlvKSA9PSBudWxsIHx8IF9pby5kaXNjb25uZWN0KCk7XG4gICAgaW8gPSBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIHJlZnJlc2goc2tpcCwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHNraXAgPT09IHZvaWQgMCkge1xuICAgICAgc2tpcCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICAgIHRocmVzaG9sZCA9IDE7XG4gICAgfVxuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCBlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4gPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHtcbiAgICAgIGxlZnQsXG4gICAgICB0b3AsXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH0gPSBlbGVtZW50UmVjdEZvclJvb3RNYXJnaW47XG4gICAgaWYgKCFza2lwKSB7XG4gICAgICBvbk1vdmUoKTtcbiAgICB9XG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGluc2V0VG9wID0gZmxvb3IodG9wKTtcbiAgICBjb25zdCBpbnNldFJpZ2h0ID0gZmxvb3Iocm9vdC5jbGllbnRXaWR0aCAtIChsZWZ0ICsgd2lkdGgpKTtcbiAgICBjb25zdCBpbnNldEJvdHRvbSA9IGZsb29yKHJvb3QuY2xpZW50SGVpZ2h0IC0gKHRvcCArIGhlaWdodCkpO1xuICAgIGNvbnN0IGluc2V0TGVmdCA9IGZsb29yKGxlZnQpO1xuICAgIGNvbnN0IHJvb3RNYXJnaW4gPSAtaW5zZXRUb3AgKyBcInB4IFwiICsgLWluc2V0UmlnaHQgKyBcInB4IFwiICsgLWluc2V0Qm90dG9tICsgXCJweCBcIiArIC1pbnNldExlZnQgKyBcInB4XCI7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3RNYXJnaW4sXG4gICAgICB0aHJlc2hvbGQ6IG1heCgwLCBtaW4oMSwgdGhyZXNob2xkKSkgfHwgMVxuICAgIH07XG4gICAgbGV0IGlzRmlyc3RVcGRhdGUgPSB0cnVlO1xuICAgIGZ1bmN0aW9uIGhhbmRsZU9ic2VydmUoZW50cmllcykge1xuICAgICAgY29uc3QgcmF0aW8gPSBlbnRyaWVzWzBdLmludGVyc2VjdGlvblJhdGlvO1xuICAgICAgaWYgKHJhdGlvICE9PSB0aHJlc2hvbGQpIHtcbiAgICAgICAgaWYgKCFpc0ZpcnN0VXBkYXRlKSB7XG4gICAgICAgICAgcmV0dXJuIHJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJhdGlvKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBjbGlwcGVkLCB0aGUgcmF0aW8gaXMgMC4gVGhyb3R0bGUgdGhlIHJlZnJlc2hcbiAgICAgICAgICAvLyB0byBwcmV2ZW50IGFuIGluZmluaXRlIGxvb3Agb2YgdXBkYXRlcy5cbiAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHJlZnJlc2goZmFsc2UsIDFlLTcpO1xuICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlZnJlc2goZmFsc2UsIHJhdGlvKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJhdGlvID09PSAxICYmICFyZWN0c0FyZUVxdWFsKGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbiwgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkpIHtcbiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IGV2ZW4gdGhvdWdoIHRoZSByYXRpbyBpcyByZXBvcnRlZCBhcyAxLCB0aGVcbiAgICAgICAgLy8gZWxlbWVudCBpcyBub3QgYWN0dWFsbHkgZnVsbHkgd2l0aGluIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlcidzIHJvb3RcbiAgICAgICAgLy8gYXJlYSBhbnltb3JlLiBUaGlzIGNhbiBoYXBwZW4gdW5kZXIgcGVyZm9ybWFuY2UgY29uc3RyYWludHMuIFRoaXMgbWF5XG4gICAgICAgIC8vIGJlIGEgYnVnIGluIHRoZSBicm93c2VyJ3MgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgaW1wbGVtZW50YXRpb24uIFRvXG4gICAgICAgIC8vIHdvcmsgYXJvdW5kIHRoaXMsIHdlIGNvbXBhcmUgdGhlIGVsZW1lbnQncyBib3VuZGluZyByZWN0IG5vdyB3aXRoXG4gICAgICAgIC8vIHdoYXQgaXQgd2FzIGF0IHRoZSB0aW1lIHdlIGNyZWF0ZWQgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyLiBJZiB0aGV5XG4gICAgICAgIC8vIGFyZSBub3QgZXF1YWwgdGhlbiB0aGUgZWxlbWVudCBtb3ZlZCwgc28gd2UgcmVmcmVzaC5cbiAgICAgICAgcmVmcmVzaCgpO1xuICAgICAgfVxuICAgICAgaXNGaXJzdFVwZGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIE9sZGVyIGJyb3dzZXJzIGRvbid0IHN1cHBvcnQgYSBgZG9jdW1lbnRgIGFzIHRoZSByb290IGFuZCB3aWxsIHRocm93IGFuXG4gICAgLy8gZXJyb3IuXG4gICAgdHJ5IHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgLy8gSGFuZGxlIDxpZnJhbWU+c1xuICAgICAgICByb290OiByb290Lm93bmVyRG9jdW1lbnRcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpby5vYnNlcnZlKGVsZW1lbnQpO1xuICB9XG4gIHJlZnJlc2godHJ1ZSk7XG4gIHJldHVybiBjbGVhbnVwO1xufVxuXG4vKipcbiAqIEF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgd2hlbiBuZWNlc3NhcnkuXG4gKiBTaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpcyBtb3VudGVkIG9uIHRoZSBET00gb3JcbiAqIHZpc2libGUgb24gdGhlIHNjcmVlbi5cbiAqIEByZXR1cm5zIGNsZWFudXAgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgaW52b2tlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzXG4gKiByZW1vdmVkIGZyb20gdGhlIERPTSBvciBoaWRkZW4gZnJvbSB0aGUgc2NyZWVuLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9VcGRhdGVcbiAqL1xuZnVuY3Rpb24gYXV0b1VwZGF0ZShyZWZlcmVuY2UsIGZsb2F0aW5nLCB1cGRhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgYW5jZXN0b3JTY3JvbGwgPSB0cnVlLFxuICAgIGFuY2VzdG9yUmVzaXplID0gdHJ1ZSxcbiAgICBlbGVtZW50UmVzaXplID0gdHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSAnZnVuY3Rpb24nLFxuICAgIGxheW91dFNoaWZ0ID0gdHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyID09PSAnZnVuY3Rpb24nLFxuICAgIGFuaW1hdGlvbkZyYW1lID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJlZmVyZW5jZUVsID0gdW53cmFwRWxlbWVudChyZWZlcmVuY2UpO1xuICBjb25zdCBhbmNlc3RvcnMgPSBhbmNlc3RvclNjcm9sbCB8fCBhbmNlc3RvclJlc2l6ZSA/IFsuLi4ocmVmZXJlbmNlRWwgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhyZWZlcmVuY2VFbCkgOiBbXSksIC4uLmdldE92ZXJmbG93QW5jZXN0b3JzKGZsb2F0aW5nKV0gOiBbXTtcbiAgYW5jZXN0b3JzLmZvckVhY2goYW5jZXN0b3IgPT4ge1xuICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGFuY2VzdG9yUmVzaXplICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSk7XG4gIH0pO1xuICBjb25zdCBjbGVhbnVwSW8gPSByZWZlcmVuY2VFbCAmJiBsYXlvdXRTaGlmdCA/IG9ic2VydmVNb3ZlKHJlZmVyZW5jZUVsLCB1cGRhdGUpIDogbnVsbDtcbiAgbGV0IHJlb2JzZXJ2ZUZyYW1lID0gLTE7XG4gIGxldCByZXNpemVPYnNlcnZlciA9IG51bGw7XG4gIGlmIChlbGVtZW50UmVzaXplKSB7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoX3JlZiA9PiB7XG4gICAgICBsZXQgW2ZpcnN0RW50cnldID0gX3JlZjtcbiAgICAgIGlmIChmaXJzdEVudHJ5ICYmIGZpcnN0RW50cnkudGFyZ2V0ID09PSByZWZlcmVuY2VFbCAmJiByZXNpemVPYnNlcnZlcikge1xuICAgICAgICAvLyBQcmV2ZW50IHVwZGF0ZSBsb29wcyB3aGVuIHVzaW5nIHRoZSBgc2l6ZWAgbWlkZGxld2FyZS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8xNzQwXG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShmbG9hdGluZyk7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJlb2JzZXJ2ZUZyYW1lKTtcbiAgICAgICAgcmVvYnNlcnZlRnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHZhciBfcmVzaXplT2JzZXJ2ZXI7XG4gICAgICAgICAgKF9yZXNpemVPYnNlcnZlciA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB1cGRhdGUoKTtcbiAgICB9KTtcbiAgICBpZiAocmVmZXJlbmNlRWwgJiYgIWFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHJlZmVyZW5jZUVsKTtcbiAgICB9XG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gIH1cbiAgbGV0IGZyYW1lSWQ7XG4gIGxldCBwcmV2UmVmUmVjdCA9IGFuaW1hdGlvbkZyYW1lID8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSkgOiBudWxsO1xuICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICBmcmFtZUxvb3AoKTtcbiAgfVxuICBmdW5jdGlvbiBmcmFtZUxvb3AoKSB7XG4gICAgY29uc3QgbmV4dFJlZlJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKTtcbiAgICBpZiAocHJldlJlZlJlY3QgJiYgIXJlY3RzQXJlRXF1YWwocHJldlJlZlJlY3QsIG5leHRSZWZSZWN0KSkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICAgIHByZXZSZWZSZWN0ID0gbmV4dFJlZlJlY3Q7XG4gICAgZnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZUxvb3ApO1xuICB9XG4gIHVwZGF0ZSgpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIHZhciBfcmVzaXplT2JzZXJ2ZXIyO1xuICAgIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSk7XG4gICAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICAgIH0pO1xuICAgIGNsZWFudXBJbyA9PSBudWxsIHx8IGNsZWFudXBJbygpO1xuICAgIChfcmVzaXplT2JzZXJ2ZXIyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyMi5kaXNjb25uZWN0KCk7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWVJZCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuY29uc3QgZGV0ZWN0T3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyQxO1xuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBvZmZzZXQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBhdXRvUGxhY2VtZW50JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IHNoaWZ0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZmxpcCQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBzaXplJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gaGlkZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IGFycm93JDE7XG5cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGlubGluZSQxO1xuXG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gbGltaXRTaGlmdCQxO1xuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqL1xuY29uc3QgY29tcHV0ZVBvc2l0aW9uID0gKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpID0+IHtcbiAgLy8gVGhpcyBjYWNoZXMgdGhlIGV4cGVuc2l2ZSBgZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzYCBmdW5jdGlvbiBzbyB0aGF0XG4gIC8vIG11bHRpcGxlIGxpZmVjeWNsZSByZXNldHMgcmUtdXNlIHRoZSBzYW1lIHJlc3VsdC4gSXQgb25seSBsaXZlcyBmb3IgYVxuICAvLyBzaW5nbGUgY2FsbC4gSWYgb3RoZXIgZnVuY3Rpb25zIGJlY29tZSBleHBlbnNpdmUsIHdlIGNhbiBhZGQgdGhlbSBhcyB3ZWxsLlxuICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHtcbiAgICBwbGF0Zm9ybSxcbiAgICAuLi5vcHRpb25zXG4gIH07XG4gIGNvbnN0IHBsYXRmb3JtV2l0aENhY2hlID0ge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMucGxhdGZvcm0sXG4gICAgX2M6IGNhY2hlXG4gIH07XG4gIHJldHVybiBjb21wdXRlUG9zaXRpb24kMShyZWZlcmVuY2UsIGZsb2F0aW5nLCB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucyxcbiAgICBwbGF0Zm9ybTogcGxhdGZvcm1XaXRoQ2FjaGVcbiAgfSk7XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9O1xuIiwiaW1wb3J0IHsgYXJyb3cgYXMgYXJyb3ckMSwgY29tcHV0ZVBvc2l0aW9uIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5leHBvcnQgeyBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHsgaXNOb2RlLCBnZXROb2RlTmFtZSB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuaW1wb3J0IHsgdW5yZWYsIGNvbXB1dGVkLCByZWYsIHNoYWxsb3dSZWYsIHdhdGNoLCBnZXRDdXJyZW50U2NvcGUsIG9uU2NvcGVEaXNwb3NlLCBzaGFsbG93UmVhZG9ubHkgfSBmcm9tICd2dWUtZGVtaSc7XG5cbmZ1bmN0aW9uIGlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UodGFyZ2V0KSB7XG4gIHJldHVybiB0YXJnZXQgIT0gbnVsbCAmJiB0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiAnJGVsJyBpbiB0YXJnZXQ7XG59XG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KHRhcmdldCkge1xuICBpZiAoaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSh0YXJnZXQpKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRhcmdldC4kZWw7XG4gICAgcmV0dXJuIGlzTm9kZShlbGVtZW50KSAmJiBnZXROb2RlTmFtZShlbGVtZW50KSA9PT0gJyNjb21tZW50JyA/IG51bGwgOiBlbGVtZW50O1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIHRvVmFsdWUoc291cmNlKSB7XG4gIHJldHVybiB0eXBlb2Ygc291cmNlID09PSAnZnVuY3Rpb24nID8gc291cmNlKCkgOiB1bnJlZihzb3VyY2UpO1xufVxuXG4vKipcbiAqIFBvc2l0aW9ucyBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHN1Y2ggdGhhdCBpdCBpcyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgYXJyb3cgb3B0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5mdW5jdGlvbiBhcnJvdyhvcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Fycm93JyxcbiAgICBvcHRpb25zLFxuICAgIGZuKGFyZ3MpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB1bndyYXBFbGVtZW50KHRvVmFsdWUob3B0aW9ucy5lbGVtZW50KSk7XG4gICAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJvdyQxKHtcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgcGFkZGluZzogb3B0aW9ucy5wYWRkaW5nXG4gICAgICB9KS5mbihhcmdzKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERQUihlbGVtZW50KSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGNvbnN0IHdpbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gIHJldHVybiB3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xufVxuXG5mdW5jdGlvbiByb3VuZEJ5RFBSKGVsZW1lbnQsIHZhbHVlKSB7XG4gIGNvbnN0IGRwciA9IGdldERQUihlbGVtZW50KTtcbiAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiBkcHIpIC8gZHByO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnQgbmV4dCB0byBhIHJlZmVyZW5jZSBlbGVtZW50IHdoZW4gaXQgaXMgZ2l2ZW4gYSBjZXJ0YWluIENTUyBwb3NpdGlvbmluZyBzdHJhdGVneS5cbiAqIEBwYXJhbSByZWZlcmVuY2UgVGhlIHJlZmVyZW5jZSB0ZW1wbGF0ZSByZWYuXG4gKiBAcGFyYW0gZmxvYXRpbmcgVGhlIGZsb2F0aW5nIHRlbXBsYXRlIHJlZi5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBmbG9hdGluZyBvcHRpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3Z1ZVxuICovXG5mdW5jdGlvbiB1c2VGbG9hdGluZyhyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qgd2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24gPSBvcHRpb25zLndoaWxlRWxlbWVudHNNb3VudGVkO1xuICBjb25zdCBvcGVuT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTtcbiAgICByZXR1cm4gKF90b1ZhbHVlID0gdG9WYWx1ZShvcHRpb25zLm9wZW4pKSAhPSBudWxsID8gX3RvVmFsdWUgOiB0cnVlO1xuICB9KTtcbiAgY29uc3QgbWlkZGxld2FyZU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRvVmFsdWUob3B0aW9ucy5taWRkbGV3YXJlKSk7XG4gIGNvbnN0IHBsYWNlbWVudE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWUyO1xuICAgIHJldHVybiAoX3RvVmFsdWUyID0gdG9WYWx1ZShvcHRpb25zLnBsYWNlbWVudCkpICE9IG51bGwgPyBfdG9WYWx1ZTIgOiAnYm90dG9tJztcbiAgfSk7XG4gIGNvbnN0IHN0cmF0ZWd5T3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTM7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTMgPSB0b1ZhbHVlKG9wdGlvbnMuc3RyYXRlZ3kpKSAhPSBudWxsID8gX3RvVmFsdWUzIDogJ2Fic29sdXRlJztcbiAgfSk7XG4gIGNvbnN0IHRyYW5zZm9ybU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWU0O1xuICAgIHJldHVybiAoX3RvVmFsdWU0ID0gdG9WYWx1ZShvcHRpb25zLnRyYW5zZm9ybSkpICE9IG51bGwgPyBfdG9WYWx1ZTQgOiB0cnVlO1xuICB9KTtcbiAgY29uc3QgcmVmZXJlbmNlRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHVud3JhcEVsZW1lbnQocmVmZXJlbmNlLnZhbHVlKSk7XG4gIGNvbnN0IGZsb2F0aW5nRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHVud3JhcEVsZW1lbnQoZmxvYXRpbmcudmFsdWUpKTtcbiAgY29uc3QgeCA9IHJlZigwKTtcbiAgY29uc3QgeSA9IHJlZigwKTtcbiAgY29uc3Qgc3RyYXRlZ3kgPSByZWYoc3RyYXRlZ3lPcHRpb24udmFsdWUpO1xuICBjb25zdCBwbGFjZW1lbnQgPSByZWYocGxhY2VtZW50T3B0aW9uLnZhbHVlKTtcbiAgY29uc3QgbWlkZGxld2FyZURhdGEgPSBzaGFsbG93UmVmKHt9KTtcbiAgY29uc3QgaXNQb3NpdGlvbmVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgZmxvYXRpbmdTdHlsZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneS52YWx1ZSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnXG4gICAgfTtcbiAgICBpZiAoIWZsb2F0aW5nRWxlbWVudC52YWx1ZSkge1xuICAgICAgcmV0dXJuIGluaXRpYWxTdHlsZXM7XG4gICAgfVxuICAgIGNvbnN0IHhWYWwgPSByb3VuZEJ5RFBSKGZsb2F0aW5nRWxlbWVudC52YWx1ZSwgeC52YWx1ZSk7XG4gICAgY29uc3QgeVZhbCA9IHJvdW5kQnlEUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB5LnZhbHVlKTtcbiAgICBpZiAodHJhbnNmb3JtT3B0aW9uLnZhbHVlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbml0aWFsU3R5bGVzLFxuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKFwiICsgeFZhbCArIFwicHgsIFwiICsgeVZhbCArIFwicHgpXCIsXG4gICAgICAgIC4uLihnZXREUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlKSA+PSAxLjUgJiYge1xuICAgICAgICAgIHdpbGxDaGFuZ2U6ICd0cmFuc2Zvcm0nXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LnZhbHVlLFxuICAgICAgbGVmdDogeFZhbCArIFwicHhcIixcbiAgICAgIHRvcDogeVZhbCArIFwicHhcIlxuICAgIH07XG4gIH0pO1xuICBsZXQgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwO1xuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUgPT0gbnVsbCB8fCBmbG9hdGluZ0VsZW1lbnQudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvcGVuID0gb3Blbk9wdGlvbi52YWx1ZTtcbiAgICBjb21wdXRlUG9zaXRpb24ocmVmZXJlbmNlRWxlbWVudC52YWx1ZSwgZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB7XG4gICAgICBtaWRkbGV3YXJlOiBtaWRkbGV3YXJlT3B0aW9uLnZhbHVlLFxuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRPcHRpb24udmFsdWUsXG4gICAgICBzdHJhdGVneTogc3RyYXRlZ3lPcHRpb24udmFsdWVcbiAgICB9KS50aGVuKHBvc2l0aW9uID0+IHtcbiAgICAgIHgudmFsdWUgPSBwb3NpdGlvbi54O1xuICAgICAgeS52YWx1ZSA9IHBvc2l0aW9uLnk7XG4gICAgICBzdHJhdGVneS52YWx1ZSA9IHBvc2l0aW9uLnN0cmF0ZWd5O1xuICAgICAgcGxhY2VtZW50LnZhbHVlID0gcG9zaXRpb24ucGxhY2VtZW50O1xuICAgICAgbWlkZGxld2FyZURhdGEudmFsdWUgPSBwb3NpdGlvbi5taWRkbGV3YXJlRGF0YTtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGZsb2F0aW5nIGVsZW1lbnQncyBwb3NpdGlvbiBtYXkgYmUgcmVjb21wdXRlZCB3aGlsZSBpdCdzIGNsb3NlZFxuICAgICAgICogYnV0IHN0aWxsIG1vdW50ZWQgKHN1Y2ggYXMgd2hlbiB0cmFuc2l0aW9uaW5nIG91dCkuIFRvIGVuc3VyZVxuICAgICAgICogYGlzUG9zaXRpb25lZGAgd2lsbCBiZSBgZmFsc2VgIGluaXRpYWxseSBvbiB0aGUgbmV4dCBvcGVuLCBhdm9pZFxuICAgICAgICogc2V0dGluZyBpdCB0byBgdHJ1ZWAgd2hlbiBgb3BlbiA9PT0gZmFsc2VgIChtdXN0IGJlIHNwZWNpZmllZCkuXG4gICAgICAgKi9cbiAgICAgIGlzUG9zaXRpb25lZC52YWx1ZSA9IG9wZW4gIT09IGZhbHNlO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgaWYgKHR5cGVvZiB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCgpO1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBhdHRhY2goKSB7XG4gICAgY2xlYW51cCgpO1xuICAgIGlmICh3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUgIT0gbnVsbCAmJiBmbG9hdGluZ0VsZW1lbnQudmFsdWUgIT0gbnVsbCkge1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID0gd2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24ocmVmZXJlbmNlRWxlbWVudC52YWx1ZSwgZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB1cGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICBpZiAoIW9wZW5PcHRpb24udmFsdWUpIHtcbiAgICAgIGlzUG9zaXRpb25lZC52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICB3YXRjaChbbWlkZGxld2FyZU9wdGlvbiwgcGxhY2VtZW50T3B0aW9uLCBzdHJhdGVneU9wdGlvbiwgb3Blbk9wdGlvbl0sIHVwZGF0ZSwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIHdhdGNoKFtyZWZlcmVuY2VFbGVtZW50LCBmbG9hdGluZ0VsZW1lbnRdLCBhdHRhY2gsIHtcbiAgICBmbHVzaDogJ3N5bmMnXG4gIH0pO1xuICB3YXRjaChvcGVuT3B0aW9uLCByZXNldCwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIGlmIChnZXRDdXJyZW50U2NvcGUoKSkge1xuICAgIG9uU2NvcGVEaXNwb3NlKGNsZWFudXApO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogc2hhbGxvd1JlYWRvbmx5KHgpLFxuICAgIHk6IHNoYWxsb3dSZWFkb25seSh5KSxcbiAgICBzdHJhdGVneTogc2hhbGxvd1JlYWRvbmx5KHN0cmF0ZWd5KSxcbiAgICBwbGFjZW1lbnQ6IHNoYWxsb3dSZWFkb25seShwbGFjZW1lbnQpLFxuICAgIG1pZGRsZXdhcmVEYXRhOiBzaGFsbG93UmVhZG9ubHkobWlkZGxld2FyZURhdGEpLFxuICAgIGlzUG9zaXRpb25lZDogc2hhbGxvd1JlYWRvbmx5KGlzUG9zaXRpb25lZCksXG4gICAgZmxvYXRpbmdTdHlsZXMsXG4gICAgdXBkYXRlXG4gIH07XG59XG5cbmV4cG9ydCB7IGFycm93LCB1c2VGbG9hdGluZyB9O1xuIiwiZXhwb3J0IGNvbnN0IGlzQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50LCBlbGVtZW50czogSFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHRhcmdldHMgPSBBcnJheS5pc0FycmF5KGVsZW1lbnRzKSA/IGVsZW1lbnRzIDogW2VsZW1lbnRzXTtcbiAgcmV0dXJuICF0YXJnZXRzLnNvbWUoKGVsKSA9PiBlbC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIG9mZnNldCBhcyBvZmZzZXRNaWRkbGV3YXJlLCBzaGlmdCwgdXNlRmxvYXRpbmcgfSBmcm9tICdAZmxvYXRpbmctdWkvdnVlJztcbiAgaW1wb3J0IHsgY29tcHV0ZWQsIG9uQmVmb3JlTW91bnQsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGlzQ2xpY2tPdXRzaWRlIH0gZnJvbSAnQC91dGlsaXRpZXMvZXZlbnQnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYW5jaG9ySWQ6IHN0cmluZztcbiAgICBvZmZzZXQ/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvZmZzZXQ6IDE2LFxuICB9KTtcblxuICBjb25zdCBhbmNob3I6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBmbG9hdGluZzogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG4gIGNvbnN0IHJvb3Q6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBpc0hvdmVyZWQgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpc1RvZ2dsZWRPcGVuID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgbWlkZGxld2FyZSA9IHJlZihbYXV0b1BsYWNlbWVudCgpLCBvZmZzZXRNaWRkbGV3YXJlKHsgbWFpbkF4aXM6IHByb3BzLm9mZnNldCB9KSwgc2hpZnQoeyBwYWRkaW5nOiAxNiB9KV0pO1xuXG4gIGNvbnN0IGlzU2hvd1BvcG92ZXIgPSBjb21wdXRlZCgoKSA9PiBpc0hvdmVyZWQudmFsdWUgfHwgaXNUb2dnbGVkT3Blbi52YWx1ZSk7XG5cbiAgY29uc3QgeyBmbG9hdGluZ1N0eWxlcyB9ID0gdXNlRmxvYXRpbmcoYW5jaG9yLCBmbG9hdGluZywge1xuICAgIG1pZGRsZXdhcmUsXG4gICAgc3RyYXRlZ3k6ICdmaXhlZCcsXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlIHx8ICFmbG9hdGluZy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc0NsaWNrT3V0c2lkZShlLCBbYW5jaG9yLnZhbHVlLCBmbG9hdGluZy52YWx1ZV0pKSB7XG4gICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyID0gKCkgPT4ge1xuICAgIGlzSG92ZXJlZC52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUgPSAoKSA9PiB7XG4gICAgaXNIb3ZlcmVkLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrID0gKCkgPT4ge1xuICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCA9ICgpID0+IHtcbiAgICBpZiAoIWFuY2hvci52YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIpO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUpO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayk7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUpIHJldHVybiBudWxsO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyKTtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlKTtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93biA9IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhZGRPcGVuTGlzdGVuZXJzVG9Sb290ID0gKCkgPT4ge1xuICAgIGlmICghcm9vdC52YWx1ZSkgcmV0dXJuO1xuICAgIHJvb3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrLCB0cnVlKTtcbiAgICByb290LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24pO1xuICB9O1xuXG4gIGNvbnN0IHJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCA9ICgpID0+IHtcbiAgICBpZiAoIXJvb3QudmFsdWUpIHJldHVybjtcbiAgICByb290LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljaywgdHJ1ZSk7XG4gICAgcm9vdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duKTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVBbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGFuY2hvci52YWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByb3BzLmFuY2hvcklkKTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBpc1RvZ2dsZWRPcGVuLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIGFkZE9wZW5MaXN0ZW5lcnNUb1Jvb3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCgpO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5hbmNob3JJZCxcbiAgICAoKSA9PiB7XG4gICAgICByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCgpO1xuICAgICAgdXBkYXRlQW5jaG9yRWxlbWVudCgpO1xuICAgICAgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50KCk7XG4gICAgfVxuICApO1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBtaWRkbGV3YXJlLnZhbHVlID0gW2F1dG9QbGFjZW1lbnQoKSwgb2Zmc2V0TWlkZGxld2FyZSh7IG1haW5BeGlzOiBwcm9wcy5vZmZzZXQgfSksIHNoaWZ0KHsgcGFkZGluZzogMTYgfSldO1xuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgdXBkYXRlQW5jaG9yRWxlbWVudCgpO1xuICAgIHJvb3QudmFsdWUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50KCk7XG4gIH0pO1xuXG4gIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCgpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8VHJhbnNpdGlvbj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLXBvcG92ZXInLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8yLFxuICAgICAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5TSEFET1cuQk9UVE9NLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwiZmxvYXRpbmdcIlxuICAgICAgICA6c3R5bGU9XCJ7IC4uLmZsb2F0aW5nU3R5bGVzIH1cIlxuICAgICAgICB2LXNob3c9XCJpc1Nob3dQb3BvdmVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvVHJhbnNpdGlvbj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXBvcG92ZXIge1xuICAgIG1heC13aWR0aDogMjU2cHg7XG4gIH1cbiAgLnYtZW50ZXItZnJvbSxcbiAgLnYtbGVhdmUtdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgLnYtZW50ZXItYWN0aXZlLFxuICAudi1sZWF2ZS1hY3RpdmUge1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuICAudi1lbnRlci10byxcbiAgLnYtbGVhdmUtZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG9uQmVmb3JlTW91bnQsIG9uTW91bnRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIsIHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJy4vVGlkZURpdmlkZXIudnVlJztcblxuICBpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc09wZW46IGJvb2xlYW47XG4gICAgaXNCYWNrQnV0dG9uPzogYm9vbGVhbjtcbiAgfTtcbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChlOiAnYmFjaycpOiB2b2lkO1xuICAgIChlOiAnY2xvc2UnKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgZGlhbG9nRWxlbWVudDogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4gPSAoKSA9PiB7XG4gICAgZGlhbG9nRWxlbWVudC52YWx1ZT8uc2hvd01vZGFsKCk7XG4gIH07XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlID0gKCkgPT4ge1xuICAgIGRpYWxvZ0VsZW1lbnQudmFsdWU/LmNsb3NlKCk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuaXNPcGVuLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKCFkaWFsb2dFbGVtZW50LnZhbHVlKSByZXR1cm47XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSgpO1xuICAgICAgfVxuICAgICAgc2V0U2Nyb2xsTG9jayhuZXdWYWx1ZSk7XG4gICAgfVxuICApO1xuXG4gIG9uQmVmb3JlTW91bnQoKCkgPT4ge1xuICAgIGluaXRGYXV4VG9wTGF5ZXIoKTtcbiAgfSk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMuaXNPcGVuKSB7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgIH1cbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8VGVsZXBvcnQgOnRvPVwiYCMke1RPUF9MQVlFUl9JRH1gXCI+XG4gICAgPGRpYWxvZ1xuICAgICAgOmNsYXNzPVwiWyd0aWRlLXNoZWV0JywgQ1NTLkJHLklOSVRJQUwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLldJRFRILkZVTEwsIENTUy5PVkVSRkxPVy5YWS5ISURERU5dXCJcbiAgICAgIHJlZj1cImRpYWxvZ0VsZW1lbnRcIlxuICAgICAgQGNsaWNrLnNlbGY9XCJlbWl0KCdjbG9zZScpXCJcbiAgICAgIEBjbG9zZT1cImVtaXQoJ2Nsb3NlJylcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLXNoZWV0LWJvZHknLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPGhlYWRlciA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLlBBRERJTkcuWC5PTkUsIENTUy5QQURESU5HLlRPUC5PTkVdXCI+XG4gICAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdiYWNrJylcIlxuICAgICAgICAgICAgdi1pZj1cImlzQmFja0J1dHRvblwiXG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGLCBDU1MuTUFSR0lOLkxFRlQuQVVUT11cIlxuICAgICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwidHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICA8VGlkZURpdmlkZXIgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtc2hlZXQtY29udGVudCcsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlkuQVVUTyxcbiAgICAgICAgICAgIENTUy5PVkVSRkxPVy5YLkhJRERFTixcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLk9ORSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaWFsb2c+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1zaGVldCB7XG4gICAgLS1zaGVldC1wYWRkaW5nLXg6IHZhcigtLXRpZGUtc3BhY2luZy0xKTtcbiAgICBtYXgtd2lkdGg6IHVuc2V0O1xuICAgIG1heC1oZWlnaHQ6IHVuc2V0O1xuICAgIGp1c3RpZnktaXRlbXM6IHJpZ2h0O1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXRbb3Blbl0ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0OjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gIH1cblxuICAudGlkZS1zaGVldFtvcGVuXTo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gIH1cblxuICAudGlkZS1zaGVldC1ib2R5IHtcbiAgICBtYXgtd2lkdGg6IG1pbihjYWxjKDEwMHZ3IC0gdmFyKC0tdGlkZS1zcGFjaW5nLTIpKSwgMzExcHgpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQtY29udGVudCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1zaGVldC1wYWRkaW5nLXgpIDFmciB2YXIoLS1zaGVldC1wYWRkaW5nLXgpO1xuICB9XG5cbiAgOndoZXJlKC50aWRlLXNoZWV0LWNvbnRlbnQpOmRlZXAoPiA6d2hlcmUoKikpIHtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgfVxuXG4gIEBzdGFydGluZy1zdHlsZSB7XG4gICAgLnRpZGUtc2hlZXRbb3Blbl0ge1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB9XG5cbiAgICAudGlkZS1zaGVldFtvcGVuXTo6YmFja2Ryb3Age1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpc0FjdGl2ZT86IGJvb2xlYW47XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaXNBY3RpdmU6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgZW1pdCgnY2hhbmdlJyk7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXN3aXRjaCcsXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/ICdhY3RpdmUnIDogJycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyAnJyA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/IENTUy5CRy5TRUNPTkRBUlkgOiBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cInByb3BzLmRpc2FibGVkXCJcbiAgICBAY2xpY2s9XCJoYW5kbGVDbGlja1wiXG4gICAgYXJpYS1sYWJlbD1cIlN3aXRjaFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLXN3aXRjaC1pbmRpY2F0b3InLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIHByb3BzLmlzQWN0aXZlID8gQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCA6IENTUy5CRy5TRUNPTkRBUlksXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtc3dpdGNoIHtcbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjMyO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXNlY29uZGFyeSk7XG4gIH1cblxuICAudGlkZS1zd2l0Y2guYWN0aXZlIC50aWRlLXN3aXRjaC1pbmRpY2F0b3Ige1xuICAgIGxlZnQ6IDM2cHg7XG4gIH1cblxuICAudGlkZS1zd2l0Y2gtaW5kaWNhdG9yIHtcbiAgICBsZWZ0OiA0cHg7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBsZWZ0LCBib3JkZXItY29sb3IsIGJhY2tncm91bmQtY29sb3I7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBmb3JtYXROdW1iZXIsIGZvcm1hdFBob25lLCBmb3JtYXRQcmljZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmV4cG9ydCB0eXBlIEZvcm1hdHRlZCA9IHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfCBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgRk9STUFUID0ge1xuICBOVU1CRVI6IGZvcm1hdE51bWJlcixcbiAgUEhPTkU6IGZvcm1hdFBob25lLFxuICBQUklDRTogZm9ybWF0UHJpY2UsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRk9STUFUX1JFR0VYID0ge1xuICBhbHBoYTogL15bYS16QS1aXSskL2csXG4gIGFscGhhTnVtYmVyT3JFbXB0eTogL14kfF5bYS16MC05XSskL2ksXG4gIGFscGhhU3BhY2U6IC9eW2EtekEtWiBdKyQvZyxcbiAgZW1haWw6XG4gICAgL14oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXF0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvLFxuICBudW1iZXJGb3JtYXR0ZWQ6IC9eJHwoPz0uKV5cXCQ/KChbMS05XVswLTldezAsMn0oLFswLTldezN9KSopfDApPyhcXC5bMC05XXsxLDJ9KT8kLyxcbiAgcGhvbmU6IC9eKD86XFxkezN9LVxcZHszfS1cXGR7NH18XFxkezF9LVxcZHszfS1cXGR7M30tXFxkezR9KT8kLyxcbiAgcHJpY2U6IC8oPz0uKV5cXCQ/KChbMS05XVswLTldezAsMn0oLFswLTldezN9KSopfDApPyhcXC5bMC05XXsxLDJ9KT8kLyxcbn07XG4iLCIvKipcbiAqIFRoZXNlIHNsaWRlcyBhcmUgdXNlZCBpbiBib3RoIHRoZSBpbmxpbmUgZGV0YWlsIHBhZ2UgcGhvdG8gc2xpZGVyXG4gKiBhbmQgdGhlIGZ1bGxzY3JlZW4gbWVkaWEgZ2FsbGVyeS5cbiAqL1xuXG5leHBvcnQgY29uc3QgTUVESUFfU0xJREVfVFlQRVMgPSB7XG4gIElNQUdFOiB7XG4gICAgRkxPT1JQTEFOOiAnZmxvb3JwbGFuJyxcbiAgICBJTUFHRTogJ2ltYWdlJyxcbiAgfSxcbiAgVklERU86ICd2aWRlbycsXG4gIFZSOiAndnInLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgTWVkaWFTbGlkZVR5cGUgPVxuICB8ICh0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuSU1BR0UpW2tleW9mIHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5JTUFHRV1cbiAgfCB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuVklERU9cbiAgfCB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuVlI7XG5cbmV4cG9ydCB0eXBlIEltYWdlU2xpZGVUeXBlID0gKHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5JTUFHRSlba2V5b2YgdHlwZW9mIE1FRElBX1NMSURFX1RZUEVTLklNQUdFXTtcblxudHlwZSBJbWFnZVNsaWRlID0ge1xuICBpbWFnZVVybDogc3RyaW5nO1xuICB0eXBlOiBJbWFnZVNsaWRlVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIFZpZGVvU2xpZGVUeXBlID0gdHlwZW9mIE1FRElBX1NMSURFX1RZUEVTLlZJREVPO1xuXG50eXBlIFZpZGVvU2xpZGUgPSB7XG4gIGltYWdlVXJsOiBzdHJpbmc7XG4gIHR5cGU6IFZpZGVvU2xpZGVUeXBlO1xuICB2aWRlb1VybDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVnJTbGlkZVR5cGUgPSB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuVlI7XG5cbnR5cGUgVnJTbGlkZSA9IHtcbiAgaW1hZ2VVcmw6IHN0cmluZztcbiAgdHlwZTogVnJTbGlkZVR5cGU7XG4gIHZyVXJsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBMaXN0aW5nTWVkaWEgPSBJbWFnZVNsaWRlIHwgVmlkZW9TbGlkZSB8IFZyU2xpZGU7XG4iLCJpbXBvcnQgeyBGT1JNQVRfUkVHRVggfSBmcm9tICdAL3R5cGVzL0Zvcm1hdHRlZCc7XG5pbXBvcnQgeyBjaGVja0Zvcm1hdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVE9SID0ge1xuICBBTFBIQV9OVU1CRVJfRU1QVFk6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5hbHBoYU51bWJlck9yRW1wdHkpLFxuICBBTFBIQV9TUEFDRTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhU3BhY2UpLFxuICBFTUFJTDogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmVtYWlsKSxcbiAgTlVNQkVSOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVgubnVtYmVyRm9ybWF0dGVkKSxcbiAgUEhPTkU6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5waG9uZSksXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uRXJyb3IgPSBzdHJpbmcgfCBib29sZWFuO1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblJlc3VsdCA9IHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB2YWxpZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25MZW5ndGggPSB7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0b3IgPSAodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdDtcbiJdLCJuYW1lcyI6WyJPUklFTlRBVElPTiIsIkNTUyIsInV0aWxpdGllcyIsImJyZWFrcG9pbnQiLCJ1dGlsaXR5IiwiUkVBTE0iLCJTSVpFIiwiU0laRV9CVVRUT04iLCJmb3JtYXROdW1iZXIiLCJpbnB1dCIsIm91dHB1dCIsImRpZ2l0cyIsImZvcm1hdFBhc2NhbENhc2UiLCJ3b3JkIiwiZm9ybWF0UGhvbmUiLCJmb3JtYXRQcmljZSIsImlubmVyU1ZHIiwicmVmIiwid2F0Y2giLCJwcm9wcyIsImlkIiwibmFtZSIsInByZWZpeCIsInJlYWxtRm9sZGVyIiwiY29tcG9uZW50IiwiZGVmaW5lQXN5bmNDb21wb25lbnQiLCJfX3ZhcmlhYmxlRHluYW1pY0ltcG9ydFJ1bnRpbWVIZWxwZXIiLCJtYXJrUmF3IiwiSUNPTiIsIklDT05fUkVBTE0iLCJoYW5kbGVUb2dnbGVDbGljayIsImVtaXQiLCJFTEVNRU5UIiwiRUxFTUVOVF9URVhUX0FTX0lDT04iLCJQUklPUklUWSIsIlRBUkdFVCIsIkFMRVJUIiwiQkFER0VfQ09MT1IiLCJCQURHRV9DT0xPUl9ERVRBSUxTIiwiQkFER0VfVFJVU1RFRCIsImhhbmRsZUNsaWNrIiwiaW5kZXgiLCJUWVBFX0NBUkQiLCJjb250YWluZXJSZWYiLCJzbGlkZU9ic2VydmVyIiwic2xvdE9ic2VydmVyIiwiY29udGVudFJpZ2h0RWRnZSIsImNvbnRlbnRXaWR0aCIsImN1cnJlbnRTbGlkZSIsImZyYW1lV2lkdGgiLCJoYXNPdmVyZmxvdyIsImlzRmlyc3RTbGlkZSIsImlzTGFzdFNsaWRlIiwibGFzdFBvc2l0aW9uIiwic2hvd0J1dHRvbnMiLCJ1cGRhdGVDb250YWluZXJCbGVlZCIsIm1lYXN1cmVDdXJyZW50U2xpZGUiLCJjb250YWluZXIiLCJzbGlkZU9mZnNldHMiLCJzbGlkZSIsInNjcm9sbExlZnQiLCJjbG9zZXN0U2xpZGVPZmZzZXQiLCJwcmV2IiwiY3VyciIsIm1lYXN1cmVEb20iLCJoYW5kbGVTY3JvbGwiLCJzY3JvbGxUb1NsaWRlIiwic2xpZGVJbmRleCIsInNob3dOZXh0U2xpZGUiLCJzaG93UHJldmlvdXNTbGlkZSIsIm9ic2VydmVTbGlkZXMiLCJvcHRpb25zIiwiZW50cmllcyIsInNsaWRlcyIsImVudHJ5IiwiX2EiLCJjaGlsZCIsIm9ic2VydmVTbG90Iiwib2JzZXJ2ZXJDYWxsYmFjayIsIm9uTW91bnRlZCIsIm9uVW5tb3VudGVkIiwiX2IiLCJvblVwZGF0ZWQiLCJPQkpFQ1RfRklUIiwiaW1hZ2VEZWZhdWx0IiwicGljdHVyZSIsImltZyIsIm9iamVjdEZpdENsYXNzTmFtZSIsImNvbXB1dGVkIiwic2V0SW1hZ2VGcm9tRGVmYXVsdCIsImN1cnJlbnRTcmMiLCJwaWN0dXJlU291cmNlIiwiaXNDaGVja2VkIiwiY2hlY2tlZCIsIm5ld1ZhbHVlIiwib2xkVmFsdWUiLCJlcnJvck1lc3NhZ2VEZWZhdWx0Iiwibm9FcnJvciIsImNoZWNrRm9ybWF0IiwiZm9ybWF0IiwidmFsdWUiLCJyZXN1bHQiLCJnZXRFcnJvck1lc3NhZ2UiLCJlcnJvckZyb21Qcm9wcyIsImVycm9yRnJvbVJlZiIsImdldEZpZWxkSGFzRXJyb3IiLCJnZXRGaWVsZExlbmd0aElzVmFsaWQiLCJtYXhsZW5ndGgiLCJtaW5sZW5ndGgiLCJyZXF1aXJlZCIsImlzRW1wdHlBbmRVbnJlcXVpcmVkIiwiaXNUb29Mb25nIiwiaGFuZGxlRmllbGRWYWxpZGF0aW9uIiwiZXJyb3IiLCJ2YWxpZGF0b3JzIiwidmFsaWRhdGlvbiIsInZhbGlkYXRlUHJvcGVydHkiLCJsZW5ndGhWYWxpZGF0aW9uIiwidmFsaWRhdGVMZW5ndGgiLCJyZXNwb25zZSIsInZhbGlkYXRvciIsImhhc0ZvY3VzIiwiZXJyb3JNZXNzYWdlIiwiZm9ybWF0dGVkTGFiZWwiLCJoYXNFcnJvciIsImhhc01pbmlsYWJlbCIsImlzRW1wdHkiLCJleHBhbmRPcHRpb25zIiwiZXZlbnQiLCJoYW5kbGVGb2N1cyIsImhhbmRsZUZvY3VzT3V0IiwiX19leHBvc2UiLCJURVhUX0lOUFVUX1RZUEUiLCJzaG93UGFzc3dvcmQiLCJoYXNDbGVhciIsInR5cGUiLCJoYW5kbGVDbGVhciIsImhhbmRsZVZhbGlkYXRpb24iLCJoYW5kbGVJbnB1dCIsInVwZGF0ZVZhbHVlIiwiQlJFQUtQT0lOVCIsIk1FRElBIiwic2V0U2Nyb2xsTG9jayIsImlzTG9ja2VkIiwiYm9keSIsInNjcm9sbFkiLCJuZXh0VGljayIsInNhdmVkU2Nyb2xsWSIsIlRPUF9MQVlFUl9JRCIsImluaXRGYXV4VG9wTGF5ZXIiLCJ0b3BMYXllciIsIm1vZGFsQ29udGVudCIsIm1vZGFsRGlhbG9nIiwidHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4iLCJ0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UiLCJzY3JvbGxDb250ZW50VG9Ub3AiLCJoYW5kbGVCYWNrZHJvcENsaWNrIiwiaGFuZGxlRXNjYXBlS2V5ZG93biIsImUiLCJwYWdlQ3VycmVudCIsInBhZ2luYXRpb25CdXR0b25zIiwiZW1wdHkiLCJzaWRlcyIsImFsaWdubWVudHMiLCJwbGFjZW1lbnRzIiwiYWNjIiwic2lkZSIsIm1pbiIsIm1heCIsInJvdW5kIiwiZmxvb3IiLCJjcmVhdGVDb29yZHMiLCJ2Iiwib3Bwb3NpdGVTaWRlTWFwIiwib3Bwb3NpdGVBbGlnbm1lbnRNYXAiLCJjbGFtcCIsInN0YXJ0IiwiZW5kIiwiZXZhbHVhdGUiLCJwYXJhbSIsImdldFNpZGUiLCJwbGFjZW1lbnQiLCJnZXRBbGlnbm1lbnQiLCJnZXRPcHBvc2l0ZUF4aXMiLCJheGlzIiwiZ2V0QXhpc0xlbmd0aCIsImdldFNpZGVBeGlzIiwiZ2V0QWxpZ25tZW50QXhpcyIsImdldEFsaWdubWVudFNpZGVzIiwicmVjdHMiLCJydGwiLCJhbGlnbm1lbnQiLCJhbGlnbm1lbnRBeGlzIiwibGVuZ3RoIiwibWFpbkFsaWdubWVudFNpZGUiLCJnZXRPcHBvc2l0ZVBsYWNlbWVudCIsImdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50IiwiZXhwYW5kUGFkZGluZ09iamVjdCIsInBhZGRpbmciLCJnZXRQYWRkaW5nT2JqZWN0IiwicmVjdFRvQ2xpZW50UmVjdCIsInJlY3QiLCJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0IiwiY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQiLCJfcmVmIiwicmVmZXJlbmNlIiwiZmxvYXRpbmciLCJzaWRlQXhpcyIsImFsaWduTGVuZ3RoIiwiaXNWZXJ0aWNhbCIsImNvbW1vblgiLCJjb21tb25ZIiwiY29tbW9uQWxpZ24iLCJjb29yZHMiLCJjb21wdXRlUG9zaXRpb24iLCJjb25maWciLCJzdHJhdGVneSIsIm1pZGRsZXdhcmUiLCJwbGF0Zm9ybSIsInZhbGlkTWlkZGxld2FyZSIsInN0YXRlZnVsUGxhY2VtZW50IiwibWlkZGxld2FyZURhdGEiLCJyZXNldENvdW50IiwiaSIsImZuIiwibmV4dFgiLCJuZXh0WSIsImRhdGEiLCJyZXNldCIsImRldGVjdE92ZXJmbG93Iiwic3RhdGUiLCJfYXdhaXQkcGxhdGZvcm0kaXNFbGUiLCJlbGVtZW50cyIsImJvdW5kYXJ5Iiwicm9vdEJvdW5kYXJ5IiwiZWxlbWVudENvbnRleHQiLCJhbHRCb3VuZGFyeSIsInBhZGRpbmdPYmplY3QiLCJlbGVtZW50IiwiY2xpcHBpbmdDbGllbnRSZWN0Iiwib2Zmc2V0UGFyZW50Iiwib2Zmc2V0U2NhbGUiLCJlbGVtZW50Q2xpZW50UmVjdCIsImdldFBsYWNlbWVudExpc3QiLCJhdXRvQWxpZ25tZW50IiwiYWxsb3dlZFBsYWNlbWVudHMiLCJhdXRvUGxhY2VtZW50IiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QIiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QMiIsIl9wbGFjZW1lbnRzVGhhdEZpdE9uRSIsImNyb3NzQXhpcyIsImRldGVjdE92ZXJmbG93T3B0aW9ucyIsInBsYWNlbWVudHMkMSIsIm92ZXJmbG93IiwiY3VycmVudEluZGV4IiwiY3VycmVudFBsYWNlbWVudCIsImFsaWdubWVudFNpZGVzIiwiY3VycmVudE92ZXJmbG93cyIsImFsbE92ZXJmbG93cyIsIm5leHRQbGFjZW1lbnQiLCJwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UiLCJkIiwiYSIsImIiLCJyZXNldFBsYWNlbWVudCIsImNvbnZlcnRWYWx1ZVRvQ29vcmRzIiwibWFpbkF4aXNNdWx0aSIsImNyb3NzQXhpc011bHRpIiwicmF3VmFsdWUiLCJtYWluQXhpcyIsIm9mZnNldCIsIl9taWRkbGV3YXJlRGF0YSRvZmZzZSIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdyIsImRpZmZDb29yZHMiLCJzaGlmdCIsImNoZWNrTWFpbkF4aXMiLCJjaGVja0Nyb3NzQXhpcyIsImxpbWl0ZXIiLCJtYWluQXhpc0Nvb3JkIiwiY3Jvc3NBeGlzQ29vcmQiLCJtaW5TaWRlIiwibWF4U2lkZSIsImxpbWl0ZWRDb29yZHMiLCJoYXNXaW5kb3ciLCJnZXROb2RlTmFtZSIsIm5vZGUiLCJpc05vZGUiLCJnZXRXaW5kb3ciLCJfbm9kZSRvd25lckRvY3VtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50IiwiaXNFbGVtZW50IiwiaXNIVE1MRWxlbWVudCIsImlzU2hhZG93Um9vdCIsImlzT3ZlcmZsb3dFbGVtZW50Iiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwiZGlzcGxheSIsImdldENvbXB1dGVkU3R5bGUiLCJpc1RhYmxlRWxlbWVudCIsImlzVG9wTGF5ZXIiLCJzZWxlY3RvciIsImlzQ29udGFpbmluZ0Jsb2NrIiwiZWxlbWVudE9yQ3NzIiwid2Via2l0IiwiaXNXZWJLaXQiLCJjc3MiLCJnZXRDb250YWluaW5nQmxvY2siLCJjdXJyZW50Tm9kZSIsImdldFBhcmVudE5vZGUiLCJpc0xhc3RUcmF2ZXJzYWJsZU5vZGUiLCJnZXROb2RlU2Nyb2xsIiwiZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IiLCJwYXJlbnROb2RlIiwiZ2V0T3ZlcmZsb3dBbmNlc3RvcnMiLCJsaXN0IiwidHJhdmVyc2VJZnJhbWVzIiwiX25vZGUkb3duZXJEb2N1bWVudDIiLCJzY3JvbGxhYmxlQW5jZXN0b3IiLCJpc0JvZHkiLCJ3aW4iLCJmcmFtZUVsZW1lbnQiLCJnZXRGcmFtZUVsZW1lbnQiLCJnZXRDc3NEaW1lbnNpb25zIiwiaGFzT2Zmc2V0Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJzaG91bGRGYWxsYmFjayIsInVud3JhcEVsZW1lbnQiLCJnZXRTY2FsZSIsImRvbUVsZW1lbnQiLCIkIiwibm9PZmZzZXRzIiwiZ2V0VmlzdWFsT2Zmc2V0cyIsInNob3VsZEFkZFZpc3VhbE9mZnNldHMiLCJpc0ZpeGVkIiwiZmxvYXRpbmdPZmZzZXRQYXJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJpbmNsdWRlU2NhbGUiLCJpc0ZpeGVkU3RyYXRlZ3kiLCJjbGllbnRSZWN0Iiwic2NhbGUiLCJ2aXN1YWxPZmZzZXRzIiwib2Zmc2V0V2luIiwiY3VycmVudFdpbiIsImN1cnJlbnRJRnJhbWUiLCJpZnJhbWVTY2FsZSIsImlmcmFtZVJlY3QiLCJsZWZ0IiwidG9wIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImxlZnRTY3JvbGwiLCJnZXRIVE1MT2Zmc2V0IiwiZG9jdW1lbnRFbGVtZW50Iiwic2Nyb2xsIiwiaWdub3JlU2Nyb2xsYmFyWCIsImh0bWxSZWN0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJvZmZzZXRzIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRSZWN0IiwiaHRtbE9mZnNldCIsImdldENsaWVudFJlY3RzIiwiZ2V0RG9jdW1lbnRSZWN0IiwiaHRtbCIsImdldFZpZXdwb3J0UmVjdCIsInZpc3VhbFZpZXdwb3J0IiwidmlzdWFsVmlld3BvcnRCYXNlZCIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdBbmNlc3RvciIsImhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvciIsInN0b3BOb2RlIiwiZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzIiwiY2FjaGUiLCJjYWNoZWRSZXN1bHQiLCJlbCIsImN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIiwiZWxlbWVudElzRml4ZWQiLCJjb21wdXRlZFN0eWxlIiwiY3VycmVudE5vZGVJc0NvbnRhaW5pbmciLCJhbmNlc3RvciIsImdldENsaXBwaW5nUmVjdCIsImNsaXBwaW5nQW5jZXN0b3JzIiwiZmlyc3RDbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdSZWN0IiwiYWNjUmVjdCIsImdldERpbWVuc2lvbnMiLCJnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudCIsImlzU3RhdGljUG9zaXRpb25lZCIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJwb2x5ZmlsbCIsInJhd09mZnNldFBhcmVudCIsImdldE9mZnNldFBhcmVudCIsInN2Z09mZnNldFBhcmVudCIsImdldEVsZW1lbnRSZWN0cyIsImdldE9mZnNldFBhcmVudEZuIiwiZ2V0RGltZW5zaW9uc0ZuIiwiZmxvYXRpbmdEaW1lbnNpb25zIiwiaXNSVEwiLCJyZWN0c0FyZUVxdWFsIiwib2JzZXJ2ZU1vdmUiLCJvbk1vdmUiLCJpbyIsInRpbWVvdXRJZCIsInJvb3QiLCJjbGVhbnVwIiwiX2lvIiwicmVmcmVzaCIsInNraXAiLCJ0aHJlc2hvbGQiLCJlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4iLCJpbnNldFRvcCIsImluc2V0UmlnaHQiLCJpbnNldEJvdHRvbSIsImluc2V0TGVmdCIsImlzRmlyc3RVcGRhdGUiLCJoYW5kbGVPYnNlcnZlIiwicmF0aW8iLCJhdXRvVXBkYXRlIiwidXBkYXRlIiwiYW5jZXN0b3JTY3JvbGwiLCJhbmNlc3RvclJlc2l6ZSIsImVsZW1lbnRSZXNpemUiLCJsYXlvdXRTaGlmdCIsImFuaW1hdGlvbkZyYW1lIiwicmVmZXJlbmNlRWwiLCJhbmNlc3RvcnMiLCJjbGVhbnVwSW8iLCJyZW9ic2VydmVGcmFtZSIsInJlc2l6ZU9ic2VydmVyIiwiZmlyc3RFbnRyeSIsIl9yZXNpemVPYnNlcnZlciIsImZyYW1lSWQiLCJwcmV2UmVmUmVjdCIsImZyYW1lTG9vcCIsIm5leHRSZWZSZWN0IiwiX3Jlc2l6ZU9ic2VydmVyMiIsIm9mZnNldCQxIiwiYXV0b1BsYWNlbWVudCQxIiwic2hpZnQkMSIsIm1lcmdlZE9wdGlvbnMiLCJwbGF0Zm9ybVdpdGhDYWNoZSIsImNvbXB1dGVQb3NpdGlvbiQxIiwiaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSIsInRhcmdldCIsInRvVmFsdWUiLCJzb3VyY2UiLCJ1bnJlZiIsImdldERQUiIsInJvdW5kQnlEUFIiLCJkcHIiLCJ1c2VGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uIiwib3Blbk9wdGlvbiIsIl90b1ZhbHVlIiwibWlkZGxld2FyZU9wdGlvbiIsInBsYWNlbWVudE9wdGlvbiIsIl90b1ZhbHVlMiIsInN0cmF0ZWd5T3B0aW9uIiwiX3RvVmFsdWUzIiwidHJhbnNmb3JtT3B0aW9uIiwiX3RvVmFsdWU0IiwicmVmZXJlbmNlRWxlbWVudCIsImZsb2F0aW5nRWxlbWVudCIsInNoYWxsb3dSZWYiLCJpc1Bvc2l0aW9uZWQiLCJmbG9hdGluZ1N0eWxlcyIsImluaXRpYWxTdHlsZXMiLCJ4VmFsIiwieVZhbCIsIndoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCIsIm9wZW4iLCJwb3NpdGlvbiIsImF0dGFjaCIsImdldEN1cnJlbnRTY29wZSIsIm9uU2NvcGVEaXNwb3NlIiwic2hhbGxvd1JlYWRvbmx5IiwiaXNDbGlja091dHNpZGUiLCJhbmNob3IiLCJpc0hvdmVyZWQiLCJpc1RvZ2dsZWRPcGVuIiwib2Zmc2V0TWlkZGxld2FyZSIsImlzU2hvd1BvcG92ZXIiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrIiwiaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3ZlciIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlIiwiaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrIiwiYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50IiwicmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24iLCJhZGRPcGVuTGlzdGVuZXJzVG9Sb290IiwicmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290IiwidXBkYXRlQW5jaG9yRWxlbWVudCIsIndhdGNoRWZmZWN0Iiwib25CZWZvcmVNb3VudCIsImRpYWxvZ0VsZW1lbnQiLCJGT1JNQVQiLCJGT1JNQVRfUkVHRVgiLCJNRURJQV9TTElERV9UWVBFUyIsIlZBTElEQVRPUiJdLCJtYXBwaW5ncyI6IjtBQUFPLE1BQU1BLEtBQWM7QUFBQSxFQUN6QixZQUFZO0FBQUEsRUFDWixVQUFVO0FBQ1osR0NDYUMsSUFBTTtBQUFBLEVBQ2pCLGdCQUFnQixDQUFDQyxHQUFxQkMsTUFDN0JELEVBQVUsSUFBSSxDQUFDRSxNQUFZLEdBQUdELENBQVUsSUFBSUMsQ0FBTyxFQUFFO0FBQUEsRUFFOUQsT0FBTztBQUFBLElBQ0wsR0FBRztBQUFBLE1BQ0QsUUFBUTtBQUFBLE1BQ1IsTUFBTTtBQUFBLE1BQ04sT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLEdBQUc7QUFBQSxNQUNELFNBQVM7QUFBQSxNQUNULFFBQVE7QUFBQSxJQUNWO0FBQUEsRUFDRjtBQUFBLEVBQ0EsT0FBTztBQUFBLElBQ0wsUUFBUTtBQUFBLElBQ1IsU0FBUztBQUFBLElBQ1QsUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLE9BQU87QUFBQSxJQUNMLFFBQVE7QUFBQSxJQUNSLFFBQVE7QUFBQSxJQUNSLEtBQUs7QUFBQSxJQUNMLE9BQU87QUFBQSxJQUNQLFNBQVM7QUFBQSxFQUNYO0FBQUEsRUFDQSxJQUFJO0FBQUEsSUFDRixRQUFRO0FBQUEsTUFDTixTQUFTO0FBQUEsUUFDUCxPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsU0FBUztBQUFBLFFBQ1AsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLFFBQ04sU0FBUztBQUFBLFFBQ1QsU0FBUztBQUFBLFFBRVQsTUFBTTtBQUFBLFFBQ04sT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLFFBQ04sUUFBUTtBQUFBLFFBQ1IsUUFBUTtBQUFBLFFBQ1IsS0FBSztBQUFBLFFBQ0wsUUFBUTtBQUFBLFFBQ1IsTUFBTTtBQUFBLFFBQ04sUUFBUTtBQUFBLE1BQ1Y7QUFBQSxJQUNGO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsSUFDVCxXQUFXO0FBQUEsSUFDWCxTQUFTO0FBQUEsTUFDUCxRQUFRO0FBQUEsTUFDUixPQUFPO0FBQUEsTUFDUCxTQUFTO0FBQUEsTUFDVCxVQUFVO0FBQUEsTUFDVixVQUFVO0FBQUEsTUFDVixTQUFTO0FBQUEsSUFDWDtBQUFBLElBQ0EsYUFBYTtBQUFBLE1BQ1gsYUFBYTtBQUFBLE1BQ2IsYUFBYTtBQUFBLE1BQ2IsZUFBZTtBQUFBLE1BQ2YsY0FBYztBQUFBLElBQ2hCO0FBQUEsRUFDRjtBQUFBLEVBQ0EsUUFBUTtBQUFBLElBQ04sT0FBTztBQUFBLE1BQ0wsUUFBUTtBQUFBLFFBQ04sT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLFFBQ04sU0FBUztBQUFBLFFBQ1QsU0FBUztBQUFBLFFBRVQsTUFBTTtBQUFBLFFBQ04sT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLFFBQ04sUUFBUTtBQUFBLFFBQ1IsUUFBUTtBQUFBLFFBQ1IsS0FBSztBQUFBLFFBQ0wsUUFBUTtBQUFBLFFBQ1IsTUFBTTtBQUFBLFFBQ04sUUFBUTtBQUFBLE1BQ1Y7QUFBQSxNQUNBLFNBQVM7QUFBQSxNQUNULFNBQVM7QUFBQSxNQUNULFVBQVU7QUFBQSxNQUNWLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxJQUNYO0FBQUEsSUFDQSxRQUFRO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFDUjtBQUFBLElBQ0EsT0FBTztBQUFBLE1BQ0wsUUFBUTtBQUFBLE1BQ1IsT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLE9BQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxN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QUEsTUFDTCxNQUFNO0FBQUEsSUFDUjtBQUFBLElBQ0EsT0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBLEtBQUs7QUFBQSxNQUNILE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFDQSxHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFDUjtBQUFBLElBQ0EsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQ1I7QUFBQSxFQUNGO0FBQUEsRUFDQSxRQUFRO0FBQUEsSUFDTixRQUFRO0FBQUEsSUFDUixTQUFTO0FBQUEsSUFDVCxPQUFPO0FBQUEsSUFDUCxZQUFZO0FBQUEsRUFDZDtBQUFBLEVBQ0EsU0FBUztBQUFBLElBQ1AsS0FBSztBQUFBLElBQ0wsSUFBSTtBQUFBLEVBQ047QUFBQSxFQUNBLFVBQVU7QUFBQSxJQUNSLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxNQUNSLFFBQVE7QUFBQSxJQUNWO0FBQUEsSUFDQSxJQUFJO0FBQUEsTUFDRixNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsSUFDVjtBQUFBLElBQ0EsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLElBQ1Y7QUFBQSxFQUNGO0FBQUEsRUFDQSxTQUFTO0FB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OENBQUEsTUFBQSxPQUFBLGtDQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEsMENBQUEsTUFBQSxPQUFBLDhCQUFBLEdBQUEsNENBQUEsTUFBQSxPQUFBLGdDQUFBLEdBQUEsMENBQUEsTUFBQSxPQUFBLDhCQUFBLEdBQUEsdUNBQUEsTUFBQSxPQUFBLDJCQUFBLEdBQUEsMENBQUEsTUFBQSxPQUFBLDhCQUFBLEdBQUEsMkNBQUEsTUFBQSxPQUFBLCtCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEsbUNBQUEsTUFBQSxPQUFBLHVCQUFBLEdBQUEsb0NBQUEsTUFBQSxPQUFBLHdCQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEsNkNBQUEsTUFBQSxPQUFBLGlDQUFBLEdBQUEsb0NBQUEsTUFBQSxPQUFBLHdCQUFBLEdBQUEsMkNBQUEsTUFBQSxPQUFBLCtCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEscUNBQUEsTUFBQSxPQUFBLHlCQUFBLEdBQUEsMkNBQUEsTUFBQSxPQUFBLCtCQUFBLEdBQUEsNENBQUEsTUFBQSxPQUFBLGdDQUFBLEdBQUEscUNBQUEsTUFBQSxPQUFBLHlCQUFBLEdBQUEscUNBQUEsTUFBQSxPQUFBLHlCQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEscUNBQUEsTUFBQSxPQUFBLHlCQUFBLEdBQUEsa0RBQUEsTUFBQSxPQUFBLHNDQUFBLEdBQUEsc0NBQUEsTUFBQSxPQUFBLDBCQUFBLEdBQUEsdUNBQUEsTUFBQSxPQUFBLDJCQUFBLEdBQUEsOENBQUEsTUFBQSxPQUFBLGtDQUFBLEdBQUEsc0NBQUEsTUFBQSxPQUFBLDBCQUFBLEdBQUEscUNBQUEsTUFBQSxPQUFBLHlCQUFBLEdBQUEsb0NBQUEsTUFBQSxPQUFBLHdCQUFBLEdBQUEsc0NBQUEsTUFBQSxPQUFBLDBCQUFBLEdBQUEsMkNBQUEsTUFBQSxPQUFBLCtCQUFBLEdBQUEscUNBQUEsTUFBQSxPQUFBLHlCQUFBLEdBQUEsNkNBQUEsTUFBQSxPQUFBLGlDQUFBLEdBQUEsMENBQUEsTUFBQSxPQUFBLDhCQUFBLEdBQUEsMENBQUEsTUFBQSxPQUFBLDhCQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEsOENBQUEsTUFBQSxPQUFBLGtDQUFBLEdBQUEsb0NBQUEsTUFBQSxPQUFBLHdCQUFBLEdBQUEsMENBQUEsTUFBQSxPQUFBLDhCQUFBLEdBQUEsNENBQUEsTUFBQSxPQUFBLGdDQUFBLEdBQUEsa0RBQUEsTUFBQSxPQUFBLHNDQUFBLEdBQUEscUNBQUEsTUFBQSxPQUFBLHlCQUFBLEdBQUEsbUNBQUEsTUFBQSxPQUFBLHVCQUFBLEdBQUEscUNBQUEsTUFBQSxPQUFBLHlCQUFBLEdBQUEscUNBQUEsTUFBQSxPQUFBLHlCQUFBLEdBQUEsZ0RBQUEsTUFBQSxPQUFBLG9DQUFBLEdBQUEsc0NBQUEsTUFBQSxPQUFBLDBCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEsb0NBQUEsTUFBQSxPQUFBLHdCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEsc0NBQUEsTUFBQSxPQUFBLDBCQUFBLEdBQUEsb0NBQUEsTUFBQSxPQUFBLHdCQUFBLEdBQUEsb0NBQUEsTUFBQSxPQUFBLHdCQUFBLEdBQUEsMkNBQUEsTUFBQSxPQUFBLCtCQUFBLEdBQUEsMENBQUEsTUFBQSxPQUFBLDhCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEsc0NBQUEsTUFBQSxPQUFBLDBCQUFBLEdBQUEsNkNBQUEsTUFBQSxPQUFBLGlDQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEsNkNBQUEsTUFBQSxPQUFBLGlDQUFBLEdBQUEsb0NBQUEsTUFBQSxPQUFBLHdCQUFBLEdBQUEsb0NBQUEsTUFBQSxPQUFBLHdCQUFBLEdBQUEsb0NBQUEsTUFBQSxPQUFBLHdCQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEsNkNBQUEsTUFBQSxPQUFBLGlDQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEsdUNBQUEsTUFBQSxPQUFBLDJCQUFBLEdBQUEsc0NBQUEsTUFBQSxPQUFBLDBCQUFBLEdBQUEsc0NBQUEsTUFBQSxPQUFBLDBCQUFBLEdBQUEsNENBQUEsTUFBQSxPQUFBLGdDQUFBLEdBQUEsMkNBQUEsTUFBQSxPQUFBLCtCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEsc0NBQUEsTUFBQSxPQUFBLDBCQUFBLEdBQUEscUNBQUEsTUFBQSxPQUFBLHlCQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEsNENBQUEsTUFBQSxPQUFBLGdDQUFBLEdBQUEsc0NBQUEsTUFBQSxPQUFBLDBCQUFBLEdBQUEsNENBQUEsTUFBQSxPQUFBLGdDQUFBLEdBQUEsMkNBQUEsTUFBQSxPQUFBLCtCQUFBLEdBQUEsb0NBQUEsTUFBQSxPQUFBLHdCQUFBLEdBQUEsNkNBQUEsTUFBQSxPQUFBLGlDQUFBLEdBQUEscUNBQUEsTUFBQSxPQUFBLHlCQUFBLEdBQUEsdUNBQUEsTUFBQSxPQUFBLDJCQUFBLEdBQUEsc0NBQUEsTUFBQSxPQUFBLDBCQUFBLEdBQUEsc0NBQUEsTUFBQSxPQUFBLDBCQUFBLEdBQUEsdUNBQUEsTUFBQSxPQUFBLDJCQUFBLEdBQUEsb0NBQUEsTUFBQSxPQUFBLHdCQUFBLEdBQUEsdUNBQUEsTUFBQSxPQUFBLDJCQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEscUNBQUEsTUFBQSxPQUFBLHlCQUFBLEdBQUEsMkNBQUEsTUFBQSxPQUFBLCtCQUFBLEdBQUEsNENBQUEsTUFBQSxPQUFBLGdDQUFBLEdBQUEsc0NBQUEsTUFBQSxPQUFBLDBCQUFBLEdBQUEsbUNBQUEsTUFBQSxPQUFBLHVCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEsb0NBQUEsTUFBQSxPQUFBLHdCQUFBLEdBQUEsMENBQUEsTUFBQSxPQUFBLDhCQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEsOENBQUEsTUFBQSxPQUFBLGtDQUFBLEdBQUEsdUNBQUEsTUFBQSxPQUFBLDJCQUFBLEdBQUEsNENBQUEsTUFBQSxPQUFBLGdDQUFBLEdBQUEsc0NBQUEsTUFBQSxPQUFBLDBCQUFBLEdBQUEsb0NBQUEsTUFBQSxPQUFBLHdCQUFBLEdBQUEsdUNBQUEsTUFBQSxPQUFBLDJCQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEsMENBQUEsTUFBQSxPQUFBLDhCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEsd0NBQUEsTUFBQSxPQUFBLDRCQUFBLEdBQUEseUNBQUEsTUFBQSxPQUFBLDZCQUFBLEdBQUEsdUNBQUEsTUFBQSxPQUFBLDJCQUFBLEdBQUEscUNBQUEsTUFBQSxPQUFBLHlCQUFBLEdBQUEsc0NBQUEsTUFBQSxPQUFBLDBCQUFBLEdBQUEscUNBQUEsTUFBQSxPQUFBLHlCQUFBLEdBQUEsZ0RBQUEsTUFBQSxPQUFBLG9DQUFBLEdBQUEsc0NBQUEsTUFBQSxPQUFBLDBCQUFBLEdBQUEsdUNBQUEsTUFBQSxPQUFBLDJCQUFBLEVBQUEsQ0FBQSxHQUFBLDJCQUFBTCxDQUFBLE1BQUEsQ0FDUjtBQUVRLFFBQUFMLEVBQUEsUUFBUVcsR0FBUUgsQ0FBUztBQUFBLE1BQ3BDO0FBQUEsTUFDQSxFQUFFLFdBQVcsR0FBSztBQUFBLElBQUE7Ozs7Ozs7Ozs7OztBQ3RDZixNQUFNSSxJQUFPO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsZ0JBQWdCO0FBQUEsRUFDaEIsa0JBQWtCO0FBQUEsRUFDbEIsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osYUFBYTtBQUFBLEVBQ2IsZUFBZTtBQUFBLEVBQ2YsYUFBYTtBQUFBLEVBQ2IsWUFBWTtBQUFBLEVBQ1osY0FBYztBQUFBLEVBQ2QsWUFBWTtBQUFBLEVBQ1osWUFBWTtBQUFBLEVBQ1osS0FBSztBQUFBLEVBQ0wsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsZ0JBQWdCO0FBQUEsRUFDaEIsTUFBTTtBQUFBLEVBQ04sY0FBYztBQUFBLEVBQ2QsWUFBWTtBQUFBLEVBQ1osT0FBTztBQUFBLEVBQ1AsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AscUJBQXFCO0FBQUEsRUFDckIsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsaUJBQWlCO0FBQUEsRUFDakIsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUFBLEVBQ04sUUFBUTtBQUFBLEVBQ1IsYUFBYTtBQUFBLEVBQ2IsT0FBTztBQUFBLEVBQ1AsZ0JBQWdCO0FBQUEsRUFDaEIsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsaUJBQWlCO0FBQUEsRUFDakIsTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsZUFBZTtBQUFBLEVBQ2Ysc0JBQXNCO0FBQUEsRUFDdEIsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1Asb0JBQW9CO0FBQUEsRUFDcEIsUUFBUTtBQUFBLEVBQ1IsWUFBWTtBQUFBLEVBQ1osTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsZ0JBQWdCO0FBQUEsRUFDaEIsV0FBVztBQUFBLEVBQ1gsZ0JBQWdCO0FBQUEsRUFDaEIsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osZUFBZTtBQUFBLEVBQ2YsVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsZUFBZTtBQUFBLEVBQ2YsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsTUFBTTtBQUFBLEVBQ04sZ0JBQWdCO0FBQUEsRUFDaEIsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsUUFBUTtBQUFBLEVBQ1IsS0FBSztBQUFBLEVBQ0wsV0FBVztBQUFBLEVBQ1gsTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsa0JBQWtCO0FBQUEsRUFDbEIsVUFBVTtBQUFBLEVBQ1YsZUFBZTtBQUFBLEVBQ2YsUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsWUFBWTtBQUFBLEVBQ1osWUFBWTtBQUFBLEVBQ1osWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsbUJBQW1CO0FBQUEsRUFDbkIsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUNYLEdBRWFDLEtBQWE7QUFBQSxFQUN4QixLQUFLO0FBQUEsSUFDSCxLQUFLO0FBQUEsSUFDTCxZQUFZO0FBQUEsSUFDWixXQUFXO0FBQUEsSUFDWCxTQUFTO0FBQUEsSUFDVCxXQUFXO0FBQUEsSUFDWCxjQUFjO0FBQUEsSUFDZCxTQUFTO0FBQUEsRUFDWDtBQUFBLEVBQ0EsVUFBVTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLElBQUk7QUFBQSxJQUNGLFNBQVM7QUFBQSxJQUNULFNBQVM7QUFBQSxJQUNULFNBQVM7QUFBQSxJQUNULGFBQWE7QUFBQSxJQUNiLFlBQVk7QUFBQSxJQUNaLFlBQVk7QUFBQSxJQUNaLGVBQWU7QUFBQSxJQUNmLGdCQUFnQjtBQUFBLElBQ2hCLGNBQWM7QUFBQSxFQUNoQjtBQUNGOzs7Ozs7Ozs7OztpQkMxSVFDLElBQW9CLE1BQU07QUFDOUIsTUFBQUMsRUFBSyxRQUFRO0FBQUEsSUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzRUMxQkpDLElBQVU7QUFBQSxFQUNyQixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQ1IsR0FFYUMsS0FBdUI7QUFBQSxFQUNsQyxRQUFRO0FBQUEsRUFDUixLQUFLO0FBQUEsRUFDTCxNQUFNO0FBQ1IsR0NQYUMsSUFBVztBQUFBLEVBQ3RCLFNBQVM7QUFBQSxFQUNULFdBQVc7QUFBQSxFQUNYLFVBQVU7QUFBQSxFQUNWLFlBQVk7QUFBQSxFQUNaLFVBQVU7QUFDWixHQ1JhQyxLQUFTO0FBQUEsRUFDcEIsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUNSOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDSGFDLEtBQVE7QUFBQSxFQUNuQixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQUEsRUFDVCxTQUFTO0FBQ1g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0VDSGFDLElBQWM7QUFBQSxFQUN6QixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixLQUFLO0FBQUEsRUFDTCxRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixRQUFRO0FBQ1YsR0FFYUMsS0FNVDtBQUFBLEVBQ0YsQ0FBQ0QsRUFBWSxLQUFLLEdBQUc7QUFBQSxJQUNuQixhQUFhcEMsRUFBSSxPQUFPLE1BQU07QUFBQSxJQUM5QixXQUFXQSxFQUFJLEtBQUssTUFBTSxRQUFRO0FBQUEsRUFDcEM7QUFBQSxFQUNBLENBQUNvQyxFQUFZLElBQUksR0FBRztBQUFBLElBQ2xCLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFDM0M7QUFBQSxFQUNBLENBQUNvQyxFQUFZLEtBQUssR0FBRztBQUFBLElBQ25CLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFDM0M7QUFBQSxFQUNBLENBQUNvQyxFQUFZLElBQUksR0FBRztBQUFBLElBQ2xCLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFDM0M7QUFBQSxFQUNBLENBQUNvQyxFQUFZLE1BQU0sR0FBRztBQUFBLElBQ3BCLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFDM0M7QUFBQSxFQUNBLENBQUNvQyxFQUFZLE1BQU0sR0FBRztBQUFBLElBQ3BCLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFDM0M7QUFBQSxFQUNBLENBQUNvQyxFQUFZLEdBQUcsR0FBRztBQUFBLElBQ2pCLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFDM0M7QUFBQSxFQUNBLENBQUNvQyxFQUFZLE1BQU0sR0FBRztBQUFBLElBQ3BCLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFDM0M7QUFBQSxFQUNBLENBQUNvQyxFQUFZLElBQUksR0FBRztBQUFBLElBQ2xCLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFDM0M7QUFBQSxFQUNBLENBQUNvQyxFQUFZLE1BQU0sR0FBRztBQUFBLElBQ3BCLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFDM0M7QUFDRixHQUVhc0MsS0FBZ0I7QUFBQSxFQUMzQixVQUFVO0FBQUEsRUFDVixVQUFVO0FBQUEsRUFDVixTQUFTO0FBQ1g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkNwRFFDLElBQWMsQ0FBQ0MsTUFBa0I7QUFDckMsTUFBQVYsRUFBSyxVQUFVVSxDQUFLO0FBQUEsSUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzRUNqQlhDLEtBQVk7QUFBQSxFQUN2QixZQUFZO0FBQUEsRUFDWixlQUFlO0FBQUEsRUFDZixZQUFZO0FBQ2Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJDaUNRQyxJQUEyQzFCLEVBQUksSUFBSSxHQUNuRDJCLElBQWdCM0IsRUFBaUMsSUFBSSxHQUNyRDRCLElBQWU1QixFQUE2QixJQUFJLEdBQ2hENkIsSUFBbUI3QixLQUNuQjhCLElBQWU5QixLQUNmK0IsSUFBZS9CLEVBQUksQ0FBQyxHQUNwQmdDLElBQWFoQyxLQUNiaUMsSUFBY2pDLEtBQ2RrQyxJQUFlbEMsS0FDZm1DLElBQWNuQyxLQUNkb0MsSUFBZXBDLEtBQ2ZxQyxJQUFjckMsS0FFZHNDLElBQXVCLE1BQU07QUFDakMsTUFBSXBDLEVBQU0sU0FBUyxRQUNmd0IsRUFBYSxVQUFVLFNBRXZCUyxFQUFZLFNBQVNFLEVBQVksU0FFdEJYLEVBQUEsTUFBTSxNQUFNLFNBQVMsSUFBSXhCLEVBQU0sS0FBSyxPQUFPQSxFQUFNLEtBQUssT0FBT0EsRUFBTSxLQUFLLFFBQ3hFd0IsRUFBQSxNQUFNLE1BQU0sVUFBVSxHQUFHeEIsRUFBTSxLQUFLLE1BQU1BLEVBQU0sS0FBSyxNQUFNQSxFQUFNLEtBQUssV0FHdEV3QixFQUFBLE1BQU0sTUFBTSxTQUFTLElBQUl4QixFQUFNLEtBQUssU0FBU0EsRUFBTSxLQUFLLE9BQU9BLEVBQU0sS0FBSyxNQUMxRXdCLEVBQUEsTUFBTSxNQUFNLFVBQVUsR0FBR3hCLEVBQU0sS0FBSyxRQUFRQSxFQUFNLEtBQUssTUFBTUEsRUFBTSxLQUFLO0FBQUEsSUFDdkYsR0FTSXFDLElBQXNCLE1BQU07QUFDaEMsWUFBTUMsSUFBWWQsRUFBYTtBQUMvQixVQUFJLENBQUNjO0FBQVc7QUFHaEIsWUFBTUMsSUFBZSxNQUFNLEtBQUtELEVBQVUsUUFBeUMsRUFBRTtBQUFBLFFBQ25GLENBQUNFLE9BQVVBLEdBQU07QUFBQSxNQUFBO0FBR25CLFVBQUlELEVBQWEsV0FBVztBQUFHO0FBRS9CLFlBQU1FLElBQWFILEVBQVUsWUFFdkJJLElBQXFCSCxFQUFhO0FBQUEsUUFBTyxDQUFDSSxJQUFNQyxPQUNwRCxLQUFLLElBQUlBLEtBQU9ILENBQVUsSUFBSSxLQUFLLElBQUlFLEtBQU9GLENBQVUsSUFBSUcsS0FBT0Q7QUFBQSxNQUFBO0FBR3hELE1BQUFkLEVBQUEsUUFBUVUsRUFBYSxRQUFRRyxDQUFrQixHQUV2Q047SUFBQSxHQUdqQlMsSUFBYSxNQUFNO0FBQ3ZCLE1BQUlyQixFQUFhLFVBQVUsU0FDVkcsRUFBQSxRQUFRLEtBQUssTUFBTUgsRUFBYSxNQUFNLGFBQWFBLEVBQWEsTUFBTSxXQUFXLEdBQ3JGSSxFQUFBLFFBQVFKLEVBQWEsTUFBTSxhQUM3Qk0sRUFBQSxRQUFRTixFQUFhLE1BQU0sYUFDMUJPLEVBQUEsUUFBUUgsRUFBYSxRQUFRRSxFQUFXLE9BQ3ZDRSxFQUFBLFFBQVFILEVBQWEsVUFBVSxHQUNoQ0ksRUFBQSxRQUFRTixFQUFpQixVQUFVQyxFQUFhLE9BQzVETSxFQUFhLFFBQVFWLEVBQWEsTUFBTSxjQUFjQSxFQUFhLE1BQU0sYUFDekVXLEVBQVksUUFBUUosRUFBWSxTQUFTLENBQUMvQixFQUFNLGVBRTVCcUM7SUFBQSxHQUloQlMsSUFBZSxNQUFNO0FBQ2QsTUFBQUQ7SUFBQSxHQUdQRSxJQUFnQixDQUFDQyxNQUF1QjtBQUM1QyxNQUFJeEIsRUFBYSxVQUFVLFFBQzNCQSxFQUFhLE1BQU0sU0FBUztBQUFBLFFBQzFCLFVBQVU7QUFBQSxRQUNWLE1BQU9BLEVBQWEsTUFBTSxTQUFTd0IsQ0FBVSxFQUFrQjtBQUFBLE1BQUEsQ0FDaEU7QUFBQSxJQUFBLEdBR0dDLElBQWdCLE1BQU07QUFDMUIsTUFBSXpCLEVBQWEsVUFBVSxTQUN2QkcsRUFBaUIsUUFBUUMsRUFBYSxRQUN4Q0osRUFBYSxNQUFNLFNBQVM7QUFBQSxRQUMxQixVQUFVO0FBQUEsUUFDVixNQUFNSSxFQUFhO0FBQUEsTUFBQSxDQUNwQixJQUNTSyxFQUFZLFNBQ1JjLEVBQUFsQixFQUFhLFFBQVEsQ0FBQztBQUFBLElBQ3RDLEdBR0lxQixJQUFvQixNQUFNO0FBQzFCLE1BQUNsQixFQUFhLFNBQ0ZlLEVBQUFsQixFQUFhLFFBQVEsQ0FBQztBQUFBLElBQ3RDLEdBR0lzQixJQUFnQixNQUFNOztBQUMxQixZQUFNQyxJQUFVO0FBQUEsUUFDZCxNQUFNNUIsS0FBQSxnQkFBQUEsRUFBYztBQUFBLFFBQ3BCLFlBQVk7QUFBQSxRQUNaLFdBQVc7QUFBQSxNQUFBO0FBR2IsTUFBQUMsRUFBYyxRQUFRLElBQUkscUJBQXFCLENBQUM0QixNQUFZO0FBQzFELFlBQUlDLElBQW1CLENBQUE7QUFFZixRQUFBRCxFQUFBLFFBQVEsQ0FBQ0UsT0FBVTs7QUFDbkIsZ0JBQUFQLEtBQWEsTUFBTSxPQUFLUSxLQUFBaEMsRUFBYSxVQUFiLGdCQUFBZ0MsR0FBb0IsYUFBWSxDQUFBLENBQUUsRUFBRSxRQUFRRCxHQUFNLE1BQU07QUFDdEYsVUFBSUEsR0FBTSxrQkFDUkQsRUFBTyxLQUFLTixFQUFVO0FBQUEsUUFDeEIsQ0FDRCxHQUVHTSxFQUFPLFNBQVMsS0FBRzFDLEVBQUsscUJBQXFCMEMsQ0FBTTtBQUFBLFNBQ3RERixDQUFPLEdBQ0osTUFBQSxPQUFLSSxJQUFBaEMsRUFBYSxVQUFiLGdCQUFBZ0MsRUFBb0IsYUFBWSxFQUFFLEVBQUUsUUFBUSxDQUFDQyxNQUFVO0FBQ2hFLFFBQUloQyxFQUFjLFNBQXFCQSxFQUFBLE1BQU0sUUFBUWdDLENBQUs7QUFBQSxNQUFBLENBQzNEO0FBQUEsSUFBQSxHQUdHQyxJQUFjLE1BQU07QUFDeEIsWUFBTUMsSUFBbUIsTUFBTTtBQUNmLFFBQUFSO01BQUE7QUFFSCxNQUFBekIsRUFBQSxRQUFRLElBQUksaUJBQWlCaUMsQ0FBZ0IsR0FDdERuQyxFQUFhLFNBQU9FLEVBQWEsTUFBTSxRQUFRRixFQUFhLE9BQU8sRUFBRSxXQUFXLElBQU07QUFBQSxJQUFBO0FBRzVGLFdBQUFvQyxHQUFVLE1BQU07QUFDZCxNQUFJLFVBQ0ssT0FBQSxpQkFBaUIsVUFBVWYsQ0FBVSxHQUduQ0EsS0FDR00sS0FDRk87SUFBQSxDQUNiLEdBRURHLEdBQVksTUFBTTs7QUFDVCxhQUFBLG9CQUFvQixVQUFVaEIsQ0FBVSxJQUMvQ1csSUFBQS9CLEVBQWMsVUFBZCxRQUFBK0IsRUFBcUIsZUFDckJNLElBQUFwQyxFQUFhLFVBQWIsUUFBQW9DLEVBQW9CO0FBQUEsSUFBVyxDQUNoQyxHQUVEQyxHQUFVLE1BQU07QUFDSCxNQUFBbEI7SUFBQSxDQUNaLEdBRUQ5QyxFQUFNOEIsR0FBYyxNQUFNO0FBQ25CLE1BQUFqQixFQUFBLGVBQWVpQixFQUFhLEtBQUs7QUFBQSxJQUFBLENBQ3ZDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NFQ2hNVW1DLEtBQWE7QUFBQSxFQUN4QixTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxZQUFZO0FBQ2QsOEVDNEJRQyxLQUFlOzs7Ozs7Ozs7Ozs7aUJBSGZDLElBQVVwRSxLQUNWcUUsSUFBTXJFLEtBSU5zRSxJQUFxQkMsRUFBaUIsTUFBTTtBQUNoRCxjQUFRckUsRUFBTSxXQUFXO0FBQUEsUUFDdkIsS0FBS2dFLEdBQVc7QUFDZCxpQkFBT2xGLEVBQUksT0FBTztBQUFBLFFBQ3BCLEtBQUtrRixHQUFXO0FBQ2QsaUJBQU9sRixFQUFJLE9BQU87QUFBQSxRQUNwQixLQUFLa0YsR0FBVztBQUNkLGlCQUFPbEYsRUFBSSxPQUFPO0FBQUEsUUFDcEI7QUFDRSxpQkFBT2tGLEdBQVc7QUFBQSxNQUN0QjtBQUFBLElBQUEsQ0FDRCxHQUVLTSxJQUFzQixNQUFNOztBQUMxQixZQUFBQyxLQUFhZixJQUFBVyxFQUFJLFVBQUosZ0JBQUFYLEVBQVcsWUFDeEJnQixLQUFnQlYsSUFBQUksRUFBUSxVQUFSLGdCQUFBSixFQUFlLGNBQWMsa0JBQWtCUyxDQUFVO0FBRS9FLE1BQUlBLEtBQWNDLElBQ2hCQSxFQUFjLFNBQVNQLEtBQ2RFLEVBQUksVUFDYkEsRUFBSSxNQUFNLE1BQU1GO0FBQUEsSUFDbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQ3hCSVEsSUFBWUosRUFBUyxNQUFNckUsRUFBTSxXQUFXQSxFQUFNLGFBQWE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQ1QvRDBFLElBQVU1RSxFQUFJRSxFQUFNLE9BQU87QUFFakMsV0FBQUQ7QUFBQSxNQUNFLE1BQU1DLEVBQU07QUFBQSxNQUNaLENBQUMyRSxHQUFVQyxNQUFhO0FBQ3RCLFNBQUlELE1BQWFDLEtBQVlELE1BQWFELEVBQVEsV0FDaERBLEVBQVEsUUFBUUM7QUFBQSxNQUVwQjtBQUFBLElBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0VDdEJTRSxLQUFzQiwrQkFFdEJDLEtBQVU7QUFBQSxFQUNyQixTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQ1QsR0FFYUMsS0FBYyxDQUFDQyxNQUNuQixDQUFDQyxNQUFvQztBQUMxQyxNQUFJQyxJQUFTSjtBQUViLFNBQUtHLEVBQU0sS0FBTyxFQUFBLE1BQU1ELENBQU0sTUFDbkJFLElBQUE7QUFBQSxJQUNQLFNBQVNMO0FBQUEsSUFDVCxPQUFPO0FBQUEsRUFBQSxJQUlKSztBQUFBLEdBSUVDLEtBQWtCLENBQUNDLEdBQWlDQyxNQUUzRCxPQUFPRCxLQUFtQixZQUFZQSxFQUFlLFNBQVMsSUFBVUEsSUFFckUsT0FBT0MsS0FBaUIsWUFBWUEsRUFBYSxTQUFTLElBQUlBLElBQWVSLElBR3pFUyxLQUFtQixDQUFDRixHQUFpQ0MsTUFDaEVELE1BQW1CLE1BQVNDLE1BQWlCLElBRWxDRSxLQUF3QixDQUFDLEVBQUUsV0FBQUMsR0FBVyxXQUFBQyxHQUFXLFVBQUFDLEdBQVUsT0FBQVQsUUFBOEI7QUFDcEcsUUFBTVUsSUFBdUJWLEVBQU0sV0FBVyxLQUFLLENBQUNTLEdBQzlDRSxJQUFZSixLQUFhUCxFQUFNLFNBQVNPO0FBR3ZDLFNBQUEsRUFGWSxDQUFDRyxLQUF3QkYsS0FBYVIsRUFBTSxTQUFTUSxNQUVsRCxDQUFDRztBQUN6QixHQXVEYUMsS0FBd0IsQ0FBQztBQUFBLEVBQ3BDLE9BQUFDO0FBQUEsRUFDQSxnQkFBQVY7QUFBQSxFQUNBLFdBQUFJO0FBQUEsRUFDQSxXQUFBQztBQUFBLEVBQ0EsVUFBQUMsSUFBVztBQUFBLEVBQ1gsWUFBQUs7QUFBQSxFQUNBLE9BQUFkO0FBQ0YsTUFRTTtBQUtBLE1BRkVhLEVBQUEsUUFBUVYsS0FBa0MsSUFFNUMsQ0FBQ1UsRUFBTSxTQUFTQyxHQUFZO0FBQzlCLFVBQU1DLElBQWFDLElBQWlCaEIsS0FBQSxnQkFBQUEsRUFBTyxVQUFTLElBQUljLENBQVU7QUFFOUQsSUFBQ0MsRUFBVyxVQUNkRixFQUFNLFFBQVFFLEVBQVc7QUFBQSxFQUU3QjtBQUVBLE1BQUksQ0FBQ0YsRUFBTSxVQUFVTixLQUFhQyxJQUFZO0FBQzVDLFVBQU1TLElBQW1CQyxHQUFlO0FBQUEsTUFDdEMsV0FBQVg7QUFBQSxNQUNBLFdBQUFDO0FBQUEsTUFDQSxVQUFBQztBQUFBLE1BQ0EsUUFBT1QsS0FBQSxnQkFBQUEsRUFBTyxVQUFTO0FBQUEsSUFBQSxDQUN4QjtBQUVHLElBQUNpQixFQUFpQixVQUNwQkosRUFBTSxRQUFRSSxFQUFpQjtBQUFBLEVBRW5DO0FBQ0YsR0FrQmFDLEtBQWlCLENBQUM7QUFBQSxFQUM3QixXQUFBWDtBQUFBLEVBQ0EsV0FBQUM7QUFBQSxFQUNBLFVBQUFDLElBQVc7QUFBQSxFQUNYLE9BQUFUO0FBQ0YsTUFBMEM7QUFDeEMsUUFBTW1CLElBQVc7QUFBQSxJQUNmLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxFQUFBO0FBVVQsU0FQQUEsRUFBUyxRQUFRYixHQUFzQjtBQUFBLElBQ3JDLFdBQUFDO0FBQUEsSUFDQSxXQUFBQztBQUFBLElBQ0EsVUFBQUM7QUFBQSxJQUNBLE9BQUFUO0FBQUEsRUFBQSxDQUNELEdBRUdtQixFQUFTLFVBRWJBLEVBQVMsVUFBVXZCLElBRWZXLEtBQWFDLElBQ2ZXLEVBQVMsVUFBVSxnQ0FBZ0NYLENBQVMsUUFBUUQsQ0FBUywyQkFDcEVBLElBQ0FZLEVBQUEsVUFBVSxxQ0FBcUNaLENBQVMsMkJBQ3hEQyxNQUNBVyxFQUFBLFVBQVUscUNBQXFDWCxDQUFTLDRCQUc1RFc7QUFDVDtBQUVnQixTQUFBSCxHQUFpQmhCLEdBQWVjLEdBQXVFO0FBQ3JILGFBQVdNLEtBQWFOLEdBQVk7QUFDNUIsVUFBQUMsSUFBYUssRUFBVXBCLENBQUs7QUFDOUIsUUFBQSxDQUFDZSxFQUFXO0FBQ1AsYUFBQUE7QUFBQSxFQUVYO0FBRU8sU0FBQTtBQUFBLElBQ0wsU0FBUztBQUFBLElBQ1QsT0FBTztBQUFBLEVBQUE7QUFFWDs7Ozs7Ozs7Ozs7Ozs7OztpQkNsTFFGLElBQVFoRyxFQUFJRSxFQUFNLEtBQUssR0FDdkJzRyxJQUFXeEcsRUFBSSxFQUFLLEdBQ3BCUixJQUFRUSxFQUE4QixJQUFJLEdBQzFDNEYsSUFBVzVGLEVBQUlFLEVBQU0sUUFBUSxHQUM3QmlGLElBQVFuRixFQUF3QkUsRUFBTSxLQUFLLEdBRTNDdUcsSUFBZWxDLEVBQVMsTUFBTWMsR0FBZ0JuRixFQUFNLE9BQU84RixFQUFNLEtBQUssQ0FBQyxHQUN2RVUsSUFBaUJuQyxFQUFTLE1BQU9yRSxFQUFNLFdBQVcsR0FBR0EsRUFBTSxLQUFLLE9BQU9BLEVBQU0sS0FBTSxHQUNuRnlHLElBQVdwQyxFQUFTLE1BQU9yRSxFQUFNLFlBQVksQ0FBQ2lGLEVBQU0sU0FBVUssR0FBaUJRLEVBQU0sT0FBTzlGLEVBQU0sS0FBSyxDQUFDLEdBQ3hHMEcsSUFBZXJDLEVBQVMsTUFBTWlDLEVBQVMsU0FBUyxDQUFDSyxFQUFRLEtBQUssR0FDOURBLElBQVV0QyxFQUFTLE1BQU1ZLEVBQU0sVUFBVSxNQUFTLEdBRWxEMkIsSUFBZ0IsTUFBTTs7QUFDcEIsWUFBQUMsSUFBUSxJQUFJLFdBQVcsV0FBVztBQUNqQyxPQUFBckQsSUFBQWxFLEtBQUEsZ0JBQUFBLEVBQUEsVUFBQSxRQUFBa0UsRUFBTyxjQUFjcUQ7QUFBQSxJQUFLLEdBRzdCQyxJQUFjLE1BQU07QUFDeEIsTUFBQVIsRUFBUyxRQUFRO0FBQUEsSUFBQSxHQUdiUyxJQUFpQixNQUFNO0FBQzNCLE1BQUFULEVBQVMsUUFBUTtBQUFBLElBQUE7QUFHbkIsV0FBQXZHO0FBQUEsTUFDRSxNQUFNQyxFQUFNO0FBQUEsTUFDWixDQUFDMkUsR0FBVUMsTUFBYTtBQUN0QixTQUFJRCxNQUFhQyxLQUFZRCxNQUFhTSxFQUFNLFdBQzlDQSxFQUFNLFFBQVFOO0FBQUEsTUFFbEI7QUFBQSxJQUFBLEdBR1dxQyxFQUFBLEVBQUUsT0FBQWxCLEdBQU8sT0FBQWIsRUFBQSxDQUFPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NFQzdEbEJnQyxLQUFrQjtBQUFBLEVBQzdCLE1BQU07QUFBQSxFQUNOLGdCQUFnQjtBQUFBLEVBQ2hCLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLFVBQVU7QUFBQSxFQUNWLFFBQVE7QUFBQSxFQUNSLEtBQUs7QUFBQSxFQUNMLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxFQUNOLEtBQUs7QUFBQSxFQUNMLE1BQU07QUFDUjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQzZDUW5CLElBQVFoRyxFQUFJRSxFQUFNLEtBQUssR0FDdkJzRyxJQUFXeEcsRUFBSSxFQUFLLEdBQ3BCUixJQUFRUSxFQUE2QixJQUFJLEdBQ3pDb0gsSUFBZXBILEVBQUksRUFBSyxHQUN4Qm1GLElBQVFuRixFQUFJRSxFQUFNLEtBQUssR0FFdkJ1RyxJQUFlbEMsRUFBUyxNQUFNYyxHQUFnQm5GLEVBQU0sT0FBTzhGLEVBQU0sS0FBSyxDQUFDLEdBQ3ZFVSxJQUFpQm5DLEVBQVMsTUFBT3JFLEVBQU0sWUFBWUEsRUFBTSxRQUFRLEdBQUdBLEVBQU0sS0FBSyxPQUFPQSxFQUFNLEtBQU0sR0FDbEdtSCxJQUFXOUMsRUFBUyxNQUFNckUsRUFBTSxZQUFZaUYsRUFBTSxLQUFLLEdBQ3ZEd0IsSUFBV3BDO0FBQUEsTUFDZixNQUFPckUsRUFBTSxZQUFZaUYsRUFBTSxVQUFVLFVBQWEsQ0FBQ0EsRUFBTSxTQUFVSyxHQUFpQlEsRUFBTSxPQUFPOUYsRUFBTSxLQUFLO0FBQUEsSUFBQSxHQUU1RzBHLElBQWVyQyxFQUFTLE1BQU1pQyxFQUFTLFNBQVMsQ0FBQ0ssRUFBUSxLQUFLLEdBQzlEQSxJQUFVdEMsRUFBUyxNQUFNWSxFQUFNLFVBQVUsTUFBTUEsRUFBTSxVQUFVLE1BQVMsR0FDeEVtQyxJQUFPL0M7QUFBQSxNQUFTLE1BQ3BCckUsRUFBTSxTQUFTaUgsR0FBZ0IsWUFBWUMsRUFBYSxVQUFVLEtBQU9ELEdBQWdCLE9BQU9qSCxFQUFNO0FBQUEsSUFBQSxHQUdsR3FILElBQWMsTUFBTTs7QUFDeEIsTUFBQXBDLEVBQU0sUUFBUSxLQUNkekIsSUFBQWxFLEVBQU0sVUFBTixRQUFBa0UsRUFBYTtBQUFBLElBQU0sR0FHZnNELElBQWMsTUFBTTtBQUN4QixNQUFBUixFQUFTLFFBQVE7QUFBQSxJQUFBLEdBR2JTLElBQWlCLE1BQU07QUFDM0IsTUFBQVQsRUFBUyxRQUFRLElBRVpyQixFQUFNLFVBQ1RBLEVBQU0sUUFBUSxLQUdDcUM7SUFBQSxHQUdiQyxJQUFjLE1BQU07O0FBQ3hCLFVBQUl2SCxFQUFNLGdCQUFnQjtBQUNsQixjQUFBUixNQUFTc0UsS0FBQU4sSUFBQXlCLEVBQU0sVUFBTixnQkFBQXpCLEVBQWEsTUFBTSxXQUFuQixnQkFBQU0sRUFBMkIsS0FBSyxRQUFPO0FBRXRELFFBQUFtQixFQUFNLFFBQVF6RixJQUFTUSxFQUFNLGVBQWVSLENBQU0sSUFBSTtBQUFBLE1BQ3hEO0FBQUEsSUFBQSxHQUdJOEgsSUFBbUIsTUFBTTtBQUNQLE1BQUF6QixHQUFBO0FBQUEsUUFDcEIsT0FBQUM7QUFBQSxRQUNBLGdCQUFnQjlGLEVBQU07QUFBQSxRQUN0QixXQUFXQSxFQUFNO0FBQUEsUUFDakIsV0FBV0EsRUFBTTtBQUFBLFFBQ2pCLFVBQVVBLEVBQU07QUFBQSxRQUNoQixZQUFZQSxFQUFNO0FBQUEsUUFDbEIsT0FBQWlGO0FBQUEsTUFBQSxDQUNEO0FBQUEsSUFBQSxHQUdHdUMsSUFBYyxDQUFDN0MsTUFBcUI7QUFDeEMsTUFBQU0sRUFBTSxRQUFRTjtBQUFBLElBQUE7QUFHaEIsV0FBQTVFO0FBQUEsTUFDRSxNQUFNQyxFQUFNO0FBQUEsTUFDWixDQUFDMkUsR0FBVUMsTUFBYTtBQUN0QixTQUFJRCxNQUFhQyxLQUFZRCxNQUFhTSxFQUFNLFdBQzlDQSxFQUFNLFFBQVFOO0FBQUEsTUFFbEI7QUFBQSxJQUFBLEdBR1dxQyxFQUFBO0FBQUEsTUFDWCxPQUFBbEI7QUFBQSxNQUNBLFVBQVU5RixFQUFNO0FBQUEsTUFDaEIsYUFBQXdIO0FBQUEsTUFDQSxPQUFBdkM7QUFBQSxJQUFBLENBQ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQzlGS2EsSUFBUWhHLEVBQUlFLEVBQU0sS0FBSyxHQUN2QnNHLElBQVd4RyxFQUFJLEVBQUssR0FDcEJSLElBQVFRLEVBQTZCLElBQUksR0FDekNtRixJQUFRbkYsRUFBSUUsRUFBTSxLQUFLLEdBRXZCdUcsSUFBZWxDLEVBQVMsTUFBTWMsR0FBZ0JuRixFQUFNLE9BQU84RixFQUFNLEtBQUssQ0FBQyxHQUN2RVUsSUFBaUJuQyxFQUFTLE1BQU9yRSxFQUFNLFdBQVcsR0FBR0EsRUFBTSxLQUFLLE9BQU9BLEVBQU0sS0FBTSxHQUNuRnlHLElBQVdwQztBQUFBLE1BQ2YsTUFBT3JFLEVBQU0sWUFBWWlGLEVBQU0sVUFBVSxVQUFhLENBQUNBLEVBQU0sU0FBVUssR0FBaUJRLEVBQU0sT0FBTzlGLEVBQU0sS0FBSztBQUFBLElBQUEsR0FFNUcwRyxJQUFlckMsRUFBUyxNQUFNaUMsRUFBUyxTQUFTLENBQUNLLEVBQVEsS0FBSyxHQUM5REEsSUFBVXRDLEVBQVMsTUFBTVksRUFBTSxVQUFVLE1BQU1BLEVBQU0sVUFBVSxNQUFTLEdBRXhFNkIsSUFBYyxNQUFNO0FBQ3hCLE1BQUFSLEVBQVMsUUFBUTtBQUFBLElBQUEsR0FHYlMsSUFBaUIsTUFBTTtBQUMzQixNQUFBVCxFQUFTLFFBQVEsSUFFWnJCLEVBQU0sVUFDVEEsRUFBTSxRQUFRO0FBQUEsSUFDaEIsR0FHSXFDLElBQW1CLE1BQ2hCekIsR0FBc0I7QUFBQSxNQUMzQixPQUFBQztBQUFBLE1BQ0EsZ0JBQWdCOUYsRUFBTTtBQUFBLE1BQ3RCLFdBQVdBLEVBQU07QUFBQSxNQUNqQixXQUFXQSxFQUFNO0FBQUEsTUFDakIsVUFBVUEsRUFBTTtBQUFBLE1BQ2hCLE9BQUFpRjtBQUFBLElBQUEsQ0FDRDtBQUdILFdBQUFsRjtBQUFBLE1BQ0UsTUFBTUMsRUFBTTtBQUFBLE1BQ1osQ0FBQzJFLEdBQVVDLE1BQWE7QUFDdEIsU0FBSUQsTUFBYUMsS0FBWUQsTUFBYU0sRUFBTSxXQUM5Q0EsRUFBTSxRQUFRTjtBQUFBLE1BRWxCO0FBQUEsSUFBQSxHQUdXcUMsRUFBQTtBQUFBLE1BQ1gsT0FBQWxCO0FBQUEsTUFDQSxVQUFVOUYsRUFBTTtBQUFBLE1BQ2hCLE9BQUFpRjtBQUFBLElBQUEsQ0FDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDdEZVd0MsS0FBYTtBQUFBLEVBQ3hCLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFDTixHQUVhQyxLQUFRO0FBQUEsRUFDbkIsSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUNOLEdDUGFDLEtBQWdCLE9BQU9DLE1BQXNCO0FBSXhELFFBQU1DLElBQU8sU0FBUztBQUV0QixNQUFJRDtBQUNFLFFBQUEsQ0FBQ0MsRUFBSyxRQUFRLGFBQWE7QUFDN0IsWUFBTUMsSUFBVSxPQUFPO0FBRWxCLE1BQUFELEVBQUEsUUFBUSxjQUFjQyxFQUFRLFNBQVMsR0FDNUNELEVBQUssTUFBTSxZQUFZLG9CQUFvQixHQUFHQyxDQUFPLElBQUksR0FDcERELEVBQUEsTUFBTSxZQUFZLFNBQVMsR0FBRyxHQUM5QkEsRUFBQSxNQUFNLFlBQVksY0FBYyx3Q0FBd0MsR0FDeEVBLEVBQUEsTUFBTSxZQUFZLGNBQWMsUUFBUSxHQUN4Q0EsRUFBQSxNQUFNLFlBQVksWUFBWSxPQUFPO0FBQUEsSUFJNUM7QUFBQSxhQUVBLE1BQU1FLEdBQVMsR0FDWCxDQUFDLFNBQVMsY0FBYyxjQUFjLEdBQUc7QUFDM0MsVUFBTUMsSUFBZSxTQUFTSCxFQUFLLFFBQVEsZUFBZSxHQUFHO0FBS3hELElBQUFBLEVBQUEsTUFBTSxlQUFlLE9BQU8sR0FDNUJBLEVBQUEsTUFBTSxlQUFlLFdBQVcsR0FDaENBLEVBQUEsTUFBTSxlQUFlLFdBQVcsR0FDaENBLEVBQUEsTUFBTSxlQUFlLFVBQVUsR0FDL0JBLEVBQUEsTUFBTSxlQUFlLGtCQUFrQixHQUU1QyxPQUFPLFNBQVM7QUFBQSxNQUNkLFVBQVU7QUFBQSxNQUNWLEtBQUtHO0FBQUEsSUFBQSxDQUNOLEdBRUQsT0FBT0gsRUFBSyxRQUFRO0FBQUEsRUFDdEI7QUFFSixHQUVhSSxLQUFlLGtCQUVmQyxLQUFtQixNQUFNO0FBQ2hDLE1BQUFDLElBQVcsU0FBUyxlQUFlRixFQUFZO0FBQ25ELEVBQUtFLE1BQ1FBLElBQUEsU0FBUyxjQUFjLEtBQUssR0FDdkNBLEVBQVMsS0FBS0YsSUFDTEUsRUFBQSxhQUFhLGtCQUFrQixFQUFFLEdBQ2pDLFNBQUEsS0FBSyxZQUFZQSxDQUFRLElBRXBDQSxFQUFTLE1BQU0sWUFBWTtBQUM3Qjs7Ozs7Ozs7Ozs7aUJDNUJRQyxJQUFnRHRJLEtBQ2hEdUksSUFBa0R2SSxLQUVsRHdJLElBQTBCLE1BQU07O0FBQ3BDLE9BQUE5RSxJQUFBNkUsRUFBWSxVQUFaLFFBQUE3RSxFQUFtQjtBQUFBLElBQVUsR0FHekIrRSxJQUEyQixNQUFNOztBQUNyQyxPQUFBL0UsSUFBQTZFLEVBQVksVUFBWixRQUFBN0UsRUFBbUI7QUFBQSxJQUFNLEdBR3JCZ0YsSUFBcUIsTUFBTTtBQUMvQixNQUFBVCxHQUFTLE1BQU07QUFDYixRQUFLSyxFQUFhLFVBQ2xCQSxFQUFhLE1BQU0sWUFBWTtBQUFBLE1BQUEsQ0FDaEM7QUFBQSxJQUFBLEdBR0dLLElBQXNCLE1BQU07QUFDaEMsTUFBSXpJLEVBQU0saUJBQWVZLEVBQUssT0FBTztBQUFBLElBQUEsR0FHakM4SCxJQUFzQixDQUFDQyxNQUFhO0FBQ3hDLE1BQUFBLEVBQUUsZUFBZSxHQUNiM0ksRUFBTSxpQkFBZVksRUFBSyxPQUFPO0FBQUEsSUFBQTtBQUd2QyxXQUFBYjtBQUFBLE1BQ0UsTUFBTUMsRUFBTTtBQUFBLE1BQ1osQ0FBQzJFLE1BQWE7QUFDWixRQUFLMEQsRUFBWSxVQUNiMUQsS0FDc0IyRCxLQUNMRSxPQUVNRCxLQUUzQlosR0FBY2hELENBQVE7QUFBQSxNQUN4QjtBQUFBLElBQUEsR0FHRmYsR0FBVSxNQUFNO0FBQ2QsTUFBSTVELEVBQU0sVUFDZ0JzSTtJQUMxQixDQUNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQzFES00sSUFBYzlJLEVBQUlFLEVBQU0sV0FBVyxHQUVuQzZJLElBQW9CeEUsRUFBUyxNQUFNLElBQUksTUFBTXJFLEVBQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQzhJLEdBQU94SCxNQUFVQSxJQUFRLENBQUMsQ0FBQyxHQUV2R0QsSUFBYyxDQUFDQyxNQUFrQjtBQUNyQyxNQUFBc0gsRUFBWSxRQUFRdEgsR0FFZlYsRUFBQSxVQUFVLE9BQU9VLENBQUs7QUFBQSxJQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUN2QnpCeUgsS0FBUSxDQUFDLE9BQU8sU0FBUyxVQUFVLE1BQU0sR0FDekNDLEtBQWEsQ0FBQyxTQUFTLEtBQUssR0FDNUJDLEtBQTBCLGdCQUFBRixHQUFNLE9BQU8sQ0FBQ0csR0FBS0MsTUFBU0QsRUFBSSxPQUFPQyxHQUFNQSxJQUFPLE1BQU1ILEdBQVcsQ0FBQyxHQUFHRyxJQUFPLE1BQU1ILEdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFFLEdBQ2xJSSxLQUFNLEtBQUssS0FDWEMsS0FBTSxLQUFLLEtBQ1hDLEtBQVEsS0FBSyxPQUNiQyxLQUFRLEtBQUssT0FDYkMsS0FBZSxDQUFBQyxPQUFNO0FBQUEsRUFDekIsR0FBR0E7QUFBQSxFQUNILEdBQUdBO0FBQ0wsSUFDTUMsS0FBa0I7QUFBQSxFQUN0QixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixLQUFLO0FBQ1AsR0FDTUMsS0FBdUI7QUFBQSxFQUMzQixPQUFPO0FBQUEsRUFDUCxLQUFLO0FBQ1A7QUFDQSxTQUFTQyxHQUFNQyxHQUFPNUUsR0FBTzZFLEdBQUs7QUFDaEMsU0FBT1QsR0FBSVEsR0FBT1QsR0FBSW5FLEdBQU82RSxDQUFHLENBQUM7QUFDbkM7QUFDQSxTQUFTQyxHQUFTOUUsR0FBTytFLEdBQU87QUFDOUIsU0FBTyxPQUFPL0UsS0FBVSxhQUFhQSxFQUFNK0UsQ0FBSyxJQUFJL0U7QUFDdEQ7QUFDQSxTQUFTZ0YsR0FBUUMsR0FBVztBQUMxQixTQUFPQSxFQUFVLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDL0I7QUFDQSxTQUFTQyxHQUFhRCxHQUFXO0FBQy9CLFNBQU9BLEVBQVUsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUMvQjtBQUNBLFNBQVNFLEdBQWdCQyxHQUFNO0FBQzdCLFNBQU9BLE1BQVMsTUFBTSxNQUFNO0FBQzlCO0FBQ0EsU0FBU0MsR0FBY0QsR0FBTTtBQUMzQixTQUFPQSxNQUFTLE1BQU0sV0FBVztBQUNuQztBQUNBLFNBQVNFLEdBQVlMLEdBQVc7QUFDOUIsU0FBTyxDQUFDLE9BQU8sUUFBUSxFQUFFLFNBQVNELEdBQVFDLENBQVMsQ0FBQyxJQUFJLE1BQU07QUFDaEU7QUFDQSxTQUFTTSxHQUFpQk4sR0FBVztBQUNuQyxTQUFPRSxHQUFnQkcsR0FBWUwsQ0FBUyxDQUFDO0FBQy9DO0FBQ0EsU0FBU08sR0FBa0JQLEdBQVdRLEdBQU9DLEdBQUs7QUFDaEQsRUFBSUEsTUFBUSxXQUNWQSxJQUFNO0FBRVIsUUFBTUMsSUFBWVQsR0FBYUQsQ0FBUyxHQUNsQ1csSUFBZ0JMLEdBQWlCTixDQUFTLEdBQzFDWSxJQUFTUixHQUFjTyxDQUFhO0FBQzFDLE1BQUlFLElBQW9CRixNQUFrQixNQUFNRCxPQUFlRCxJQUFNLFFBQVEsV0FBVyxVQUFVLFNBQVNDLE1BQWMsVUFBVSxXQUFXO0FBQzlJLFNBQUlGLEVBQU0sVUFBVUksQ0FBTSxJQUFJSixFQUFNLFNBQVNJLENBQU0sTUFDakRDLElBQW9CQyxHQUFxQkQsQ0FBaUIsSUFFckQsQ0FBQ0EsR0FBbUJDLEdBQXFCRCxDQUFpQixDQUFDO0FBQ3BFO0FBS0EsU0FBU0UsR0FBOEJmLEdBQVc7QUFDaEQsU0FBT0EsRUFBVSxRQUFRLGNBQWMsQ0FBQVUsTUFBYWpCLEdBQXFCaUIsQ0FBUyxDQUFDO0FBQ3JGO0FBNkJBLFNBQVNJLEdBQXFCZCxHQUFXO0FBQ3ZDLFNBQU9BLEVBQVUsUUFBUSwwQkFBMEIsQ0FBQWYsTUFBUU8sR0FBZ0JQLENBQUksQ0FBQztBQUNsRjtBQUNBLFNBQVMrQixHQUFvQkMsR0FBUztBQUNwQyxTQUFPO0FBQUEsSUFDTCxLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsSUFDUCxRQUFRO0FBQUEsSUFDUixNQUFNO0FBQUEsSUFDTixHQUFHQTtBQUFBLEVBQ1A7QUFDQTtBQUNBLFNBQVNDLEdBQWlCRCxHQUFTO0FBQ2pDLFNBQU8sT0FBT0EsS0FBWSxXQUFXRCxHQUFvQkMsQ0FBTyxJQUFJO0FBQUEsSUFDbEUsS0FBS0E7QUFBQSxJQUNMLE9BQU9BO0FBQUEsSUFDUCxRQUFRQTtBQUFBLElBQ1IsTUFBTUE7QUFBQSxFQUNWO0FBQ0E7QUFDQSxTQUFTRSxHQUFpQkMsR0FBTTtBQUM5QixRQUFNO0FBQUEsSUFDSixHQUFBQztBQUFBLElBQ0EsR0FBQUM7QUFBQSxJQUNBLE9BQUFDO0FBQUEsSUFDQSxRQUFBQztBQUFBLEVBQ0QsSUFBR0o7QUFDSixTQUFPO0FBQUEsSUFDTCxPQUFBRztBQUFBLElBQ0EsUUFBQUM7QUFBQSxJQUNBLEtBQUtGO0FBQUEsSUFDTCxNQUFNRDtBQUFBLElBQ04sT0FBT0EsSUFBSUU7QUFBQSxJQUNYLFFBQVFELElBQUlFO0FBQUEsSUFDWixHQUFBSDtBQUFBLElBQ0EsR0FBQUM7QUFBQSxFQUNKO0FBQ0E7QUNwSUEsU0FBU0csR0FBMkJDLEdBQU0xQixHQUFXUyxHQUFLO0FBQ3hELE1BQUk7QUFBQSxJQUNGLFdBQUFrQjtBQUFBLElBQ0EsVUFBQUM7QUFBQSxFQUNELElBQUdGO0FBQ0osUUFBTUcsSUFBV3hCLEdBQVlMLENBQVMsR0FDaENXLElBQWdCTCxHQUFpQk4sQ0FBUyxHQUMxQzhCLElBQWMxQixHQUFjTyxDQUFhLEdBQ3pDMUIsSUFBT2MsR0FBUUMsQ0FBUyxHQUN4QitCLElBQWFGLE1BQWEsS0FDMUJHLElBQVVMLEVBQVUsSUFBSUEsRUFBVSxRQUFRLElBQUlDLEVBQVMsUUFBUSxHQUMvREssSUFBVU4sRUFBVSxJQUFJQSxFQUFVLFNBQVMsSUFBSUMsRUFBUyxTQUFTLEdBQ2pFTSxJQUFjUCxFQUFVRyxDQUFXLElBQUksSUFBSUYsRUFBU0UsQ0FBVyxJQUFJO0FBQ3pFLE1BQUlLO0FBQ0osVUFBUWxELEdBQUk7QUFBQSxJQUNWLEtBQUs7QUFDSCxNQUFBa0QsSUFBUztBQUFBLFFBQ1AsR0FBR0g7QUFBQSxRQUNILEdBQUdMLEVBQVUsSUFBSUMsRUFBUztBQUFBLE1BQ2xDO0FBQ007QUFBQSxJQUNGLEtBQUs7QUFDSCxNQUFBTyxJQUFTO0FBQUEsUUFDUCxHQUFHSDtBQUFBLFFBQ0gsR0FBR0wsRUFBVSxJQUFJQSxFQUFVO0FBQUEsTUFDbkM7QUFDTTtBQUFBLElBQ0YsS0FBSztBQUNILE1BQUFRLElBQVM7QUFBQSxRQUNQLEdBQUdSLEVBQVUsSUFBSUEsRUFBVTtBQUFBLFFBQzNCLEdBQUdNO0FBQUEsTUFDWDtBQUNNO0FBQUEsSUFDRixLQUFLO0FBQ0gsTUFBQUUsSUFBUztBQUFBLFFBQ1AsR0FBR1IsRUFBVSxJQUFJQyxFQUFTO0FBQUEsUUFDMUIsR0FBR0s7QUFBQSxNQUNYO0FBQ007QUFBQSxJQUNGO0FBQ0UsTUFBQUUsSUFBUztBQUFBLFFBQ1AsR0FBR1IsRUFBVTtBQUFBLFFBQ2IsR0FBR0EsRUFBVTtBQUFBLE1BQ3JCO0FBQUEsRUFDRztBQUNELFVBQVExQixHQUFhRCxDQUFTLEdBQUM7QUFBQSxJQUM3QixLQUFLO0FBQ0gsTUFBQW1DLEVBQU94QixDQUFhLEtBQUt1QixLQUFlekIsS0FBT3NCLElBQWEsS0FBSztBQUNqRTtBQUFBLElBQ0YsS0FBSztBQUNILE1BQUFJLEVBQU94QixDQUFhLEtBQUt1QixLQUFlekIsS0FBT3NCLElBQWEsS0FBSztBQUNqRTtBQUFBLEVBQ0g7QUFDRCxTQUFPSTtBQUNUO0FBU0EsTUFBTUMsS0FBa0IsT0FBT1QsR0FBV0MsR0FBVVMsTUFBVztBQUM3RCxRQUFNO0FBQUEsSUFDSixXQUFBckMsSUFBWTtBQUFBLElBQ1osVUFBQXNDLElBQVc7QUFBQSxJQUNYLFlBQUFDLElBQWEsQ0FBRTtBQUFBLElBQ2YsVUFBQUM7QUFBQSxFQUNELElBQUdILEdBQ0VJLElBQWtCRixFQUFXLE9BQU8sT0FBTyxHQUMzQzlCLElBQU0sT0FBTytCLEVBQVMsU0FBUyxPQUFPLFNBQVNBLEVBQVMsTUFBTVosQ0FBUTtBQUM1RSxNQUFJcEIsSUFBUSxNQUFNZ0MsRUFBUyxnQkFBZ0I7QUFBQSxJQUN6QyxXQUFBYjtBQUFBLElBQ0EsVUFBQUM7QUFBQSxJQUNBLFVBQUFVO0FBQUEsRUFDSixDQUFHLEdBQ0c7QUFBQSxJQUNGLEdBQUFqQjtBQUFBLElBQ0EsR0FBQUM7QUFBQSxFQUNELElBQUdHLEdBQTJCakIsR0FBT1IsR0FBV1MsQ0FBRyxHQUNoRGlDLElBQW9CMUMsR0FDcEIyQyxJQUFpQixDQUFBLEdBQ2pCQyxJQUFhO0FBQ2pCLFdBQVNDLElBQUksR0FBR0EsSUFBSUosRUFBZ0IsUUFBUUksS0FBSztBQUMvQyxVQUFNO0FBQUEsTUFDSixNQUFBN007QUFBQSxNQUNBLElBQUE4TTtBQUFBLElBQ04sSUFBUUwsRUFBZ0JJLENBQUMsR0FDZjtBQUFBLE1BQ0osR0FBR0U7QUFBQSxNQUNILEdBQUdDO0FBQUEsTUFDSCxNQUFBQztBQUFBLE1BQ0EsT0FBQUM7QUFBQSxJQUNELElBQUcsTUFBTUosRUFBRztBQUFBLE1BQ1gsR0FBQXpCO0FBQUEsTUFDQSxHQUFBQztBQUFBLE1BQ0Esa0JBQWtCdEI7QUFBQSxNQUNsQixXQUFXMEM7QUFBQSxNQUNYLFVBQUFKO0FBQUEsTUFDQSxnQkFBQUs7QUFBQSxNQUNBLE9BQUFuQztBQUFBLE1BQ0EsVUFBQWdDO0FBQUEsTUFDQSxVQUFVO0FBQUEsUUFDUixXQUFBYjtBQUFBLFFBQ0EsVUFBQUM7QUFBQSxNQUNEO0FBQUEsSUFDUCxDQUFLO0FBQ0QsSUFBQVAsSUFBSTBCLEtBQXdCMUIsR0FDNUJDLElBQUkwQixLQUF3QjFCLEdBQzVCcUIsSUFBaUI7QUFBQSxNQUNmLEdBQUdBO0FBQUEsTUFDSCxDQUFDM00sQ0FBSSxHQUFHO0FBQUEsUUFDTixHQUFHMk0sRUFBZTNNLENBQUk7QUFBQSxRQUN0QixHQUFHaU47QUFBQSxNQUNKO0FBQUEsSUFDUCxHQUNRQyxLQUFTTixLQUFjLE9BQ3pCQSxLQUNJLE9BQU9NLEtBQVUsYUFDZkEsRUFBTSxjQUNSUixJQUFvQlEsRUFBTSxZQUV4QkEsRUFBTSxVQUNSMUMsSUFBUTBDLEVBQU0sVUFBVSxLQUFPLE1BQU1WLEVBQVMsZ0JBQWdCO0FBQUEsTUFDNUQsV0FBQWI7QUFBQSxNQUNBLFVBQUFDO0FBQUEsTUFDQSxVQUFBVTtBQUFBLElBQ1osQ0FBVyxJQUFJWSxFQUFNLFFBRVo7QUFBQSxNQUNDLEdBQUE3QjtBQUFBLE1BQ0EsR0FBQUM7QUFBQSxJQUNELElBQUdHLEdBQTJCakIsR0FBT2tDLEdBQW1CakMsQ0FBRyxJQUU5RG9DLElBQUk7QUFBQSxFQUVQO0FBQ0QsU0FBTztBQUFBLElBQ0wsR0FBQXhCO0FBQUEsSUFDQSxHQUFBQztBQUFBLElBQ0EsV0FBV29CO0FBQUEsSUFDWCxVQUFBSjtBQUFBLElBQ0EsZ0JBQUFLO0FBQUEsRUFDSjtBQUNBO0FBVUEsZUFBZVEsR0FBZUMsR0FBT2xLLEdBQVM7QUFDNUMsTUFBSW1LO0FBQ0osRUFBSW5LLE1BQVksV0FDZEEsSUFBVSxDQUFBO0FBRVosUUFBTTtBQUFBLElBQ0osR0FBQW1JO0FBQUEsSUFDQSxHQUFBQztBQUFBLElBQ0EsVUFBQWtCO0FBQUEsSUFDQSxPQUFBaEM7QUFBQSxJQUNBLFVBQUE4QztBQUFBLElBQ0EsVUFBQWhCO0FBQUEsRUFDRCxJQUFHYyxHQUNFO0FBQUEsSUFDSixVQUFBRyxJQUFXO0FBQUEsSUFDWCxjQUFBQyxJQUFlO0FBQUEsSUFDZixnQkFBQUMsSUFBaUI7QUFBQSxJQUNqQixhQUFBQyxJQUFjO0FBQUEsSUFDZCxTQUFBekMsSUFBVTtBQUFBLEVBQ2QsSUFBTXBCLEdBQVMzRyxHQUFTa0ssQ0FBSyxHQUNyQk8sSUFBZ0J6QyxHQUFpQkQsQ0FBTyxHQUV4QzJDLElBQVVOLEVBQVNJLElBRE5ELE1BQW1CLGFBQWEsY0FBYyxhQUNiQSxDQUFjLEdBQzVESSxJQUFxQjFDLEdBQWlCLE1BQU1xQixFQUFTLGdCQUFnQjtBQUFBLElBQ3pFLFVBQVdhLElBQXdCLE9BQU9iLEVBQVMsYUFBYSxPQUFPLFNBQVNBLEVBQVMsVUFBVW9CLENBQU8sT0FBTyxRQUFPUCxJQUFnQ08sSUFBVUEsRUFBUSxrQkFBbUIsT0FBT3BCLEVBQVMsc0JBQXNCLE9BQU8sU0FBU0EsRUFBUyxtQkFBbUJjLEVBQVMsUUFBUTtBQUFBLElBQ2hTLFVBQUFDO0FBQUEsSUFDQSxjQUFBQztBQUFBLElBQ0EsVUFBQWxCO0FBQUEsRUFDRCxDQUFBLENBQUMsR0FDSWxCLElBQU9xQyxNQUFtQixhQUFhO0FBQUEsSUFDM0MsR0FBQXBDO0FBQUEsSUFDQSxHQUFBQztBQUFBLElBQ0EsT0FBT2QsRUFBTSxTQUFTO0FBQUEsSUFDdEIsUUFBUUEsRUFBTSxTQUFTO0FBQUEsRUFDM0IsSUFBTUEsRUFBTSxXQUNKc0QsSUFBZSxPQUFPdEIsRUFBUyxtQkFBbUIsT0FBTyxTQUFTQSxFQUFTLGdCQUFnQmMsRUFBUyxRQUFRLElBQzVHUyxJQUFlLE9BQU92QixFQUFTLGFBQWEsT0FBTyxTQUFTQSxFQUFTLFVBQVVzQixDQUFZLEtBQU8sT0FBT3RCLEVBQVMsWUFBWSxPQUFPLFNBQVNBLEVBQVMsU0FBU3NCLENBQVksTUFBTztBQUFBLElBQ3ZMLEdBQUc7QUFBQSxJQUNILEdBQUc7QUFBQSxFQUNQLElBQU07QUFBQSxJQUNGLEdBQUc7QUFBQSxJQUNILEdBQUc7QUFBQSxFQUNQLEdBQ1FFLElBQW9CN0MsR0FBaUJxQixFQUFTLHdEQUF3RCxNQUFNQSxFQUFTLHNEQUFzRDtBQUFBLElBQy9LLFVBQUFjO0FBQUEsSUFDQSxNQUFBbEM7QUFBQSxJQUNBLGNBQUEwQztBQUFBLElBQ0EsVUFBQXhCO0FBQUEsRUFDSixDQUFHLElBQUlsQixDQUFJO0FBQ1QsU0FBTztBQUFBLElBQ0wsTUFBTXlDLEVBQW1CLE1BQU1HLEVBQWtCLE1BQU1MLEVBQWMsT0FBT0ksRUFBWTtBQUFBLElBQ3hGLFNBQVNDLEVBQWtCLFNBQVNILEVBQW1CLFNBQVNGLEVBQWMsVUFBVUksRUFBWTtBQUFBLElBQ3BHLE9BQU9GLEVBQW1CLE9BQU9HLEVBQWtCLE9BQU9MLEVBQWMsUUFBUUksRUFBWTtBQUFBLElBQzVGLFFBQVFDLEVBQWtCLFFBQVFILEVBQW1CLFFBQVFGLEVBQWMsU0FBU0ksRUFBWTtBQUFBLEVBQ3BHO0FBQ0E7QUFvRkEsU0FBU0UsR0FBaUJ2RCxHQUFXd0QsR0FBZUMsR0FBbUI7QUFFckUsVUFEMkN6RCxJQUFZLENBQUMsR0FBR3lELEVBQWtCLE9BQU8sQ0FBQW5FLE1BQWFDLEdBQWFELENBQVMsTUFBTVUsQ0FBUyxHQUFHLEdBQUd5RCxFQUFrQixPQUFPLENBQUFuRSxNQUFhQyxHQUFhRCxDQUFTLE1BQU1VLENBQVMsQ0FBQyxJQUFJeUQsRUFBa0IsT0FBTyxDQUFBbkUsTUFBYUQsR0FBUUMsQ0FBUyxNQUFNQSxDQUFTLEdBQ3hQLE9BQU8sQ0FBQUEsTUFDM0NVLElBQ0tULEdBQWFELENBQVMsTUFBTVUsTUFBY3dELElBQWdCbkQsR0FBOEJmLENBQVMsTUFBTUEsSUFBWSxNQUVySCxFQUNSO0FBQ0g7QUFPQSxNQUFNb0UsS0FBZ0IsU0FBVWxMLEdBQVM7QUFDdkMsU0FBSUEsTUFBWSxXQUNkQSxJQUFVLENBQUEsSUFFTDtBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sU0FBQUE7QUFBQSxJQUNBLE1BQU0sR0FBR2tLLEdBQU87QUFDZCxVQUFJaUIsR0FBdUJDLEdBQXdCQztBQUNuRCxZQUFNO0FBQUEsUUFDSixPQUFBL0Q7QUFBQSxRQUNBLGdCQUFBbUM7QUFBQSxRQUNBLFdBQUEzQztBQUFBLFFBQ0EsVUFBQXdDO0FBQUEsUUFDQSxVQUFBYztBQUFBLE1BQ0QsSUFBR0YsR0FDRTtBQUFBLFFBQ0osV0FBQW9CLElBQVk7QUFBQSxRQUNaLFdBQUE5RDtBQUFBLFFBQ0EsbUJBQUF5RCxJQUFvQnBGO0FBQUEsUUFDcEIsZUFBQW1GLElBQWdCO0FBQUEsUUFDaEIsR0FBR087QUFBQSxNQUNYLElBQVU1RSxHQUFTM0csR0FBU2tLLENBQUssR0FDckJzQixJQUFlaEUsTUFBYyxVQUFheUQsTUFBc0JwRixLQUFha0YsR0FBaUJ2RCxLQUFhLE1BQU13RCxHQUFlQyxDQUFpQixJQUFJQSxHQUNySlEsSUFBVyxNQUFNeEIsR0FBZUMsR0FBT3FCLENBQXFCLEdBQzVERyxNQUFpQlAsSUFBd0IxQixFQUFlLGtCQUFrQixPQUFPLFNBQVMwQixFQUFzQixVQUFVLEdBQzFIUSxJQUFtQkgsRUFBYUUsQ0FBWTtBQUNsRCxVQUFJQyxLQUFvQjtBQUN0QixlQUFPO0FBRVQsWUFBTUMsSUFBaUJ2RSxHQUFrQnNFLEdBQWtCckUsR0FBTyxPQUFPZ0MsRUFBUyxTQUFTLE9BQU8sU0FBU0EsRUFBUyxNQUFNYyxFQUFTLFFBQVEsRUFBRTtBQUc3SSxVQUFJdEQsTUFBYzZFO0FBQ2hCLGVBQU87QUFBQSxVQUNMLE9BQU87QUFBQSxZQUNMLFdBQVdILEVBQWEsQ0FBQztBQUFBLFVBQzFCO0FBQUEsUUFDWDtBQUVNLFlBQU1LLElBQW1CLENBQUNKLEVBQVM1RSxHQUFROEUsQ0FBZ0IsQ0FBQyxHQUFHRixFQUFTRyxFQUFlLENBQUMsQ0FBQyxHQUFHSCxFQUFTRyxFQUFlLENBQUMsQ0FBQyxDQUFDLEdBQ2pIRSxJQUFlLENBQUMsS0FBTVYsSUFBeUIzQixFQUFlLGtCQUFrQixPQUFPLFNBQVMyQixFQUF1QixjQUFjLENBQUUsR0FBRztBQUFBLFFBQzlJLFdBQVdPO0FBQUEsUUFDWCxXQUFXRTtBQUFBLE1BQ25CLENBQU8sR0FDS0UsSUFBZ0JQLEVBQWFFLElBQWUsQ0FBQztBQUduRCxVQUFJSztBQUNGLGVBQU87QUFBQSxVQUNMLE1BQU07QUFBQSxZQUNKLE9BQU9MLElBQWU7QUFBQSxZQUN0QixXQUFXSTtBQUFBLFVBQ1o7QUFBQSxVQUNELE9BQU87QUFBQSxZQUNMLFdBQVdDO0FBQUEsVUFDWjtBQUFBLFFBQ1g7QUFFTSxZQUFNQyxJQUE4QkYsRUFBYSxJQUFJLENBQUFHLE1BQUs7QUFDeEQsY0FBTXpFLElBQVlULEdBQWFrRixFQUFFLFNBQVM7QUFDMUMsZUFBTyxDQUFDQSxFQUFFLFdBQVd6RSxLQUFhOEQ7QUFBQTtBQUFBLFVBRWxDVyxFQUFFLFVBQVUsTUFBTSxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUNuRyxJQUFLTyxPQUFNUCxLQUFNTyxJQUFHLENBQUM7QUFBQTtBQUFBO0FBQUEsVUFFckQ0RixFQUFFLFVBQVUsQ0FBQztBQUFBLFdBQUdBLEVBQUUsU0FBUztBQUFBLE1BQ25DLENBQU8sRUFBRSxLQUFLLENBQUNDLEdBQUdDLE1BQU1ELEVBQUUsQ0FBQyxJQUFJQyxFQUFFLENBQUMsQ0FBQyxHQUt2QkMsTUFBbUJmLElBSldXLEVBQTRCLE9BQU8sQ0FBQUMsTUFBS0EsRUFBRSxDQUFDLEVBQUU7QUFBQSxRQUFNO0FBQUE7QUFBQTtBQUFBLFFBR3ZGbEYsR0FBYWtGLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSTtBQUFBLE1BQUMsRUFBRSxNQUFNLENBQUE1RixNQUFLQSxLQUFLLENBQUMsQ0FBQyxFQUMrQixDQUFDLE1BQU0sT0FBTyxTQUFTZ0YsRUFBc0IsQ0FBQyxNQUFNVyxFQUE0QixDQUFDLEVBQUUsQ0FBQztBQUNqSyxhQUFJSSxNQUFtQnRGLElBQ2Q7QUFBQSxRQUNMLE1BQU07QUFBQSxVQUNKLE9BQU80RSxJQUFlO0FBQUEsVUFDdEIsV0FBV0k7QUFBQSxRQUNaO0FBQUEsUUFDRCxPQUFPO0FBQUEsVUFDTCxXQUFXTTtBQUFBLFFBQ1o7QUFBQSxNQUNYLElBRWE7SUFDUjtBQUFBLEVBQ0w7QUFDQTtBQTJVQSxlQUFlQyxHQUFxQm5DLEdBQU9sSyxHQUFTO0FBQ2xELFFBQU07QUFBQSxJQUNKLFdBQUE4RztBQUFBLElBQ0EsVUFBQXdDO0FBQUEsSUFDQSxVQUFBYztBQUFBLEVBQ0QsSUFBR0YsR0FDRTNDLElBQU0sT0FBTytCLEVBQVMsU0FBUyxPQUFPLFNBQVNBLEVBQVMsTUFBTWMsRUFBUyxRQUFRLElBQy9FckUsSUFBT2MsR0FBUUMsQ0FBUyxHQUN4QlUsSUFBWVQsR0FBYUQsQ0FBUyxHQUNsQytCLElBQWExQixHQUFZTCxDQUFTLE1BQU0sS0FDeEN3RixJQUFnQixDQUFDLFFBQVEsS0FBSyxFQUFFLFNBQVN2RyxDQUFJLElBQUksS0FBSyxHQUN0RHdHLElBQWlCaEYsS0FBT3NCLElBQWEsS0FBSyxHQUMxQzJELElBQVc3RixHQUFTM0csR0FBU2tLLENBQUs7QUFHeEMsTUFBSTtBQUFBLElBQ0YsVUFBQXVDO0FBQUEsSUFDQSxXQUFBbkI7QUFBQSxJQUNBLGVBQUE3RDtBQUFBLEVBQ0osSUFBTSxPQUFPK0UsS0FBYSxXQUFXO0FBQUEsSUFDakMsVUFBVUE7QUFBQSxJQUNWLFdBQVc7QUFBQSxJQUNYLGVBQWU7QUFBQSxFQUNuQixJQUFNO0FBQUEsSUFDRixVQUFVQSxFQUFTLFlBQVk7QUFBQSxJQUMvQixXQUFXQSxFQUFTLGFBQWE7QUFBQSxJQUNqQyxlQUFlQSxFQUFTO0FBQUEsRUFDNUI7QUFDRSxTQUFJaEYsS0FBYSxPQUFPQyxLQUFrQixhQUN4QzZELElBQVk5RCxNQUFjLFFBQVFDLElBQWdCLEtBQUtBLElBRWxEb0IsSUFBYTtBQUFBLElBQ2xCLEdBQUd5QyxJQUFZaUI7QUFBQSxJQUNmLEdBQUdFLElBQVdIO0FBQUEsRUFDbEIsSUFBTTtBQUFBLElBQ0YsR0FBR0csSUFBV0g7QUFBQSxJQUNkLEdBQUdoQixJQUFZaUI7QUFBQSxFQUNuQjtBQUNBO0FBU0EsTUFBTUcsS0FBUyxTQUFVMU0sR0FBUztBQUNoQyxTQUFJQSxNQUFZLFdBQ2RBLElBQVUsSUFFTDtBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sU0FBQUE7QUFBQSxJQUNBLE1BQU0sR0FBR2tLLEdBQU87QUFDZCxVQUFJeUMsR0FBdUJDO0FBQzNCLFlBQU07QUFBQSxRQUNKLEdBQUF6RTtBQUFBLFFBQ0EsR0FBQUM7QUFBQSxRQUNBLFdBQUF0QjtBQUFBLFFBQ0EsZ0JBQUEyQztBQUFBLE1BQ0QsSUFBR1MsR0FDRTJDLElBQWEsTUFBTVIsR0FBcUJuQyxHQUFPbEssQ0FBTztBQUk1RCxhQUFJOEcsUUFBZ0I2RixJQUF3QmxELEVBQWUsV0FBVyxPQUFPLFNBQVNrRCxFQUFzQixlQUFlQyxJQUF3Qm5ELEVBQWUsVUFBVSxRQUFRbUQsRUFBc0Isa0JBQ2pNLEtBRUY7QUFBQSxRQUNMLEdBQUd6RSxJQUFJMEUsRUFBVztBQUFBLFFBQ2xCLEdBQUd6RSxJQUFJeUUsRUFBVztBQUFBLFFBQ2xCLE1BQU07QUFBQSxVQUNKLEdBQUdBO0FBQUEsVUFDSCxXQUFBL0Y7QUFBQSxRQUNEO0FBQUEsTUFDVDtBQUFBLElBQ0s7QUFBQSxFQUNMO0FBQ0EsR0FPTWdHLEtBQVEsU0FBVTlNLEdBQVM7QUFDL0IsU0FBSUEsTUFBWSxXQUNkQSxJQUFVLENBQUEsSUFFTDtBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sU0FBQUE7QUFBQSxJQUNBLE1BQU0sR0FBR2tLLEdBQU87QUFDZCxZQUFNO0FBQUEsUUFDSixHQUFBL0I7QUFBQSxRQUNBLEdBQUFDO0FBQUEsUUFDQSxXQUFBdEI7QUFBQSxNQUNELElBQUdvRCxHQUNFO0FBQUEsUUFDSixVQUFVNkMsSUFBZ0I7QUFBQSxRQUMxQixXQUFXQyxJQUFpQjtBQUFBLFFBQzVCLFNBQUFDLElBQVU7QUFBQSxVQUNSLElBQUksQ0FBQXpFLE1BQVE7QUFDVixnQkFBSTtBQUFBLGNBQ0YsR0FBQUw7QUFBQSxjQUNBLEdBQUFDO0FBQUEsWUFDRCxJQUFHSTtBQUNKLG1CQUFPO0FBQUEsY0FDTCxHQUFBTDtBQUFBLGNBQ0EsR0FBQUM7QUFBQSxZQUNkO0FBQUEsVUFDVztBQUFBLFFBQ0Y7QUFBQSxRQUNELEdBQUdtRDtBQUFBLE1BQ1gsSUFBVTVFLEdBQVMzRyxHQUFTa0ssQ0FBSyxHQUNyQmpCLElBQVM7QUFBQSxRQUNiLEdBQUFkO0FBQUEsUUFDQSxHQUFBQztBQUFBLE1BQ1IsR0FDWXFELElBQVcsTUFBTXhCLEdBQWVDLEdBQU9xQixDQUFxQixHQUM1REQsSUFBWW5FLEdBQVlOLEdBQVFDLENBQVMsQ0FBQyxHQUMxQzJGLElBQVd6RixHQUFnQnNFLENBQVM7QUFDMUMsVUFBSTRCLElBQWdCakUsRUFBT3dELENBQVEsR0FDL0JVLElBQWlCbEUsRUFBT3FDLENBQVM7QUFDckMsVUFBSXlCLEdBQWU7QUFDakIsY0FBTUssSUFBVVgsTUFBYSxNQUFNLFFBQVEsUUFDckNZLElBQVVaLE1BQWEsTUFBTSxXQUFXLFNBQ3hDekcsSUFBTWtILElBQWdCekIsRUFBUzJCLENBQU8sR0FDdENuSCxJQUFNaUgsSUFBZ0J6QixFQUFTNEIsQ0FBTztBQUM1QyxRQUFBSCxJQUFnQjFHLEdBQU1SLEdBQUtrSCxHQUFlakgsQ0FBRztBQUFBLE1BQzlDO0FBQ0QsVUFBSStHLEdBQWdCO0FBQ2xCLGNBQU1JLElBQVU5QixNQUFjLE1BQU0sUUFBUSxRQUN0QytCLElBQVUvQixNQUFjLE1BQU0sV0FBVyxTQUN6Q3RGLElBQU1tSCxJQUFpQjFCLEVBQVMyQixDQUFPLEdBQ3ZDbkgsSUFBTWtILElBQWlCMUIsRUFBUzRCLENBQU87QUFDN0MsUUFBQUYsSUFBaUIzRyxHQUFNUixHQUFLbUgsR0FBZ0JsSCxDQUFHO0FBQUEsTUFDaEQ7QUFDRCxZQUFNcUgsSUFBZ0JMLEVBQVEsR0FBRztBQUFBLFFBQy9CLEdBQUcvQztBQUFBLFFBQ0gsQ0FBQ3VDLENBQVEsR0FBR1M7QUFBQSxRQUNaLENBQUM1QixDQUFTLEdBQUc2QjtBQUFBLE1BQ3JCLENBQU87QUFDRCxhQUFPO0FBQUEsUUFDTCxHQUFHRztBQUFBLFFBQ0gsTUFBTTtBQUFBLFVBQ0osR0FBR0EsRUFBYyxJQUFJbkY7QUFBQSxVQUNyQixHQUFHbUYsRUFBYyxJQUFJbEY7QUFBQSxVQUNyQixTQUFTO0FBQUEsWUFDUCxDQUFDcUUsQ0FBUSxHQUFHTTtBQUFBLFlBQ1osQ0FBQ3pCLENBQVMsR0FBRzBCO0FBQUEsVUFDZDtBQUFBLFFBQ0Y7QUFBQSxNQUNUO0FBQUEsSUFDSztBQUFBLEVBQ0w7QUFDQTtBQ3QzQkEsU0FBU08sS0FBWTtBQUNuQixTQUFPLE9BQU8sU0FBVztBQUMzQjtBQUNBLFNBQVNDLEdBQVlDLEdBQU07QUFDekIsU0FBSUMsR0FBT0QsQ0FBSSxLQUNMQSxFQUFLLFlBQVksSUFBSSxZQUFXLElBS25DO0FBQ1Q7QUFDQSxTQUFTRSxFQUFVRixHQUFNO0FBQ3ZCLE1BQUlHO0FBQ0osVUFBUUgsS0FBUSxTQUFTRyxJQUFzQkgsRUFBSyxrQkFBa0IsT0FBTyxTQUFTRyxFQUFvQixnQkFBZ0I7QUFDNUg7QUFDQSxTQUFTQyxHQUFtQkosR0FBTTtBQUNoQyxNQUFJakY7QUFDSixVQUFRQSxLQUFRa0YsR0FBT0QsQ0FBSSxJQUFJQSxFQUFLLGdCQUFnQkEsRUFBSyxhQUFhLE9BQU8sYUFBYSxPQUFPLFNBQVNqRixFQUFLO0FBQ2pIO0FBQ0EsU0FBU2tGLEdBQU83TCxHQUFPO0FBQ3JCLFNBQUswTCxHQUFTLElBR1AxTCxhQUFpQixRQUFRQSxhQUFpQjhMLEVBQVU5TCxDQUFLLEVBQUUsT0FGekQ7QUFHWDtBQUNBLFNBQVNpTSxFQUFVak0sR0FBTztBQUN4QixTQUFLMEwsR0FBUyxJQUdQMUwsYUFBaUIsV0FBV0EsYUFBaUI4TCxFQUFVOUwsQ0FBSyxFQUFFLFVBRjVEO0FBR1g7QUFDQSxTQUFTa00sR0FBY2xNLEdBQU87QUFDNUIsU0FBSzBMLEdBQVMsSUFHUDFMLGFBQWlCLGVBQWVBLGFBQWlCOEwsRUFBVTlMLENBQUssRUFBRSxjQUZoRTtBQUdYO0FBQ0EsU0FBU21NLEdBQWFuTSxHQUFPO0FBQzNCLFNBQUksQ0FBQzBMLEdBQVMsS0FBTSxPQUFPLGFBQWUsTUFDakMsS0FFRjFMLGFBQWlCLGNBQWNBLGFBQWlCOEwsRUFBVTlMLENBQUssRUFBRTtBQUMxRTtBQUNBLFNBQVNvTSxHQUFrQnZELEdBQVM7QUFDbEMsUUFBTTtBQUFBLElBQ0osVUFBQWU7QUFBQSxJQUNBLFdBQUF5QztBQUFBLElBQ0EsV0FBQUM7QUFBQSxJQUNBLFNBQUFDO0FBQUEsRUFDSixJQUFNQyxFQUFpQjNELENBQU87QUFDNUIsU0FBTyxrQ0FBa0MsS0FBS2UsSUFBVzBDLElBQVlELENBQVMsS0FBSyxDQUFDLENBQUMsVUFBVSxVQUFVLEVBQUUsU0FBU0UsQ0FBTztBQUM3SDtBQUNBLFNBQVNFLEdBQWU1RCxHQUFTO0FBQy9CLFNBQU8sQ0FBQyxTQUFTLE1BQU0sSUFBSSxFQUFFLFNBQVM4QyxHQUFZOUMsQ0FBTyxDQUFDO0FBQzVEO0FBQ0EsU0FBUzZELEdBQVc3RCxHQUFTO0FBQzNCLFNBQU8sQ0FBQyxpQkFBaUIsUUFBUSxFQUFFLEtBQUssQ0FBQThELE1BQVk7QUFDbEQsUUFBSTtBQUNGLGFBQU85RCxFQUFRLFFBQVE4RCxDQUFRO0FBQUEsSUFDaEMsUUFBVztBQUNWLGFBQU87QUFBQSxJQUNSO0FBQUEsRUFDTCxDQUFHO0FBQ0g7QUFDQSxTQUFTQyxHQUFrQkMsR0FBYztBQUN2QyxRQUFNQyxJQUFTQyxNQUNUQyxJQUFNZixFQUFVWSxDQUFZLElBQUlMLEVBQWlCSyxDQUFZLElBQUlBO0FBSXZFLFNBQU8sQ0FBQyxhQUFhLGFBQWEsU0FBUyxVQUFVLGFBQWEsRUFBRSxLQUFLLENBQUE3TSxNQUFTZ04sRUFBSWhOLENBQUssSUFBSWdOLEVBQUloTixDQUFLLE1BQU0sU0FBUyxFQUFLLE1BQU1nTixFQUFJLGdCQUFnQkEsRUFBSSxrQkFBa0IsV0FBVyxPQUFVLENBQUNGLE1BQVdFLEVBQUksaUJBQWlCQSxFQUFJLG1CQUFtQixTQUFTLE9BQVUsQ0FBQ0YsTUFBV0UsRUFBSSxTQUFTQSxFQUFJLFdBQVcsU0FBUyxPQUFVLENBQUMsYUFBYSxhQUFhLFNBQVMsVUFBVSxlQUFlLFFBQVEsRUFBRSxLQUFLLENBQUFoTixPQUFVZ04sRUFBSSxjQUFjLElBQUksU0FBU2hOLENBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxVQUFVLFVBQVUsU0FBUyxFQUFFLEtBQUssQ0FBQUEsT0FBVWdOLEVBQUksV0FBVyxJQUFJLFNBQVNoTixDQUFLLENBQUM7QUFDbmlCO0FBQ0EsU0FBU2lOLEdBQW1CcEUsR0FBUztBQUNuQyxNQUFJcUUsSUFBY0MsR0FBY3RFLENBQU87QUFDdkMsU0FBT3FELEdBQWNnQixDQUFXLEtBQUssQ0FBQ0UsR0FBc0JGLENBQVcsS0FBRztBQUN4RSxRQUFJTixHQUFrQk0sQ0FBVztBQUMvQixhQUFPQTtBQUNGLFFBQUlSLEdBQVdRLENBQVc7QUFDL0IsYUFBTztBQUVULElBQUFBLElBQWNDLEdBQWNELENBQVc7QUFBQSxFQUN4QztBQUNELFNBQU87QUFDVDtBQUNBLFNBQVNILEtBQVc7QUFDbEIsU0FBSSxPQUFPLE1BQVEsT0FBZSxDQUFDLElBQUksV0FBaUIsS0FDakQsSUFBSSxTQUFTLDJCQUEyQixNQUFNO0FBQ3ZEO0FBQ0EsU0FBU0ssR0FBc0J4QixHQUFNO0FBQ25DLFNBQU8sQ0FBQyxRQUFRLFFBQVEsV0FBVyxFQUFFLFNBQVNELEdBQVlDLENBQUksQ0FBQztBQUNqRTtBQUNBLFNBQVNZLEVBQWlCM0QsR0FBUztBQUNqQyxTQUFPaUQsRUFBVWpELENBQU8sRUFBRSxpQkFBaUJBLENBQU87QUFDcEQ7QUFDQSxTQUFTd0UsR0FBY3hFLEdBQVM7QUFDOUIsU0FBSW9ELEVBQVVwRCxDQUFPLElBQ1o7QUFBQSxJQUNMLFlBQVlBLEVBQVE7QUFBQSxJQUNwQixXQUFXQSxFQUFRO0FBQUEsRUFDekIsSUFFUztBQUFBLElBQ0wsWUFBWUEsRUFBUTtBQUFBLElBQ3BCLFdBQVdBLEVBQVE7QUFBQSxFQUN2QjtBQUNBO0FBQ0EsU0FBU3NFLEdBQWN2QixHQUFNO0FBQzNCLE1BQUlELEdBQVlDLENBQUksTUFBTTtBQUN4QixXQUFPQTtBQUVULFFBQU0zTDtBQUFBO0FBQUEsSUFFTjJMLEVBQUs7QUFBQSxJQUVMQSxFQUFLO0FBQUEsSUFFTE8sR0FBYVAsQ0FBSSxLQUFLQSxFQUFLO0FBQUEsSUFFM0JJLEdBQW1CSixDQUFJO0FBQUE7QUFDdkIsU0FBT08sR0FBYWxNLENBQU0sSUFBSUEsRUFBTyxPQUFPQTtBQUM5QztBQUNBLFNBQVNxTixHQUEyQjFCLEdBQU07QUFDeEMsUUFBTTJCLElBQWFKLEdBQWN2QixDQUFJO0FBQ3JDLFNBQUl3QixHQUFzQkcsQ0FBVSxJQUMzQjNCLEVBQUssZ0JBQWdCQSxFQUFLLGNBQWMsT0FBT0EsRUFBSyxPQUV6RE0sR0FBY3FCLENBQVUsS0FBS25CLEdBQWtCbUIsQ0FBVSxJQUNwREEsSUFFRkQsR0FBMkJDLENBQVU7QUFDOUM7QUFDQSxTQUFTQyxHQUFxQjVCLEdBQU02QixHQUFNQyxHQUFpQjtBQUN6RCxNQUFJQztBQUNKLEVBQUlGLE1BQVMsV0FDWEEsSUFBTyxDQUFBLElBRUxDLE1BQW9CLFdBQ3RCQSxJQUFrQjtBQUVwQixRQUFNRSxJQUFxQk4sR0FBMkIxQixDQUFJLEdBQ3BEaUMsSUFBU0QsUUFBeUJELElBQXVCL0IsRUFBSyxrQkFBa0IsT0FBTyxTQUFTK0IsRUFBcUIsT0FDckhHLElBQU1oQyxFQUFVOEIsQ0FBa0I7QUFDeEMsTUFBSUMsR0FBUTtBQUNWLFVBQU1FLElBQWVDLEdBQWdCRixDQUFHO0FBQ3hDLFdBQU9MLEVBQUssT0FBT0ssR0FBS0EsRUFBSSxrQkFBa0IsQ0FBRSxHQUFFMUIsR0FBa0J3QixDQUFrQixJQUFJQSxJQUFxQixDQUFFLEdBQUVHLEtBQWdCTCxJQUFrQkYsR0FBcUJPLENBQVksSUFBSSxDQUFBLENBQUU7QUFBQSxFQUM3TDtBQUNELFNBQU9OLEVBQUssT0FBT0csR0FBb0JKLEdBQXFCSSxHQUFvQixDQUFFLEdBQUVGLENBQWUsQ0FBQztBQUN0RztBQUNBLFNBQVNNLEdBQWdCRixHQUFLO0FBQzVCLFNBQU9BLEVBQUksVUFBVSxPQUFPLGVBQWVBLEVBQUksTUFBTSxJQUFJQSxFQUFJLGVBQWU7QUFDOUU7QUNsSkEsU0FBU0csR0FBaUJwRixHQUFTO0FBQ2pDLFFBQU1tRSxJQUFNUixFQUFpQjNELENBQU87QUFHcEMsTUFBSXJDLElBQVEsV0FBV3dHLEVBQUksS0FBSyxLQUFLLEdBQ2pDdkcsSUFBUyxXQUFXdUcsRUFBSSxNQUFNLEtBQUs7QUFDdkMsUUFBTWtCLElBQVloQyxHQUFjckQsQ0FBTyxHQUNqQ3NGLElBQWNELElBQVlyRixFQUFRLGNBQWNyQyxHQUNoRDRILElBQWVGLElBQVlyRixFQUFRLGVBQWVwQyxHQUNsRDRILElBQWlCaEssR0FBTW1DLENBQUssTUFBTTJILEtBQWU5SixHQUFNb0MsQ0FBTSxNQUFNMkg7QUFDekUsU0FBSUMsTUFDRjdILElBQVEySCxHQUNSMUgsSUFBUzJILElBRUo7QUFBQSxJQUNMLE9BQUE1SDtBQUFBLElBQ0EsUUFBQUM7QUFBQSxJQUNBLEdBQUc0SDtBQUFBLEVBQ1A7QUFDQTtBQUVBLFNBQVNDLEdBQWN6RixHQUFTO0FBQzlCLFNBQVFvRCxFQUFVcEQsQ0FBTyxJQUE2QkEsSUFBekJBLEVBQVE7QUFDdkM7QUFFQSxTQUFTMEYsR0FBUzFGLEdBQVM7QUFDekIsUUFBTTJGLElBQWFGLEdBQWN6RixDQUFPO0FBQ3hDLE1BQUksQ0FBQ3FELEdBQWNzQyxDQUFVO0FBQzNCLFdBQU9qSyxHQUFhLENBQUM7QUFFdkIsUUFBTThCLElBQU9tSSxFQUFXLHlCQUNsQjtBQUFBLElBQ0osT0FBQWhJO0FBQUEsSUFDQSxRQUFBQztBQUFBLElBQ0EsR0FBQWdJO0FBQUEsRUFDSixJQUFNUixHQUFpQk8sQ0FBVTtBQUMvQixNQUFJbEksS0FBS21JLElBQUlwSyxHQUFNZ0MsRUFBSyxLQUFLLElBQUlBLEVBQUssU0FBU0csR0FDM0NELEtBQUtrSSxJQUFJcEssR0FBTWdDLEVBQUssTUFBTSxJQUFJQSxFQUFLLFVBQVVJO0FBSWpELFVBQUksQ0FBQ0gsS0FBSyxDQUFDLE9BQU8sU0FBU0EsQ0FBQyxPQUMxQkEsSUFBSSxLQUVGLENBQUNDLEtBQUssQ0FBQyxPQUFPLFNBQVNBLENBQUMsT0FDMUJBLElBQUksSUFFQztBQUFBLElBQ0wsR0FBQUQ7QUFBQSxJQUNBLEdBQUFDO0FBQUEsRUFDSjtBQUNBO0FBRUEsTUFBTW1JLEtBQXlCLGdCQUFBbkssR0FBYSxDQUFDO0FBQzdDLFNBQVNvSyxHQUFpQjlGLEdBQVM7QUFDakMsUUFBTWlGLElBQU1oQyxFQUFVakQsQ0FBTztBQUM3QixTQUFJLENBQUNrRSxHQUFRLEtBQU0sQ0FBQ2UsRUFBSSxpQkFDZlksS0FFRjtBQUFBLElBQ0wsR0FBR1osRUFBSSxlQUFlO0FBQUEsSUFDdEIsR0FBR0EsRUFBSSxlQUFlO0FBQUEsRUFDMUI7QUFDQTtBQUNBLFNBQVNjLEdBQXVCL0YsR0FBU2dHLEdBQVNDLEdBQXNCO0FBSXRFLFNBSElELE1BQVksV0FDZEEsSUFBVSxLQUVSLENBQUNDLEtBQXdCRCxLQUFXQyxNQUF5QmhELEVBQVVqRCxDQUFPLElBQ3pFLEtBRUZnRztBQUNUO0FBRUEsU0FBU0UsR0FBc0JsRyxHQUFTbUcsR0FBY0MsR0FBaUJsRyxHQUFjO0FBQ25GLEVBQUlpRyxNQUFpQixXQUNuQkEsSUFBZSxLQUViQyxNQUFvQixXQUN0QkEsSUFBa0I7QUFFcEIsUUFBTUMsSUFBYXJHLEVBQVEseUJBQ3JCMkYsSUFBYUYsR0FBY3pGLENBQU87QUFDeEMsTUFBSXNHLElBQVE1SyxHQUFhLENBQUM7QUFDMUIsRUFBSXlLLE1BQ0VqRyxJQUNFa0QsRUFBVWxELENBQVksTUFDeEJvRyxJQUFRWixHQUFTeEYsQ0FBWSxLQUcvQm9HLElBQVFaLEdBQVMxRixDQUFPO0FBRzVCLFFBQU11RyxJQUFnQlIsR0FBdUJKLEdBQVlTLEdBQWlCbEcsQ0FBWSxJQUFJNEYsR0FBaUJILENBQVUsSUFBSWpLLEdBQWEsQ0FBQztBQUN2SSxNQUFJK0IsS0FBSzRJLEVBQVcsT0FBT0UsRUFBYyxLQUFLRCxFQUFNLEdBQ2hENUksS0FBSzJJLEVBQVcsTUFBTUUsRUFBYyxLQUFLRCxFQUFNLEdBQy9DM0ksSUFBUTBJLEVBQVcsUUFBUUMsRUFBTSxHQUNqQzFJLElBQVN5SSxFQUFXLFNBQVNDLEVBQU07QUFDdkMsTUFBSVgsR0FBWTtBQUNkLFVBQU1WLElBQU1oQyxFQUFVMEMsQ0FBVSxHQUMxQmEsSUFBWXRHLEtBQWdCa0QsRUFBVWxELENBQVksSUFBSStDLEVBQVUvQyxDQUFZLElBQUlBO0FBQ3RGLFFBQUl1RyxJQUFheEIsR0FDYnlCLElBQWdCdkIsR0FBZ0JzQixDQUFVO0FBQzlDLFdBQU9DLEtBQWlCeEcsS0FBZ0JzRyxNQUFjQyxLQUFZO0FBQ2hFLFlBQU1FLElBQWNqQixHQUFTZ0IsQ0FBYSxHQUNwQ0UsSUFBYUYsRUFBYyx5QkFDM0J2QyxJQUFNUixFQUFpQitDLENBQWEsR0FDcENHLElBQU9ELEVBQVcsUUFBUUYsRUFBYyxhQUFhLFdBQVd2QyxFQUFJLFdBQVcsS0FBS3dDLEVBQVksR0FDaEdHLElBQU1GLEVBQVcsT0FBT0YsRUFBYyxZQUFZLFdBQVd2QyxFQUFJLFVBQVUsS0FBS3dDLEVBQVk7QUFDbEcsTUFBQWxKLEtBQUtrSixFQUFZLEdBQ2pCakosS0FBS2lKLEVBQVksR0FDakJoSixLQUFTZ0osRUFBWSxHQUNyQi9JLEtBQVUrSSxFQUFZLEdBQ3RCbEosS0FBS29KLEdBQ0xuSixLQUFLb0osR0FDTEwsSUFBYXhELEVBQVV5RCxDQUFhLEdBQ3BDQSxJQUFnQnZCLEdBQWdCc0IsQ0FBVTtBQUFBLElBQzNDO0FBQUEsRUFDRjtBQUNELFNBQU9sSixHQUFpQjtBQUFBLElBQ3RCLE9BQUFJO0FBQUEsSUFDQSxRQUFBQztBQUFBLElBQ0EsR0FBQUg7QUFBQSxJQUNBLEdBQUFDO0FBQUEsRUFDSixDQUFHO0FBQ0g7QUFJQSxTQUFTcUosR0FBb0IvRyxHQUFTeEMsR0FBTTtBQUMxQyxRQUFNd0osSUFBYXhDLEdBQWN4RSxDQUFPLEVBQUU7QUFDMUMsU0FBS3hDLElBR0VBLEVBQUssT0FBT3dKLElBRlZkLEdBQXNCL0MsR0FBbUJuRCxDQUFPLENBQUMsRUFBRSxPQUFPZ0g7QUFHckU7QUFFQSxTQUFTQyxHQUFjQyxHQUFpQkMsR0FBUUMsR0FBa0I7QUFDaEUsRUFBSUEsTUFBcUIsV0FDdkJBLElBQW1CO0FBRXJCLFFBQU1DLElBQVdILEVBQWdCLHlCQUMzQnpKLElBQUk0SixFQUFTLE9BQU9GLEVBQU8sY0FBY0MsSUFBbUI7QUFBQTtBQUFBLElBRWxFTCxHQUFvQkcsR0FBaUJHLENBQVE7QUFBQSxNQUN2QzNKLElBQUkySixFQUFTLE1BQU1GLEVBQU87QUFDaEMsU0FBTztBQUFBLElBQ0wsR0FBQTFKO0FBQUEsSUFDQSxHQUFBQztBQUFBLEVBQ0o7QUFDQTtBQUVBLFNBQVM0SixHQUFzRHhKLEdBQU07QUFDbkUsTUFBSTtBQUFBLElBQ0YsVUFBQTRCO0FBQUEsSUFDQSxNQUFBbEM7QUFBQSxJQUNBLGNBQUEwQztBQUFBLElBQ0EsVUFBQXhCO0FBQUEsRUFDRCxJQUFHWjtBQUNKLFFBQU1rSSxJQUFVdEgsTUFBYSxTQUN2QndJLElBQWtCL0QsR0FBbUJqRCxDQUFZLEdBQ2pEN0YsSUFBV3FGLElBQVdtRSxHQUFXbkUsRUFBUyxRQUFRLElBQUk7QUFDNUQsTUFBSVEsTUFBaUJnSCxLQUFtQjdNLEtBQVkyTDtBQUNsRCxXQUFPeEk7QUFFVCxNQUFJMkosSUFBUztBQUFBLElBQ1gsWUFBWTtBQUFBLElBQ1osV0FBVztBQUFBLEVBQ2YsR0FDTWIsSUFBUTVLLEdBQWEsQ0FBQztBQUMxQixRQUFNNkwsSUFBVTdMLEdBQWEsQ0FBQyxHQUN4QjhMLElBQTBCbkUsR0FBY25ELENBQVk7QUFDMUQsT0FBSXNILEtBQTJCLENBQUNBLEtBQTJCLENBQUN4QixRQUN0RGxELEdBQVk1QyxDQUFZLE1BQU0sVUFBVXFELEdBQWtCMkQsQ0FBZSxPQUMzRUMsSUFBUzNDLEdBQWN0RSxDQUFZLElBRWpDbUQsR0FBY25ELENBQVksSUFBRztBQUMvQixVQUFNdUgsSUFBYXZCLEdBQXNCaEcsQ0FBWTtBQUNyRCxJQUFBb0csSUFBUVosR0FBU3hGLENBQVksR0FDN0JxSCxFQUFRLElBQUlFLEVBQVcsSUFBSXZILEVBQWEsWUFDeENxSCxFQUFRLElBQUlFLEVBQVcsSUFBSXZILEVBQWE7QUFBQSxFQUN6QztBQUVILFFBQU13SCxJQUFhUixLQUFtQixDQUFDTSxLQUEyQixDQUFDeEIsSUFBVWlCLEdBQWNDLEdBQWlCQyxHQUFRLEVBQUksSUFBSXpMLEdBQWEsQ0FBQztBQUMxSSxTQUFPO0FBQUEsSUFDTCxPQUFPOEIsRUFBSyxRQUFROEksRUFBTTtBQUFBLElBQzFCLFFBQVE5SSxFQUFLLFNBQVM4SSxFQUFNO0FBQUEsSUFDNUIsR0FBRzlJLEVBQUssSUFBSThJLEVBQU0sSUFBSWEsRUFBTyxhQUFhYixFQUFNLElBQUlpQixFQUFRLElBQUlHLEVBQVc7QUFBQSxJQUMzRSxHQUFHbEssRUFBSyxJQUFJOEksRUFBTSxJQUFJYSxFQUFPLFlBQVliLEVBQU0sSUFBSWlCLEVBQVEsSUFBSUcsRUFBVztBQUFBLEVBQzlFO0FBQ0E7QUFFQSxTQUFTQyxHQUFlM0gsR0FBUztBQUMvQixTQUFPLE1BQU0sS0FBS0EsRUFBUSxlQUFnQixDQUFBO0FBQzVDO0FBSUEsU0FBUzRILEdBQWdCNUgsR0FBUztBQUNoQyxRQUFNNkgsSUFBTzFFLEdBQW1CbkQsQ0FBTyxHQUNqQ21ILElBQVMzQyxHQUFjeEUsQ0FBTyxHQUM5QmpHLElBQU9pRyxFQUFRLGNBQWMsTUFDN0JyQyxJQUFRcEMsR0FBSXNNLEVBQUssYUFBYUEsRUFBSyxhQUFhOU4sRUFBSyxhQUFhQSxFQUFLLFdBQVcsR0FDbEY2RCxJQUFTckMsR0FBSXNNLEVBQUssY0FBY0EsRUFBSyxjQUFjOU4sRUFBSyxjQUFjQSxFQUFLLFlBQVk7QUFDN0YsTUFBSTBELElBQUksQ0FBQzBKLEVBQU8sYUFBYUosR0FBb0IvRyxDQUFPO0FBQ3hELFFBQU10QyxJQUFJLENBQUN5SixFQUFPO0FBQ2xCLFNBQUl4RCxFQUFpQjVKLENBQUksRUFBRSxjQUFjLFVBQ3ZDMEQsS0FBS2xDLEdBQUlzTSxFQUFLLGFBQWE5TixFQUFLLFdBQVcsSUFBSTRELElBRTFDO0FBQUEsSUFDTCxPQUFBQTtBQUFBLElBQ0EsUUFBQUM7QUFBQSxJQUNBLEdBQUFIO0FBQUEsSUFDQSxHQUFBQztBQUFBLEVBQ0o7QUFDQTtBQUVBLFNBQVNvSyxHQUFnQjlILEdBQVN0QixHQUFVO0FBQzFDLFFBQU11RyxJQUFNaEMsRUFBVWpELENBQU8sR0FDdkI2SCxJQUFPMUUsR0FBbUJuRCxDQUFPLEdBQ2pDK0gsSUFBaUI5QyxFQUFJO0FBQzNCLE1BQUl0SCxJQUFRa0ssRUFBSyxhQUNiakssSUFBU2lLLEVBQUssY0FDZHBLLElBQUksR0FDSkMsSUFBSTtBQUNSLE1BQUlxSyxHQUFnQjtBQUNsQixJQUFBcEssSUFBUW9LLEVBQWUsT0FDdkJuSyxJQUFTbUssRUFBZTtBQUN4QixVQUFNQyxJQUFzQjlEO0FBQzVCLEtBQUksQ0FBQzhELEtBQXVCQSxLQUF1QnRKLE1BQWEsYUFDOURqQixJQUFJc0ssRUFBZSxZQUNuQnJLLElBQUlxSyxFQUFlO0FBQUEsRUFFdEI7QUFDRCxTQUFPO0FBQUEsSUFDTCxPQUFBcEs7QUFBQSxJQUNBLFFBQUFDO0FBQUEsSUFDQSxHQUFBSDtBQUFBLElBQ0EsR0FBQUM7QUFBQSxFQUNKO0FBQ0E7QUFHQSxTQUFTdUssR0FBMkJqSSxHQUFTdEIsR0FBVTtBQUNyRCxRQUFNMkgsSUFBYUgsR0FBc0JsRyxHQUFTLElBQU10QixNQUFhLE9BQU8sR0FDdEVvSSxJQUFNVCxFQUFXLE1BQU1yRyxFQUFRLFdBQy9CNkcsSUFBT1IsRUFBVyxPQUFPckcsRUFBUSxZQUNqQ3NHLElBQVFqRCxHQUFjckQsQ0FBTyxJQUFJMEYsR0FBUzFGLENBQU8sSUFBSXRFLEdBQWEsQ0FBQyxHQUNuRWlDLElBQVFxQyxFQUFRLGNBQWNzRyxFQUFNLEdBQ3BDMUksSUFBU29DLEVBQVEsZUFBZXNHLEVBQU0sR0FDdEM3SSxJQUFJb0osSUFBT1AsRUFBTSxHQUNqQjVJLElBQUlvSixJQUFNUixFQUFNO0FBQ3RCLFNBQU87QUFBQSxJQUNMLE9BQUEzSTtBQUFBLElBQ0EsUUFBQUM7QUFBQSxJQUNBLEdBQUFIO0FBQUEsSUFDQSxHQUFBQztBQUFBLEVBQ0o7QUFDQTtBQUNBLFNBQVN3SyxHQUFrQ2xJLEdBQVNtSSxHQUFrQnpKLEdBQVU7QUFDOUUsTUFBSWxCO0FBQ0osTUFBSTJLLE1BQXFCO0FBQ3ZCLElBQUEzSyxJQUFPc0ssR0FBZ0I5SCxHQUFTdEIsQ0FBUTtBQUFBLFdBQy9CeUosTUFBcUI7QUFDOUIsSUFBQTNLLElBQU9vSyxHQUFnQnpFLEdBQW1CbkQsQ0FBTyxDQUFDO0FBQUEsV0FDekNvRCxFQUFVK0UsQ0FBZ0I7QUFDbkMsSUFBQTNLLElBQU95SyxHQUEyQkUsR0FBa0J6SixDQUFRO0FBQUEsT0FDdkQ7QUFDTCxVQUFNNkgsSUFBZ0JULEdBQWlCOUYsQ0FBTztBQUM5QyxJQUFBeEMsSUFBTztBQUFBLE1BQ0wsR0FBRzJLLEVBQWlCLElBQUk1QixFQUFjO0FBQUEsTUFDdEMsR0FBRzRCLEVBQWlCLElBQUk1QixFQUFjO0FBQUEsTUFDdEMsT0FBTzRCLEVBQWlCO0FBQUEsTUFDeEIsUUFBUUEsRUFBaUI7QUFBQSxJQUMvQjtBQUFBLEVBQ0c7QUFDRCxTQUFPNUssR0FBaUJDLENBQUk7QUFDOUI7QUFDQSxTQUFTNEssR0FBeUJwSSxHQUFTcUksR0FBVTtBQUNuRCxRQUFNM0QsSUFBYUosR0FBY3RFLENBQU87QUFDeEMsU0FBSTBFLE1BQWUyRCxLQUFZLENBQUNqRixFQUFVc0IsQ0FBVSxLQUFLSCxHQUFzQkcsQ0FBVSxJQUNoRixLQUVGZixFQUFpQmUsQ0FBVSxFQUFFLGFBQWEsV0FBVzBELEdBQXlCMUQsR0FBWTJELENBQVE7QUFDM0c7QUFLQSxTQUFTQyxHQUE0QnRJLEdBQVN1SSxHQUFPO0FBQ25ELFFBQU1DLElBQWVELEVBQU0sSUFBSXZJLENBQU87QUFDdEMsTUFBSXdJO0FBQ0YsV0FBT0E7QUFFVCxNQUFJcFIsSUFBU3VOLEdBQXFCM0UsR0FBUyxDQUFBLEdBQUksRUFBSyxFQUFFLE9BQU8sQ0FBQXlJLE1BQU1yRixFQUFVcUYsQ0FBRSxLQUFLM0YsR0FBWTJGLENBQUUsTUFBTSxNQUFNLEdBQzFHQyxJQUFzQztBQUMxQyxRQUFNQyxJQUFpQmhGLEVBQWlCM0QsQ0FBTyxFQUFFLGFBQWE7QUFDOUQsTUFBSXFFLElBQWNzRSxJQUFpQnJFLEdBQWN0RSxDQUFPLElBQUlBO0FBRzVELFNBQU9vRCxFQUFVaUIsQ0FBVyxLQUFLLENBQUNFLEdBQXNCRixDQUFXLEtBQUc7QUFDcEUsVUFBTXVFLElBQWdCakYsRUFBaUJVLENBQVcsR0FDNUN3RSxJQUEwQjlFLEdBQWtCTSxDQUFXO0FBQzdELElBQUksQ0FBQ3dFLEtBQTJCRCxFQUFjLGFBQWEsWUFDekRGLElBQXNDLFFBRVZDLElBQWlCLENBQUNFLEtBQTJCLENBQUNILElBQXNDLENBQUNHLEtBQTJCRCxFQUFjLGFBQWEsWUFBWSxDQUFDLENBQUNGLEtBQXVDLENBQUMsWUFBWSxPQUFPLEVBQUUsU0FBU0EsRUFBb0MsUUFBUSxLQUFLbkYsR0FBa0JjLENBQVcsS0FBSyxDQUFDd0UsS0FBMkJULEdBQXlCcEksR0FBU3FFLENBQVcsS0FHdlpqTixJQUFTQSxFQUFPLE9BQU8sQ0FBQTBSLE1BQVlBLE1BQWF6RSxDQUFXLElBRzNEcUUsSUFBc0NFLEdBRXhDdkUsSUFBY0MsR0FBY0QsQ0FBVztBQUFBLEVBQ3hDO0FBQ0QsU0FBQWtFLEVBQU0sSUFBSXZJLEdBQVM1SSxDQUFNLEdBQ2xCQTtBQUNUO0FBSUEsU0FBUzJSLEdBQWdCakwsR0FBTTtBQUM3QixNQUFJO0FBQUEsSUFDRixTQUFBa0M7QUFBQSxJQUNBLFVBQUFMO0FBQUEsSUFDQSxjQUFBQztBQUFBLElBQ0EsVUFBQWxCO0FBQUEsRUFDRCxJQUFHWjtBQUVKLFFBQU1rTCxJQUFvQixDQUFDLEdBRE1ySixNQUFhLHNCQUFzQmtFLEdBQVc3RCxDQUFPLElBQUksQ0FBRSxJQUFHc0ksR0FBNEJ0SSxHQUFTLEtBQUssRUFBRSxJQUFJLENBQUEsRUFBRyxPQUFPTCxDQUFRLEdBQ3pHQyxDQUFZLEdBQzlEcUosSUFBd0JELEVBQWtCLENBQUMsR0FDM0NFLElBQWVGLEVBQWtCLE9BQU8sQ0FBQ0csR0FBU2hCLE1BQXFCO0FBQzNFLFVBQU0zSyxJQUFPMEssR0FBa0NsSSxHQUFTbUksR0FBa0J6SixDQUFRO0FBQ2xGLFdBQUF5SyxFQUFRLE1BQU01TixHQUFJaUMsRUFBSyxLQUFLMkwsRUFBUSxHQUFHLEdBQ3ZDQSxFQUFRLFFBQVE3TixHQUFJa0MsRUFBSyxPQUFPMkwsRUFBUSxLQUFLLEdBQzdDQSxFQUFRLFNBQVM3TixHQUFJa0MsRUFBSyxRQUFRMkwsRUFBUSxNQUFNLEdBQ2hEQSxFQUFRLE9BQU81TixHQUFJaUMsRUFBSyxNQUFNMkwsRUFBUSxJQUFJLEdBQ25DQTtBQUFBLEVBQ1IsR0FBRWpCLEdBQWtDbEksR0FBU2lKLEdBQXVCdkssQ0FBUSxDQUFDO0FBQzlFLFNBQU87QUFBQSxJQUNMLE9BQU93SyxFQUFhLFFBQVFBLEVBQWE7QUFBQSxJQUN6QyxRQUFRQSxFQUFhLFNBQVNBLEVBQWE7QUFBQSxJQUMzQyxHQUFHQSxFQUFhO0FBQUEsSUFDaEIsR0FBR0EsRUFBYTtBQUFBLEVBQ3BCO0FBQ0E7QUFFQSxTQUFTRSxHQUFjcEosR0FBUztBQUM5QixRQUFNO0FBQUEsSUFDSixPQUFBckM7QUFBQSxJQUNBLFFBQUFDO0FBQUEsRUFDSixJQUFNd0gsR0FBaUJwRixDQUFPO0FBQzVCLFNBQU87QUFBQSxJQUNMLE9BQUFyQztBQUFBLElBQ0EsUUFBQUM7QUFBQSxFQUNKO0FBQ0E7QUFFQSxTQUFTeUwsR0FBOEJySixHQUFTRSxHQUFjeEIsR0FBVTtBQUN0RSxRQUFNOEksSUFBMEJuRSxHQUFjbkQsQ0FBWSxHQUNwRGdILElBQWtCL0QsR0FBbUJqRCxDQUFZLEdBQ2pEOEYsSUFBVXRILE1BQWEsU0FDdkJsQixJQUFPMEksR0FBc0JsRyxHQUFTLElBQU1nRyxHQUFTOUYsQ0FBWTtBQUN2RSxNQUFJaUgsSUFBUztBQUFBLElBQ1gsWUFBWTtBQUFBLElBQ1osV0FBVztBQUFBLEVBQ2Y7QUFDRSxRQUFNSSxJQUFVN0wsR0FBYSxDQUFDO0FBQzlCLE1BQUk4TCxLQUEyQixDQUFDQSxLQUEyQixDQUFDeEI7QUFJMUQsU0FISWxELEdBQVk1QyxDQUFZLE1BQU0sVUFBVXFELEdBQWtCMkQsQ0FBZSxPQUMzRUMsSUFBUzNDLEdBQWN0RSxDQUFZLElBRWpDc0gsR0FBeUI7QUFDM0IsWUFBTUMsSUFBYXZCLEdBQXNCaEcsR0FBYyxJQUFNOEYsR0FBUzlGLENBQVk7QUFDbEYsTUFBQXFILEVBQVEsSUFBSUUsRUFBVyxJQUFJdkgsRUFBYSxZQUN4Q3FILEVBQVEsSUFBSUUsRUFBVyxJQUFJdkgsRUFBYTtBQUFBLElBQ3pDO0FBQU0sTUFBSWdILE1BR1RLLEVBQVEsSUFBSVIsR0FBb0JHLENBQWU7QUFHbkQsUUFBTVEsSUFBYVIsS0FBbUIsQ0FBQ00sS0FBMkIsQ0FBQ3hCLElBQVVpQixHQUFjQyxHQUFpQkMsQ0FBTSxJQUFJekwsR0FBYSxDQUFDLEdBQzlIK0IsSUFBSUQsRUFBSyxPQUFPMkosRUFBTyxhQUFhSSxFQUFRLElBQUlHLEVBQVcsR0FDM0RoSyxJQUFJRixFQUFLLE1BQU0ySixFQUFPLFlBQVlJLEVBQVEsSUFBSUcsRUFBVztBQUMvRCxTQUFPO0FBQUEsSUFDTCxHQUFBaks7QUFBQSxJQUNBLEdBQUFDO0FBQUEsSUFDQSxPQUFPRixFQUFLO0FBQUEsSUFDWixRQUFRQSxFQUFLO0FBQUEsRUFDakI7QUFDQTtBQUVBLFNBQVM4TCxHQUFtQnRKLEdBQVM7QUFDbkMsU0FBTzJELEVBQWlCM0QsQ0FBTyxFQUFFLGFBQWE7QUFDaEQ7QUFFQSxTQUFTdUosR0FBb0J2SixHQUFTd0osR0FBVTtBQUM5QyxNQUFJLENBQUNuRyxHQUFjckQsQ0FBTyxLQUFLMkQsRUFBaUIzRCxDQUFPLEVBQUUsYUFBYTtBQUNwRSxXQUFPO0FBRVQsTUFBSXdKO0FBQ0YsV0FBT0EsRUFBU3hKLENBQU87QUFFekIsTUFBSXlKLElBQWtCekosRUFBUTtBQU05QixTQUFJbUQsR0FBbUJuRCxDQUFPLE1BQU15SixNQUNsQ0EsSUFBa0JBLEVBQWdCLGNBQWMsT0FFM0NBO0FBQ1Q7QUFJQSxTQUFTQyxHQUFnQjFKLEdBQVN3SixHQUFVO0FBQzFDLFFBQU12RSxJQUFNaEMsRUFBVWpELENBQU87QUFDN0IsTUFBSTZELEdBQVc3RCxDQUFPO0FBQ3BCLFdBQU9pRjtBQUVULE1BQUksQ0FBQzVCLEdBQWNyRCxDQUFPLEdBQUc7QUFDM0IsUUFBSTJKLElBQWtCckYsR0FBY3RFLENBQU87QUFDM0MsV0FBTzJKLEtBQW1CLENBQUNwRixHQUFzQm9GLENBQWUsS0FBRztBQUNqRSxVQUFJdkcsRUFBVXVHLENBQWUsS0FBSyxDQUFDTCxHQUFtQkssQ0FBZTtBQUNuRSxlQUFPQTtBQUVULE1BQUFBLElBQWtCckYsR0FBY3FGLENBQWU7QUFBQSxJQUNoRDtBQUNELFdBQU8xRTtBQUFBLEVBQ1I7QUFDRCxNQUFJL0UsSUFBZXFKLEdBQW9CdkosR0FBU3dKLENBQVE7QUFDeEQsU0FBT3RKLEtBQWdCMEQsR0FBZTFELENBQVksS0FBS29KLEdBQW1CcEosQ0FBWTtBQUNwRixJQUFBQSxJQUFlcUosR0FBb0JySixHQUFjc0osQ0FBUTtBQUUzRCxTQUFJdEosS0FBZ0JxRSxHQUFzQnJFLENBQVksS0FBS29KLEdBQW1CcEosQ0FBWSxLQUFLLENBQUM2RCxHQUFrQjdELENBQVksSUFDckgrRSxJQUVGL0UsS0FBZ0JrRSxHQUFtQnBFLENBQU8sS0FBS2lGO0FBQ3hEO0FBRUEsTUFBTTJFLEtBQWtCLGVBQWdCdkssR0FBTTtBQUM1QyxRQUFNd0ssSUFBb0IsS0FBSyxtQkFBbUJILElBQzVDSSxJQUFrQixLQUFLLGVBQ3ZCQyxJQUFxQixNQUFNRCxFQUFnQnpLLEVBQUssUUFBUTtBQUM5RCxTQUFPO0FBQUEsSUFDTCxXQUFXZ0ssR0FBOEJoSyxFQUFLLFdBQVcsTUFBTXdLLEVBQWtCeEssRUFBSyxRQUFRLEdBQUdBLEVBQUssUUFBUTtBQUFBLElBQzlHLFVBQVU7QUFBQSxNQUNSLEdBQUc7QUFBQSxNQUNILEdBQUc7QUFBQSxNQUNILE9BQU8wSyxFQUFtQjtBQUFBLE1BQzFCLFFBQVFBLEVBQW1CO0FBQUEsSUFDNUI7QUFBQSxFQUNMO0FBQ0E7QUFFQSxTQUFTQyxHQUFNaEssR0FBUztBQUN0QixTQUFPMkQsRUFBaUIzRCxDQUFPLEVBQUUsY0FBYztBQUNqRDtBQUVBLE1BQU1wQixLQUFXO0FBQUEsRUFDZix1REFBQTBJO0FBQUEsRUFDQSxvQkFBQW5FO0FBQUEsRUFDQSxpQkFBQTRGO0FBQUEsRUFDQSxpQkFBQVc7QUFBQSxFQUNBLGlCQUFBRTtBQUFBLEVBQ0EsZ0JBQUFqQztBQUFBLEVBQ0EsZUFBQXlCO0FBQUEsRUFDQSxVQUFBMUQ7QUFBQSxFQUNBLFdBQUF0QztBQUFBLEVBQ0EsT0FBQTRHO0FBQ0Y7QUFFQSxTQUFTQyxHQUFjekksR0FBR0MsR0FBRztBQUMzQixTQUFPRCxFQUFFLE1BQU1DLEVBQUUsS0FBS0QsRUFBRSxNQUFNQyxFQUFFLEtBQUtELEVBQUUsVUFBVUMsRUFBRSxTQUFTRCxFQUFFLFdBQVdDLEVBQUU7QUFDN0U7QUFHQSxTQUFTeUksR0FBWWxLLEdBQVNtSyxHQUFRO0FBQ3BDLE1BQUlDLElBQUssTUFDTEM7QUFDSixRQUFNQyxJQUFPbkgsR0FBbUJuRCxDQUFPO0FBQ3ZDLFdBQVN1SyxJQUFVO0FBQ2pCLFFBQUlDO0FBQ0osaUJBQWFILENBQVMsSUFDckJHLElBQU1KLE1BQU8sUUFBUUksRUFBSSxXQUFVLEdBQ3BDSixJQUFLO0FBQUEsRUFDTjtBQUNELFdBQVNLLEVBQVFDLEdBQU1DLEdBQVc7QUFDaEMsSUFBSUQsTUFBUyxXQUNYQSxJQUFPLEtBRUxDLE1BQWMsV0FDaEJBLElBQVksSUFFZEo7QUFDQSxVQUFNSyxJQUEyQjVLLEVBQVEseUJBQ25DO0FBQUEsTUFDSixNQUFBNkc7QUFBQSxNQUNBLEtBQUFDO0FBQUEsTUFDQSxPQUFBbko7QUFBQSxNQUNBLFFBQUFDO0FBQUEsSUFDRCxJQUFHZ047QUFJSixRQUhLRixLQUNIUCxLQUVFLENBQUN4TSxLQUFTLENBQUNDO0FBQ2I7QUFFRixVQUFNaU4sSUFBV3BQLEdBQU1xTCxDQUFHLEdBQ3BCZ0UsSUFBYXJQLEdBQU02TyxFQUFLLGVBQWV6RCxJQUFPbEosRUFBTSxHQUNwRG9OLElBQWN0UCxHQUFNNk8sRUFBSyxnQkFBZ0J4RCxJQUFNbEosRUFBTyxHQUN0RG9OLElBQVl2UCxHQUFNb0wsQ0FBSSxHQUV0QnZSLElBQVU7QUFBQSxNQUNkLFlBRmlCLENBQUN1VixJQUFXLFFBQVEsQ0FBQ0MsSUFBYSxRQUFRLENBQUNDLElBQWMsUUFBUSxDQUFDQyxJQUFZO0FBQUEsTUFHL0YsV0FBV3pQLEdBQUksR0FBR0QsR0FBSSxHQUFHcVAsQ0FBUyxDQUFDLEtBQUs7QUFBQSxJQUM5QztBQUNJLFFBQUlNLElBQWdCO0FBQ3BCLGFBQVNDLEVBQWMzVixHQUFTO0FBQzlCLFlBQU00VixJQUFRNVYsRUFBUSxDQUFDLEVBQUU7QUFDekIsVUFBSTRWLE1BQVVSLEdBQVc7QUFDdkIsWUFBSSxDQUFDTTtBQUNILGlCQUFPUixFQUFPO0FBRWhCLFFBQUtVLElBT0hWLEVBQVEsSUFBT1UsQ0FBSyxJQUpwQmQsSUFBWSxXQUFXLE1BQU07QUFDM0IsVUFBQUksRUFBUSxJQUFPLElBQUk7QUFBQSxRQUNwQixHQUFFLEdBQUk7QUFBQSxNQUlWO0FBQ0QsTUFBSVUsTUFBVSxLQUFLLENBQUNsQixHQUFjVyxHQUEwQjVLLEVBQVEsc0JBQXFCLENBQUUsS0FRekZ5SyxLQUVGUSxJQUFnQjtBQUFBLElBQ2pCO0FBSUQsUUFBSTtBQUNGLE1BQUFiLElBQUssSUFBSSxxQkFBcUJjLEdBQWU7QUFBQSxRQUMzQyxHQUFHNVY7QUFBQTtBQUFBLFFBRUgsTUFBTWdWLEVBQUs7QUFBQSxNQUNuQixDQUFPO0FBQUEsSUFDRixRQUFXO0FBQ1YsTUFBQUYsSUFBSyxJQUFJLHFCQUFxQmMsR0FBZTVWLENBQU87QUFBQSxJQUNyRDtBQUNELElBQUE4VSxFQUFHLFFBQVFwSyxDQUFPO0FBQUEsRUFDbkI7QUFDRCxTQUFBeUssRUFBUSxFQUFJLEdBQ0xGO0FBQ1Q7QUFVQSxTQUFTYSxHQUFXck4sR0FBV0MsR0FBVXFOLEdBQVEvVixHQUFTO0FBQ3hELEVBQUlBLE1BQVksV0FDZEEsSUFBVSxDQUFBO0FBRVosUUFBTTtBQUFBLElBQ0osZ0JBQUFnVyxJQUFpQjtBQUFBLElBQ2pCLGdCQUFBQyxJQUFpQjtBQUFBLElBQ2pCLGVBQUFDLElBQWdCLE9BQU8sa0JBQW1CO0FBQUEsSUFDMUMsYUFBQUMsSUFBYyxPQUFPLHdCQUF5QjtBQUFBLElBQzlDLGdCQUFBQyxJQUFpQjtBQUFBLEVBQ2xCLElBQUdwVyxHQUNFcVcsSUFBY2xHLEdBQWMxSCxDQUFTLEdBQ3JDNk4sSUFBWU4sS0FBa0JDLElBQWlCLENBQUMsR0FBSUksSUFBY2hILEdBQXFCZ0gsQ0FBVyxJQUFJLENBQUEsR0FBSyxHQUFHaEgsR0FBcUIzRyxDQUFRLENBQUMsSUFBSSxDQUFBO0FBQ3RKLEVBQUE0TixFQUFVLFFBQVEsQ0FBQTlDLE1BQVk7QUFDNUIsSUFBQXdDLEtBQWtCeEMsRUFBUyxpQkFBaUIsVUFBVXVDLEdBQVE7QUFBQSxNQUM1RCxTQUFTO0FBQUEsSUFDZixDQUFLLEdBQ0RFLEtBQWtCekMsRUFBUyxpQkFBaUIsVUFBVXVDLENBQU07QUFBQSxFQUNoRSxDQUFHO0FBQ0QsUUFBTVEsSUFBWUYsS0FBZUYsSUFBY3ZCLEdBQVl5QixHQUFhTixDQUFNLElBQUk7QUFDbEYsTUFBSVMsSUFBaUIsSUFDakJDLElBQWlCO0FBQ3JCLEVBQUlQLE1BQ0ZPLElBQWlCLElBQUksZUFBZSxDQUFBak8sTUFBUTtBQUMxQyxRQUFJLENBQUNrTyxDQUFVLElBQUlsTztBQUNuQixJQUFJa08sS0FBY0EsRUFBVyxXQUFXTCxLQUFlSSxNQUdyREEsRUFBZSxVQUFVL04sQ0FBUSxHQUNqQyxxQkFBcUI4TixDQUFjLEdBQ25DQSxJQUFpQixzQkFBc0IsTUFBTTtBQUMzQyxVQUFJRztBQUNKLE9BQUNBLElBQWtCRixNQUFtQixRQUFRRSxFQUFnQixRQUFRak8sQ0FBUTtBQUFBLElBQ3hGLENBQVMsSUFFSHFOO0VBQ04sQ0FBSyxHQUNHTSxLQUFlLENBQUNELEtBQ2xCSyxFQUFlLFFBQVFKLENBQVcsR0FFcENJLEVBQWUsUUFBUS9OLENBQVE7QUFFakMsTUFBSWtPLEdBQ0FDLElBQWNULElBQWlCeEYsR0FBc0JuSSxDQUFTLElBQUk7QUFDdEUsRUFBSTJOLEtBQ0ZVO0FBRUYsV0FBU0EsSUFBWTtBQUNuQixVQUFNQyxJQUFjbkcsR0FBc0JuSSxDQUFTO0FBQ25ELElBQUlvTyxLQUFlLENBQUNsQyxHQUFja0MsR0FBYUUsQ0FBVyxLQUN4RGhCLEtBRUZjLElBQWNFLEdBQ2RILElBQVUsc0JBQXNCRSxDQUFTO0FBQUEsRUFDMUM7QUFDRCxTQUFBZixLQUNPLE1BQU07QUFDWCxRQUFJaUI7QUFDSixJQUFBVixFQUFVLFFBQVEsQ0FBQTlDLE1BQVk7QUFDNUIsTUFBQXdDLEtBQWtCeEMsRUFBUyxvQkFBb0IsVUFBVXVDLENBQU0sR0FDL0RFLEtBQWtCekMsRUFBUyxvQkFBb0IsVUFBVXVDLENBQU07QUFBQSxJQUNyRSxDQUFLLEdBQ0RRLEtBQWEsUUFBUUEsTUFDcEJTLElBQW1CUCxNQUFtQixRQUFRTyxFQUFpQixXQUFVLEdBQzFFUCxJQUFpQixNQUNiTCxLQUNGLHFCQUFxQlEsQ0FBTztBQUFBLEVBRWxDO0FBQ0E7QUFtQkEsTUFBTWxLLEtBQVN1SyxJQVFUL0wsS0FBZ0JnTSxJQU9oQnBLLEtBQVFxSyxJQWdEUmpPLEtBQWtCLENBQUNULEdBQVdDLEdBQVUxSSxNQUFZO0FBSXhELFFBQU1pVCxJQUFRLG9CQUFJLE9BQ1ptRSxJQUFnQjtBQUFBLElBQ3BCLFVBQUE5TjtBQUFBLElBQ0EsR0FBR3RKO0FBQUEsRUFDUCxHQUNRcVgsSUFBb0I7QUFBQSxJQUN4QixHQUFHRCxFQUFjO0FBQUEsSUFDakIsSUFBSW5FO0FBQUEsRUFDUjtBQUNFLFNBQU9xRSxHQUFrQjdPLEdBQVdDLEdBQVU7QUFBQSxJQUM1QyxHQUFHME87QUFBQSxJQUNILFVBQVVDO0FBQUEsRUFDZCxDQUFHO0FBQ0g7QUN4dUJBLFNBQVNFLEdBQTBCQyxHQUFRO0FBQ3pDLFNBQU9BLEtBQVUsUUFBUSxPQUFPQSxLQUFXLFlBQVksU0FBU0E7QUFDbEU7QUFDQSxTQUFTckgsR0FBY3FILEdBQVE7QUFDN0IsTUFBSUQsR0FBMEJDLENBQU0sR0FBRztBQUNyQyxVQUFNOU0sSUFBVThNLEVBQU87QUFDdkIsV0FBTzlKLEdBQU9oRCxDQUFPLEtBQUs4QyxHQUFZOUMsQ0FBTyxNQUFNLGFBQWEsT0FBT0E7QUFBQSxFQUN4RTtBQUNELFNBQU84TTtBQUNUO0FBRUEsU0FBU0MsR0FBUUMsR0FBUTtBQUN2QixTQUFPLE9BQU9BLEtBQVcsYUFBYUEsRUFBTSxJQUFLQyxFQUFNRCxDQUFNO0FBQy9EO0FBd0JBLFNBQVNFLEdBQU9sTixHQUFTO0FBQ3ZCLFNBQUksT0FBTyxTQUFXLE1BQ2IsS0FFR0EsRUFBUSxjQUFjLGVBQWUsUUFDdEMsb0JBQW9CO0FBQ2pDO0FBRUEsU0FBU21OLEdBQVduTixHQUFTN0ksR0FBTztBQUNsQyxRQUFNaVcsSUFBTUYsR0FBT2xOLENBQU87QUFDMUIsU0FBTyxLQUFLLE1BQU03SSxJQUFRaVcsQ0FBRyxJQUFJQTtBQUNuQztBQVNBLFNBQVNDLEdBQVl0UCxHQUFXQyxHQUFVMUksR0FBUztBQUNqRCxFQUFJQSxNQUFZLFdBQ2RBLElBQVUsQ0FBQTtBQUVaLFFBQU1nWSxJQUE2QmhZLEVBQVEsc0JBQ3JDaVksSUFBYWhYLEVBQVMsTUFBTTtBQUNoQyxRQUFJaVg7QUFDSixZQUFRQSxJQUFXVCxHQUFRelgsRUFBUSxJQUFJLE1BQU0sT0FBT2tZLElBQVc7QUFBQSxFQUNuRSxDQUFHLEdBQ0tDLElBQW1CbFgsRUFBUyxNQUFNd1csR0FBUXpYLEVBQVEsVUFBVSxDQUFDLEdBQzdEb1ksSUFBa0JuWCxFQUFTLE1BQU07QUFDckMsUUFBSW9YO0FBQ0osWUFBUUEsSUFBWVosR0FBUXpYLEVBQVEsU0FBUyxNQUFNLE9BQU9xWSxJQUFZO0FBQUEsRUFDMUUsQ0FBRyxHQUNLQyxJQUFpQnJYLEVBQVMsTUFBTTtBQUNwQyxRQUFJc1g7QUFDSixZQUFRQSxJQUFZZCxHQUFRelgsRUFBUSxRQUFRLE1BQU0sT0FBT3VZLElBQVk7QUFBQSxFQUN6RSxDQUFHLEdBQ0tDLElBQWtCdlgsRUFBUyxNQUFNO0FBQ3JDLFFBQUl3WDtBQUNKLFlBQVFBLElBQVloQixHQUFRelgsRUFBUSxTQUFTLE1BQU0sT0FBT3lZLElBQVk7QUFBQSxFQUMxRSxDQUFHLEdBQ0tDLElBQW1CelgsRUFBUyxNQUFNa1AsR0FBYzFILEVBQVUsS0FBSyxDQUFDLEdBQ2hFa1EsSUFBa0IxWCxFQUFTLE1BQU1rUCxHQUFjekgsRUFBUyxLQUFLLENBQUMsR0FDOURQLElBQUl6TCxFQUFJLENBQUMsR0FDVDBMLElBQUkxTCxFQUFJLENBQUMsR0FDVDBNLElBQVcxTSxFQUFJNGIsRUFBZSxLQUFLLEdBQ25DeFIsSUFBWXBLLEVBQUkwYixFQUFnQixLQUFLLEdBQ3JDM08sSUFBaUJtUCxHQUFXLENBQUEsQ0FBRSxHQUM5QkMsSUFBZW5jLEVBQUksRUFBSyxHQUN4Qm9jLElBQWlCN1gsRUFBUyxNQUFNO0FBQ3BDLFVBQU04WCxJQUFnQjtBQUFBLE1BQ3BCLFVBQVUzUCxFQUFTO0FBQUEsTUFDbkIsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLElBQ1g7QUFDSSxRQUFJLENBQUN1UCxFQUFnQjtBQUNuQixhQUFPSTtBQUVULFVBQU1DLElBQU9uQixHQUFXYyxFQUFnQixPQUFPeFEsRUFBRSxLQUFLLEdBQ2hEOFEsSUFBT3BCLEdBQVdjLEVBQWdCLE9BQU92USxFQUFFLEtBQUs7QUFDdEQsV0FBSW9RLEVBQWdCLFFBQ1g7QUFBQSxNQUNMLEdBQUdPO0FBQUEsTUFDSCxXQUFXLGVBQWVDLElBQU8sU0FBU0MsSUFBTztBQUFBLE1BQ2pELEdBQUlyQixHQUFPZSxFQUFnQixLQUFLLEtBQUssT0FBTztBQUFBLFFBQzFDLFlBQVk7QUFBQSxNQUN0QjtBQUFBLElBQ0EsSUFFVztBQUFBLE1BQ0wsVUFBVXZQLEVBQVM7QUFBQSxNQUNuQixNQUFNNFAsSUFBTztBQUFBLE1BQ2IsS0FBS0MsSUFBTztBQUFBLElBQ2xCO0FBQUEsRUFDQSxDQUFHO0FBQ0QsTUFBSUM7QUFDSixXQUFTbkQsSUFBUztBQUNoQixRQUFJMkMsRUFBaUIsU0FBUyxRQUFRQyxFQUFnQixTQUFTO0FBQzdEO0FBRUYsVUFBTVEsSUFBT2xCLEVBQVc7QUFDeEIsSUFBQS9PLEdBQWdCd1AsRUFBaUIsT0FBT0MsRUFBZ0IsT0FBTztBQUFBLE1BQzdELFlBQVlSLEVBQWlCO0FBQUEsTUFDN0IsV0FBV0MsRUFBZ0I7QUFBQSxNQUMzQixVQUFVRSxFQUFlO0FBQUEsSUFDL0IsQ0FBSyxFQUFFLEtBQUssQ0FBQWMsTUFBWTtBQUNsQixNQUFBalIsRUFBRSxRQUFRaVIsRUFBUyxHQUNuQmhSLEVBQUUsUUFBUWdSLEVBQVMsR0FDbkJoUSxFQUFTLFFBQVFnUSxFQUFTLFVBQzFCdFMsRUFBVSxRQUFRc1MsRUFBUyxXQUMzQjNQLEVBQWUsUUFBUTJQLEVBQVMsZ0JBT2hDUCxFQUFhLFFBQVFNLE1BQVM7QUFBQSxJQUNwQyxDQUFLO0FBQUEsRUFDRjtBQUNELFdBQVNsRSxJQUFVO0FBQ2pCLElBQUksT0FBT2lFLEtBQWdDLGVBQ3pDQSxLQUNBQSxJQUE4QjtBQUFBLEVBRWpDO0FBQ0QsV0FBU0csSUFBUztBQUVoQixRQURBcEUsS0FDSStDLE1BQStCLFFBQVc7QUFDNUMsTUFBQWpDO0FBQ0E7QUFBQSxJQUNEO0FBQ0QsUUFBSTJDLEVBQWlCLFNBQVMsUUFBUUMsRUFBZ0IsU0FBUyxNQUFNO0FBQ25FLE1BQUFPLElBQThCbEIsRUFBMkJVLEVBQWlCLE9BQU9DLEVBQWdCLE9BQU81QyxDQUFNO0FBQzlHO0FBQUEsSUFDRDtBQUFBLEVBQ0Y7QUFDRCxXQUFTL0wsSUFBUTtBQUNmLElBQUtpTyxFQUFXLFVBQ2RZLEVBQWEsUUFBUTtBQUFBLEVBRXhCO0FBQ0QsU0FBQWxjLEVBQU0sQ0FBQ3diLEdBQWtCQyxHQUFpQkUsR0FBZ0JMLENBQVUsR0FBR2xDLEdBQVE7QUFBQSxJQUM3RSxPQUFPO0FBQUEsRUFDWCxDQUFHLEdBQ0RwWixFQUFNLENBQUMrYixHQUFrQkMsQ0FBZSxHQUFHVSxHQUFRO0FBQUEsSUFDakQsT0FBTztBQUFBLEVBQ1gsQ0FBRyxHQUNEMWMsRUFBTXNiLEdBQVlqTyxHQUFPO0FBQUEsSUFDdkIsT0FBTztBQUFBLEVBQ1gsQ0FBRyxHQUNHc1AsR0FBZSxLQUNqQkMsR0FBZXRFLENBQU8sR0FFakI7QUFBQSxJQUNMLEdBQUd1RSxHQUFnQnJSLENBQUM7QUFBQSxJQUNwQixHQUFHcVIsR0FBZ0JwUixDQUFDO0FBQUEsSUFDcEIsVUFBVW9SLEdBQWdCcFEsQ0FBUTtBQUFBLElBQ2xDLFdBQVdvUSxHQUFnQjFTLENBQVM7QUFBQSxJQUNwQyxnQkFBZ0IwUyxHQUFnQi9QLENBQWM7QUFBQSxJQUM5QyxjQUFjK1AsR0FBZ0JYLENBQVk7QUFBQSxJQUMxQyxnQkFBQUM7QUFBQSxJQUNBLFFBQUEvQztBQUFBLEVBQ0o7QUFDQTtBQzNMYSxNQUFBMEQsS0FBaUIsQ0FBQ2hXLEdBQW1CMkcsTUFFekMsRUFEUyxNQUFNLFFBQVFBLENBQVEsSUFBSUEsSUFBVyxDQUFDQSxDQUFRLEdBQzlDLEtBQUssQ0FBQytJLE1BQU9BLEVBQUcsU0FBUzFQLEVBQU0sTUFBYyxDQUFDOzs7Ozs7O2lCQ2lCeERpVyxJQUFrQ2hkLEVBQUksSUFBSSxHQUMxQ2dNLElBQW9DaE0sRUFBSSxJQUFJLEdBQzVDc1ksSUFBZ0N0WSxFQUFJLElBQUksR0FDeENpZCxJQUFZamQsRUFBSSxFQUFLLEdBQ3JCa2QsSUFBZ0JsZCxFQUFJLEVBQUssR0FDekIyTSxJQUFhM00sRUFBSSxDQUFDd08sTUFBaUIyTyxHQUFpQixFQUFFLFVBQVVqZCxFQUFNLE9BQVEsQ0FBQSxHQUFHa1EsR0FBTSxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUV4R2dOLElBQWdCN1ksRUFBUyxNQUFNMFksRUFBVSxTQUFTQyxFQUFjLEtBQUssR0FFckUsRUFBRSxnQkFBQWQsRUFBbUIsSUFBQWYsR0FBWTJCLEdBQVFoUixHQUFVO0FBQUEsTUFDdkQsWUFBQVc7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLHNCQUFzQnlNO0FBQUEsSUFBQSxDQUN2QixHQUVLaUUsSUFBK0IsQ0FBQ3hVLE1BQWtCO0FBQ3RELE1BQUksQ0FBQ21VLEVBQU8sU0FBUyxDQUFDaFIsRUFBUyxTQUMzQitRLEdBQWVsVSxHQUFHLENBQUNtVSxFQUFPLE9BQU9oUixFQUFTLEtBQUssQ0FBQyxNQUNsRG5ELEVBQUUseUJBQXlCLEdBQzNCcVUsRUFBYyxRQUFRO0FBQUEsSUFDeEIsR0FHSUksSUFBK0IsTUFBTTtBQUN6QyxNQUFBTCxFQUFVLFFBQVE7QUFBQSxJQUFBLEdBR2RNLElBQWdDLE1BQU07QUFDMUMsTUFBQU4sRUFBVSxRQUFRO0FBQUEsSUFBQSxHQUdkTyxJQUEyQixNQUFNO0FBQ3JDLE1BQUFOLEVBQWMsUUFBUTtBQUFBLElBQUEsR0FHbEJPLElBQThCLE1BQU07QUFDeEMsVUFBSSxDQUFDVCxFQUFPO0FBQWMsZUFBQTtBQUNuQixNQUFBQSxFQUFBLE1BQU0saUJBQWlCLGFBQWFNLENBQTRCLEdBQ2hFTixFQUFBLE1BQU0saUJBQWlCLGNBQWNPLENBQTZCLEdBQ2xFUCxFQUFBLE1BQU0saUJBQWlCLFNBQVNRLENBQXdCO0FBQUEsSUFBQSxHQUczREUsSUFBbUMsTUFBTTtBQUM3QyxVQUFJLENBQUNWLEVBQU87QUFBYyxlQUFBO0FBQ25CLE1BQUFBLEVBQUEsTUFBTSxvQkFBb0IsYUFBYU0sQ0FBNEIsR0FDbkVOLEVBQUEsTUFBTSxvQkFBb0IsY0FBY08sQ0FBNkIsR0FDckVQLEVBQUEsTUFBTSxvQkFBb0IsU0FBU1EsQ0FBd0I7QUFBQSxJQUFBLEdBRzlERyxJQUFpQyxDQUFDOVUsTUFBcUI7QUFDdkQsTUFBQUEsRUFBRSxRQUFRLGFBQ1pxVSxFQUFjLFFBQVE7QUFBQSxJQUN4QixHQUdJVSxJQUF5QixNQUFNO0FBQ25DLE1BQUt0RixFQUFLLFVBQ1ZBLEVBQUssTUFBTSxpQkFBaUIsU0FBUytFLEdBQThCLEVBQUksR0FDbEUvRSxFQUFBLE1BQU0saUJBQWlCLFdBQVdxRixDQUE4QjtBQUFBLElBQUEsR0FHakVFLElBQThCLE1BQU07QUFDeEMsTUFBS3ZGLEVBQUssVUFDVkEsRUFBSyxNQUFNLG9CQUFvQixTQUFTK0UsR0FBOEIsRUFBSSxHQUNyRS9FLEVBQUEsTUFBTSxvQkFBb0IsV0FBV3FGLENBQThCO0FBQUEsSUFBQSxHQUdwRUcsSUFBc0IsTUFBTTtBQUNoQyxNQUFBZCxFQUFPLFFBQVEsU0FBUyxlQUFlOWMsRUFBTSxRQUFRO0FBQUEsSUFBQTtBQUd2RCxXQUFBRDtBQUFBLE1BQ0UsTUFBTWlkLEVBQWM7QUFBQSxNQUNwQixDQUFDclksTUFBYTtBQUNaLFFBQUlBLElBQ3FCK1ksTUFFS0M7TUFFaEM7QUFBQSxJQUFBLEdBR0Y1ZDtBQUFBLE1BQ0UsTUFBTUMsRUFBTTtBQUFBLE1BQ1osTUFBTTtBQUM2QixRQUFBd2QsS0FDYkksS0FDUUw7TUFDOUI7QUFBQSxJQUFBLEdBR0ZNLEdBQVksTUFBTTtBQUNoQixNQUFBcFIsRUFBVyxRQUFRLENBQUM2QixHQUFpQixHQUFBMk8sR0FBaUIsRUFBRSxVQUFVamQsRUFBTSxPQUFRLENBQUEsR0FBR2tRLEdBQU0sRUFBRSxTQUFTLEdBQUEsQ0FBSSxDQUFDO0FBQUEsSUFBQSxDQUMxRyxHQUVENE4sR0FBYyxNQUFNO0FBQ0QsTUFBQTVWO0lBQUEsQ0FDbEIsR0FFRHRFLEdBQVUsTUFBTTtBQUNNLE1BQUFnYSxLQUNwQnhGLEVBQUssUUFBUSxTQUFTLGlCQUNNbUY7SUFBQSxDQUM3QixHQUVEMVosR0FBWSxNQUFNO0FBQ2lCLE1BQUEyWjtJQUFBLENBQ2xDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQ3BHS08sSUFBK0NqZSxFQUFJLElBQUksR0FFdkR3SSxJQUEwQixNQUFNOztBQUNwQyxPQUFBOUUsSUFBQXVhLEVBQWMsVUFBZCxRQUFBdmEsRUFBcUI7QUFBQSxJQUFVLEdBRzNCK0UsSUFBMkIsTUFBTTs7QUFDckMsT0FBQS9FLElBQUF1YSxFQUFjLFVBQWQsUUFBQXZhLEVBQXFCO0FBQUEsSUFBTTtBQUc3QixXQUFBekQ7QUFBQSxNQUNFLE1BQU1DLEVBQU07QUFBQSxNQUNaLENBQUMyRSxNQUFhO0FBQ1osUUFBS29aLEVBQWMsVUFDZnBaLElBQ3NCMkQsTUFFQ0MsS0FFM0JaLEdBQWNoRCxDQUFRO0FBQUEsTUFDeEI7QUFBQSxJQUFBLEdBR0ZtWixHQUFjLE1BQU07QUFDRCxNQUFBNVY7SUFBQSxDQUNsQixHQUVEdEUsR0FBVSxNQUFNO0FBQ2QsTUFBSTVELEVBQU0sVUFDZ0JzSTtJQUMxQixDQUNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQ3ZDS2pILElBQWMsTUFBTTtBQUNwQixNQUFDckIsRUFBTSxZQUNUWSxFQUFLLFFBQVE7QUFBQSxJQUNmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0VDZlNvZCxLQUFTO0FBQUEsRUFDcEIsUUFBUTNlO0FBQUEsRUFDUixPQUFPTTtBQUFBLEVBQ1AsT0FBT0M7QUFDVCxHQUVhcWUsS0FBZTtBQUFBLEVBQzFCLE9BQU87QUFBQSxFQUNQLG9CQUFvQjtBQUFBLEVBQ3BCLFlBQVk7QUFBQSxFQUNaLE9BQ0U7QUFBQSxFQUNGLGlCQUFpQjtBQUFBLEVBQ2pCLE9BQU87QUFBQSxFQUNQLE9BQU87QUFDVCxHQ2hCYUMsS0FBb0I7QUFBQSxFQUMvQixPQUFPO0FBQUEsSUFDTCxXQUFXO0FBQUEsSUFDWCxPQUFPO0FBQUEsRUFDVDtBQUFBLEVBQ0EsT0FBTztBQUFBLEVBQ1AsSUFBSTtBQUNOLEdDVGFDLEtBQVk7QUFBQSxFQUN2QixvQkFBb0JwWixHQUFZa1osR0FBYSxrQkFBa0I7QUFBQSxFQUMvRCxhQUFhbFosR0FBWWtaLEdBQWEsVUFBVTtBQUFBLEVBQ2hELE9BQU9sWixHQUFZa1osR0FBYSxLQUFLO0FBQUEsRUFDckMsUUFBUWxaLEdBQVlrWixHQUFhLGVBQWU7QUFBQSxFQUNoRCxPQUFPbFosR0FBWWtaLEdBQWEsS0FBSztBQUN2QzsiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMjksMzAsMzEsMzIsMzNdfQ==
|
|
3907
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmVzbS5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy90eXBlcy9CYWRnZS50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25TZWdtZW50ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0NhcmQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2Fyb3VzZWwudnVlIiwiLi4vc3JjL3R5cGVzL0ltYWdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFJhZGlvLnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFNlbGVjdC52dWUiLCIuLi9zcmMvdHlwZXMvVGV4dElucHV0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0YXJlYS52dWUiLCIuLi9zcmMvdHlwZXMvQnJlYWtwb2ludC50cyIsIi4uL3NyYy91dGlsaXRpZXMvdmlld3BvcnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTW9kYWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVBhZ2luYXRpb24udnVlIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS91dGlscy9kaXN0L2Zsb2F0aW5nLXVpLnV0aWxzLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvY29yZS9kaXN0L2Zsb2F0aW5nLXVpLmNvcmUubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS91dGlscy9kaXN0L2Zsb2F0aW5nLXVpLnV0aWxzLmRvbS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2RvbS9kaXN0L2Zsb2F0aW5nLXVpLmRvbS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3Z1ZS9kaXN0L2Zsb2F0aW5nLXVpLnZ1ZS5tanMiLCIuLi9zcmMvdXRpbGl0aWVzL2V2ZW50LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVBvcG92ZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVNoZWV0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTd2l0Y2gudnVlIiwiLi4vc3JjL3R5cGVzL0Zvcm1hdHRlZC50cyIsIi4uL3NyYy90eXBlcy9MaXN0aW5nTWVkaWEudHMiLCIuLi9zcmMvdHlwZXMvVmFsaWRhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgT1JJRU5UQVRJT04gPSB7XG4gIEhPUklaT05UQUw6ICdob3Jpem9udGFsJyxcbiAgVkVSVElDQUw6ICd2ZXJ0aWNhbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPcmllbnRhdGlvbiA9ICh0eXBlb2YgT1JJRU5UQVRJT04pW2tleW9mIHR5cGVvZiBPUklFTlRBVElPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmltcG9ydCB0eXBlIHsgQnJlYWtwb2ludCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG5cbmV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIHdpdGhCcmVha3BvaW50OiAodXRpbGl0aWVzOiBzdHJpbmdbXSwgYnJlYWtwb2ludDogQnJlYWtwb2ludCk6IHN0cmluZ1tdID0+IHtcbiAgICByZXR1cm4gdXRpbGl0aWVzLm1hcCgodXRpbGl0eSkgPT4gYCR7YnJlYWtwb2ludH0tJHt1dGlsaXR5fWApO1xuICB9LFxuICBBTElHTjoge1xuICAgIFg6IHtcbiAgICAgIENFTlRFUjogJ3RpZGUtdGV4dC1jZW50ZXInLFxuICAgICAgTEVGVDogJ3RpZGUtdGV4dC1sZWZ0JyxcbiAgICAgIFJJR0hUOiAndGlkZS10ZXh0LXJpZ2h0JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIElOSVRJQUw6ICd0aWRlLWFsaWduLWluaXRpYWwnLFxuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICAgIFNUUkVUQ0g6ICd0aWRlLWF4aXMyLXN0cmV0Y2gnLFxuICB9LFxuICBCRzoge1xuICAgIEdMT0JBTDoge1xuICAgICAgUFJJTUFSWToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctcHJpbWFyeS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXByaW1hcnktaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXByaW1hcnktc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXByaW1hcnktd2FybmluZycsXG4gICAgICB9LFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXN1cmZhY2UtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1cmZhY2Utc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXN1cmZhY2Utd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYmctc3VyZmFjZS1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWJnLXN1cmZhY2UtZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1iZy1zdXJmYWNlLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJnLXN1cmZhY2Utb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1iZy1zdXJmYWNlLXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtYmctc3VyZmFjZS1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJnLXN1cmZhY2Utc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtYmctc3VyZmFjZS10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1iZy1zdXJmYWNlLXllbGxvdycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgSU5JVElBTDogJ3RpZGUtYmctaW5pdGlhbCcsXG4gICAgQkxVUjogJ3RpZGUtYmctYmx1cicsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBWQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLXZhcmlhbnQnLFxuICAgIH0sXG4gICAgVFJBTlNQQVJFTlQ6IHtcbiAgICAgIE9ORV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0xMDAnLFxuICAgICAgVFdPX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTIwMCcsXG4gICAgICBUSFJFRV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0zMDAnLFxuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC00MDAnLFxuICAgIH0sXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJvcmRlci1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJvcmRlci1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYm9yZGVyLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1ib3JkZXItd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYm9yZGVyLWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtYm9yZGVyLWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtYm9yZGVyLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJvcmRlci1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWJvcmRlci1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWJvcmRlci1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJvcmRlci1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1ib3JkZXItdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtYm9yZGVyLXllbGxvdycsXG4gICAgICB9LFxuICAgICAgSU5JVElBTDogJ3RpZGUtYm9yZGVyLWNvbG9yLWluaXRpYWwnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYm9yZGVyJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1ib3JkZXItZmxvYXRpbmcnLFxuICAgICAgSElHSDogJ3RpZGUtYm9yZGVyLWhpZ2gnLFxuICAgICAgTE9XOiAndGlkZS1ib3JkZXItbG93JyxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWJvcmRlci1wcmltYXJ5JyxcbiAgICB9LFxuICAgIFJBRElVUzoge1xuICAgICAgWkVSTzogJ3RpZGUtcmFkaXVzLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcmFkaXVzLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1yYWRpdXMtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcmFkaXVzLTEnLFxuICAgICAgRlVMTDogJ3RpZGUtcmFkaXVzLWZ1bGwnLFxuICAgIH0sXG4gICAgU1RZTEU6IHtcbiAgICAgIERBU0hFRDogJ3RpZGUtYm9yZGVyLWRhc2hlZCcsXG4gICAgICBTT0xJRDogJ3RpZGUtYm9yZGVyLXNvbGlkJyxcbiAgICB9LFxuICAgIEJPVFRPTToge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0yJyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItMicsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItbGVmdC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1sZWZ0LTInLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1yaWdodC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItcmlnaHQtMicsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci10b3AtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci10b3AtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci10b3AtMicsXG4gICAgfSxcbiAgfSxcbiAgQk9YX1NJWklORzoge1xuICAgIEJPUkRFUl9CT1g6ICd0aWRlLWJveC1ib3JkZXInLFxuICAgIENPTlRFTlRfQk9YOiAndGlkZS1ib3gtY29udGVudCcsXG4gIH0sXG4gIEJSRUFLX0lOU0lERToge1xuICAgIEFWT0lEX0NPTFVNTjogJ3RpZGUtYnJlYWstaW5zaWRlLWF2b2lkLWNvbHVtbicsXG4gIH0sXG4gIEJSRUFLX1dPUkQ6IHtcbiAgICBPRkY6ICd0aWRlLWJyZWFrLWluaXRpYWwnLFxuICAgIE9OOiAndGlkZS1icmVhay13b3JkJyxcbiAgfSxcbiAgQ09MVU1OUzoge1xuICAgIElOSVRJQUw6ICd0aWRlLWNvbHVtbnMtaW5pdGlhbCcsXG4gICAgT05FOiAndGlkZS1jb2x1bW5zLTEnLFxuICAgIFRXTzogJ3RpZGUtY29sdW1ucy0yJyxcbiAgICBUSFJFRTogJ3RpZGUtY29sdW1ucy0zJyxcbiAgICBGT1VSOiAndGlkZS1jb2x1bW5zLTQnLFxuICB9LFxuICBDVVJTT1I6IHtcbiAgICBOT1RfQUxMT1dFRDogJ3RpZGUtY3Vyc29yLW5vdC1hbGxvd2VkJyxcbiAgICBQT0lOVEVSOiAndGlkZS1jdXJzb3ItcG9pbnRlcicsXG4gICAgVEVYVDogJ3RpZGUtY3Vyc29yLXRleHQnLFxuICB9LFxuICBESVNQTEFZOiB7XG4gICAgQkxPQ0s6ICd0aWRlLWRpc3BsYXktYmxvY2snLFxuICAgIENPTlRFTlRTOiAndGlkZS1kaXNwbGF5LWNvbnRlbnRzJyxcbiAgICBGTEVYOiAndGlkZS1kaXNwbGF5LWZsZXgnLFxuICAgIEdSSUQ6ICd0aWRlLWRpc3BsYXktZ3JpZCcsXG4gICAgSU5JVElBTDogJ3RpZGUtZGlzcGxheS1pbml0aWFsJyxcbiAgICBJTkxJTkU6ICd0aWRlLWRpc3BsYXktaW5saW5lJyxcbiAgICBJTkxJTkVfQkxPQ0s6ICd0aWRlLWRpc3BsYXktaW5saW5lLWJsb2NrJyxcbiAgICBJTkxJTkVfRkxFWDogJ3RpZGUtZGlzcGxheS1pbmxpbmUtZmxleCcsXG4gICAgTk9ORTogJ3RpZGUtZGlzcGxheS1ub25lJyxcbiAgfSxcbiAgRUxMSVBTSVM6ICd0aWRlLWVsbGlwc2lzJyxcbiAgRkxFWDoge1xuICAgIEJBU0lTOiB7XG4gICAgICBBVVRPOiAndGlkZS1mbGV4LWJhc2lzLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtZmxleC1iYXNpcy0wJyxcbiAgICB9LFxuICAgIERJUkVDVElPTjoge1xuICAgICAgQ09MVU1OOiAndGlkZS1mbGV4LWNvbHVtbicsXG4gICAgICBDT0xVTU5fUkVWRVJTRTogJ3RpZGUtZmxleC1jb2x1bW4tcmV2ZXJzZScsXG4gICAgICBST1c6ICd0aWRlLWZsZXgtcm93JyxcbiAgICAgIFJPV19SRVZFUlNFOiAndGlkZS1mbGV4LXJvdy1yZXZlcnNlJyxcbiAgICB9LFxuICAgIEdST1c6IHtcbiAgICAgIE9GRjogJ3RpZGUtZ3Jvdy1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1ncm93JyxcbiAgICB9LFxuICAgIFNIUklOSzoge1xuICAgICAgT0ZGOiAndGlkZS1zaHJpbmstbm9uZScsXG4gICAgICBPTjogJ3RpZGUtc2hyaW5rJyxcbiAgICB9LFxuICAgIFdSQVA6ICd0aWRlLWZsZXgtd3JhcCcsXG4gIH0sXG4gIEZPTlQ6IHtcbiAgICBDT0xPUjoge1xuICAgICAgR0xPQkFMOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1mb250LWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtZm9udC1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtZm9udC1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtZm9udC13YXJuaW5nJyxcblxuICAgICAgICBCTFVFOiAndGlkZS1mb250LWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtZm9udC1ncmVlbicsXG4gICAgICAgIExJTUU6ICd0aWRlLWZvbnQtbGltZScsXG4gICAgICAgIE9SQU5HRTogJ3RpZGUtZm9udC1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWZvbnQtcHVycGxlJyxcbiAgICAgICAgUkVEOiAndGlkZS1mb250LXJlZCcsXG4gICAgICAgIFNBTE1PTjogJ3RpZGUtZm9udC1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1mb250LXRlYWwnLFxuICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQteWVsbG93JyxcblxuICAgICAgICBQUklNQVJZOiB7XG4gICAgICAgICAgQkxVRTogJ3RpZGUtZm9udC1wcmltYXJ5LWJsdWUnLFxuICAgICAgICAgIEdSRUVOOiAndGlkZS1mb250LXByaW1hcnktZ3JlZW4nLFxuICAgICAgICAgIExJTUU6ICd0aWRlLWZvbnQtcHJpbWFyeS1saW1lJyxcbiAgICAgICAgICBPUkFOR0U6ICd0aWRlLWZvbnQtcHJpbWFyeS1vcmFuZ2UnLFxuICAgICAgICAgIFBVUlBMRTogJ3RpZGUtZm9udC1wcmltYXJ5LXB1cnBsZScsXG4gICAgICAgICAgUkVEOiAndGlkZS1mb250LXByaW1hcnktcmVkJyxcbiAgICAgICAgICBTQUxNT046ICd0aWRlLWZvbnQtcHJpbWFyeS1zYWxtb24nLFxuICAgICAgICAgIFRFQUw6ICd0aWRlLWZvbnQtcHJpbWFyeS10ZWFsJyxcbiAgICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQtcHJpbWFyeS15ZWxsb3cnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWZvbnQtb24tcHJpbWFyeScsXG4gICAgICBTRUNPTkRBUlk6ICd0aWRlLWZvbnQtb24tc2Vjb25kYXJ5JyxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgQlJBTkQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1icmFuZCcsXG4gICAgICAgIERFRkFVTFQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZScsXG4gICAgICAgIElOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgICAgVkFSSUFOVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQnLFxuICAgICAgICBWQVJJQU5UX0lOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50LWludmVyc2UnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIFJPTEU6IHtcbiAgICAgIERJU1BMQVlfMTogJ3RpZGUtdHlwb2dyYXBoeS1kaXNwbGF5LTEnLFxuICAgICAgSEVBRExJTkVfMTogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0xJyxcbiAgICAgIEhFQURMSU5FXzI6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMicsXG4gICAgICBIRUFETElORV8zOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTMnLFxuICAgICAgVElUTEVfMTogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0xJyxcbiAgICAgIFRJVExFXzI6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMicsXG4gICAgICBCT0RZXzE6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0xJyxcbiAgICAgIEJPRFlfMjogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTInLFxuICAgICAgTEFCRUxfMTogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xJyxcbiAgICAgIExBQkVMXzFfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMS1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8yOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTInLFxuICAgICAgTEFCRUxfMl9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzM6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMycsXG4gICAgICBMSU5LXzE6ICd0aWRlLXR5cG9ncmFwaHktbGluay0xJyxcbiAgICAgIExJTktfMjogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTInLFxuICAgICAgTElOS18zOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMycsXG4gICAgICBCVVRUT05fMTogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMScsXG4gICAgICBCVVRUT05fMjogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMicsXG4gICAgfSxcbiAgICBTSVpFOiB7XG4gICAgICBUV0VMVkU6ICd0aWRlLWZvbnQtMTInLFxuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgICAgVEhJUlRZX1RXTzogJ3RpZGUtZm9udC0zMicsXG4gICAgfSxcbiAgICBXRUlHSFQ6IHtcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgRklWRV9IVU5EUkVEOiAndGlkZS1mb250LTUwMCcsXG4gICAgICBTSVhfSFVORFJFRDogJ3RpZGUtZm9udC02MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgIH0sXG4gIH0sXG4gIEdBUDoge1xuICAgIFpFUk86ICd0aWRlLWdhcC0wJyxcbiAgICBRVUFSVEVSOiAndGlkZS1nYXAtMS80JyxcbiAgICBIQUxGOiAndGlkZS1nYXAtMS8yJyxcbiAgICBPTkU6ICd0aWRlLWdhcC0xJyxcbiAgICBUV086ICd0aWRlLWdhcC0yJyxcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gIH0sXG4gIEdSSUQ6IHtcbiAgICBGTFVJRDogJ3RpZGUtZmx1aWQnLFxuICAgIElURU06ICd0aWRlLWdyaWQtaXRlbScsXG4gICAgTEFZT1VUOiAndGlkZS1ncmlkLWxheW91dCcsXG4gICAgWEw6ICd0aWRlLWdyaWQteGwnLFxuICB9LFxuICBIRUlHSFQ6IHtcbiAgICBBVVRPOiAndGlkZS1oZWlnaHQtYXV0bycsXG4gICAgWkVSTzogJ3RpZGUtaGVpZ2h0LTAnLFxuICAgIEZVTEw6ICd0aWRlLWhlaWdodC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LWhlaWdodC1mdWxsJyxcbiAgICBNSU5fWkVSTzogJ3RpZGUtbWluLWhlaWdodC0wJyxcbiAgfSxcbiAgSVNPTEFUSU9OOiB7XG4gICAgSVNPTEFURTogJ3RpZGUtaXNvbGF0ZScsXG4gIH0sXG4gIExJU1RfQlVMTEVUUzoge1xuICAgIE9GRjogJ3RpZGUtbGlzdC1ub25lJyxcbiAgfSxcbiAgTUFSR0lOOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tYm90dG9tLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi00JyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1sZWZ0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tbGVmdC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1sZWZ0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tcmlnaHQtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi10b3AtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXRvcC00JyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi14LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXgtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi14LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4teS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi15LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4teS0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4teS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXktMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teS00JyxcbiAgICB9LFxuICB9LFxuICBPQkpFQ1Q6IHtcbiAgICBDRU5URVI6ICd0aWRlLW9iamVjdC1jZW50ZXInLFxuICAgIENPTlRBSU46ICd0aWRlLW9iamVjdC1jb250YWluJyxcbiAgICBDT1ZFUjogJ3RpZGUtb2JqZWN0LWNvdmVyJyxcbiAgICBTQ0FMRV9ET1dOOiAndGlkZS1vYmplY3Qtc2NhbGUtZG93bicsXG4gIH0sXG4gIE9QQUNJVFk6IHtcbiAgICBPRkY6ICd0aWRlLW9wYWNpdHktbm9uZScsXG4gICAgT046ICd0aWRlLW9wYWNpdHknLFxuICB9LFxuICBPVkVSRkxPVzoge1xuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLXgtYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXgtaGlkZGVuJyxcbiAgICAgIFNDUk9MTDogJ3RpZGUteC1zY3JvbGwnLFxuICAgIH0sXG4gICAgWFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXh5LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14eS1oaWRkZW4nLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgQVVUTzogJ3RpZGUteS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteS1oaWRkZW4nLFxuICAgIH0sXG4gIH0sXG4gIFBBRERJTkc6IHtcbiAgICBCT1RUT006IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctYm90dG9tLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctbGVmdC00JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1yaWdodC00JyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy10b3AtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy10b3AtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy10b3AtNCcsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXgtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteC00JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmcteS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmcteS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmcteS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy15LTQnLFxuICAgIH0sXG4gIH0sXG4gIFBPSU5URVJfRVZFTlRTOiB7XG4gICAgT0ZGOiAndGlkZS1wb2ludGVyLWV2ZW50cy1ub25lJyxcbiAgICBPTjogJ3RpZGUtcG9pbnRlci1ldmVudHMnLFxuICB9LFxuICBQT1NJVElPTjoge1xuICAgIEFCU09MVVRFOiAndGlkZS1wb3NpdGlvbi1hYnNvbHV0ZScsXG4gICAgRklYRUQ6ICd0aWRlLXBvc2l0aW9uLWZpeGVkJyxcbiAgICBSRUxBVElWRTogJ3RpZGUtcG9zaXRpb24tcmVsYXRpdmUnLFxuICAgIFNUQVRJQzogJ3RpZGUtcG9zaXRpb24tc3RhdGljJyxcbiAgICBTVElDS1k6ICd0aWRlLXBvc2l0aW9uLXN0aWNreScsXG4gIH0sXG4gIFBPU0lUSU9OSU5HOiB7XG4gICAgQk9UVE9NOiAndGlkZS1ib3R0b20tMCcsXG4gICAgTEVGVDogJ3RpZGUtbGVmdC0wJyxcbiAgICBSSUdIVDogJ3RpZGUtcmlnaHQtMCcsXG4gICAgVE9QOiAndGlkZS10b3AtMCcsXG4gIH0sXG4gIFJBVElPOiB7XG4gICAgT05FX1RPX09ORTogJ3RpZGUtcmF0aW8tMS8xJyxcbiAgICBTSVhURUVOX1RPX05JTkU6ICd0aWRlLXJhdGlvLTE2LzknLFxuICAgIFRIUkVFX1RPX1RXTzogJ3RpZGUtcmF0aW8tMy8yJyxcbiAgfSxcbiAgU0NST0xMQkFSOiB7XG4gICAgT0ZGOiAndGlkZS1zY3JvbGxiYXItbm9uZScsXG4gIH0sXG4gIFNIQURPVzoge1xuICAgIElOSVRJQUw6ICd0aWRlLXNoYWRvdy1pbml0aWFsJyxcbiAgICBCT1RUT006ICd0aWRlLXNoYWRvdy1ib3R0b20nLFxuICAgIFRPUDogJ3RpZGUtc2hhZG93LXRvcCcsXG4gICAgVEVYVDogJ3RpZGUtc2hhZG93LXRleHQnLFxuICB9LFxuICBTTkFQOiB7XG4gICAgT046ICd0aWRlLXNjcm9sbC1zbmFwJyxcbiAgfSxcbiAgU05BUF9BTElHTjoge1xuICAgIFNUQVJUOiAndGlkZS1zY3JvbGwtc25hcC1zdGFydCcsXG4gIH0sXG4gIFRFWFRfVFJBTlNGT1JNOiB7XG4gICAgTE9XRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLWxvd2VyJyxcbiAgICBOT05FOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1ub25lJyxcbiAgICBVUFBFUjogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tdXBwZXInLFxuICB9LFxuICBVTkRFUkxJTkU6IHtcbiAgICBIT1ZFUjoge1xuICAgICAgT046ICd0aWRlLXVuZGVybGluZS1ob3ZlcicsXG4gICAgICBPRkY6ICd0aWRlLXVuZGVybGluZS1ob3Zlci1ub25lJyxcbiAgICB9LFxuICAgIFJFU1Q6IHtcbiAgICAgIE9OOiAndGlkZS11bmRlcmxpbmUnLFxuICAgICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtbm9uZScsXG4gICAgfSxcbiAgfSxcbiAgVklTSUJJTElUWToge1xuICAgIE9GRjogJ3RpZGUtdmlzaWJsZS1ub25lJyxcbiAgICBPTjogJ3RpZGUtdmlzaWJsZScsXG4gIH0sXG4gIFdISVRFU1BBQ0VfV1JBUDoge1xuICAgIE9GRjogJ3RpZGUtd2hpdGVzcGFjZS1ub3dyYXAnLFxuICB9LFxuICBXSURUSDoge1xuICAgIEFVVE86ICd0aWRlLXdpZHRoLWF1dG8nLFxuICAgIFpFUk86ICd0aWRlLXdpZHRoLTAnLFxuICAgIEZVTEw6ICd0aWRlLXdpZHRoLWZ1bGwnLFxuICAgIE1BWF9GVUxMOiAndGlkZS1tYXgtd2lkdGgtZnVsbCcsXG4gICAgTUlOX1pFUk86ICd0aWRlLW1pbi13aWR0aC0wJyxcbiAgfSxcbiAgWl9JTkRFWDoge1xuICAgIElOSVRJQUw6ICd0aWRlLXotaW5kZXgtaW5pdGlhbCcsXG4gICAgT05FOiAndGlkZS16LWluZGV4LTEnLFxuICB9LFxufSBhcyBjb25zdDtcbiIsImV4cG9ydCBjb25zdCBSRUFMTSA9IHtcbiAgQUVSTzogJ2Flcm8nLFxuICBBVFY6ICdhdHYnLFxuICBCT0FUTUFSVDogJ2JvYXRtYXJ0JyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIEVRVUlQTUVOVDogJ2VxdWlwbWVudCcsXG4gIFBXQzogJ3B3YycsXG4gIFJWOiAncnYnLFxuICBTTk9XOiAnc25vdycsXG4gIFRSVUNLOiAndHJ1Y2snLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVhbG1LZXkgPSBrZXlvZiB0eXBlb2YgUkVBTE07XG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW1JlYWxtS2V5XTtcbiIsImV4cG9ydCBjb25zdCBTSVpFID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG5cbmV4cG9ydCBjb25zdCBTSVpFX0JVVFRPTiA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZUJ1dHRvbiA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuIiwiY29uc3QgY2FwaXRhbGl6ZUZpcnN0ID0gKHN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59O1xuXG5jb25zdCBmb3JtYXRDYW1lbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvXltcXHNfLV0vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IHdvcmQgOiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdEtlYmFiQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnLScpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdExhYmVsID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZmFsc2U6ICdObycsXG4gICAgdHJ1ZTogJ1llcycsXG4gIH07XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGxhYmVsTWFwLCB2YWx1ZSkgPyBsYWJlbE1hcFt2YWx1ZV0gOiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChOdW1iZXIoZGlnaXRzKSkge1xuICAgICAgb3V0cHV0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KE51bWJlcihkaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQYXNjYWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBob25lID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IFN0cmluZyhpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcblxuICBzd2l0Y2ggKGRpZ2l0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDc6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzLCA2KX0tJHtkaWdpdHMuc2xpY2UoNil9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMSl9LSR7ZGlnaXRzLnNsaWNlKDEsIDQpfS0ke2RpZ2l0cy5zbGljZSg0LCA3KX0tJHtkaWdpdHMuc2xpY2UoNyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvdXRwdXQgPSBkaWdpdHM7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQcmljZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJCR7b3V0cHV0fWA7XG59O1xuXG5jb25zdCBmb3JtYXRRdW90ZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXCInKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgxLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBmb3JtYXRTZW50ZW5jZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBzZW50ZW5jZUNhc2UgPSBpbnB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZSA9IGlucHV0XG4gICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpO1xuXG4gICAgc2VudGVuY2VDYXNlID0gbG93ZXJDYXNlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsb3dlckNhc2Uuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gc2VudGVuY2VDYXNlO1xufTtcblxuY29uc3QgZm9ybWF0U25ha2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICdfJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VGl0bGVDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRVcmxGcm9tUm9vdCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmxGb3JtYXR0ZWQgPSB1cmwuc3BsaXQoJy5jb20vJyk7XG5cbiAgcmV0dXJuIHVybEZvcm1hdHRlZC5sZW5ndGggPiAxID8gYC8ke3VybEZvcm1hdHRlZFsxXX1gIDogdXJsO1xufTtcblxuY29uc3QgZm9ybWF0V2VpZ2h0ID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAke291dHB1dH0gbGJzYDtcbn07XG5cbmNvbnN0IGdldEFydGljbGUgPSAobm91bjogc3RyaW5nLCBpc1BsdXJhbCA9IGZhbHNlLCBpc0RlZmluaXRlID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgdm93ZWxzID0gWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXTtcbiAgY29uc3QgaXNWb3dlbExlYWRpbmcgPSB2b3dlbHMuaW5jbHVkZXMobm91bi5jaGFyQXQoMCkpO1xuXG4gIHJldHVybiBpc0RlZmluaXRlID8gJ3RoZScgOiBpc1BsdXJhbCA/ICdzb21lJyA6IGlzVm93ZWxMZWFkaW5nID8gJ2FuJyA6ICdhJztcbn07XG5cbmNvbnN0IHByaWNlVG9OdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJywgJycpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59O1xuXG5jb25zdCB1bmZvcm1hdFByaWNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKC9cXCQvZywgJycpLnJlcGxhY2UoLywvZywgJycpO1xuICByZXR1cm4gYCR7b3V0cHV0fWA7XG59O1xuXG5leHBvcnQge1xuICBjYXBpdGFsaXplRmlyc3QsXG4gIGZvcm1hdENhbWVsQ2FzZSxcbiAgZm9ybWF0S2ViYWJDYXNlLFxuICBmb3JtYXRMYWJlbCxcbiAgZm9ybWF0TnVtYmVyLFxuICBmb3JtYXRQYXNjYWxDYXNlLFxuICBmb3JtYXRQaG9uZSxcbiAgZm9ybWF0UHJpY2UsXG4gIGZvcm1hdFF1b3RlcyxcbiAgZm9ybWF0U2VudGVuY2VDYXNlLFxuICBmb3JtYXRTbmFrZUNhc2UsXG4gIGZvcm1hdFRpdGxlQ2FzZSxcbiAgZm9ybWF0VXJsRnJvbVJvb3QsXG4gIGZvcm1hdFdlaWdodCxcbiAgZ2V0QXJ0aWNsZSxcbiAgcHJpY2VUb051bWJlcixcbiAgdW5mb3JtYXRQcmljZSxcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgUkVBTE0gfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0UGFzY2FsQ2FzZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaWNvbjogSWNvbjtcbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IHtcbiAgICAgICAgaWYgKHJlYWxtRm9sZGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9yZWFsbS8ke3JlYWxtRm9sZGVyfS9JY29uJHtuYW1lfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpbm5lclNWRy52YWx1ZSA9IG1hcmtSYXcoY29tcG9uZW50KTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWljb24nLCBwcm9wcy5zaXplXVwiPlxuICAgIDxDb21wb25lbnRcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DS11cIlxuICAgICAgOmRhdGEtaWNvbj1cImljb25cIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlPlxuICAudGlkZS1pY29uIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbi5zbWFsbCB7XG4gICAgd2lkdGg6IDEuMjVyZW07XG4gICAgaGVpZ2h0OiAxLjI1cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbiBzdmcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVhbG1LZXkgfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcblxuZXhwb3J0IGNvbnN0IElDT04gPSB7XG4gIEFDQ09VTlRfQkFMQU5DRTogJ2FjY291bnQtYmFsYW5jZScsXG4gIEFDVVRFOiAnYWN1dGUnLFxuICBBREQ6ICdhZGQnLFxuICBBSV9ERVNDUklQVElPTjogJ2FpLWRlc2NyaXB0aW9uJyxcbiAgQUxJR05fU1BBQ0VfRVZFTjogJ2FsaWduLXNwYWNlLWV2ZW4nLFxuICBBUFBMRV9QQVk6ICdhcHBsZS1wYXknLFxuICBBUlJPV19CQUNLOiAnYXJyb3ctYmFjaycsXG4gIEFSUk9XX0NZQ0xFOiAnYXJyb3ctY3ljbGUnLFxuICBBUlJPV19GT1JXQVJEOiAnYXJyb3ctZm9yd2FyZCcsXG4gIEFSUk9XX1JJR0hUOiAnYXJyb3ctcmlnaHQnLFxuICBBU1NJR05NRU5UOiAnYXNzaWdubWVudCcsXG4gIEFUVEFDSF9NT05FWTogJ2F0dGFjaC1tb25leScsXG4gIEFVVE9fUkVORVc6ICdhdXRvLXJlbmV3JyxcbiAgQVdBUkRfU1RBUjogJ2F3YXJkLXN0YXInLFxuICBCRUQ6ICdiZWQnLFxuICBCT0xUOiAnYm9sdCcsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBCVU5LSE9VU0U6ICdidW5raG91c2UnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDQUxMX1FVQUxJVFk6ICdjYWxsLXF1YWxpdHknLFxuICBDQVJfUkVOVEFMOiAnY2FyLXJlbnRhbCcsXG4gIENIRUNLOiAnY2hlY2snLFxuICBDSEVWUk9OX0xFRlQ6ICdjaGV2cm9uLWxlZnQnLFxuICBDSEVWUk9OX1JJR0hUOiAnY2hldnJvbi1yaWdodCcsXG4gIENMRUFSOiAnY2xlYXInLFxuICBDTE9TRTogJ2Nsb3NlJyxcbiAgQ09OVFJBQ1Q6ICdjb250cmFjdCcsXG4gIENSQVNIOiAnY3Jhc2gnLFxuICBEQVNIQk9BUkRfQ1VTVE9NSVpFOiAnZGFzaGJvYXJkLWN1c3RvbWl6ZScsXG4gIERFTEVURTogJ2RlbGV0ZScsXG4gIERJQU1PTkQ6ICdkaWFtb25kJyxcbiAgRElSRUNUSU9OU19CT0FUOiAnZGlyZWN0aW9ucy1ib2F0JyxcbiAgRE9NQUlOOiAnZG9tYWluJyxcbiAgRFJBRlQ6ICdkcmFmdCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRU5HSU5FOiAnZW5naW5lJyxcbiAgRU5HSU5FRVJJTkc6ICdlbmdpbmVlcmluZycsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBFWFBBTkRfQ09OVEVOVDogJ2V4cGFuZC1jb250ZW50JyxcbiAgRVhQQU5EX0xFU1M6ICdleHBhbmQtbGVzcycsXG4gIEVYUEFORF9NT1JFOiAnZXhwYW5kLW1vcmUnLFxuICBGQUNFQk9PSzogJ2ZhY2Vib29rJyxcbiAgRkFWT1JJVEU6ICdmYXZvcml0ZScsXG4gIEZBVk9SSVRFX0ZJTExFRDogJ2Zhdm9yaXRlLWZpbGxlZCcsXG4gIEZMQUc6ICdmbGFnJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHQVM6ICdnYXMnLFxuICBHQVZFTDogJ2dhdmVsJyxcbiAgR0VBUlM6ICdnZWFycycsXG4gIEdMT0JFX0xPQ0FUSU9OX1BJTjogJ2dsb2JlLWxvY2F0aW9uLXBpbicsXG4gIEdPT0dMRTogJ2dvb2dsZScsXG4gIEdPT0dMRV9QQVk6ICdnb29nbGUtcGF5JyxcbiAgR1JJRDogJ2dyaWQnLFxuICBIQU5EU0hBS0U6ICdoYW5kc2hha2UnLFxuICBIQU5EWU1BTjogJ2hhbmR5bWFuJyxcbiAgSEVJR0hUOiAnaGVpZ2h0JyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElORk9STUFUSU9OOiAnaW5mb3JtYXRpb24nLFxuICBJTlNFUlRfVEVYVDogJ2luc2VydC10ZXh0JyxcbiAgSU5TVEFHUkFNOiAnaW5zdGFncmFtJyxcbiAgSU9TX1NIQVJFOiAnaW9zLXNoYXJlJyxcbiAgTEFZT1VUOiAnbGF5b3V0JyxcbiAgTEVWRUxMSU5HX0pBQ0s6ICdsZXZlbGxpbmctamFjaycsXG4gIExJTktFRF9JTjogJ2xpbmtlZCBpbicsXG4gIExPQ0FMX1NISVBQSU5HOiAnbG9jYWwtc2hpcHBpbmcnLFxuICBMT0NLOiAnbG9jaycsXG4gIE1BSUw6ICdtYWlsJyxcbiAgTUVOVTogJ21lbnUnLFxuICBNT05FWV9CQUc6ICdtb25leS1iYWcnLFxuICBNT1JFX0hPUklaOiAnbW9yZS1ob3JpeicsXG4gIE5PVElGSUNBVElPTlM6ICdub3RpZmljYXRpb25zJyxcbiAgT0RPTUVURVI6ICdvZG9tZXRlcicsXG4gIE9QRU5fSU5fTkVXOiAnb3Blbi1pbi1uZXcnLFxuICBQQUxFVFRFOiAncGFsZXR0ZScsXG4gIFBBWVBBTDogJ3BheXBhbCcsXG4gIFBFUlNPTjogJ3BlcnNvbicsXG4gIFBFUlNPTl9TRUFSQ0g6ICdwZXJzb24tc2VhcmNoJyxcbiAgUEhPVE9fQ0FNRVJBOiAncGhvdG8tY2FtZXJhJyxcbiAgUElOVEVSRVNUOiAncGludGVyZXN0JyxcbiAgUExBWV9BUlJPVzogJ3BsYXktYXJyb3cnLFxuICBQT0xJQ1k6ICdwb2xpY3knLFxuICBQT1dFUjogJ3Bvd2VyJyxcbiAgUE9XRVJfT0ZGOiAncG93ZXItb2ZmJyxcbiAgUFJJT1JJVFlfSElHSDogJ3ByaW9yaXR5LWhpZ2gnLFxuICBSRU1PVkU6ICdyZW1vdmUnLFxuICBSRVFVRVNUX1FVT1RFOiAncmVxdWVzdC1xdW90ZScsXG4gIFJFU0VUX1dSRU5DSDogJ3Jlc2V0LXdyZW5jaCcsXG4gIFJPQUQ6ICdyb2FkJyxcbiAgUk9VTkRFRF9DT1JORVI6ICdyb3VuZGVkLWNvcm5lcicsXG4gIFJVTEVSOiAncnVsZXInLFxuICBTQUlMSU5HOiAnc2FpbGluZycsXG4gIFNDSE9PTDogJ3NjaG9vbCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFNFQVRJTkc6ICdzZWF0aW5nJyxcbiAgU0VMTDogJ3NlbGwnLFxuICBTRU5TT1JTOiAnc2Vuc29ycycsXG4gIFNFVFRJTkdTOiAnc2V0dGluZ3MnLFxuICBTSEFSRTogJ3NoYXJlJyxcbiAgU0hJRUxEX0NIRUNLOiAnc2hpZWxkLWNoZWNrJyxcbiAgU0hPUFBJTkdfQ0FSVDogJ3Nob3BwaW5nLWNhcnQnLFxuICBTTEVFUFM6ICdzbGVlcHMnLFxuICBTTVM6ICdzbXMnLFxuICBTTk9XRkxBS0U6ICdzbm93Zmxha2UnLFxuICBTVEFSOiAnc3RhcicsXG4gIFNVTU1BUklaRTogJ3N1bW1hcml6ZScsXG4gIFNXQVBfSE9SSVo6ICdzd2FwLWhvcml6JyxcbiAgU1dBUF9WRVJUOiAnc3dhcC12ZXJ0JyxcbiAgVEhSRUVfRF9ST1RBVElPTjogJ3RocmVlLWQtcm90YXRpb24nLFxuICBUSFVNQl9VUDogJ3RodW1iLXVwJyxcbiAgVFJFTkRJTkdfRE9XTjogJ3RyZW5kaW5nLWRvd24nLFxuICBUUk9QSFk6ICd0cm9waHknLFxuICBUVU5FOiAndHVuZScsXG4gIFRXSVRURVI6ICd0d2l0dGVyJyxcbiAgVU1CUkVMTEE6ICd1bWJyZWxsYScsXG4gIFZFUklGSUVEOiAndmVyaWZpZWQnLFxuICBWSURFT0NBTTogJ3ZpZGVvY2FtJyxcbiAgVklFV19JTl9BUjogJ3ZpZXctaW4tYXInLFxuICBWSVNJQklMSVRZOiAndmlzaWJpbGl0eScsXG4gIFZPTFVNRV9PRkY6ICd2b2x1bWUtb2ZmJyxcbiAgVk9MVU1FX09OOiAndm9sdW1lLW9uJyxcbiAgV0FSRUhPVVNFOiAnd2FyZWhvdXNlJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBXQVRFUjogJ3dhdGVyJyxcbiAgV0VJR0hUOiAnd2VpZ2h0JyxcbiAgV0lEVEg6ICd3aWR0aCcsXG4gIFdPUktTUEFDRV9QUkVNSVVNOiAnd29ya3NwYWNlLXByZW1pdW0nLFxuICBXUkVOQ0g6ICd3cmVuY2gnLFxuICBZT1VUVUJFOiAneW91dHViZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgSUNPTl9SRUFMTSA9IHtcbiAgQVRWOiB7XG4gICAgQVRWOiAnYXR2LWF0dicsXG4gICAgRFVORV9CVUdHWTogJ2F0di1kdW5lLWJ1Z2d5JyxcbiAgICBHT0xGX0NBUlQ6ICdhdHYtZ29sZi1jYXJ0JyxcbiAgICBHT19LQVJUOiAnYXR2LWdvLWthcnQnLFxuICAgIFNBTkRfUkFJTDogJ2F0di1zYW5kLXJhaWwnLFxuICAgIFNJREVfQllfU0lERTogJ2F0di1zaWRlLWJ5LXNpZGUnLFxuICAgIFRSQUlMRVI6ICdhdHYtdHJhaWxlcicsXG4gIH0sXG4gIEJPQVRNQVJUOiB7XG4gICAgUFdDOiAnYm9hdG1hcnQtcHdjJyxcbiAgICBUUkFJTEVSOiAnYm9hdG1hcnQtdHJhaWxlcicsXG4gIH0sXG4gIFJWOiB7XG4gICAgQ0xBU1NfQTogJ3J2LWNsYXNzLWEnLFxuICAgIENMQVNTX0I6ICdydi1jbGFzcy1iJyxcbiAgICBDTEFTU19DOiAncnYtY2xhc3MtYycsXG4gICAgRklGVEhfV0hFRUw6ICdydi1maWZ0aC13aGVlbCcsXG4gICAgRklTSF9IT1VTRTogJ3J2LWZpc2gtaG91c2UnLFxuICAgIFBBUktfTU9ERUw6ICdydi1wYXJrLW1vZGVsJyxcbiAgICBQT1BfVVBfQ0FNUEVSOiAncnYtcG9wLXVwLWNhbXBlcicsXG4gICAgVFJBVkVMX1RSQUlMRVI6ICdydi10cmF2ZWwtdHJhaWxlcicsXG4gICAgVFJVQ0tfQ0FNUEVSOiAncnYtdHJ1Y2stY2FtcGVyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgUmVhbG1LZXlzV2l0aEljb25zID0gRXh0cmFjdDxSZWFsbUtleSwga2V5b2YgdHlwZW9mIElDT05fUkVBTE0+O1xudHlwZSBSZWFsbUljb24gPSB7XG4gIFtSZWFsbUtleSBpbiBSZWFsbUtleXNXaXRoSWNvbnNdOiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XVtrZXlvZiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XV07XG59W1JlYWxtS2V5c1dpdGhJY29uc107XG5cbmV4cG9ydCB0eXBlIEdsb2JhbEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcbmV4cG9ydCB0eXBlIEljb24gPSBHbG9iYWxJY29uIHwgUmVhbG1JY29uO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ3RvZ2dsZSddKTtcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhhc0JvdHRvbURpdmlkZXI/OiBib29sZWFuO1xuICAgIGhhc1RvcERpdmlkZXI/OiBib29sZWFuO1xuICAgIGlzRXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIGlzT3B0aW9uYWw/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoYXNCb3R0b21EaXZpZGVyOiBmYWxzZSxcbiAgICBoYXNUb3BEaXZpZGVyOiBmYWxzZSxcbiAgICBpc0V4cGFuZGVkOiBmYWxzZSxcbiAgICBpc09wdGlvbmFsOiBmYWxzZSxcbiAgICBsYWJlbDogJycsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUNsaWNrID0gKCkgPT4ge1xuICAgIGVtaXQoJ3RvZ2dsZScpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInRpZGUtYWNjb3JkaW9uLWl0ZW1cIj5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc1RvcERpdmlkZXJcIiAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1oZWFkJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLlkuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVUb2dnbGVDbGlja1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTERdXCI+XG4gICAgICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5pc09wdGlvbmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgIChvcHRpb25hbClcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImlzRXhwYW5kZWQgPyBJQ09OLkVYUEFORF9MRVNTIDogSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWJvZHknLCBwcm9wcy5pc0V4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnLCBDU1MuRElTUExBWS5HUklEXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLk9WRVJGTE9XLlkuSElEREVOLCBDU1MuTUFSR0lOLlkuT05FLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc0JvdHRvbURpdmlkZXJcIiAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFjY29yZGlvbi1ib2R5IHtcbiAgICB0cmFuc2l0aW9uOiBncmlkLXRlbXBsYXRlLXJvd3MgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmV4cGFuZGVkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmNvbGxhcHNlZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAwZnI7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgRUxFTUVOVCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfVEVYVF9BU19JQ09OID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBESVY6ICdkaXYnLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFbGVtZW50ID0gKHR5cGVvZiBFTEVNRU5UKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF07XG5leHBvcnQgdHlwZSBFbGVtZW50VGV4dEFzSWNvbiA9ICh0eXBlb2YgRUxFTUVOVF9URVhUX0FTX0lDT04pW2tleW9mIHR5cGVvZiBFTEVNRU5UX1RFWFRfQVNfSUNPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiZXhwb3J0IGNvbnN0IEFMRVJUID0ge1xuICBFUlJPUjogJ2Vycm9yJyxcbiAgSU5GTzogJ2luZm8nLFxuICBTVUNDRVNTOiAnc3VjY2VzcycsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFsZXJ0ID0gKHR5cGVvZiBBTEVSVClba2V5b2YgdHlwZW9mIEFMRVJUXTtcbiIsImltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuZXhwb3J0IGNvbnN0IEJBREdFX0NPTE9SID0ge1xuICBCTEFDSzogJ2JsYWNrJyxcbiAgQkxVRTogJ2JsdWUnLFxuICBHUkVFTjogJ2dyZWVuJyxcbiAgTElNRTogJ2xpbWUnLFxuICBPUkFOR0U6ICdvcmFuZ2UnLFxuICBQVVJQTEU6ICdwdXJwbGUnLFxuICBSRUQ6ICdyZWQnLFxuICBTQUxNT046ICdzYWxtb24nLFxuICBURUFMOiAndGVhbCcsXG4gIFlFTExPVzogJ3llbGxvdycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgQkFER0VfQ09MT1JfREVUQUlMUzogUmVjb3JkPFxuICBCYWRnZUNvbG9yLFxuICB7XG4gICAgYm9yZGVyQ29sb3I6IHN0cmluZztcbiAgICBpY29uQ29sb3I6IHN0cmluZztcbiAgfVxuPiA9IHtcbiAgW0JBREdFX0NPTE9SLkJMQUNLXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkhJR0gsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5CTFVFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5CTFVFLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuQkxVRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkdSRUVOXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5HUkVFTixcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkdSRUVOLFxuICB9LFxuICBbQkFER0VfQ09MT1IuTElNRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuTElNRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkxJTUUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5PUkFOR0VdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLk9SQU5HRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLk9SQU5HRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlBVUlBMRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuUFVSUExFLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuUFVSUExFLFxuICB9LFxuICBbQkFER0VfQ09MT1IuUkVEXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5SRUQsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5SRUQsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5TQUxNT05dOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlNBTE1PTixcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlNBTE1PTixcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlRFQUxdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlRFQUwsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5URUFMLFxuICB9LFxuICBbQkFER0VfQ09MT1IuWUVMTE9XXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5ZRUxMT1csXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5ZRUxMT1csXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgQkFER0VfVFJVU1RFRCA9IHtcbiAgWUVBUlNfMTA6ICcxMCcsXG4gIFlFQVJTXzE1OiAnMTUnLFxuICBZRUFSU181OiAnNScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBCYWRnZUNvbG9yID0gKHR5cGVvZiBCQURHRV9DT0xPUilba2V5b2YgdHlwZW9mIEJBREdFX0NPTE9SXTtcbmV4cG9ydCB0eXBlIEJhZGdlVHJ1c3RlZFllYXJzID0gKHR5cGVvZiBCQURHRV9UUlVTVEVEKVtrZXlvZiB0eXBlb2YgQkFER0VfVFJVU1RFRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBUYWIgfSBmcm9tICdAL3R5cGVzL1RhYic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhY3RpdmVUYWI6IG51bWJlcjtcbiAgICB0YWJzOiBUYWJbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFjdGl2ZVRhYjogMCxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBlbWl0KCdjaGFuZ2UnLCBpbmRleCk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uLXNlZ21lbnRlZCcsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgXVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWJ1dHRvbi1zZWdtZW50ZWQtdGFiJyxcbiAgICAgICAgaW5kZXggPT09IGFjdGl2ZVRhYlxuICAgICAgICAgID8gW0NTUy5CRy5TVVJGQUNFLkRFRkFVTFQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLlNIQURPVy5CT1RUT01dXG4gICAgICAgICAgOiBbJ2luYWN0aXZlJywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXSxcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLlRXTyxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5RVUFSVEVSLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CVVRUT05fMSxcbiAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICBdXCJcbiAgICAgIDpkYXRhLXRyYWNrPVwidGFiLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgOmtleT1cInRhYi5sYWJlbFwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhpbmRleClcIlxuICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gcHJvcHMudGFic1wiXG4gICAgPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMl9TRU1JQk9MRF1cIj5cbiAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzJfU0VNSUJPTERdXCJcbiAgICAgICAgdi1pZj1cInRhYi5jb3VudCAmJiB0YWIuY291bnQgPiAwXCJcbiAgICAgID5cbiAgICAgICAgKHt7IHRhYi5jb3VudCB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1idXR0b24tc2VnbWVudGVkIHtcbiAgICBtYXgtd2lkdGg6IDIzLjNyZW07XG4gIH1cblxuICAudGlkZS1idXR0b24tc2VnbWVudGVkLXRhYiB7XG4gICAgZmxleDogMTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAuaW5hY3RpdmU6bm90KDpob3Zlcikge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLmluYWN0aXZlOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWRlZmF1bHQpO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRZUEVfQ0FSRCA9IHtcbiAgQUNUSU9OQUJMRTogJ2FjdGlvbicsXG4gIElORk9STUFUSU9OQUw6ICdpbmZvcm1hdGlvbmFsJyxcbiAgU0VMRUNUQUJMRTogJ3NlbGVjdCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBDYXJkVHlwZSA9ICh0eXBlb2YgVFlQRV9DQVJEKVtrZXlvZiB0eXBlb2YgVFlQRV9DQVJEXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIG9uVXBkYXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGJsZWVkPzogbnVtYmVyO1xuICAgIGlzRmxvYXRpbmc/OiBib29sZWFuO1xuICAgIGlzSGVhZGxpbmUxPzogYm9vbGVhbjtcbiAgICBpc0hpZGVhd2F5QnV0dG9ucz86IGJvb2xlYW47XG4gICAgaXNUb3VjaHNjcmVlbj86IGJvb2xlYW47XG4gICAgc3VidGl0bGU/OiBzdHJpbmc7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBibGVlZDogdW5kZWZpbmVkLFxuICAgIGlzRmxvYXRpbmc6IGZhbHNlLFxuICAgIGlzSGVhZGxpbmUxOiBmYWxzZSxcbiAgICBpc0hpZGVhd2F5QnV0dG9uczogdHJ1ZSxcbiAgICBpc1RvdWNoc2NyZWVuOiB1bmRlZmluZWQsXG4gICAgc3VidGl0bGU6IHVuZGVmaW5lZCxcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3NsaWRlQ2hhbmdlJywgc2xpZGVJbmRleDogbnVtYmVyKTogdm9pZDtcbiAgICAoZXZlbnQ6ICdzbGlkZXNBZGRlZFRvVmlldycsIHNsaWRlc0luVmlldzogbnVtYmVyW10pOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBjb250YWluZXJSZWY6IFJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBzbGlkZU9ic2VydmVyID0gcmVmPEludGVyc2VjdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHNsb3RPYnNlcnZlciA9IHJlZjxNdXRhdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGNvbnRlbnRSaWdodEVkZ2UgPSByZWYoKTtcbiAgY29uc3QgY29udGVudFdpZHRoID0gcmVmKCk7XG4gIGNvbnN0IGN1cnJlbnRTbGlkZSA9IHJlZigwKTtcbiAgY29uc3QgZnJhbWVXaWR0aCA9IHJlZigpO1xuICBjb25zdCBoYXNPdmVyZmxvdyA9IHJlZigpO1xuICBjb25zdCBpc0ZpcnN0U2xpZGUgPSByZWYoKTtcbiAgY29uc3QgaXNMYXN0U2xpZGUgPSByZWYoKTtcbiAgY29uc3QgbGFzdFBvc2l0aW9uID0gcmVmKCk7XG4gIGNvbnN0IHNob3dCdXR0b25zID0gcmVmKCk7XG5cbiAgY29uc3QgdXBkYXRlQ29udGFpbmVyQmxlZWQgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLmJsZWVkID09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcblxuICAgIGlmIChpc0xhc3RTbGlkZS52YWx1ZSAmJiBzaG93QnV0dG9ucy52YWx1ZSkge1xuICAgICAgLy8gUHJldmVudCBncmFkaWVudCBmcm9tIGJsZWVkaW5nIG9mZiBsZWZ0IGVkZ2UgaW4gbGFzdCBwb3NpdGlvbi5cbiAgICAgIGNvbnRhaW5lclJlZi52YWx1ZS5zdHlsZS5tYXJnaW4gPSBgLSR7cHJvcHMuYmxlZWR9cHggLSR7cHJvcHMuYmxlZWR9cHggLSR7cHJvcHMuYmxlZWR9cHggMGA7XG4gICAgICBjb250YWluZXJSZWYudmFsdWUuc3R5bGUucGFkZGluZyA9IGAke3Byb3BzLmJsZWVkfXB4ICR7cHJvcHMuYmxlZWR9cHggJHtwcm9wcy5ibGVlZH1weCAwYDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUHJldmVudCBncmFkaWVudCBmcm9tIGJsZWVkaW5nIG9mZiByaWdodCBlZGdlIGluIGZpcnN0IHBvc2l0aW9uLlxuICAgICAgY29udGFpbmVyUmVmLnZhbHVlLnN0eWxlLm1hcmdpbiA9IGAtJHtwcm9wcy5ibGVlZH1weCAwIC0ke3Byb3BzLmJsZWVkfXB4IC0ke3Byb3BzLmJsZWVkfXB4YDtcbiAgICAgIGNvbnRhaW5lclJlZi52YWx1ZS5zdHlsZS5wYWRkaW5nID0gYCR7cHJvcHMuYmxlZWR9cHggMCAke3Byb3BzLmJsZWVkfXB4ICR7cHJvcHMuYmxlZWR9cHhgO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogTWVhc3VyZSB0aGUgY3VycmVudCBzbGlkZSBiYXNlZCBvbiB0aGUgc2Nyb2xsXG4gICAqIHBvc2l0aW9uIG9mIHRoZSBmcmFtZS4gVGhlIGN1cnJlbnQgc2xpZGUgaXNcbiAgICogdGhlIHNsaWRlIHRoYXQgaXMgY2xvc2VzdCB0byB0aGUgbGVmdCBlZGdlIG9mXG4gICAqIHRoZSBmcmFtZS5cbiAgICovXG4gIGNvbnN0IG1lYXN1cmVDdXJyZW50U2xpZGUgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLnZhbHVlO1xuICAgIGlmICghY29udGFpbmVyKSByZXR1cm47XG5cbiAgICAvLyBDYXN0IG9uY2UsIHNvIFRTIGtub3dzIHRoZXNlIGFyZSBIVE1MRWxlbWVudHNcbiAgICBjb25zdCBzbGlkZU9mZnNldHMgPSBBcnJheS5mcm9tKGNvbnRhaW5lci5jaGlsZHJlbiBhcyBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PikubWFwKFxuICAgICAgKHNsaWRlKSA9PiBzbGlkZS5vZmZzZXRMZWZ0XG4gICAgKTtcblxuICAgIGlmIChzbGlkZU9mZnNldHMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBzY3JvbGxMZWZ0ID0gY29udGFpbmVyLnNjcm9sbExlZnQ7XG5cbiAgICBjb25zdCBjbG9zZXN0U2xpZGVPZmZzZXQgPSBzbGlkZU9mZnNldHMucmVkdWNlKChwcmV2LCBjdXJyKSA9PlxuICAgICAgTWF0aC5hYnMoY3VyciAtIHNjcm9sbExlZnQpIDwgTWF0aC5hYnMocHJldiAtIHNjcm9sbExlZnQpID8gY3VyciA6IHByZXZcbiAgICApO1xuXG4gICAgY3VycmVudFNsaWRlLnZhbHVlID0gc2xpZGVPZmZzZXRzLmluZGV4T2YoY2xvc2VzdFNsaWRlT2Zmc2V0KTtcblxuICAgIHVwZGF0ZUNvbnRhaW5lckJsZWVkKCk7XG4gIH07XG5cbiAgY29uc3QgbWVhc3VyZURvbSA9ICgpID0+IHtcbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG4gICAgY29udGVudFJpZ2h0RWRnZS52YWx1ZSA9IE1hdGgucm91bmQoY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbExlZnQgKyBjb250YWluZXJSZWYudmFsdWUuY2xpZW50V2lkdGgpO1xuICAgIGNvbnRlbnRXaWR0aC52YWx1ZSA9IGNvbnRhaW5lclJlZi52YWx1ZS5zY3JvbGxXaWR0aDtcbiAgICBmcmFtZVdpZHRoLnZhbHVlID0gY29udGFpbmVyUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICAgIGhhc092ZXJmbG93LnZhbHVlID0gY29udGVudFdpZHRoLnZhbHVlID4gZnJhbWVXaWR0aC52YWx1ZTtcbiAgICBpc0ZpcnN0U2xpZGUudmFsdWUgPSBjdXJyZW50U2xpZGUudmFsdWUgPT09IDA7XG4gICAgaXNMYXN0U2xpZGUudmFsdWUgPSBjb250ZW50UmlnaHRFZGdlLnZhbHVlID09PSBjb250ZW50V2lkdGgudmFsdWU7XG4gICAgbGFzdFBvc2l0aW9uLnZhbHVlID0gY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFdpZHRoIC0gY29udGFpbmVyUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICAgIHNob3dCdXR0b25zLnZhbHVlID0gaGFzT3ZlcmZsb3cudmFsdWUgJiYgIXByb3BzLmlzVG91Y2hzY3JlZW47XG5cbiAgICBtZWFzdXJlQ3VycmVudFNsaWRlKCk7XG4gIH07XG5cbiAgLy8gVE9ETzogZGVib3VuY2UgdGhpc1xuICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgbWVhc3VyZURvbSgpO1xuICB9O1xuXG4gIGNvbnN0IHNjcm9sbFRvU2xpZGUgPSAoc2xpZGVJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIGNvbnRhaW5lclJlZi52YWx1ZS5zY3JvbGxUbyh7XG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICBsZWZ0OiAoY29udGFpbmVyUmVmLnZhbHVlLmNoaWxkcmVuW3NsaWRlSW5kZXhdIGFzIEhUTUxFbGVtZW50KS5vZmZzZXRMZWZ0LFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHNob3dOZXh0U2xpZGUgPSAoKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIGlmIChjb250ZW50UmlnaHRFZGdlLnZhbHVlID4gY29udGVudFdpZHRoLnZhbHVlKSB7XG4gICAgICBjb250YWluZXJSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgIGxlZnQ6IGNvbnRlbnRXaWR0aC52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIWlzTGFzdFNsaWRlLnZhbHVlKSB7XG4gICAgICBzY3JvbGxUb1NsaWRlKGN1cnJlbnRTbGlkZS52YWx1ZSArIDEpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzaG93UHJldmlvdXNTbGlkZSA9ICgpID0+IHtcbiAgICBpZiAoIWlzRmlyc3RTbGlkZS52YWx1ZSkge1xuICAgICAgc2Nyb2xsVG9TbGlkZShjdXJyZW50U2xpZGUudmFsdWUgLSAxKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb2JzZXJ2ZVNsaWRlcyA9ICgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdDogY29udGFpbmVyUmVmPy52YWx1ZSxcbiAgICAgIHJvb3RNYXJnaW46ICcwcHgnLFxuICAgICAgdGhyZXNob2xkOiAwLjUsXG4gICAgfTtcblxuICAgIHNsaWRlT2JzZXJ2ZXIudmFsdWUgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgIGxldCBzbGlkZXM6IG51bWJlcltdID0gW107XG5cbiAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGVJbmRleCA9IEFycmF5LmZyb20oY29udGFpbmVyUmVmLnZhbHVlPy5jaGlsZHJlbiA/PyBbXSkuaW5kZXhPZihlbnRyeS50YXJnZXQpO1xuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICBzbGlkZXMucHVzaChzbGlkZUluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChzbGlkZXMubGVuZ3RoID4gMCkgZW1pdCgnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXMpO1xuICAgIH0sIG9wdGlvbnMpO1xuICAgIEFycmF5LmZyb20oY29udGFpbmVyUmVmLnZhbHVlPy5jaGlsZHJlbiA/PyBbXSkuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgIGlmIChzbGlkZU9ic2VydmVyLnZhbHVlKSBzbGlkZU9ic2VydmVyLnZhbHVlLm9ic2VydmUoY2hpbGQpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbG90ID0gKCkgPT4ge1xuICAgIGNvbnN0IG9ic2VydmVyQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICBvYnNlcnZlU2xpZGVzKCk7XG4gICAgfTtcbiAgICBzbG90T2JzZXJ2ZXIudmFsdWUgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihvYnNlcnZlckNhbGxiYWNrKTtcbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlKSBzbG90T2JzZXJ2ZXIudmFsdWUub2JzZXJ2ZShjb250YWluZXJSZWYudmFsdWUsIHsgY2hpbGRMaXN0OiB0cnVlIH0pO1xuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKHdpbmRvdykge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG1lYXN1cmVEb20pO1xuICAgIH1cblxuICAgIG1lYXN1cmVEb20oKTtcbiAgICBvYnNlcnZlU2xpZGVzKCk7XG4gICAgb2JzZXJ2ZVNsb3QoKTtcbiAgfSk7XG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgICBzbGlkZU9ic2VydmVyLnZhbHVlPy5kaXNjb25uZWN0KCk7XG4gICAgc2xvdE9ic2VydmVyLnZhbHVlPy5kaXNjb25uZWN0KCk7XG4gIH0pO1xuXG4gIG9uVXBkYXRlZCgoKSA9PiB7XG4gICAgbWVhc3VyZURvbSgpO1xuICB9KTtcblxuICB3YXRjaChjdXJyZW50U2xpZGUsICgpID0+IHtcbiAgICBlbWl0KCdzbGlkZUNoYW5nZScsIGN1cnJlbnRTbGlkZS52YWx1ZSk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jYXJvdXNlbCcsXG4gICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuT05FLFxuICAgICAgQ1NTLldJRFRILk1BWF9GVUxMLFxuICAgIF1cIlxuICAgIHJlZj1cImNhcm91c2VsUmVmXCJcbiAgPlxuICAgIDxzZWN0aW9uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgcHJvcHMudGl0bGUgPyBDU1MuQVhJUzEuQkVUV0VFTiA6IENTUy5BWElTMS5FTkQsIENTUy5BWElTMi5DRU5URVIsIENTUy5XSURUSC5GVUxMXVwiXG4gICAgICB2LWlmPVwiIXByb3BzLmlzRmxvYXRpbmcgJiYgKHNob3dCdXR0b25zIHx8IHByb3BzLnRpdGxlKVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5PTkVdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLnRpdGxlIHx8IHByb3BzLnN1YnRpdGxlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltpc0hlYWRsaW5lMSA/IENTUy5GT05ULlJPTEUuSEVBRExJTkVfMSA6IENTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy50aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy50aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnN1YnRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnN1YnRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuT05FXVwiXG4gICAgICAgIHYtaWY9XCJzaG93QnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpkaXNhYmxlZD1cImN1cnJlbnRTbGlkZSA9PT0gMFwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuVEVSVElBUllcIlxuICAgICAgICAgIEBjbGljaz1cInNob3dQcmV2aW91c1NsaWRlXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0xhc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJzaG93TmV4dFNsaWRlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzbG90IG5hbWU9XCJtaXNjXCIgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5SRUxBVElWRV1cIj5cbiAgICAgIDx1bFxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtY29udGFpbmVyJyxcbiAgICAgICAgICBwcm9wcy5ibGVlZCAmJiAnYmxlZWQnLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkdBUC5PTkUsXG4gICAgICAgICAgQ1NTLkxJU1RfQlVMTEVUUy5PRkYsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlguU0NST0xMLFxuICAgICAgICAgIENTUy5TQ1JPTExCQVIuT0ZGLFxuICAgICAgICAgIENTUy5TTkFQLk9OLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwiY29udGFpbmVyUmVmXCJcbiAgICAgICAgQHNjcm9sbD1cImhhbmRsZVNjcm9sbFwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheScsXG4gICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIHByb3BzLmlzSGlkZWF3YXlCdXR0b25zID8gJ2hpZGVhd2F5JyA6ICcnLFxuICAgICAgXVwiXG4gICAgICB2LWlmPVwiaXNGbG9hdGluZyAmJiBzaG93QnV0dG9uc1wiXG4gICAgPlxuICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkxFRlQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgOmRpc2FibGVkPVwiY3VycmVudFNsaWRlID09PSAwXCJcbiAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICBAY2xpY2s9XCJzaG93UHJldmlvdXNTbGlkZVwiXG4gICAgICAvPlxuXG4gICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgOmRpc2FibGVkPVwiaXNMYXN0U2xpZGVcIlxuICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICBAY2xpY2s9XCJzaG93TmV4dFNsaWRlXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNhcm91c2VsLWNvbnRhaW5lci5ibGVlZCB7XG4gICAgdHJhbnNpdGlvbjogbWFyZ2luIHZhcigtLXRpZGUtYW5pbWF0ZSksIHBhZGRpbmcgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5LmhpZGVhd2F5IHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWw6aG92ZXIgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkuaGlkZWF3YXkge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgT0JKRUNUX0ZJVCA9IHtcbiAgQ09OVEFJTjogJ2NvbnRhaW4nLFxuICBDT1ZFUjogJ2NvdmVyJyxcbiAgU0NBTEVfRE9XTjogJ3NjYWxlLWRvd24nLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgT2JqZWN0Rml0ID0gKHR5cGVvZiBPQkpFQ1RfRklUKVtrZXlvZiB0eXBlb2YgT0JKRUNUX0ZJVF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBPQkpFQ1RfRklUIH0gZnJvbSAnQC90eXBlcy9JbWFnZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IE9iamVjdEZpdCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgdHlwZSB7IFNvdXJjZSB9IGZyb20gJ0AvdHlwZXMvU291cmNlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFsdDogc3RyaW5nO1xuICAgIGhlaWdodD86IHN0cmluZztcbiAgICBpc0xhenk/OiBib29sZWFuO1xuICAgIG9iamVjdEZpdD86IE9iamVjdEZpdDtcbiAgICBzb3VyY2VzPzogU291cmNlW107XG4gICAgc3JjPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBoZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgb2JqZWN0Rml0OiBPQkpFQ1RfRklULkNPVkVSLFxuICAgIHNvdXJjZXM6ICgpID0+IFtdLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHBpY3R1cmUgPSByZWYoKTtcbiAgY29uc3QgaW1nID0gcmVmKCk7XG5cbiAgY29uc3QgaW1hZ2VEZWZhdWx0ID0gJ2h0dHBzOi8vY2RuLXN0YXRpYy50aWxhYnMuaW8vbWFya2V0cGxhY2UvY29tbW9uL2ltYWdlLWNvbWluZy1zb29uLnN2Zyc7XG5cbiAgY29uc3Qgb2JqZWN0Rml0Q2xhc3NOYW1lID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgc3dpdGNoIChwcm9wcy5vYmplY3RGaXQpIHtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5DT05UQUlOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT05UQUlOO1xuICAgICAgY2FzZSBPQkpFQ1RfRklULkNPVkVSOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT1ZFUjtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5TQ0FMRV9ET1dOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5TQ0FMRV9ET1dOO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIE9CSkVDVF9GSVQuQ09WRVI7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBzZXRJbWFnZUZyb21EZWZhdWx0ID0gKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRTcmMgPSBpbWcudmFsdWU/LmN1cnJlbnRTcmM7XG4gICAgY29uc3QgcGljdHVyZVNvdXJjZSA9IHBpY3R1cmUudmFsdWU/LnF1ZXJ5U2VsZWN0b3IoYHNvdXJjZVtzcmNzZXQ9XCIke2N1cnJlbnRTcmN9XCJdYCk7XG5cbiAgICBpZiAoY3VycmVudFNyYyAmJiBwaWN0dXJlU291cmNlKSB7XG4gICAgICBwaWN0dXJlU291cmNlLnNyY3NldCA9IGltYWdlRGVmYXVsdDtcbiAgICB9IGVsc2UgaWYgKGltZy52YWx1ZSkge1xuICAgICAgaW1nLnZhbHVlLnNyYyA9IGltYWdlRGVmYXVsdDtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8cGljdHVyZVxuICAgIDpjbGFzcz1cIlsndGlkZS1pbWFnZScsIENTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgcmVmPVwicGljdHVyZVwiXG4gICAgOnN0eWxlPVwiXG4gICAgICB3aWR0aCB8fCBoZWlnaHRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB3aWR0aDogd2lkdGggfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICBcIlxuICA+XG4gICAgPHNvdXJjZVxuICAgICAgOmtleT1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgOm1lZGlhPVwiYChtaW4td2lkdGg6JHtzb3VyY2UubWVkaWF9cHgpYFwiXG4gICAgICA6c3Jjc2V0PVwic291cmNlLnNyY3NldFwiXG4gICAgICB2LWZvcj1cInNvdXJjZSBpbiBwcm9wcy5zb3VyY2VzXCJcbiAgICAvPlxuXG4gICAgPGltZ1xuICAgICAgOmFsdD1cImFsdFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLk9CSkVDVC5DRU5URVIsIG9iamVjdEZpdENsYXNzTmFtZV1cIlxuICAgICAgOmZldGNocHJpb3JpdHk9XCJpc0xhenkgPyB1bmRlZmluZWQgOiAnaGlnaCdcIlxuICAgICAgOmxvYWRpbmc9XCJwcm9wcy5pc0xhenkgPyAnbGF6eScgOiAnZWFnZXInXCJcbiAgICAgIHJlZj1cImltZ1wiXG4gICAgICA6c3JjPVwic3JjID8/IGltYWdlRGVmYXVsdFwiXG4gICAgICBAZXJyb3I9XCJzZXRJbWFnZUZyb21EZWZhdWx0XCJcbiAgICAvPlxuICA8L3BpY3R1cmU+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGF0YVRyYWNrOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5kZXRlcm1pbmF0ZTogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5jaGVja2VkIHx8IHByb3BzLmluZGV0ZXJtaW5hdGUpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICBkaXNhYmxlZCA/IFsnZGlzYWJsZWQnLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXSA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICBdXCJcbiAgICA6ZGF0YS10cmFjaz1cInByb3BzLmRhdGFUcmFja1wiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiaXNDaGVja2VkXCJcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5OT05FXVwiXG4gICAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICA6bmFtZT1cInByb3BzLm5hbWVcIlxuICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgQGNsaWNrLnByZXZlbnRcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGlzQ2hlY2tlZCA/IFtDU1MuQk9SREVSLkNPTE9SLkhJR0gsIENTUy5CRy5TRUNPTkRBUlldIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICAgIGlzQ2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVwiXG4gICAgICAgIDppY29uPVwicHJvcHMuaW5kZXRlcm1pbmF0ZSA/IElDT04uUkVNT1ZFIDogSUNPTi5DSEVDS1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJpc0NoZWNrZWRcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIEBjbGljay5wcmV2ZW50XG4gICAgICB2LWlmPVwibGFiZWxcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3guZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tIHtcbiAgICB3aWR0aDogdmFyKC0tdGlkZS1mb250LTI4KTtcbiAgICBoZWlnaHQ6IHZhcigtLXRpZGUtZm9udC0yOCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgY2hlY2tlZCA9IHJlZihwcm9wcy5jaGVja2VkKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5jaGVja2VkLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IGNoZWNrZWQudmFsdWUpIHtcbiAgICAgICAgY2hlY2tlZC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1yYWRpbycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICBwcm9wcy5kaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgIF1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImNoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDpkYXRhLXRyYWNrPVwicHJvcHMuZGF0YVRyYWNrXCJcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgbmFtZT1cIlwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXJhZGlvLWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgY2hlY2tlZCA/IENTUy5CT1JERVIuQ09MT1IuSElHSCA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICAgIGNoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8tY2hlY2snLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBwcm9wcy5jaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuQk9EWV8xLCBDU1MuQ1VSU09SLlBPSU5URVIsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1yYWRpby5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jdXN0b20ge1xuICAgIHdpZHRoOiB2YXIoLS10aWRlLWZvbnQtMjgpO1xuICAgIGhlaWdodDogdmFyKC0tdGlkZS1mb250LTI4KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWNoZWNrIHtcbiAgICB3aWR0aDogMXJlbTtcbiAgICBoZWlnaHQ6IDFyZW07XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBwcmljZVRvTnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuaW1wb3J0IHR5cGUgeyBSYW5nZURhdGEgfSBmcm9tICdAL3R5cGVzL0ZhY2V0UmFuZ2UnO1xuaW1wb3J0IHR5cGUgeyBTdHJpbmdJbnB1dCB9IGZyb20gJ0AvdHlwZXMvRm9ybSc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uTGVuZ3RoLCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG5leHBvcnQgY29uc3QgZXJyb3JNZXNzYWdlRGVmYXVsdCA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCB2YWx1ZS4nO1xuXG5leHBvcnQgY29uc3Qgbm9FcnJvciA9IHtcbiAgbWVzc2FnZTogJycsXG4gIHZhbGlkOiB0cnVlLFxufSBhcyBSZWFkb25seTxWYWxpZGF0aW9uUmVzdWx0PjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrRm9ybWF0ID0gKGZvcm1hdDogUmVnRXhwKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCByZXN1bHQgPSBub0Vycm9yO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2VEZWZhdWx0LFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXJyb3JNZXNzYWdlID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG4gIGlmICh0eXBlb2YgZXJyb3JGcm9tUHJvcHMgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVByb3BzLmxlbmd0aCA+IDApIHJldHVybiBlcnJvckZyb21Qcm9wcztcblxuICByZXR1cm4gdHlwZW9mIGVycm9yRnJvbVJlZiA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUmVmLmxlbmd0aCA+IDAgPyBlcnJvckZyb21SZWYgOiBlcnJvck1lc3NhZ2VEZWZhdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkSGFzRXJyb3IgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+XG4gIGVycm9yRnJvbVByb3BzICE9PSBmYWxzZSB8fCBlcnJvckZyb21SZWYgIT09IGZhbHNlO1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRMZW5ndGhJc1ZhbGlkID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKSA9PiB7XG4gIGNvbnN0IGlzRW1wdHlBbmRVbnJlcXVpcmVkID0gdmFsdWUubGVuZ3RoID09PSAwICYmICFyZXF1aXJlZDtcbiAgY29uc3QgaXNUb29Mb25nID0gbWF4bGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heGxlbmd0aDtcbiAgY29uc3QgaXNUb29TaG9ydCA9ICFpc0VtcHR5QW5kVW5yZXF1aXJlZCAmJiBtaW5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWlubGVuZ3RoO1xuXG4gIHJldHVybiAhaXNUb29TaG9ydCAmJiAhaXNUb29Mb25nO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1heFJhbmdlSXNWYWxpZCA9ICh7IG1pbiB9OiBQaWNrPFJhbmdlRGF0YSwgJ21pbic+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWF4OiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNYXggPSAhaXNOYU4obmV3TWF4KSA/IG5ld01heCA6IG51bGw7XG4gICAgaWYgKG1pbiAmJiBuZXdNYXgpIHtcbiAgICAgIGlmIChuZXdNYXggPj0gbWluKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGdyZWF0ZXIgdGhhbiBtaW5gLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1pblJhbmdlSXNWYWxpZCA9ICh7IG1heCB9OiBQaWNrPFJhbmdlRGF0YSwgJ21heCc+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWluOiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNaW4gPSAhaXNOYU4obmV3TWluKSA/IG5ld01pbiA6IG51bGw7XG4gICAgaWYgKG1heCAmJiBuZXdNaW4pIHtcbiAgICAgIGlmIChuZXdNaW4gPD0gbWF4KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGxlc3MgdGhhbiBtYXhgLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdE9wdGlvbnNGcm9tU3RyaW5ncyA9IChzdHJpbmdzOiBzdHJpbmdbXSkgPT5cbiAgc3RyaW5ncy5tYXAoXG4gICAgKG9wdGlvbikgPT5cbiAgICAgICh7XG4gICAgICAgIGxhYmVsOiBvcHRpb24sXG4gICAgICAgIHZhbHVlOiBvcHRpb24sXG4gICAgICB9IGFzIFNlbGVjdE9wdGlvbilcbiAgKTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUZpZWxkVmFsaWRhdGlvbiA9ICh7XG4gIGVycm9yLFxuICBlcnJvckZyb21Qcm9wcyxcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHJlcXVpcmVkID0gZmFsc2UsXG4gIHZhbGlkYXRvcnMsXG4gIHZhbHVlLFxufToge1xuICBlcnJvcjogUmVmPFZhbGlkYXRpb25FcnJvcj47XG4gIGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3I7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU/OiBSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbn0pID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcblxuICBlcnJvci52YWx1ZSA9IGVycm9yRnJvbVByb3BzID8gZXJyb3JGcm9tUHJvcHMgOiBmYWxzZTtcblxuICBpZiAoIWVycm9yLnZhbHVlICYmIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZT8udmFsdWUgfHwgJycsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IHZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWVycm9yLnZhbHVlICYmIChtYXhsZW5ndGggfHwgbWlubGVuZ3RoKSkge1xuICAgIGNvbnN0IGxlbmd0aFZhbGlkYXRpb24gPSB2YWxpZGF0ZUxlbmd0aCh7XG4gICAgICBtYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGgsXG4gICAgICByZXF1aXJlZCxcbiAgICAgIHZhbHVlOiB2YWx1ZT8udmFsdWUgfHwgJycsXG4gICAgfSk7XG5cbiAgICBpZiAoIWxlbmd0aFZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gbGVuZ3RoVmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmllbGRzRnJvbVJlZnMoZmllbGRzOiB7IFtrZXk6IHN0cmluZ106IFJlZjxTdHJpbmdJbnB1dCB8IG51bGw+IH0pIHtcbiAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZHMpIHtcbiAgICBpZiAoZmllbGRzW2tleV0udmFsdWU/LnJlcXVpcmVkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkc1trZXldLnZhbHVlPy52YWx1ZTtcbiAgICAgIHZhbGlkID0gdmFsaWQgJiYgISF2YWx1ZSAmJiB2YWx1ZS50cmltKCkgIT09ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yID0gZmllbGRzW2tleV0udmFsdWU/LmVycm9yO1xuICAgIHZhbGlkID0gdmFsaWQgJiYgIWVycm9yO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVMZW5ndGggPSAoe1xuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsdWUsXG59OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgYmV0d2VlbiAke21pbmxlbmd0aH0gYW5kICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1heGxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbW9yZSB0aGFuICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbGVzcyB0aGFuICR7bWlubGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgdmFsaWRhdG9yczogKCh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0KVtdKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RGaWVsZCB9IGZyb20gJ0AvdHlwZXMvRmllbGQnO1xuICBpbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiwgU2VsZWN0T3B0aW9uR3JvdXAgfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG5cbiAgaW50ZXJmYWNlIFByb3BzIGV4dGVuZHMgU2VsZWN0RmllbGQge1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gIH1cblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHJlcXVpcmVkID0gcmVmKHByb3BzLnJlcXVpcmVkKTtcbiAgY29uc3QgdmFsdWUgPSByZWY8c3RyaW5nIHwgdW5kZWZpbmVkPihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgZXhwYW5kT3B0aW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKTtcbiAgICBpbnB1dD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6ICcnLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJleHBhbmRPcHRpb25zXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlQsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5MRUZULk9ORSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwib3B0Z3JvdXAgaW4gcHJvcHMub3B0Z3JvdXBzXCI+XG4gICAgICAgICAgICA8b3B0Z3JvdXBcbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgOmxhYmVsPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIHYtaWY9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9vcHRncm91cD5cblxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIDp2YWx1ZT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLmxhYmVsIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIDpzZWxlY3RlZD1cInZhbHVlID09PSBvcHRpb24udmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBvcHRpb25zXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5QT1NJVElPTklORy5SSUdIVCwgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHNlbGVjdCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRFWFRfSU5QVVRfVFlQRSA9IHtcbiAgREFURTogJ2RhdGUnLFxuICBEQVRFVElNRV9MT0NBTDogJ2RhdGV0aW1lLWxvY2FsJyxcbiAgRU1BSUw6ICdlbWFpbCcsXG4gIE1PTlRIOiAnbW9udGgnLFxuICBOVU1CRVI6ICdudW1iZXInLFxuICBQQVNTV09SRDogJ3Bhc3N3b3JkJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgVEVMOiAndGVsJyxcbiAgVEVYVDogJ3RleHQnLFxuICBUSU1FOiAndGltZScsXG4gIFVSTDogJ3VybCcsXG4gIFdFRUs6ICd3ZWVrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRleHRJbnB1dFR5cGUgPSAodHlwZW9mIFRFWFRfSU5QVVRfVFlQRSlba2V5b2YgdHlwZW9mIFRFWFRfSU5QVVRfVFlQRV07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgRm9ybVZhbHVlVHJhbnNmb3JtZXIgfSBmcm9tICdAL3R5cGVzL0Zvcm0nO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYXV0b2NvbXBsZXRlPzogYm9vbGVhbjtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGhhc0NsZWFyPzogYm9vbGVhbjtcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc3VmZml4Pzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHRyYW5zZm9ybVZhbHVlPzogRm9ybVZhbHVlVHJhbnNmb3JtZXI7XG4gICAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYXV0b2NvbXBsZXRlOiBmYWxzZSxcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaGFzQ2xlYXI6IGZhbHNlLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdHJhbnNmb3JtVmFsdWU6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBURVhUX0lOUFVUX1RZUEUuVEVYVCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2hvd1Bhc3N3b3JkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgcHJvcHMubGFiZWwgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNDbGVhciA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmhhc0NsZWFyICYmIHZhbHVlLnZhbHVlKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZChcbiAgICAoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKVxuICApO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycgfHwgdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG4gIGNvbnN0IHR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCAmJiBzaG93UGFzc3dvcmQudmFsdWUgPT09IHRydWUgPyBURVhUX0lOUFVUX1RZUEUuVEVYVCA6IHByb3BzLnR5cGVcbiAgKTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBoYW5kbGVWYWxpZGF0aW9uKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXQgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLnRyYW5zZm9ybVZhbHVlKSB7XG4gICAgICBjb25zdCBkaWdpdHMgPSB2YWx1ZS52YWx1ZT8ubWF0Y2goL1xcZC9nKT8uam9pbignJykgfHwgdW5kZWZpbmVkO1xuXG4gICAgICB2YWx1ZS52YWx1ZSA9IGRpZ2l0cyA/IHByb3BzLnRyYW5zZm9ybVZhbHVlKGRpZ2l0cykgOiAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVZhbHVlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHVwZGF0ZVZhbHVlLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC10ZXh0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBoYXNDbGVhciA/IFtDU1MuUEFERElORy5SSUdIVC5IQUxGLCBDU1MuUEFERElORy5MRUZULk9ORV0gOiBbQ1NTLlBBRERJTkcuWC5PTkVdLFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtcHJlZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnByZWZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5wcmVmaXggfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgICAgIEBjbGljay5wcmV2ZW50PVwiaW5wdXQ/LmZvY3VzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmF1dG9jb21wbGV0ZT1cImF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgICAgICA6ZGF0YS10cmFjaz1cInByb3BzLmRhdGFUcmFja1wiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwicHJvcHMubWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJwcm9wcy5taW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInByb3BzLnJlcXVpcmVkXCJcbiAgICAgICAgICAgIDp0eXBlPVwidHlwZVwiXG4gICAgICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICBAaW5wdXQ9XCJoYW5kbGVJbnB1dFwiXG4gICAgICAgICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtc3VmZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnN1ZmZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5zdWZmaXggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUEFERElORy5ZLkhBTEYsIENTUy5QQURESU5HLkZVTEwuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsZWFyXCJcbiAgICAgICAgdi1pZj1cImhhc0NsZWFyICYmIHByb3BzLnR5cGUgIT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICAvPlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLlkuSEFMRiwgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLCBDU1MuQ1VSU09SLlBPSU5URVJdXCJcbiAgICAgICAgOmljb249XCJJQ09OLlZJU0lCSUxJVFlcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdi1pZj1cInByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInByb3BzLnN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQgaW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZXJyb3I/OiBWYWxpZGF0aW9uRXJyb3I7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHJvd3M/OiBudW1iZXI7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHJvd3M6IDgsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICByZXR1cm4gaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dGFyZWEnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIGhhc0Vycm9yICYmICdlcnJvciddXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQnLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGxhYmVsXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgXVwiXG4gICAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgcmVmPVwibGFiZWxcIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9sYWJlbD5cblxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCJcbiAgICAgICAgOmRhdGEtdHJhY2s9XCJwcm9wcy5kYXRhVHJhY2tcIlxuICAgICAgICA6bWF4bGVuZ3RoPVwicHJvcHMubWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cInByb3BzLm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwicHJvcHMubmFtZVwiXG4gICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgOnJlcXVpcmVkPVwicHJvcHMucmVxdWlyZWRcIlxuICAgICAgICA6cm93cz1cInByb3BzLnJvd3NcIlxuICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxuPC9zdHlsZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBCUkVBS1BPSU5UID0ge1xuICBTTTogJ3NtJyxcbiAgTUQ6ICdtZCcsXG4gIExHOiAnbGcnLFxuICBYTDogJ3hsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBNRURJQSA9IHtcbiAgU006IDc2OCxcbiAgTUQ6IDk5MixcbiAgTEc6IDEyMzIsXG4gIFhMOiAxOTIwLFxufTtcblxuZXhwb3J0IHR5cGUgQnJlYWtwb2ludCA9ICh0eXBlb2YgQlJFQUtQT0lOVClba2V5b2YgdHlwZW9mIEJSRUFLUE9JTlRdO1xuZXhwb3J0IHR5cGUgTWVkaWEgPSAodHlwZW9mIE1FRElBKVtrZXlvZiB0eXBlb2YgTUVESUFdO1xuIiwiaW1wb3J0IHsgbmV4dFRpY2sgfSBmcm9tICd2dWUnO1xuXG4vKipcbiAqIERpcmVjdGx5IG1vZGlmaWVzIHRoZSBgPGJvZHk+YCBlbGVtZW50IHRvIGFwcGx5IG9yIHJlbW92ZSBzY3JvbGwgbG9jay5cbiAqIFdoZW4gYGZhbHNlYCBpcyBwcm92aWRlZCwgaXQgb25seSB1bmxvY2tzIHNjcm9sbCBpZiB0aGVyZSBhcmUgbm8gb3BlblxuICogSFRNTCBkaWFsb2cgZWxlbWVudHMuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRTY3JvbGxMb2NrID0gYXN5bmMgKGlzTG9ja2VkOiBib29sZWFuKSA9PiB7XG4gIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gIC8vIGNvbnN0IEJPRFlfTE9DS19DTEFTUyA9ICdib2R5LXNjcm9sbC1sb2NrJztcblxuICBjb25zdCBib2R5ID0gZG9jdW1lbnQuYm9keTtcblxuICBpZiAoaXNMb2NrZWQpIHtcbiAgICBpZiAoIWJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSkge1xuICAgICAgY29uc3Qgc2Nyb2xsWSA9IHdpbmRvdy5zY3JvbGxZO1xuXG4gICAgICBib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kgPSBzY3JvbGxZLnRvU3RyaW5nKCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15JywgYCR7c2Nyb2xsWX1weGApO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnaW5zZXQnLCAnMCcpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLXRvcCcsIGBjYWxjKDBweCAtIHZhcigtLXNhdmVkLXNjcm9sbC15LCAwcHgpKWApO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cteScsICdzY3JvbGwnKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uJywgJ2ZpeGVkJyk7XG5cbiAgICAgIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gICAgICAvLyBib2R5LmNsYXNzTGlzdC5hZGQoQk9EWV9MT0NLX0NMQVNTKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpYWxvZ1tvcGVuXScpKSB7XG4gICAgICBjb25zdCBzYXZlZFNjcm9sbFkgPSBwYXJzZUludChib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kgfHwgJzAnKTtcblxuICAgICAgLy8gQ2Fubm90IGJlIGFwcGxpZWQgdG8gYm9keSB0YWcgaW4gbWFya2V0cGxhY2UgcmVwbyBkdWUgdG8gZGF0YS1jc3Mtc2NvcGVcbiAgICAgIC8vIGJvZHkuY2xhc3NMaXN0LnJlbW92ZShCT0RZX0xPQ0tfQ0xBU1MpO1xuXG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdpbnNldCcpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWFyZ2luVG9wJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdvdmVyZmxvd1knKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3Bvc2l0aW9uJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15Jyk7XG5cbiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICAgIGJlaGF2aW9yOiAnYXV0bycsXG4gICAgICAgIHRvcDogc2F2ZWRTY3JvbGxZLFxuICAgICAgfSk7XG5cbiAgICAgIGRlbGV0ZSBib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1k7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgVE9QX0xBWUVSX0lEID0gJ3RpZGUtdG9wLWxheWVyJztcblxuZXhwb3J0IGNvbnN0IGluaXRGYXV4VG9wTGF5ZXIgPSAoKSA9PiB7XG4gIGxldCB0b3BMYXllciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFRPUF9MQVlFUl9JRCk7XG4gIGlmICghdG9wTGF5ZXIpIHtcbiAgICB0b3BMYXllciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRvcExheWVyLmlkID0gVE9QX0xBWUVSX0lEO1xuICAgIHRvcExheWVyLnNldEF0dHJpYnV0ZSgnZGF0YS1jc3Mtc2NvcGUnLCAnJyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b3BMYXllcik7XG4gIH1cbiAgdG9wTGF5ZXIuc3R5bGUuaXNvbGF0aW9uID0gJ2lzb2xhdGUnO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG5leHRUaWNrLCBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgQlJFQUtQT0lOVCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNCYWNrQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc21pc3NpYmxlPzogYm9vbGVhbjtcbiAgICBpc09wZW46IGJvb2xlYW47XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgd2lkdGg/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBpc0JhY2tCdXR0b246IGZhbHNlLFxuICAgIGlzRGlzbWlzc2libGU6IHRydWUsXG4gICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChlOiAnY2xvc2UnKTogdm9pZDtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kYWxDb250ZW50OiBSZWY8SFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG4gIGNvbnN0IG1vZGFsRGlhbG9nOiBSZWY8SFRNTERpYWxvZ0VsZW1lbnQgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4gPSAoKSA9PiB7XG4gICAgbW9kYWxEaWFsb2cudmFsdWU/LnNob3dNb2RhbCgpO1xuICB9O1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSA9ICgpID0+IHtcbiAgICBtb2RhbERpYWxvZy52YWx1ZT8uY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBzY3JvbGxDb250ZW50VG9Ub3AgPSAoKSA9PiB7XG4gICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgaWYgKCFtb2RhbENvbnRlbnQudmFsdWUpIHJldHVybjtcbiAgICAgIG1vZGFsQ29udGVudC52YWx1ZS5zY3JvbGxUb3AgPSAwO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzRGlzbWlzc2libGUpIGVtaXQoJ2Nsb3NlJyk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXNjYXBlS2V5ZG93biA9IChlOiBFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAocHJvcHMuaXNEaXNtaXNzaWJsZSkgZW1pdCgnY2xvc2UnKTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pc09wZW4sXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAoIW1vZGFsRGlhbG9nLnZhbHVlKSByZXR1cm47XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICAgICAgc2Nyb2xsQ29udGVudFRvVG9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIHNldFNjcm9sbExvY2sobmV3VmFsdWUpO1xuICAgIH1cbiAgKTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChwcm9wcy5pc09wZW4pIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgfVxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaWFsb2dcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtbW9kYWwnLCBDU1MuQkcuSU5JVElBTCwgQ1NTLkhFSUdIVC5GVUxMLCBDU1MuV0lEVEguRlVMTCwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTl1cIlxuICAgIHJlZj1cIm1vZGFsRGlhbG9nXCJcbiAgICA6c3R5bGU9XCJ7ICctLW1vZGFsLXdpZHRoJzogcHJvcHMud2lkdGggfVwiXG4gICAgQGNsaWNrLnNlbGY9XCJoYW5kbGVCYWNrZHJvcENsaWNrXCJcbiAgICBAY2xvc2UucHJldmVudFxuICAgIEBrZXlkb3duLmVzY2FwZT1cImhhbmRsZUVzY2FwZUtleWRvd25cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1tb2RhbC1ib2R5JyxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuT05FLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gICAgICAgIENTUy5TSEFET1cuVE9QLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLldJRFRILk1BWF9GVUxMLFxuICAgICAgICBDU1Mud2l0aEJyZWFrcG9pbnQoW0NTUy5TSEFET1cuQk9UVE9NXSwgQlJFQUtQT0lOVC5TTSksXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8aGVhZGVyXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1tb2RhbC1oZWFkZXInLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5CT1RUT00uT05FLFxuICAgICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiZW1pdCgnYmFjaycpXCJcbiAgICAgICAgICB0aXRsZT1cIkJhY2tcIlxuICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5IRUFETElORV8yXVwiXG4gICAgICAgICAgdi10ZXh0PVwidGl0bGVcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2Nsb3NlJylcIlxuICAgICAgICAgIHYtaWY9XCJpc0Rpc21pc3NpYmxlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvaGVhZGVyPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1tb2RhbC1jb250ZW50JyxcbiAgICAgICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIENTUy5QQURESU5HLlkuVFdPLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwibW9kYWxDb250ZW50XCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Zm9vdGVyXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1tb2RhbC1mb290ZXInLCBDU1MuQVhJUzEuRU5ELCBDU1MuRElTUExBWS5GTEVYLCBDU1MuR0FQLlRXTywgQ1NTLlBBRERJTkcuWS5PTkUsIENTUy5TSEFET1cuVE9QXVwiXG4gICAgICAgIHYtaWY9XCIkc2xvdHMuZm9vdGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiIC8+XG4gICAgICA8L2Zvb3Rlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaWFsb2c+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1tb2RhbCB7XG4gICAgLS1tb2RhbC1wYWRkaW5nLXg6IDIwcHg7XG4gICAgbWF4LXdpZHRoOiB1bnNldDtcbiAgICBtYXgtaGVpZ2h0OiB1bnNldDtcbiAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB9XG4gIC50aWRlLW1vZGFsW29wZW5dIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gIH1cbiAgLnRpZGUtbW9kYWw6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gIH1cbiAgQHN0YXJ0aW5nLXN0eWxlIHtcbiAgICAudGlkZS1tb2RhbFtvcGVuXSB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIH1cbiAgICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gICAgfVxuICB9XG4gIC50aWRlLW1vZGFsLWJvZHkge1xuICAgIHdpZHRoOiB2YXIoLS1tb2RhbC13aWR0aCwgNTc2cHgpO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIHZhcigtLXRpZGUtc3BhY2luZy0yKSk7XG4gIH1cblxuICAudGlkZS1tb2RhbC1oZWFkZXIsXG4gIC50aWRlLW1vZGFsLWZvb3RlciB7XG4gICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLW1vZGFsLXBhZGRpbmcteCk7XG4gIH1cbiAgLnRpZGUtbW9kYWwtY29udGVudCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpIDFmciB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpO1xuICB9XG4gIDp3aGVyZSgudGlkZS1tb2RhbC1jb250ZW50KTpkZWVwKD4gOndoZXJlKCopKSB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cblxuICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgLnRpZGUtbW9kYWwge1xuICAgICAgLS1tb2RhbC1wYWRkaW5nLXg6IHZhcigtLXRpZGUtc3BhY2luZy0yKTtcbiAgICB9XG4gICAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgICBtYXgtaGVpZ2h0OiA4NSU7XG4gICAgICBib3R0b206IGluaXRpYWw7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUJ1dHRvblBhZ2luYXRpb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBwYWdlQ3VycmVudD86IG51bWJlcjtcbiAgICBwYWdlVG90YWw/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBwYWdlQ3VycmVudDogMSxcbiAgICBwYWdlVG90YWw6IDEsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBwYWdlQ3VycmVudCA9IHJlZihwcm9wcy5wYWdlQ3VycmVudCk7XG5cbiAgY29uc3QgcGFnaW5hdGlvbkJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiBuZXcgQXJyYXkocHJvcHMucGFnZVRvdGFsKS5maWxsKCcnKS5tYXAoKGVtcHR5LCBpbmRleCkgPT4gaW5kZXggKyAxKSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIHBhZ2VDdXJyZW50LnZhbHVlID0gaW5kZXg7XG5cbiAgICBlbWl0KCdjaGFuZ2UnLCBldmVudCwgaW5kZXgpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbJ3RpZGUtcGFnaW5hdGlvbicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgPlxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IDFcIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKHBhZ2VDdXJyZW50IC0gMSlcIlxuICAgIC8+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmtleT1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICB2LWZvcj1cInBhZ2luYXRpb25CdXR0b24gaW4gcGFnaW5hdGlvbkJ1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvblBhZ2luYXRpb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOmxhYmVsPVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2socGFnaW5hdGlvbkJ1dHRvbilcIlxuICAgICAgICAvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuXG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvbnNbcGFnaW5hdGlvbkJ1dHRvbnMubGVuZ3RoIC0gMV1cIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhwYWdlQ3VycmVudCArIDEpXCJcbiAgICAvPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPjwvc3R5bGU+XG4iLCIvKipcbiAqIEN1c3RvbSBwb3NpdGlvbmluZyByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy92aXJ0dWFsLWVsZW1lbnRzXG4gKi9cblxuY29uc3Qgc2lkZXMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xuY29uc3QgYWxpZ25tZW50cyA9IFsnc3RhcnQnLCAnZW5kJ107XG5jb25zdCBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL3NpZGVzLnJlZHVjZSgoYWNjLCBzaWRlKSA9PiBhY2MuY29uY2F0KHNpZGUsIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMF0sIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMV0pLCBbXSk7XG5jb25zdCBtaW4gPSBNYXRoLm1pbjtcbmNvbnN0IG1heCA9IE1hdGgubWF4O1xuY29uc3Qgcm91bmQgPSBNYXRoLnJvdW5kO1xuY29uc3QgZmxvb3IgPSBNYXRoLmZsb29yO1xuY29uc3QgY3JlYXRlQ29vcmRzID0gdiA9PiAoe1xuICB4OiB2LFxuICB5OiB2XG59KTtcbmNvbnN0IG9wcG9zaXRlU2lkZU1hcCA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmNvbnN0IG9wcG9zaXRlQWxpZ25tZW50TWFwID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmZ1bmN0aW9uIGNsYW1wKHN0YXJ0LCB2YWx1ZSwgZW5kKSB7XG4gIHJldHVybiBtYXgoc3RhcnQsIG1pbih2YWx1ZSwgZW5kKSk7XG59XG5mdW5jdGlvbiBldmFsdWF0ZSh2YWx1ZSwgcGFyYW0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHBhcmFtKSA6IHZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0U2lkZShwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufVxuZnVuY3Rpb24gZ2V0QXhpc0xlbmd0aChheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG59XG5mdW5jdGlvbiBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSkgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gZ2V0T3Bwb3NpdGVBeGlzKGdldFNpZGVBeGlzKHBsYWNlbWVudCkpO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKSB7XG4gIGlmIChydGwgPT09IHZvaWQgMCkge1xuICAgIHJ0bCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBsZXQgbWFpbkFsaWdubWVudFNpZGUgPSBhbGlnbm1lbnRBeGlzID09PSAneCcgPyBhbGlnbm1lbnQgPT09IChydGwgPyAnZW5kJyA6ICdzdGFydCcpID8gJ3JpZ2h0JyA6ICdsZWZ0JyA6IGFsaWdubWVudCA9PT0gJ3N0YXJ0JyA/ICdib3R0b20nIDogJ3RvcCc7XG4gIGlmIChyZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSA+IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF0pIHtcbiAgICBtYWluQWxpZ25tZW50U2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKTtcbiAgfVxuICByZXR1cm4gW21haW5BbGlnbm1lbnRTaWRlLCBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSldO1xufVxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBjb25zdCBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgYWxpZ25tZW50ID0+IG9wcG9zaXRlQWxpZ25tZW50TWFwW2FsaWdubWVudF0pO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUxpc3Qoc2lkZSwgaXNTdGFydCwgcnRsKSB7XG4gIGNvbnN0IGxyID0gWydsZWZ0JywgJ3JpZ2h0J107XG4gIGNvbnN0IHJsID0gWydyaWdodCcsICdsZWZ0J107XG4gIGNvbnN0IHRiID0gWyd0b3AnLCAnYm90dG9tJ107XG4gIGNvbnN0IGJ0ID0gWydib3R0b20nLCAndG9wJ107XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGlmIChydGwpIHJldHVybiBpc1N0YXJ0ID8gcmwgOiBscjtcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gbHIgOiBybDtcbiAgICBjYXNlICdsZWZ0JzpcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICByZXR1cm4gaXNTdGFydCA/IHRiIDogYnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbXTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhwbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGRpcmVjdGlvbiwgcnRsKSB7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBsZXQgbGlzdCA9IGdldFNpZGVMaXN0KGdldFNpZGUocGxhY2VtZW50KSwgZGlyZWN0aW9uID09PSAnc3RhcnQnLCBydGwpO1xuICBpZiAoYWxpZ25tZW50KSB7XG4gICAgbGlzdCA9IGxpc3QubWFwKHNpZGUgPT4gc2lkZSArIFwiLVwiICsgYWxpZ25tZW50KTtcbiAgICBpZiAoZmxpcEFsaWdubWVudCkge1xuICAgICAgbGlzdCA9IGxpc3QuY29uY2F0KGxpc3QubWFwKGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaXN0O1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIHNpZGUgPT4gb3Bwb3NpdGVTaWRlTWFwW3NpZGVdKTtcbn1cbmZ1bmN0aW9uIGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICAuLi5wYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykgOiB7XG4gICAgdG9wOiBwYWRkaW5nLFxuICAgIHJpZ2h0OiBwYWRkaW5nLFxuICAgIGJvdHRvbTogcGFkZGluZyxcbiAgICBsZWZ0OiBwYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IHJlY3Q7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICBsZWZ0OiB4LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5leHBvcnQgeyBhbGlnbm1lbnRzLCBjbGFtcCwgY3JlYXRlQ29vcmRzLCBldmFsdWF0ZSwgZXhwYW5kUGFkZGluZ09iamVjdCwgZmxvb3IsIGdldEFsaWdubWVudCwgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldEF4aXNMZW5ndGgsIGdldEV4cGFuZGVkUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlQXhpcywgZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQsIGdldFBhZGRpbmdPYmplY3QsIGdldFNpZGUsIGdldFNpZGVBeGlzLCBtYXgsIG1pbiwgcGxhY2VtZW50cywgcmVjdFRvQ2xpZW50UmVjdCwgcm91bmQsIHNpZGVzIH07XG4iLCJpbXBvcnQgeyBnZXRTaWRlQXhpcywgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QXhpc0xlbmd0aCwgZ2V0U2lkZSwgZ2V0QWxpZ25tZW50LCBldmFsdWF0ZSwgZ2V0UGFkZGluZ09iamVjdCwgcmVjdFRvQ2xpZW50UmVjdCwgbWluLCBjbGFtcCwgcGxhY2VtZW50cywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50LCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBzaWRlcywgbWF4LCBnZXRPcHBvc2l0ZUF4aXMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuZXhwb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5cbmZ1bmN0aW9uIGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KF9yZWYsIHBsYWNlbWVudCwgcnRsKSB7XG4gIGxldCB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gPSBfcmVmO1xuICBjb25zdCBzaWRlQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWduTGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChhbGlnbm1lbnRBeGlzKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IHNpZGVBeGlzID09PSAneSc7XG4gIGNvbnN0IGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBmbG9hdGluZy53aWR0aCAvIDI7XG4gIGNvbnN0IGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZmxvYXRpbmcuaGVpZ2h0IC8gMjtcbiAgY29uc3QgY29tbW9uQWxpZ24gPSByZWZlcmVuY2VbYWxpZ25MZW5ndGhdIC8gMiAtIGZsb2F0aW5nW2FsaWduTGVuZ3RoXSAvIDI7XG4gIGxldCBjb29yZHM7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZmxvYXRpbmcuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGZsb2F0aW5nLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG4gIHN3aXRjaCAoZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBjb29yZHNbYWxpZ25tZW50QXhpc10gLT0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kJzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSArPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gY29vcmRzO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqXG4gKiBUaGlzIGV4cG9ydCBkb2VzIG5vdCBoYXZlIGFueSBgcGxhdGZvcm1gIGludGVyZmFjZSBsb2dpYy4gWW91IHdpbGwgbmVlZCB0b1xuICogd3JpdGUgb25lIGZvciB0aGUgcGxhdGZvcm0geW91IGFyZSB1c2luZyBGbG9hdGluZyBVSSB3aXRoLlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSBhc3luYyAocmVmZXJlbmNlLCBmbG9hdGluZywgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IHZhbGlkTWlkZGxld2FyZSA9IG1pZGRsZXdhcmUuZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGZsb2F0aW5nKSk7XG4gIGxldCByZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nLFxuICAgIHN0cmF0ZWd5XG4gIH0pO1xuICBsZXQge1xuICAgIHgsXG4gICAgeVxuICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHBsYWNlbWVudCwgcnRsKTtcbiAgbGV0IHN0YXRlZnVsUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICBsZXQgbWlkZGxld2FyZURhdGEgPSB7fTtcbiAgbGV0IHJlc2V0Q291bnQgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbGlkTWlkZGxld2FyZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHtcbiAgICAgIG5hbWUsXG4gICAgICBmblxuICAgIH0gPSB2YWxpZE1pZGRsZXdhcmVbaV07XG4gICAgY29uc3Qge1xuICAgICAgeDogbmV4dFgsXG4gICAgICB5OiBuZXh0WSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNldFxuICAgIH0gPSBhd2FpdCBmbih7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIGluaXRpYWxQbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH1cbiAgICB9KTtcbiAgICB4ID0gbmV4dFggIT0gbnVsbCA/IG5leHRYIDogeDtcbiAgICB5ID0gbmV4dFkgIT0gbnVsbCA/IG5leHRZIDogeTtcbiAgICBtaWRkbGV3YXJlRGF0YSA9IHtcbiAgICAgIC4uLm1pZGRsZXdhcmVEYXRhLFxuICAgICAgW25hbWVdOiB7XG4gICAgICAgIC4uLm1pZGRsZXdhcmVEYXRhW25hbWVdLFxuICAgICAgICAuLi5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAocmVzZXQgJiYgcmVzZXRDb3VudCA8PSA1MCkge1xuICAgICAgcmVzZXRDb3VudCsrO1xuICAgICAgaWYgKHR5cGVvZiByZXNldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHJlc2V0LnBsYWNlbWVudCkge1xuICAgICAgICAgIHN0YXRlZnVsUGxhY2VtZW50ID0gcmVzZXQucGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNldC5yZWN0cykge1xuICAgICAgICAgIHJlY3RzID0gcmVzZXQucmVjdHMgPT09IHRydWUgPyBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgICAgZmxvYXRpbmcsXG4gICAgICAgICAgICBzdHJhdGVneVxuICAgICAgICAgIH0pIDogcmVzZXQucmVjdHM7XG4gICAgICAgIH1cbiAgICAgICAgKHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHlcbiAgICAgICAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBzdGF0ZWZ1bFBsYWNlbWVudCwgcnRsKSk7XG4gICAgICB9XG4gICAgICBpID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgc3RyYXRlZ3ksXG4gICAgbWlkZGxld2FyZURhdGFcbiAgfTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5hc3luYyBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX2F3YWl0JHBsYXRmb3JtJGlzRWxlO1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhdGZvcm0sXG4gICAgcmVjdHMsXG4gICAgZWxlbWVudHMsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IHN0YXRlO1xuICBjb25zdCB7XG4gICAgYm91bmRhcnkgPSAnY2xpcHBpbmdBbmNlc3RvcnMnLFxuICAgIHJvb3RCb3VuZGFyeSA9ICd2aWV3cG9ydCcsXG4gICAgZWxlbWVudENvbnRleHQgPSAnZmxvYXRpbmcnLFxuICAgIGFsdEJvdW5kYXJ5ID0gZmFsc2UsXG4gICAgcGFkZGluZyA9IDBcbiAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gIGNvbnN0IGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/ICdyZWZlcmVuY2UnIDogJ2Zsb2F0aW5nJztcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgY29uc3QgY2xpcHBpbmdDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChhd2FpdCBwbGF0Zm9ybS5nZXRDbGlwcGluZ1JlY3Qoe1xuICAgIGVsZW1lbnQ6ICgoX2F3YWl0JHBsYXRmb3JtJGlzRWxlID0gYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGVsZW1lbnQpKSkgIT0gbnVsbCA/IF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA6IHRydWUpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgKGF3YWl0IChwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudChlbGVtZW50cy5mbG9hdGluZykpKSxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSkpO1xuICBjb25zdCByZWN0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0cy5mbG9hdGluZy53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3RzLmZsb2F0aW5nLmhlaWdodFxuICB9IDogcmVjdHMucmVmZXJlbmNlO1xuICBjb25zdCBvZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgb2Zmc2V0U2NhbGUgPSAoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KG9mZnNldFBhcmVudCkpKSA/IChhd2FpdCAocGxhdGZvcm0uZ2V0U2NhbGUgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldFNjYWxlKG9mZnNldFBhcmVudCkpKSB8fCB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH0gOiB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCA/IGF3YWl0IHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9KSA6IHJlY3QpO1xuICByZXR1cm4ge1xuICAgIHRvcDogKGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGJvdHRvbTogKGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGxlZnQ6IChjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQpIC8gb2Zmc2V0U2NhbGUueCxcbiAgICByaWdodDogKGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCkgLyBvZmZzZXRTY2FsZS54XG4gIH07XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gb3B0aW9ucyA9PiAoe1xuICBuYW1lOiAnYXJyb3cnLFxuICBvcHRpb25zLFxuICBhc3luYyBmbihzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgbWlkZGxld2FyZURhdGFcbiAgICB9ID0gc3RhdGU7XG4gICAgLy8gU2luY2UgYGVsZW1lbnRgIGlzIHJlcXVpcmVkLCB3ZSBkb24ndCBQYXJ0aWFsPD4gdGhlIHR5cGUuXG4gICAgY29uc3Qge1xuICAgICAgZWxlbWVudCxcbiAgICAgIHBhZGRpbmcgPSAwXG4gICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKSB8fCB7fTtcbiAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgIHgsXG4gICAgICB5XG4gICAgfTtcbiAgICBjb25zdCBheGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYXhpcyk7XG4gICAgY29uc3QgYXJyb3dEaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICBjb25zdCBpc1lBeGlzID0gYXhpcyA9PT0gJ3knO1xuICAgIGNvbnN0IG1pblByb3AgPSBpc1lBeGlzID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgY29uc3QgbWF4UHJvcCA9IGlzWUF4aXMgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgY29uc3QgY2xpZW50UHJvcCA9IGlzWUF4aXMgPyAnY2xpZW50SGVpZ2h0JyA6ICdjbGllbnRXaWR0aCc7XG4gICAgY29uc3QgZW5kRGlmZiA9IHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdICsgcmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gY29vcmRzW2F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICBjb25zdCBzdGFydERpZmYgPSBjb29yZHNbYXhpc10gLSByZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gICAgY29uc3QgYXJyb3dPZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkpO1xuICAgIGxldCBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBhcnJvd09mZnNldFBhcmVudFtjbGllbnRQcm9wXSA6IDA7XG5cbiAgICAvLyBET00gcGxhdGZvcm0gY2FuIHJldHVybiBgd2luZG93YCBhcyB0aGUgYG9mZnNldFBhcmVudGAuXG4gICAgaWYgKCFjbGllbnRTaXplIHx8ICEoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGFycm93T2Zmc2V0UGFyZW50KSkpKSB7XG4gICAgICBjbGllbnRTaXplID0gZWxlbWVudHMuZmxvYXRpbmdbY2xpZW50UHJvcF0gfHwgcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICB9XG4gICAgY29uc3QgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7XG5cbiAgICAvLyBJZiB0aGUgcGFkZGluZyBpcyBsYXJnZSBlbm91Z2ggdGhhdCBpdCBjYXVzZXMgdGhlIGFycm93IHRvIG5vIGxvbmdlciBiZVxuICAgIC8vIGNlbnRlcmVkLCBtb2RpZnkgdGhlIHBhZGRpbmcgc28gdGhhdCBpdCBpcyBjZW50ZXJlZC5cbiAgICBjb25zdCBsYXJnZXN0UG9zc2libGVQYWRkaW5nID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgLSAxO1xuICAgIGNvbnN0IG1pblBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttaW5Qcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG4gICAgY29uc3QgbWF4UGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21heFByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcblxuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgZmxvYXRpbmcgZWxlbWVudCBpZiB0aGUgY2VudGVyXG4gICAgLy8gcG9pbnQgaXMgb3V0c2lkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCdzIGJvdW5kcy5cbiAgICBjb25zdCBtaW4kMSA9IG1pblBhZGRpbmc7XG4gICAgY29uc3QgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC0gbWF4UGFkZGluZztcbiAgICBjb25zdCBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICAgIGNvbnN0IG9mZnNldCA9IGNsYW1wKG1pbiQxLCBjZW50ZXIsIG1heCk7XG5cbiAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsIGVub3VnaCB0aGF0IHRoZSBhcnJvdydzIHBhZGRpbmcgY2F1c2VzIGl0IHRvXG4gICAgLy8gdG8gcG9pbnQgdG8gbm90aGluZyBmb3IgYW4gYWxpZ25lZCBwbGFjZW1lbnQsIGFkanVzdCB0aGUgb2Zmc2V0IG9mIHRoZVxuICAgIC8vIGZsb2F0aW5nIGVsZW1lbnQgaXRzZWxmLiBUbyBlbnN1cmUgYHNoaWZ0KClgIGNvbnRpbnVlcyB0byB0YWtlIGFjdGlvbixcbiAgICAvLyBhIHNpbmdsZSByZXNldCBpcyBwZXJmb3JtZWQgd2hlbiB0aGlzIGlzIHRydWUuXG4gICAgY29uc3Qgc2hvdWxkQWRkT2Zmc2V0ID0gIW1pZGRsZXdhcmVEYXRhLmFycm93ICYmIGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9IG51bGwgJiYgY2VudGVyICE9PSBvZmZzZXQgJiYgcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gLyAyIC0gKGNlbnRlciA8IG1pbiQxID8gbWluUGFkZGluZyA6IG1heFBhZGRpbmcpIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIDwgMDtcbiAgICBjb25zdCBhbGlnbm1lbnRPZmZzZXQgPSBzaG91bGRBZGRPZmZzZXQgPyBjZW50ZXIgPCBtaW4kMSA/IGNlbnRlciAtIG1pbiQxIDogY2VudGVyIC0gbWF4IDogMDtcbiAgICByZXR1cm4ge1xuICAgICAgW2F4aXNdOiBjb29yZHNbYXhpc10gKyBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIFtheGlzXTogb2Zmc2V0LFxuICAgICAgICBjZW50ZXJPZmZzZXQ6IGNlbnRlciAtIG9mZnNldCAtIGFsaWdubWVudE9mZnNldCxcbiAgICAgICAgLi4uKHNob3VsZEFkZE9mZnNldCAmJiB7XG4gICAgICAgICAgYWxpZ25tZW50T2Zmc2V0XG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgcmVzZXQ6IHNob3VsZEFkZE9mZnNldFxuICAgIH07XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIHtcbiAgY29uc3QgYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudCA9IGFsaWdubWVudCA/IFsuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQpLCAuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9PSBhbGlnbm1lbnQpXSA6IGFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0U2lkZShwbGFjZW1lbnQpID09PSBwbGFjZW1lbnQpO1xuICByZXR1cm4gYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudC5maWx0ZXIocGxhY2VtZW50ID0+IHtcbiAgICBpZiAoYWxpZ25tZW50KSB7XG4gICAgICByZXR1cm4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCB8fCAoYXV0b0FsaWdubWVudCA/IGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkgIT09IHBsYWNlbWVudCA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2F1dG9QbGFjZW1lbnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXV0b1AsIF9taWRkbGV3YXJlRGF0YSRhdXRvUDIsIF9wbGFjZW1lbnRzVGhhdEZpdE9uRTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMsXG4gICAgICAgIGF1dG9BbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzJDEgPSBhbGlnbm1lbnQgIT09IHVuZGVmaW5lZCB8fCBhbGxvd2VkUGxhY2VtZW50cyA9PT0gcGxhY2VtZW50cyA/IGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50IHx8IG51bGwsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSA6IGFsbG93ZWRQbGFjZW1lbnRzO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9ICgoX21pZGRsZXdhcmVEYXRhJGF1dG9QID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUC5pbmRleCkgfHwgMDtcbiAgICAgIGNvbnN0IGN1cnJlbnRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4XTtcbiAgICAgIGlmIChjdXJyZW50UGxhY2VtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3QgYWxpZ25tZW50U2lkZXMgPSBnZXRBbGlnbm1lbnRTaWRlcyhjdXJyZW50UGxhY2VtZW50LCByZWN0cywgYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKTtcblxuICAgICAgLy8gTWFrZSBgY29tcHV0ZUNvb3Jkc2Agc3RhcnQgZnJvbSB0aGUgcmlnaHQgcGxhY2UuXG4gICAgICBpZiAocGxhY2VtZW50ICE9PSBjdXJyZW50UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50cyQxWzBdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE92ZXJmbG93cyA9IFtvdmVyZmxvd1tnZXRTaWRlKGN1cnJlbnRQbGFjZW1lbnQpXSwgb3ZlcmZsb3dbYWxpZ25tZW50U2lkZXNbMF1dLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1sxXV1dO1xuICAgICAgY29uc3QgYWxsT3ZlcmZsb3dzID0gWy4uLigoKF9taWRkbGV3YXJlRGF0YSRhdXRvUDIgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QMi5vdmVyZmxvd3MpIHx8IFtdKSwge1xuICAgICAgICBwbGFjZW1lbnQ6IGN1cnJlbnRQbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93czogY3VycmVudE92ZXJmbG93c1xuICAgICAgfV07XG4gICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50cyQxW2N1cnJlbnRJbmRleCArIDFdO1xuXG4gICAgICAvLyBUaGVyZSBhcmUgbW9yZSBwbGFjZW1lbnRzIHRvIGNoZWNrLlxuICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlID0gYWxsT3ZlcmZsb3dzLm1hcChkID0+IHtcbiAgICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KGQucGxhY2VtZW50KTtcbiAgICAgICAgcmV0dXJuIFtkLnBsYWNlbWVudCwgYWxpZ25tZW50ICYmIGNyb3NzQXhpcyA/XG4gICAgICAgIC8vIENoZWNrIGFsb25nIHRoZSBtYWluQXhpcyBhbmQgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgZC5vdmVyZmxvd3Muc2xpY2UoMCwgMikucmVkdWNlKChhY2MsIHYpID0+IGFjYyArIHYsIDApIDpcbiAgICAgICAgLy8gQ2hlY2sgb25seSB0aGUgbWFpbkF4aXMuXG4gICAgICAgIGQub3ZlcmZsb3dzWzBdLCBkLm92ZXJmbG93c107XG4gICAgICB9KS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGUgPSBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UuZmlsdGVyKGQgPT4gZFsyXS5zbGljZSgwLFxuICAgICAgLy8gQWxpZ25lZCBwbGFjZW1lbnRzIHNob3VsZCBub3QgY2hlY2sgdGhlaXIgb3Bwb3NpdGUgY3Jvc3NBeGlzXG4gICAgICAvLyBzaWRlLlxuICAgICAgZ2V0QWxpZ25tZW50KGRbMF0pID8gMiA6IDMpLmV2ZXJ5KHYgPT4gdiA8PSAwKSk7XG4gICAgICBjb25zdCByZXNldFBsYWNlbWVudCA9ICgoX3BsYWNlbWVudHNUaGF0Rml0T25FID0gcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX3BsYWNlbWVudHNUaGF0Rml0T25FWzBdKSB8fCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2VbMF1bMF07XG4gICAgICBpZiAocmVzZXRQbGFjZW1lbnQgIT09IHBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdmbGlwJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGFycm93LCBfbWlkZGxld2FyZURhdGEkZmxpcDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIGluaXRpYWxQbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgICAgZmFsbGJhY2tTdHJhdGVneSA9ICdiZXN0Rml0JyxcbiAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9ICdub25lJyxcbiAgICAgICAgZmxpcEFsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcblxuICAgICAgLy8gSWYgYSByZXNldCBieSB0aGUgYXJyb3cgd2FzIGNhdXNlZCBkdWUgdG8gYW4gYWxpZ25tZW50IG9mZnNldCBiZWluZ1xuICAgICAgLy8gYWRkZWQsIHdlIHNob3VsZCBza2lwIGFueSBsb2dpYyBub3cgc2luY2UgYGZsaXAoKWAgaGFzIGFscmVhZHkgZG9uZSBpdHNcbiAgICAgIC8vIHdvcmsuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI1NDkjaXNzdWVjb21tZW50LTE3MTk2MDE2NDNcbiAgICAgIGlmICgoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaW5pdGlhbFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoaW5pdGlhbFBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc0Jhc2VQbGFjZW1lbnQgPSBnZXRTaWRlKGluaXRpYWxQbGFjZW1lbnQpID09PSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgICAgY29uc3QgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBBbGlnbm1lbnQgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoaW5pdGlhbFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uICE9PSAnbm9uZSc7XG4gICAgICBpZiAoIXNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyAmJiBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50cy5wdXNoKC4uLmdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiwgcnRsKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzID0gW2luaXRpYWxQbGFjZW1lbnQsIC4uLmZhbGxiYWNrUGxhY2VtZW50c107XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dzID0gW107XG4gICAgICBsZXQgb3ZlcmZsb3dzRGF0YSA9ICgoX21pZGRsZXdhcmVEYXRhJGZsaXAgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAub3ZlcmZsb3dzKSB8fCBbXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVdKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBzaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCk7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVzWzBdXSwgb3ZlcmZsb3dbc2lkZXNbMV1dKTtcbiAgICAgIH1cbiAgICAgIG92ZXJmbG93c0RhdGEgPSBbLi4ub3ZlcmZsb3dzRGF0YSwge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93c1xuICAgICAgfV07XG5cbiAgICAgIC8vIE9uZSBvciBtb3JlIHNpZGVzIGlzIG92ZXJmbG93aW5nLlxuICAgICAgaWYgKCFvdmVyZmxvd3MuZXZlcnkoc2lkZSA9PiBzaWRlIDw9IDApKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDIsIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gKCgoX21pZGRsZXdhcmVEYXRhJGZsaXAyID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwMi5pbmRleCkgfHwgMCkgKyAxO1xuICAgICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50c1tuZXh0SW5kZXhdO1xuICAgICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICAgIC8vIFRyeSBuZXh0IHBsYWNlbWVudCBhbmQgcmUtcnVuIHRoZSBsaWZlY3ljbGUuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgaW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dzOiBvdmVyZmxvd3NEYXRhXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcnN0LCBmaW5kIHRoZSBjYW5kaWRhdGVzIHRoYXQgZml0IG9uIHRoZSBtYWluQXhpcyBzaWRlIG9mIG92ZXJmbG93LFxuICAgICAgICAvLyB0aGVuIGZpbmQgdGhlIHBsYWNlbWVudCB0aGF0IGZpdHMgdGhlIGJlc3Qgb24gdGhlIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGxldCByZXNldFBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IGQub3ZlcmZsb3dzWzBdIDw9IDApLnNvcnQoKGEsIGIpID0+IGEub3ZlcmZsb3dzWzFdIC0gYi5vdmVyZmxvd3NbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyLnBsYWNlbWVudDtcblxuICAgICAgICAvLyBPdGhlcndpc2UgZmFsbGJhY2suXG4gICAgICAgIGlmICghcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZhbGxiYWNrU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Jlc3RGaXQnOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFyIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjI7XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlcjIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGQucGxhY2VtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaWRlQXhpcyA9PT0gaW5pdGlhbFNpZGVBeGlzIHx8XG4gICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGJpYXMgdG8gdGhlIGB5YCBzaWRlIGF4aXMgZHVlIHRvIGhvcml6b250YWxcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVhZGluZyBkaXJlY3Rpb25zIGZhdm9yaW5nIGdyZWF0ZXIgd2lkdGguXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTaWRlQXhpcyA9PT0gJ3knO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSkubWFwKGQgPT4gW2QucGxhY2VtZW50LCBkLm92ZXJmbG93cy5maWx0ZXIob3ZlcmZsb3cgPT4gb3ZlcmZsb3cgPiAwKS5yZWR1Y2UoKGFjYywgb3ZlcmZsb3cpID0+IGFjYyArIG92ZXJmbG93LCAwKV0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlcjJbMF07XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudCkge1xuICAgICAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdpbml0aWFsUGxhY2VtZW50JzpcbiAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudCAhPT0gcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoXG4gIH07XG59XG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIHNpZGVzLnNvbWUoc2lkZSA9PiBvdmVyZmxvd1tzaWRlXSA+PSAwKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdoaWRlJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0cmF0ZWd5ID0gJ3JlZmVyZW5jZUhpZGRlbicsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSAncmVmZXJlbmNlSGlkZGVuJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMucmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW5PZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbjogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdlc2NhcGVkJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5mbG9hdGluZyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZE9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgZXNjYXBlZDogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KHJlY3RzKSB7XG4gIGNvbnN0IG1pblggPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gIGNvbnN0IG1pblkgPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC50b3ApKTtcbiAgY29uc3QgbWF4WCA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gIGNvbnN0IG1heFkgPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5ib3R0b20pKTtcbiAgcmV0dXJuIHtcbiAgICB4OiBtaW5YLFxuICAgIHk6IG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJlY3RzQnlMaW5lKHJlY3RzKSB7XG4gIGNvbnN0IHNvcnRlZFJlY3RzID0gcmVjdHMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhLnkgLSBiLnkpO1xuICBjb25zdCBncm91cHMgPSBbXTtcbiAgbGV0IHByZXZSZWN0ID0gbnVsbDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJlY3QgPSBzb3J0ZWRSZWN0c1tpXTtcbiAgICBpZiAoIXByZXZSZWN0IHx8IHJlY3QueSAtIHByZXZSZWN0LnkgPiBwcmV2UmVjdC5oZWlnaHQgLyAyKSB7XG4gICAgICBncm91cHMucHVzaChbcmVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdLnB1c2gocmVjdCk7XG4gICAgfVxuICAgIHByZXZSZWN0ID0gcmVjdDtcbiAgfVxuICByZXR1cm4gZ3JvdXBzLm1hcChyZWN0ID0+IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KHJlY3QpKSk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2lubGluZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICAvLyBBIE1vdXNlRXZlbnQncyBjbGllbnR7WCxZfSBjb29yZHMgY2FuIGJlIHVwIHRvIDIgcGl4ZWxzIG9mZiBhXG4gICAgICAvLyBDbGllbnRSZWN0J3MgYm91bmRzLCBkZXNwaXRlIHRoZSBldmVudCBsaXN0ZW5lciBiZWluZyB0cmlnZ2VyZWQuIEFcbiAgICAgIC8vIHBhZGRpbmcgb2YgMiBzZWVtcyB0byBoYW5kbGUgdGhpcyBpc3N1ZS5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFkZGluZyA9IDIsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBuYXRpdmVDbGllbnRSZWN0cyA9IEFycmF5LmZyb20oKGF3YWl0IChwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMoZWxlbWVudHMucmVmZXJlbmNlKSkpIHx8IFtdKTtcbiAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gZ2V0UmVjdHNCeUxpbmUobmF0aXZlQ2xpZW50UmVjdHMpO1xuICAgICAgY29uc3QgZmFsbGJhY2sgPSByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChuYXRpdmVDbGllbnRSZWN0cykpO1xuICAgICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgICBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICAgIC8vIFRoZXJlIGFyZSB0d28gcmVjdHMgYW5kIHRoZXkgYXJlIGRpc2pvaW5lZC5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA9PT0gMiAmJiBjbGllbnRSZWN0c1swXS5sZWZ0ID4gY2xpZW50UmVjdHNbMV0ucmlnaHQgJiYgeCAhPSBudWxsICYmIHkgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IHJlY3QgaW4gd2hpY2ggdGhlIHBvaW50IGlzIGZ1bGx5IGluc2lkZS5cbiAgICAgICAgICByZXR1cm4gY2xpZW50UmVjdHMuZmluZChyZWN0ID0+IHggPiByZWN0LmxlZnQgLSBwYWRkaW5nT2JqZWN0LmxlZnQgJiYgeCA8IHJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0ICYmIHkgPiByZWN0LnRvcCAtIHBhZGRpbmdPYmplY3QudG9wICYmIHkgPCByZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSB8fCBmYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZXJlIGFyZSAyIG9yIG1vcmUgY29ubmVjdGVkIHJlY3RzLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICBpZiAoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlY3QgPSBjbGllbnRSZWN0c1swXTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gY2xpZW50UmVjdHNbY2xpZW50UmVjdHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBpc1RvcCA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBmaXJzdFJlY3QudG9wO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gbGFzdFJlY3QuYm90dG9tO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IGlzVG9wID8gZmlyc3RSZWN0LmxlZnQgOiBsYXN0UmVjdC5sZWZ0O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBpc1RvcCA/IGZpcnN0UmVjdC5yaWdodCA6IGxhc3RSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNMZWZ0U2lkZSA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ2xlZnQnO1xuICAgICAgICAgIGNvbnN0IG1heFJpZ2h0ID0gbWF4KC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgICAgICAgICBjb25zdCBtaW5MZWZ0ID0gbWluKC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVSZWN0cyA9IGNsaWVudFJlY3RzLmZpbHRlcihyZWN0ID0+IGlzTGVmdFNpZGUgPyByZWN0LmxlZnQgPT09IG1pbkxlZnQgOiByZWN0LnJpZ2h0ID09PSBtYXhSaWdodCk7XG4gICAgICAgICAgY29uc3QgdG9wID0gbWVhc3VyZVJlY3RzWzBdLnRvcDtcbiAgICAgICAgICBjb25zdCBib3R0b20gPSBtZWFzdXJlUmVjdHNbbWVhc3VyZVJlY3RzLmxlbmd0aCAtIDFdLmJvdHRvbTtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gbWluTGVmdDtcbiAgICAgICAgICBjb25zdCByaWdodCA9IG1heFJpZ2h0O1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNldFJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gICAgICAgIH0sXG4gICAgICAgIGZsb2F0aW5nOiBlbGVtZW50cy5mbG9hdGluZyxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlY3RzLnJlZmVyZW5jZS54ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS54IHx8IHJlY3RzLnJlZmVyZW5jZS55ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS55IHx8IHJlY3RzLnJlZmVyZW5jZS53aWR0aCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2Uud2lkdGggfHwgcmVjdHMucmVmZXJlbmNlLmhlaWdodCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiByZXNldFJlY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8vIEZvciB0eXBlIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LCB0aGUgYE9mZnNldE9wdGlvbnNgIHR5cGUgd2FzIGFsc29cbi8vIERlcml2YWJsZS5cblxuYXN5bmMgZnVuY3Rpb24gY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCxcbiAgICBwbGF0Zm9ybSxcbiAgICBlbGVtZW50c1xuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gIGNvbnN0IG1haW5BeGlzTXVsdGkgPSBbJ2xlZnQnLCAndG9wJ10uaW5jbHVkZXMoc2lkZSkgPyAtMSA6IDE7XG4gIGNvbnN0IGNyb3NzQXhpc011bHRpID0gcnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDE7XG4gIGNvbnN0IHJhd1ZhbHVlID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgbGV0IHtcbiAgICBtYWluQXhpcyxcbiAgICBjcm9zc0F4aXMsXG4gICAgYWxpZ25tZW50QXhpc1xuICB9ID0gdHlwZW9mIHJhd1ZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUsXG4gICAgY3Jvc3NBeGlzOiAwLFxuICAgIGFsaWdubWVudEF4aXM6IG51bGxcbiAgfSA6IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUubWFpbkF4aXMgfHwgMCxcbiAgICBjcm9zc0F4aXM6IHJhd1ZhbHVlLmNyb3NzQXhpcyB8fCAwLFxuICAgIGFsaWdubWVudEF4aXM6IHJhd1ZhbHVlLmFsaWdubWVudEF4aXNcbiAgfTtcbiAgaWYgKGFsaWdubWVudCAmJiB0eXBlb2YgYWxpZ25tZW50QXhpcyA9PT0gJ251bWJlcicpIHtcbiAgICBjcm9zc0F4aXMgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gYWxpZ25tZW50QXhpcyAqIC0xIDogYWxpZ25tZW50QXhpcztcbiAgfVxuICByZXR1cm4gaXNWZXJ0aWNhbCA/IHtcbiAgICB4OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aSxcbiAgICB5OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGlcbiAgfSA6IHtcbiAgICB4OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGksXG4gICAgeTogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGlcbiAgfTtcbn1cblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSAwO1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ29mZnNldCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJGFycm93O1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCBkaWZmQ29vcmRzID0gYXdhaXQgY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpO1xuXG4gICAgICAvLyBJZiB0aGUgcGxhY2VtZW50IGlzIHRoZSBzYW1lIGFuZCB0aGUgYXJyb3cgY2F1c2VkIGFuIGFsaWdubWVudCBvZmZzZXRcbiAgICAgIC8vIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBjaGFuZ2UgdGhlIHBvc2l0aW9uaW5nIGNvb3JkaW5hdGVzLlxuICAgICAgaWYgKHBsYWNlbWVudCA9PT0gKChfbWlkZGxld2FyZURhdGEkb2Zmc2UgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UucGxhY2VtZW50KSAmJiAoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiB4ICsgZGlmZkNvb3Jkcy54LFxuICAgICAgICB5OiB5ICsgZGlmZkNvb3Jkcy55LFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4uZGlmZkNvb3JkcyxcbiAgICAgICAgICBwbGFjZW1lbnRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NoaWZ0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudFxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgbGltaXRlciA9IHtcbiAgICAgICAgICBmbjogX3JlZiA9PiB7XG4gICAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9ID0gX3JlZjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMoZ2V0U2lkZShwbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBtYWluQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IG1haW5BeGlzQ29vcmQgLSBvdmVyZmxvd1ttYXhTaWRlXTtcbiAgICAgICAgbWFpbkF4aXNDb29yZCA9IGNsYW1wKG1pbiwgbWFpbkF4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IGNyb3NzQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBjcm9zc0F4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBjcm9zc0F4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGNsYW1wKG1pbiwgY3Jvc3NBeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW1pdGVkQ29vcmRzID0gbGltaXRlci5mbih7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubGltaXRlZENvb3JkcyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHg6IGxpbWl0ZWRDb29yZHMueCAtIHgsXG4gICAgICAgICAgeTogbGltaXRlZENvb3Jkcy55IC0geSxcbiAgICAgICAgICBlbmFibGVkOiB7XG4gICAgICAgICAgICBbbWFpbkF4aXNdOiBjaGVja01haW5BeGlzLFxuICAgICAgICAgICAgW2Nyb3NzQXhpc106IGNoZWNrQ3Jvc3NBeGlzXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG9wdGlvbnMsXG4gICAgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgb2Zmc2V0ID0gMCxcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGNyb3NzQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBtYWluQXhpcyA9IGdldE9wcG9zaXRlQXhpcyhjcm9zc0F4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBjb25zdCByYXdPZmZzZXQgPSBldmFsdWF0ZShvZmZzZXQsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvbXB1dGVkT2Zmc2V0ID0gdHlwZW9mIHJhd09mZnNldCA9PT0gJ251bWJlcicgPyB7XG4gICAgICAgIG1haW5BeGlzOiByYXdPZmZzZXQsXG4gICAgICAgIGNyb3NzQXhpczogMFxuICAgICAgfSA6IHtcbiAgICAgICAgbWFpbkF4aXM6IDAsXG4gICAgICAgIGNyb3NzQXhpczogMCxcbiAgICAgICAgLi4ucmF3T2Zmc2V0XG4gICAgICB9O1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSAtIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBpZiAobWFpbkF4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKG1haW5BeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRvZmZzZTI7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgIGNvbnN0IGlzT3JpZ2luU2lkZSA9IFsndG9wJywgJ2xlZnQnXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIChpc09yaWdpblNpZGUgPyAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZVtjcm9zc0F4aXNdKSB8fCAwIDogMCkgKyAoaXNPcmlnaW5TaWRlID8gMCA6IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSArIChpc09yaWdpblNpZGUgPyAwIDogKChfbWlkZGxld2FyZURhdGEkb2Zmc2UyID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlMltjcm9zc0F4aXNdKSB8fCAwKSAtIChpc09yaWdpblNpZGUgPyBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMgOiAwKTtcbiAgICAgICAgaWYgKGNyb3NzQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKGNyb3NzQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaXplJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX3N0YXRlJG1pZGRsZXdhcmVEYXRhLCBfc3RhdGUkbWlkZGxld2FyZURhdGEyO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYXBwbHkgPSAoKSA9PiB7fSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzWUF4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICAgIH0gPSByZWN0cy5mbG9hdGluZztcbiAgICAgIGxldCBoZWlnaHRTaWRlO1xuICAgICAgbGV0IHdpZHRoU2lkZTtcbiAgICAgIGlmIChzaWRlID09PSAndG9wJyB8fCBzaWRlID09PSAnYm90dG9tJykge1xuICAgICAgICBoZWlnaHRTaWRlID0gc2lkZTtcbiAgICAgICAgd2lkdGhTaWRlID0gYWxpZ25tZW50ID09PSAoKGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSkgPyAnc3RhcnQnIDogJ2VuZCcpID8gJ2xlZnQnIDogJ3JpZ2h0JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpZHRoU2lkZSA9IHNpZGU7XG4gICAgICAgIGhlaWdodFNpZGUgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gJ3RvcCcgOiAnYm90dG9tJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ0hlaWdodCA9IGhlaWdodCAtIG92ZXJmbG93LnRvcCAtIG92ZXJmbG93LmJvdHRvbTtcbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ1dpZHRoID0gd2lkdGggLSBvdmVyZmxvdy5sZWZ0IC0gb3ZlcmZsb3cucmlnaHQ7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodCA9IG1pbihoZWlnaHQgLSBvdmVyZmxvd1toZWlnaHRTaWRlXSwgbWF4aW11bUNsaXBwaW5nSGVpZ2h0KTtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlV2lkdGggPSBtaW4od2lkdGggLSBvdmVyZmxvd1t3aWR0aFNpZGVdLCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCk7XG4gICAgICBjb25zdCBub1NoaWZ0ID0gIXN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0O1xuICAgICAgbGV0IGF2YWlsYWJsZUhlaWdodCA9IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0O1xuICAgICAgbGV0IGF2YWlsYWJsZVdpZHRoID0gb3ZlcmZsb3dBdmFpbGFibGVXaWR0aDtcbiAgICAgIGlmICgoX3N0YXRlJG1pZGRsZXdhcmVEYXRhID0gc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQpICE9IG51bGwgJiYgX3N0YXRlJG1pZGRsZXdhcmVEYXRhLmVuYWJsZWQueCkge1xuICAgICAgICBhdmFpbGFibGVXaWR0aCA9IG1heGltdW1DbGlwcGluZ1dpZHRoO1xuICAgICAgfVxuICAgICAgaWYgKChfc3RhdGUkbWlkZGxld2FyZURhdGEyID0gc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQpICE9IG51bGwgJiYgX3N0YXRlJG1pZGRsZXdhcmVEYXRhMi5lbmFibGVkLnkpIHtcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gbWF4aW11bUNsaXBwaW5nSGVpZ2h0O1xuICAgICAgfVxuICAgICAgaWYgKG5vU2hpZnQgJiYgIWFsaWdubWVudCkge1xuICAgICAgICBjb25zdCB4TWluID0gbWF4KG92ZXJmbG93LmxlZnQsIDApO1xuICAgICAgICBjb25zdCB4TWF4ID0gbWF4KG92ZXJmbG93LnJpZ2h0LCAwKTtcbiAgICAgICAgY29uc3QgeU1pbiA9IG1heChvdmVyZmxvdy50b3AsIDApO1xuICAgICAgICBjb25zdCB5TWF4ID0gbWF4KG92ZXJmbG93LmJvdHRvbSwgMCk7XG4gICAgICAgIGlmIChpc1lBeGlzKSB7XG4gICAgICAgICAgYXZhaWxhYmxlV2lkdGggPSB3aWR0aCAtIDIgKiAoeE1pbiAhPT0gMCB8fCB4TWF4ICE9PSAwID8geE1pbiArIHhNYXggOiBtYXgob3ZlcmZsb3cubGVmdCwgb3ZlcmZsb3cucmlnaHQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBoZWlnaHQgLSAyICogKHlNaW4gIT09IDAgfHwgeU1heCAhPT0gMCA/IHlNaW4gKyB5TWF4IDogbWF4KG92ZXJmbG93LnRvcCwgb3ZlcmZsb3cuYm90dG9tKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcGx5KHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGF2YWlsYWJsZVdpZHRoLFxuICAgICAgICBhdmFpbGFibGVIZWlnaHRcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbmV4dERpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICAgIGlmICh3aWR0aCAhPT0gbmV4dERpbWVuc2lvbnMud2lkdGggfHwgaGVpZ2h0ICE9PSBuZXh0RGltZW5zaW9ucy5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBzaGlmdCwgc2l6ZSB9O1xuIiwiZnVuY3Rpb24gaGFzV2luZG93KCkge1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG59XG5mdW5jdGlvbiBnZXROb2RlTmFtZShub2RlKSB7XG4gIGlmIChpc05vZGUobm9kZSkpIHtcbiAgICByZXR1cm4gKG5vZGUubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgLy8gTW9ja2VkIG5vZGVzIGluIHRlc3RpbmcgZW52aXJvbm1lbnRzIG1heSBub3QgYmUgaW5zdGFuY2VzIG9mIE5vZGUuIEJ5XG4gIC8vIHJldHVybmluZyBgI2RvY3VtZW50YCBhbiBpbmZpbml0ZSBsb29wIHdvbid0IG9jY3VyLlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzIzMTdcbiAgcmV0dXJuICcjZG9jdW1lbnQnO1xufVxuZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gIHJldHVybiAobm9kZSA9PSBudWxsIHx8IChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgd2luZG93O1xufVxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpIHtcbiAgdmFyIF9yZWY7XG4gIHJldHVybiAoX3JlZiA9IChpc05vZGUobm9kZSkgPyBub2RlLm93bmVyRG9jdW1lbnQgOiBub2RlLmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfcmVmLmRvY3VtZW50RWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIE5vZGUgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLk5vZGU7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5FbGVtZW50O1xufVxuZnVuY3Rpb24gaXNIVE1MRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5IVE1MRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpIHx8IHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBTaGFkb3dSb290IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5TaGFkb3dSb290O1xufVxuZnVuY3Rpb24gaXNPdmVyZmxvd0VsZW1lbnQoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgb3ZlcmZsb3csXG4gICAgb3ZlcmZsb3dYLFxuICAgIG92ZXJmbG93WSxcbiAgICBkaXNwbGF5XG4gIH0gPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpICYmICFbJ2lubGluZScsICdjb250ZW50cyddLmluY2x1ZGVzKGRpc3BsYXkpO1xufVxuZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKGVsZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGlzVG9wTGF5ZXIoZWxlbWVudCkge1xuICByZXR1cm4gWyc6cG9wb3Zlci1vcGVuJywgJzptb2RhbCddLnNvbWUoc2VsZWN0b3IgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGlzQ29udGFpbmluZ0Jsb2NrKGVsZW1lbnRPckNzcykge1xuICBjb25zdCB3ZWJraXQgPSBpc1dlYktpdCgpO1xuICBjb25zdCBjc3MgPSBpc0VsZW1lbnQoZWxlbWVudE9yQ3NzKSA/IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudE9yQ3NzKSA6IGVsZW1lbnRPckNzcztcblxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRyYW5zZm9ybXMtMi8jaW5kaXZpZHVhbC10cmFuc2Zvcm1zXG4gIHJldHVybiBbJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUnLCAnc2NhbGUnLCAncm90YXRlJywgJ3BlcnNwZWN0aXZlJ10uc29tZSh2YWx1ZSA9PiBjc3NbdmFsdWVdID8gY3NzW3ZhbHVlXSAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IChjc3MuY29udGFpbmVyVHlwZSA/IGNzcy5jb250YWluZXJUeXBlICE9PSAnbm9ybWFsJyA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuYmFja2Ryb3BGaWx0ZXIgPyBjc3MuYmFja2Ryb3BGaWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuZmlsdGVyID8gY3NzLmZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IFsndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZScsICdzY2FsZScsICdyb3RhdGUnLCAncGVyc3BlY3RpdmUnLCAnZmlsdGVyJ10uc29tZSh2YWx1ZSA9PiAoY3NzLndpbGxDaGFuZ2UgfHwgJycpLmluY2x1ZGVzKHZhbHVlKSkgfHwgWydwYWludCcsICdsYXlvdXQnLCAnc3RyaWN0JywgJ2NvbnRlbnQnXS5zb21lKHZhbHVlID0+IChjc3MuY29udGFpbiB8fCAnJykuaW5jbHVkZXModmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGlmIChpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2UgaWYgKGlzVG9wTGF5ZXIoY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzV2ViS2l0KCkge1xuICBpZiAodHlwZW9mIENTUyA9PT0gJ3VuZGVmaW5lZCcgfHwgIUNTUy5zdXBwb3J0cykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gQ1NTLnN1cHBvcnRzKCctd2Via2l0LWJhY2tkcm9wLWZpbHRlcicsICdub25lJyk7XG59XG5mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUobm9kZSkge1xuICByZXR1cm4gWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUobm9kZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZWxlbWVudCkge1xuICBpZiAoaXNFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxYLFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICBjb25zdCByZXN1bHQgPVxuICAvLyBTdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZS5cbiAgbm9kZS5hc3NpZ25lZFNsb3QgfHxcbiAgLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWQuXG4gIG5vZGUucGFyZW50Tm9kZSB8fFxuICAvLyBTaGFkb3dSb290IGRldGVjdGVkLlxuICBpc1NoYWRvd1Jvb3Qobm9kZSkgJiYgbm9kZS5ob3N0IHx8XG4gIC8vIEZhbGxiYWNrLlxuICBnZXREb2N1bWVudEVsZW1lbnQobm9kZSk7XG4gIHJldHVybiBpc1NoYWRvd1Jvb3QocmVzdWx0KSA/IHJlc3VsdC5ob3N0IDogcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQgPyBub2RlLm93bmVyRG9jdW1lbnQuYm9keSA6IG5vZGUuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cbmZ1bmN0aW9uIGdldE92ZXJmbG93QW5jZXN0b3JzKG5vZGUsIGxpc3QsIHRyYXZlcnNlSWZyYW1lcykge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDI7XG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cbiAgaWYgKHRyYXZlcnNlSWZyYW1lcyA9PT0gdm9pZCAwKSB7XG4gICAgdHJhdmVyc2VJZnJhbWVzID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQyID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudDIuYm9keSk7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhzY3JvbGxhYmxlQW5jZXN0b3IpO1xuICBpZiAoaXNCb2R5KSB7XG4gICAgY29uc3QgZnJhbWVFbGVtZW50ID0gZ2V0RnJhbWVFbGVtZW50KHdpbik7XG4gICAgcmV0dXJuIGxpc3QuY29uY2F0KHdpbiwgd2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc092ZXJmbG93RWxlbWVudChzY3JvbGxhYmxlQW5jZXN0b3IpID8gc2Nyb2xsYWJsZUFuY2VzdG9yIDogW10sIGZyYW1lRWxlbWVudCAmJiB0cmF2ZXJzZUlmcmFtZXMgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhmcmFtZUVsZW1lbnQpIDogW10pO1xuICB9XG4gIHJldHVybiBsaXN0LmNvbmNhdChzY3JvbGxhYmxlQW5jZXN0b3IsIGdldE92ZXJmbG93QW5jZXN0b3JzKHNjcm9sbGFibGVBbmNlc3RvciwgW10sIHRyYXZlcnNlSWZyYW1lcykpO1xufVxuZnVuY3Rpb24gZ2V0RnJhbWVFbGVtZW50KHdpbikge1xuICByZXR1cm4gd2luLnBhcmVudCAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yod2luLnBhcmVudCkgPyB3aW4uZnJhbWVFbGVtZW50IDogbnVsbDtcbn1cblxuZXhwb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgZ2V0Q29udGFpbmluZ0Jsb2NrLCBnZXREb2N1bWVudEVsZW1lbnQsIGdldEZyYW1lRWxlbWVudCwgZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IsIGdldE5vZGVOYW1lLCBnZXROb2RlU2Nyb2xsLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgZ2V0V2luZG93LCBpc0NvbnRhaW5pbmdCbG9jaywgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzTm9kZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGlzU2hhZG93Um9vdCwgaXNUYWJsZUVsZW1lbnQsIGlzVG9wTGF5ZXIsIGlzV2ViS2l0IH07XG4iLCJpbXBvcnQgeyByZWN0VG9DbGllbnRSZWN0LCBkZXRlY3RPdmVyZmxvdyBhcyBkZXRlY3RPdmVyZmxvdyQxLCBvZmZzZXQgYXMgb2Zmc2V0JDEsIGF1dG9QbGFjZW1lbnQgYXMgYXV0b1BsYWNlbWVudCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBmbGlwIGFzIGZsaXAkMSwgc2l6ZSBhcyBzaXplJDEsIGhpZGUgYXMgaGlkZSQxLCBhcnJvdyBhcyBhcnJvdyQxLCBpbmxpbmUgYXMgaW5saW5lJDEsIGxpbWl0U2hpZnQgYXMgbGltaXRTaGlmdCQxLCBjb21wdXRlUG9zaXRpb24gYXMgY29tcHV0ZVBvc2l0aW9uJDEgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5pbXBvcnQgeyByb3VuZCwgY3JlYXRlQ29vcmRzLCBtYXgsIG1pbiwgZmxvb3IgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNIVE1MRWxlbWVudCwgaXNFbGVtZW50LCBnZXRXaW5kb3csIGlzV2ViS2l0LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5vZGVTY3JvbGwsIGdldERvY3VtZW50RWxlbWVudCwgaXNUb3BMYXllciwgZ2V0Tm9kZU5hbWUsIGlzT3ZlcmZsb3dFbGVtZW50LCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc0NvbnRhaW5pbmdCbG9jaywgaXNUYWJsZUVsZW1lbnQsIGdldENvbnRhaW5pbmdCbG9jayB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuZXhwb3J0IHsgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcblxuZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkOiBzaG91bGRGYWxsYmFja1xuICB9O1xufVxuXG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuICFpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRleHRFbGVtZW50IDogZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvb3JkcygxKTtcbiAgfVxuICBjb25zdCByZWN0ID0gZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9ICgkID8gcm91bmQocmVjdC53aWR0aCkgOiByZWN0LndpZHRoKSAvIHdpZHRoO1xuICBsZXQgeSA9ICgkID8gcm91bmQocmVjdC5oZWlnaHQpIDogcmVjdC5oZWlnaHQpIC8gaGVpZ2h0O1xuXG4gIC8vIDAsIE5hTiwgb3IgSW5maW5pdHkgc2hvdWxkIGFsd2F5cyBmYWxsYmFjayB0byAxLlxuXG4gIGlmICgheCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgeCA9IDE7XG4gIH1cbiAgaWYgKCF5IHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICB5ID0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5jb25zdCBub09mZnNldHMgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29vcmRzKDApO1xuZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKCFpc1dlYktpdCgpIHx8ICF3aW4udmlzdWFsVmlld3BvcnQpIHtcbiAgICByZXR1cm4gbm9PZmZzZXRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQsXG4gICAgeTogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcFxuICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhlbGVtZW50LCBpc0ZpeGVkLCBmbG9hdGluZ09mZnNldFBhcmVudCkge1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IGZhbHNlO1xuICB9XG4gIGlmICghZmxvYXRpbmdPZmZzZXRQYXJlbnQgfHwgaXNGaXhlZCAmJiBmbG9hdGluZ09mZnNldFBhcmVudCAhPT0gZ2V0V2luZG93KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc0ZpeGVkO1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgaWYgKGluY2x1ZGVTY2FsZSkge1xuICAgIGlmIChvZmZzZXRQYXJlbnQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSA/IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGxldCB4ID0gKGNsaWVudFJlY3QubGVmdCArIHZpc3VhbE9mZnNldHMueCkgLyBzY2FsZS54O1xuICBsZXQgeSA9IChjbGllbnRSZWN0LnRvcCArIHZpc3VhbE9mZnNldHMueSkgLyBzY2FsZS55O1xuICBsZXQgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGUueDtcbiAgbGV0IGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGUueTtcbiAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZG9tRWxlbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0V2luID0gb2Zmc2V0UGFyZW50ICYmIGlzRWxlbWVudChvZmZzZXRQYXJlbnQpID8gZ2V0V2luZG93KG9mZnNldFBhcmVudCkgOiBvZmZzZXRQYXJlbnQ7XG4gICAgbGV0IGN1cnJlbnRXaW4gPSB3aW47XG4gICAgbGV0IGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgd2hpbGUgKGN1cnJlbnRJRnJhbWUgJiYgb2Zmc2V0UGFyZW50ICYmIG9mZnNldFdpbiAhPT0gY3VycmVudFdpbikge1xuICAgICAgY29uc3QgaWZyYW1lU2NhbGUgPSBnZXRTY2FsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGlmcmFtZVJlY3QgPSBjdXJyZW50SUZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBpZnJhbWVSZWN0LmxlZnQgKyAoY3VycmVudElGcmFtZS5jbGllbnRMZWZ0ICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ0xlZnQpKSAqIGlmcmFtZVNjYWxlLng7XG4gICAgICBjb25zdCB0b3AgPSBpZnJhbWVSZWN0LnRvcCArIChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGxlZnQ7XG4gICAgICB5ICs9IHRvcDtcbiAgICAgIGN1cnJlbnRXaW4gPSBnZXRXaW5kb3coY3VycmVudElGcmFtZSk7XG4gICAgICBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9KTtcbn1cblxuLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuLy8gaW5jb3JyZWN0IGZvciBSVEwuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQsIHJlY3QpIHtcbiAgY29uc3QgbGVmdFNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbiAgaWYgKCFyZWN0KSB7XG4gICAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBsZWZ0U2Nyb2xsO1xuICB9XG4gIHJldHVybiByZWN0LmxlZnQgKyBsZWZ0U2Nyb2xsO1xufVxuXG5mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCBpZ25vcmVTY3JvbGxiYXJYKSB7XG4gIGlmIChpZ25vcmVTY3JvbGxiYXJYID09PSB2b2lkIDApIHtcbiAgICBpZ25vcmVTY3JvbGxiYXJYID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgaHRtbFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHggPSBodG1sUmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSAoaWdub3JlU2Nyb2xsYmFyWCA/IDAgOlxuICAvLyBSVEwgPGJvZHk+IHNjcm9sbGJhci5cbiAgZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQsIGh0bWxSZWN0KSk7XG4gIGNvbnN0IHkgPSBodG1sUmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IHRvcExheWVyID0gZWxlbWVudHMgPyBpc1RvcExheWVyKGVsZW1lbnRzLmZsb2F0aW5nKSA6IGZhbHNlO1xuICBpZiAob2Zmc2V0UGFyZW50ID09PSBkb2N1bWVudEVsZW1lbnQgfHwgdG9wTGF5ZXIgJiYgaXNGaXhlZCkge1xuICAgIHJldHVybiByZWN0O1xuICB9XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgdHJ1ZSkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggKiBzY2FsZS54LFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKiBzY2FsZS55LFxuICAgIHg6IHJlY3QueCAqIHNjYWxlLnggLSBzY3JvbGwuc2Nyb2xsTGVmdCAqIHNjYWxlLnggKyBvZmZzZXRzLnggKyBodG1sT2Zmc2V0LngsXG4gICAgeTogcmVjdC55ICogc2NhbGUueSAtIHNjcm9sbC5zY3JvbGxUb3AgKiBzY2FsZS55ICsgb2Zmc2V0cy55ICsgaHRtbE9mZnNldC55XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RzKGVsZW1lbnQpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKTtcbn1cblxuLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cbmZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCk7XG4gIGNvbnN0IGJvZHkgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgY29uc3Qgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keS5zY3JvbGxXaWR0aCwgYm9keS5jbGllbnRXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5LmNsaWVudEhlaWdodCk7XG4gIGxldCB4ID0gLXNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgY29uc3QgeSA9IC1zY3JvbGwuc2Nyb2xsVG9wO1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1dlYktpdCgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgeDogY2xpcHBpbmdBbmNlc3Rvci54IC0gdmlzdWFsT2Zmc2V0cy54LFxuICAgICAgeTogY2xpcHBpbmdBbmNlc3Rvci55IC0gdmlzdWFsT2Zmc2V0cy55LFxuICAgICAgd2lkdGg6IGNsaXBwaW5nQW5jZXN0b3Iud2lkdGgsXG4gICAgICBoZWlnaHQ6IGNsaXBwaW5nQW5jZXN0b3IuaGVpZ2h0XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdChyZWN0KTtcbn1cbmZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBzdG9wTm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgaWYgKHBhcmVudE5vZGUgPT09IHN0b3BOb2RlIHx8ICFpc0VsZW1lbnQocGFyZW50Tm9kZSkgfHwgaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50LCBbXSwgZmFsc2UpLmZpbHRlcihlbCA9PiBpc0VsZW1lbnQoZWwpICYmIGdldE5vZGVOYW1lKGVsKSAhPT0gJ2JvZHknKTtcbiAgbGV0IGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgY29uc3QgZWxlbWVudElzRml4ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpO1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSXNDb250YWluaW5nID0gaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpO1xuICAgIGlmICghY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzaG91bGREcm9wQ3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiAhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgOiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYgISFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSAmJiBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5jbHVkZXMoY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUucG9zaXRpb24pIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIGN1cnJlbnROb2RlKTtcbiAgICBpZiAoc2hvdWxkRHJvcEN1cnJlbnROb2RlKSB7XG4gICAgICAvLyBEcm9wIG5vbi1jb250YWluaW5nIGJsb2Nrcy5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoYW5jZXN0b3IgPT4gYW5jZXN0b3IgIT09IGN1cnJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVjb3JkIGxhc3QgY29udGFpbmluZyBibG9jayBmb3IgbmV4dCBpdGVyYXRpb24uXG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgY2FjaGUuc2V0KGVsZW1lbnQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIGFuY2VzdG9ycy5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudCxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdBbmNlc3RvcnMnID8gaXNUb3BMYXllcihlbGVtZW50KSA/IFtdIDogZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIHRoaXMuX2MpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgY29uc3QgY2xpcHBpbmdBbmNlc3RvcnMgPSBbLi4uZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzLCByb290Qm91bmRhcnldO1xuICBjb25zdCBmaXJzdENsaXBwaW5nQW5jZXN0b3IgPSBjbGlwcGluZ0FuY2VzdG9yc1swXTtcbiAgY29uc3QgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdBbmNlc3RvcnMucmVkdWNlKChhY2NSZWN0LCBjbGlwcGluZ0FuY2VzdG9yKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcCxcbiAgICB4OiBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICB5OiBjbGlwcGluZ1JlY3QudG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlbGVtZW50LCBvZmZzZXRQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAvLyBJZiB0aGUgPGJvZHk+IHNjcm9sbGJhciBhcHBlYXJzIG9uIHRoZSBsZWZ0IChlLmcuIFJUTCBzeXN0ZW1zKS4gVXNlXG4gICAgICAvLyBGaXJlZm94IHdpdGggbGF5b3V0LnNjcm9sbGJhci5zaWRlID0gMyBpbiBhYm91dDpjb25maWcgdG8gdGVzdCB0aGlzLlxuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwpIDogY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCB4ID0gcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLnggLSBodG1sT2Zmc2V0Lng7XG4gIGNvbnN0IHkgPSByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnkgLSBodG1sT2Zmc2V0Lnk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTdGF0aWNQb3NpdGlvbmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHBvbHlmaWxsKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGVsZW1lbnQpO1xuICB9XG4gIGxldCByYXdPZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcblxuICAvLyBGaXJlZm94IHJldHVybnMgdGhlIDxodG1sPiBlbGVtZW50IGFzIHRoZSBvZmZzZXRQYXJlbnQgaWYgaXQncyBub24tc3RhdGljLFxuICAvLyB3aGlsZSBDaHJvbWUgYW5kIFNhZmFyaSByZXR1cm4gdGhlIDxib2R5PiBlbGVtZW50LiBUaGUgPGJvZHk+IGVsZW1lbnQgbXVzdFxuICAvLyBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgY2FsY3VsYXRpb25zIGV2ZW4gaWYgdGhlIDxodG1sPiBlbGVtZW50IGlzXG4gIC8vIG5vbi1zdGF0aWMuXG4gIGlmIChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgPT09IHJhd09mZnNldFBhcmVudCkge1xuICAgIHJhd09mZnNldFBhcmVudCA9IHJhd09mZnNldFBhcmVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cbiAgcmV0dXJuIHJhd09mZnNldFBhcmVudDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmIChpc1RvcExheWVyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBsZXQgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICB3aGlsZSAoc3ZnT2Zmc2V0UGFyZW50ICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgaWYgKGlzRWxlbWVudChzdmdPZmZzZXRQYXJlbnQpICYmICFpc1N0YXRpY1Bvc2l0aW9uZWQoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgICByZXR1cm4gc3ZnT2Zmc2V0UGFyZW50O1xuICAgICAgfVxuICAgICAgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShzdmdPZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW47XG59XG5cbmNvbnN0IGdldEVsZW1lbnRSZWN0cyA9IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gIGNvbnN0IGZsb2F0aW5nRGltZW5zaW9ucyA9IGF3YWl0IGdldERpbWVuc2lvbnNGbihkYXRhLmZsb2F0aW5nKTtcbiAgcmV0dXJuIHtcbiAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGRhdGEucmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihkYXRhLmZsb2F0aW5nKSwgZGF0YS5zdHJhdGVneSksXG4gICAgZmxvYXRpbmc6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IGZsb2F0aW5nRGltZW5zaW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogZmxvYXRpbmdEaW1lbnNpb25zLmhlaWdodFxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGlzUlRMKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJztcbn1cblxuY29uc3QgcGxhdGZvcm0gPSB7XG4gIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0LFxuICBnZXREb2N1bWVudEVsZW1lbnQsXG4gIGdldENsaXBwaW5nUmVjdCxcbiAgZ2V0T2Zmc2V0UGFyZW50LFxuICBnZXRFbGVtZW50UmVjdHMsXG4gIGdldENsaWVudFJlY3RzLFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRTY2FsZSxcbiAgaXNFbGVtZW50LFxuICBpc1JUTFxufTtcblxuZnVuY3Rpb24gcmVjdHNBcmVFcXVhbChhLCBiKSB7XG4gIHJldHVybiBhLnggPT09IGIueCAmJiBhLnkgPT09IGIueSAmJiBhLndpZHRoID09PSBiLndpZHRoICYmIGEuaGVpZ2h0ID09PSBiLmhlaWdodDtcbn1cblxuLy8gaHR0cHM6Ly9zYW10aG9yLmF1LzIwMjEvb2JzZXJ2aW5nLWRvbS9cbmZ1bmN0aW9uIG9ic2VydmVNb3ZlKGVsZW1lbnQsIG9uTW92ZSkge1xuICBsZXQgaW8gPSBudWxsO1xuICBsZXQgdGltZW91dElkO1xuICBjb25zdCByb290ID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciBfaW87XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgKF9pbyA9IGlvKSA9PSBudWxsIHx8IF9pby5kaXNjb25uZWN0KCk7XG4gICAgaW8gPSBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIHJlZnJlc2goc2tpcCwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHNraXAgPT09IHZvaWQgMCkge1xuICAgICAgc2tpcCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICAgIHRocmVzaG9sZCA9IDE7XG4gICAgfVxuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCBlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4gPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHtcbiAgICAgIGxlZnQsXG4gICAgICB0b3AsXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH0gPSBlbGVtZW50UmVjdEZvclJvb3RNYXJnaW47XG4gICAgaWYgKCFza2lwKSB7XG4gICAgICBvbk1vdmUoKTtcbiAgICB9XG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGluc2V0VG9wID0gZmxvb3IodG9wKTtcbiAgICBjb25zdCBpbnNldFJpZ2h0ID0gZmxvb3Iocm9vdC5jbGllbnRXaWR0aCAtIChsZWZ0ICsgd2lkdGgpKTtcbiAgICBjb25zdCBpbnNldEJvdHRvbSA9IGZsb29yKHJvb3QuY2xpZW50SGVpZ2h0IC0gKHRvcCArIGhlaWdodCkpO1xuICAgIGNvbnN0IGluc2V0TGVmdCA9IGZsb29yKGxlZnQpO1xuICAgIGNvbnN0IHJvb3RNYXJnaW4gPSAtaW5zZXRUb3AgKyBcInB4IFwiICsgLWluc2V0UmlnaHQgKyBcInB4IFwiICsgLWluc2V0Qm90dG9tICsgXCJweCBcIiArIC1pbnNldExlZnQgKyBcInB4XCI7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3RNYXJnaW4sXG4gICAgICB0aHJlc2hvbGQ6IG1heCgwLCBtaW4oMSwgdGhyZXNob2xkKSkgfHwgMVxuICAgIH07XG4gICAgbGV0IGlzRmlyc3RVcGRhdGUgPSB0cnVlO1xuICAgIGZ1bmN0aW9uIGhhbmRsZU9ic2VydmUoZW50cmllcykge1xuICAgICAgY29uc3QgcmF0aW8gPSBlbnRyaWVzWzBdLmludGVyc2VjdGlvblJhdGlvO1xuICAgICAgaWYgKHJhdGlvICE9PSB0aHJlc2hvbGQpIHtcbiAgICAgICAgaWYgKCFpc0ZpcnN0VXBkYXRlKSB7XG4gICAgICAgICAgcmV0dXJuIHJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJhdGlvKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBjbGlwcGVkLCB0aGUgcmF0aW8gaXMgMC4gVGhyb3R0bGUgdGhlIHJlZnJlc2hcbiAgICAgICAgICAvLyB0byBwcmV2ZW50IGFuIGluZmluaXRlIGxvb3Agb2YgdXBkYXRlcy5cbiAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHJlZnJlc2goZmFsc2UsIDFlLTcpO1xuICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlZnJlc2goZmFsc2UsIHJhdGlvKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJhdGlvID09PSAxICYmICFyZWN0c0FyZUVxdWFsKGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbiwgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkpIHtcbiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IGV2ZW4gdGhvdWdoIHRoZSByYXRpbyBpcyByZXBvcnRlZCBhcyAxLCB0aGVcbiAgICAgICAgLy8gZWxlbWVudCBpcyBub3QgYWN0dWFsbHkgZnVsbHkgd2l0aGluIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlcidzIHJvb3RcbiAgICAgICAgLy8gYXJlYSBhbnltb3JlLiBUaGlzIGNhbiBoYXBwZW4gdW5kZXIgcGVyZm9ybWFuY2UgY29uc3RyYWludHMuIFRoaXMgbWF5XG4gICAgICAgIC8vIGJlIGEgYnVnIGluIHRoZSBicm93c2VyJ3MgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgaW1wbGVtZW50YXRpb24uIFRvXG4gICAgICAgIC8vIHdvcmsgYXJvdW5kIHRoaXMsIHdlIGNvbXBhcmUgdGhlIGVsZW1lbnQncyBib3VuZGluZyByZWN0IG5vdyB3aXRoXG4gICAgICAgIC8vIHdoYXQgaXQgd2FzIGF0IHRoZSB0aW1lIHdlIGNyZWF0ZWQgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyLiBJZiB0aGV5XG4gICAgICAgIC8vIGFyZSBub3QgZXF1YWwgdGhlbiB0aGUgZWxlbWVudCBtb3ZlZCwgc28gd2UgcmVmcmVzaC5cbiAgICAgICAgcmVmcmVzaCgpO1xuICAgICAgfVxuICAgICAgaXNGaXJzdFVwZGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIE9sZGVyIGJyb3dzZXJzIGRvbid0IHN1cHBvcnQgYSBgZG9jdW1lbnRgIGFzIHRoZSByb290IGFuZCB3aWxsIHRocm93IGFuXG4gICAgLy8gZXJyb3IuXG4gICAgdHJ5IHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgLy8gSGFuZGxlIDxpZnJhbWU+c1xuICAgICAgICByb290OiByb290Lm93bmVyRG9jdW1lbnRcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpby5vYnNlcnZlKGVsZW1lbnQpO1xuICB9XG4gIHJlZnJlc2godHJ1ZSk7XG4gIHJldHVybiBjbGVhbnVwO1xufVxuXG4vKipcbiAqIEF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgd2hlbiBuZWNlc3NhcnkuXG4gKiBTaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpcyBtb3VudGVkIG9uIHRoZSBET00gb3JcbiAqIHZpc2libGUgb24gdGhlIHNjcmVlbi5cbiAqIEByZXR1cm5zIGNsZWFudXAgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgaW52b2tlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzXG4gKiByZW1vdmVkIGZyb20gdGhlIERPTSBvciBoaWRkZW4gZnJvbSB0aGUgc2NyZWVuLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9VcGRhdGVcbiAqL1xuZnVuY3Rpb24gYXV0b1VwZGF0ZShyZWZlcmVuY2UsIGZsb2F0aW5nLCB1cGRhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgYW5jZXN0b3JTY3JvbGwgPSB0cnVlLFxuICAgIGFuY2VzdG9yUmVzaXplID0gdHJ1ZSxcbiAgICBlbGVtZW50UmVzaXplID0gdHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSAnZnVuY3Rpb24nLFxuICAgIGxheW91dFNoaWZ0ID0gdHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyID09PSAnZnVuY3Rpb24nLFxuICAgIGFuaW1hdGlvbkZyYW1lID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJlZmVyZW5jZUVsID0gdW53cmFwRWxlbWVudChyZWZlcmVuY2UpO1xuICBjb25zdCBhbmNlc3RvcnMgPSBhbmNlc3RvclNjcm9sbCB8fCBhbmNlc3RvclJlc2l6ZSA/IFsuLi4ocmVmZXJlbmNlRWwgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhyZWZlcmVuY2VFbCkgOiBbXSksIC4uLmdldE92ZXJmbG93QW5jZXN0b3JzKGZsb2F0aW5nKV0gOiBbXTtcbiAgYW5jZXN0b3JzLmZvckVhY2goYW5jZXN0b3IgPT4ge1xuICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGFuY2VzdG9yUmVzaXplICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSk7XG4gIH0pO1xuICBjb25zdCBjbGVhbnVwSW8gPSByZWZlcmVuY2VFbCAmJiBsYXlvdXRTaGlmdCA/IG9ic2VydmVNb3ZlKHJlZmVyZW5jZUVsLCB1cGRhdGUpIDogbnVsbDtcbiAgbGV0IHJlb2JzZXJ2ZUZyYW1lID0gLTE7XG4gIGxldCByZXNpemVPYnNlcnZlciA9IG51bGw7XG4gIGlmIChlbGVtZW50UmVzaXplKSB7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoX3JlZiA9PiB7XG4gICAgICBsZXQgW2ZpcnN0RW50cnldID0gX3JlZjtcbiAgICAgIGlmIChmaXJzdEVudHJ5ICYmIGZpcnN0RW50cnkudGFyZ2V0ID09PSByZWZlcmVuY2VFbCAmJiByZXNpemVPYnNlcnZlcikge1xuICAgICAgICAvLyBQcmV2ZW50IHVwZGF0ZSBsb29wcyB3aGVuIHVzaW5nIHRoZSBgc2l6ZWAgbWlkZGxld2FyZS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8xNzQwXG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShmbG9hdGluZyk7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJlb2JzZXJ2ZUZyYW1lKTtcbiAgICAgICAgcmVvYnNlcnZlRnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHZhciBfcmVzaXplT2JzZXJ2ZXI7XG4gICAgICAgICAgKF9yZXNpemVPYnNlcnZlciA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB1cGRhdGUoKTtcbiAgICB9KTtcbiAgICBpZiAocmVmZXJlbmNlRWwgJiYgIWFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHJlZmVyZW5jZUVsKTtcbiAgICB9XG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gIH1cbiAgbGV0IGZyYW1lSWQ7XG4gIGxldCBwcmV2UmVmUmVjdCA9IGFuaW1hdGlvbkZyYW1lID8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSkgOiBudWxsO1xuICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICBmcmFtZUxvb3AoKTtcbiAgfVxuICBmdW5jdGlvbiBmcmFtZUxvb3AoKSB7XG4gICAgY29uc3QgbmV4dFJlZlJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKTtcbiAgICBpZiAocHJldlJlZlJlY3QgJiYgIXJlY3RzQXJlRXF1YWwocHJldlJlZlJlY3QsIG5leHRSZWZSZWN0KSkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICAgIHByZXZSZWZSZWN0ID0gbmV4dFJlZlJlY3Q7XG4gICAgZnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZUxvb3ApO1xuICB9XG4gIHVwZGF0ZSgpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIHZhciBfcmVzaXplT2JzZXJ2ZXIyO1xuICAgIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSk7XG4gICAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICAgIH0pO1xuICAgIGNsZWFudXBJbyA9PSBudWxsIHx8IGNsZWFudXBJbygpO1xuICAgIChfcmVzaXplT2JzZXJ2ZXIyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyMi5kaXNjb25uZWN0KCk7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWVJZCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuY29uc3QgZGV0ZWN0T3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyQxO1xuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBvZmZzZXQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBhdXRvUGxhY2VtZW50JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IHNoaWZ0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZmxpcCQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBzaXplJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gaGlkZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IGFycm93JDE7XG5cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGlubGluZSQxO1xuXG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gbGltaXRTaGlmdCQxO1xuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqL1xuY29uc3QgY29tcHV0ZVBvc2l0aW9uID0gKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpID0+IHtcbiAgLy8gVGhpcyBjYWNoZXMgdGhlIGV4cGVuc2l2ZSBgZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzYCBmdW5jdGlvbiBzbyB0aGF0XG4gIC8vIG11bHRpcGxlIGxpZmVjeWNsZSByZXNldHMgcmUtdXNlIHRoZSBzYW1lIHJlc3VsdC4gSXQgb25seSBsaXZlcyBmb3IgYVxuICAvLyBzaW5nbGUgY2FsbC4gSWYgb3RoZXIgZnVuY3Rpb25zIGJlY29tZSBleHBlbnNpdmUsIHdlIGNhbiBhZGQgdGhlbSBhcyB3ZWxsLlxuICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHtcbiAgICBwbGF0Zm9ybSxcbiAgICAuLi5vcHRpb25zXG4gIH07XG4gIGNvbnN0IHBsYXRmb3JtV2l0aENhY2hlID0ge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMucGxhdGZvcm0sXG4gICAgX2M6IGNhY2hlXG4gIH07XG4gIHJldHVybiBjb21wdXRlUG9zaXRpb24kMShyZWZlcmVuY2UsIGZsb2F0aW5nLCB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucyxcbiAgICBwbGF0Zm9ybTogcGxhdGZvcm1XaXRoQ2FjaGVcbiAgfSk7XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9O1xuIiwiaW1wb3J0IHsgYXJyb3cgYXMgYXJyb3ckMSwgY29tcHV0ZVBvc2l0aW9uIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5leHBvcnQgeyBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHsgaXNOb2RlLCBnZXROb2RlTmFtZSB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuaW1wb3J0IHsgdW5yZWYsIGNvbXB1dGVkLCByZWYsIHNoYWxsb3dSZWYsIHdhdGNoLCBnZXRDdXJyZW50U2NvcGUsIG9uU2NvcGVEaXNwb3NlLCBzaGFsbG93UmVhZG9ubHkgfSBmcm9tICd2dWUtZGVtaSc7XG5cbmZ1bmN0aW9uIGlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UodGFyZ2V0KSB7XG4gIHJldHVybiB0YXJnZXQgIT0gbnVsbCAmJiB0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiAnJGVsJyBpbiB0YXJnZXQ7XG59XG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KHRhcmdldCkge1xuICBpZiAoaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSh0YXJnZXQpKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRhcmdldC4kZWw7XG4gICAgcmV0dXJuIGlzTm9kZShlbGVtZW50KSAmJiBnZXROb2RlTmFtZShlbGVtZW50KSA9PT0gJyNjb21tZW50JyA/IG51bGwgOiBlbGVtZW50O1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIHRvVmFsdWUoc291cmNlKSB7XG4gIHJldHVybiB0eXBlb2Ygc291cmNlID09PSAnZnVuY3Rpb24nID8gc291cmNlKCkgOiB1bnJlZihzb3VyY2UpO1xufVxuXG4vKipcbiAqIFBvc2l0aW9ucyBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHN1Y2ggdGhhdCBpdCBpcyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgYXJyb3cgb3B0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5mdW5jdGlvbiBhcnJvdyhvcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Fycm93JyxcbiAgICBvcHRpb25zLFxuICAgIGZuKGFyZ3MpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB1bndyYXBFbGVtZW50KHRvVmFsdWUob3B0aW9ucy5lbGVtZW50KSk7XG4gICAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJvdyQxKHtcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgcGFkZGluZzogb3B0aW9ucy5wYWRkaW5nXG4gICAgICB9KS5mbihhcmdzKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERQUihlbGVtZW50KSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGNvbnN0IHdpbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gIHJldHVybiB3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xufVxuXG5mdW5jdGlvbiByb3VuZEJ5RFBSKGVsZW1lbnQsIHZhbHVlKSB7XG4gIGNvbnN0IGRwciA9IGdldERQUihlbGVtZW50KTtcbiAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiBkcHIpIC8gZHByO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnQgbmV4dCB0byBhIHJlZmVyZW5jZSBlbGVtZW50IHdoZW4gaXQgaXMgZ2l2ZW4gYSBjZXJ0YWluIENTUyBwb3NpdGlvbmluZyBzdHJhdGVneS5cbiAqIEBwYXJhbSByZWZlcmVuY2UgVGhlIHJlZmVyZW5jZSB0ZW1wbGF0ZSByZWYuXG4gKiBAcGFyYW0gZmxvYXRpbmcgVGhlIGZsb2F0aW5nIHRlbXBsYXRlIHJlZi5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBmbG9hdGluZyBvcHRpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3Z1ZVxuICovXG5mdW5jdGlvbiB1c2VGbG9hdGluZyhyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qgd2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24gPSBvcHRpb25zLndoaWxlRWxlbWVudHNNb3VudGVkO1xuICBjb25zdCBvcGVuT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTtcbiAgICByZXR1cm4gKF90b1ZhbHVlID0gdG9WYWx1ZShvcHRpb25zLm9wZW4pKSAhPSBudWxsID8gX3RvVmFsdWUgOiB0cnVlO1xuICB9KTtcbiAgY29uc3QgbWlkZGxld2FyZU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRvVmFsdWUob3B0aW9ucy5taWRkbGV3YXJlKSk7XG4gIGNvbnN0IHBsYWNlbWVudE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWUyO1xuICAgIHJldHVybiAoX3RvVmFsdWUyID0gdG9WYWx1ZShvcHRpb25zLnBsYWNlbWVudCkpICE9IG51bGwgPyBfdG9WYWx1ZTIgOiAnYm90dG9tJztcbiAgfSk7XG4gIGNvbnN0IHN0cmF0ZWd5T3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTM7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTMgPSB0b1ZhbHVlKG9wdGlvbnMuc3RyYXRlZ3kpKSAhPSBudWxsID8gX3RvVmFsdWUzIDogJ2Fic29sdXRlJztcbiAgfSk7XG4gIGNvbnN0IHRyYW5zZm9ybU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWU0O1xuICAgIHJldHVybiAoX3RvVmFsdWU0ID0gdG9WYWx1ZShvcHRpb25zLnRyYW5zZm9ybSkpICE9IG51bGwgPyBfdG9WYWx1ZTQgOiB0cnVlO1xuICB9KTtcbiAgY29uc3QgcmVmZXJlbmNlRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHVud3JhcEVsZW1lbnQocmVmZXJlbmNlLnZhbHVlKSk7XG4gIGNvbnN0IGZsb2F0aW5nRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHVud3JhcEVsZW1lbnQoZmxvYXRpbmcudmFsdWUpKTtcbiAgY29uc3QgeCA9IHJlZigwKTtcbiAgY29uc3QgeSA9IHJlZigwKTtcbiAgY29uc3Qgc3RyYXRlZ3kgPSByZWYoc3RyYXRlZ3lPcHRpb24udmFsdWUpO1xuICBjb25zdCBwbGFjZW1lbnQgPSByZWYocGxhY2VtZW50T3B0aW9uLnZhbHVlKTtcbiAgY29uc3QgbWlkZGxld2FyZURhdGEgPSBzaGFsbG93UmVmKHt9KTtcbiAgY29uc3QgaXNQb3NpdGlvbmVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgZmxvYXRpbmdTdHlsZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneS52YWx1ZSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnXG4gICAgfTtcbiAgICBpZiAoIWZsb2F0aW5nRWxlbWVudC52YWx1ZSkge1xuICAgICAgcmV0dXJuIGluaXRpYWxTdHlsZXM7XG4gICAgfVxuICAgIGNvbnN0IHhWYWwgPSByb3VuZEJ5RFBSKGZsb2F0aW5nRWxlbWVudC52YWx1ZSwgeC52YWx1ZSk7XG4gICAgY29uc3QgeVZhbCA9IHJvdW5kQnlEUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB5LnZhbHVlKTtcbiAgICBpZiAodHJhbnNmb3JtT3B0aW9uLnZhbHVlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbml0aWFsU3R5bGVzLFxuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKFwiICsgeFZhbCArIFwicHgsIFwiICsgeVZhbCArIFwicHgpXCIsXG4gICAgICAgIC4uLihnZXREUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlKSA+PSAxLjUgJiYge1xuICAgICAgICAgIHdpbGxDaGFuZ2U6ICd0cmFuc2Zvcm0nXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LnZhbHVlLFxuICAgICAgbGVmdDogeFZhbCArIFwicHhcIixcbiAgICAgIHRvcDogeVZhbCArIFwicHhcIlxuICAgIH07XG4gIH0pO1xuICBsZXQgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwO1xuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUgPT0gbnVsbCB8fCBmbG9hdGluZ0VsZW1lbnQudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvcGVuID0gb3Blbk9wdGlvbi52YWx1ZTtcbiAgICBjb21wdXRlUG9zaXRpb24ocmVmZXJlbmNlRWxlbWVudC52YWx1ZSwgZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB7XG4gICAgICBtaWRkbGV3YXJlOiBtaWRkbGV3YXJlT3B0aW9uLnZhbHVlLFxuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRPcHRpb24udmFsdWUsXG4gICAgICBzdHJhdGVneTogc3RyYXRlZ3lPcHRpb24udmFsdWVcbiAgICB9KS50aGVuKHBvc2l0aW9uID0+IHtcbiAgICAgIHgudmFsdWUgPSBwb3NpdGlvbi54O1xuICAgICAgeS52YWx1ZSA9IHBvc2l0aW9uLnk7XG4gICAgICBzdHJhdGVneS52YWx1ZSA9IHBvc2l0aW9uLnN0cmF0ZWd5O1xuICAgICAgcGxhY2VtZW50LnZhbHVlID0gcG9zaXRpb24ucGxhY2VtZW50O1xuICAgICAgbWlkZGxld2FyZURhdGEudmFsdWUgPSBwb3NpdGlvbi5taWRkbGV3YXJlRGF0YTtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGZsb2F0aW5nIGVsZW1lbnQncyBwb3NpdGlvbiBtYXkgYmUgcmVjb21wdXRlZCB3aGlsZSBpdCdzIGNsb3NlZFxuICAgICAgICogYnV0IHN0aWxsIG1vdW50ZWQgKHN1Y2ggYXMgd2hlbiB0cmFuc2l0aW9uaW5nIG91dCkuIFRvIGVuc3VyZVxuICAgICAgICogYGlzUG9zaXRpb25lZGAgd2lsbCBiZSBgZmFsc2VgIGluaXRpYWxseSBvbiB0aGUgbmV4dCBvcGVuLCBhdm9pZFxuICAgICAgICogc2V0dGluZyBpdCB0byBgdHJ1ZWAgd2hlbiBgb3BlbiA9PT0gZmFsc2VgIChtdXN0IGJlIHNwZWNpZmllZCkuXG4gICAgICAgKi9cbiAgICAgIGlzUG9zaXRpb25lZC52YWx1ZSA9IG9wZW4gIT09IGZhbHNlO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgaWYgKHR5cGVvZiB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCgpO1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBhdHRhY2goKSB7XG4gICAgY2xlYW51cCgpO1xuICAgIGlmICh3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUgIT0gbnVsbCAmJiBmbG9hdGluZ0VsZW1lbnQudmFsdWUgIT0gbnVsbCkge1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID0gd2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24ocmVmZXJlbmNlRWxlbWVudC52YWx1ZSwgZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB1cGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICBpZiAoIW9wZW5PcHRpb24udmFsdWUpIHtcbiAgICAgIGlzUG9zaXRpb25lZC52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICB3YXRjaChbbWlkZGxld2FyZU9wdGlvbiwgcGxhY2VtZW50T3B0aW9uLCBzdHJhdGVneU9wdGlvbiwgb3Blbk9wdGlvbl0sIHVwZGF0ZSwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIHdhdGNoKFtyZWZlcmVuY2VFbGVtZW50LCBmbG9hdGluZ0VsZW1lbnRdLCBhdHRhY2gsIHtcbiAgICBmbHVzaDogJ3N5bmMnXG4gIH0pO1xuICB3YXRjaChvcGVuT3B0aW9uLCByZXNldCwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIGlmIChnZXRDdXJyZW50U2NvcGUoKSkge1xuICAgIG9uU2NvcGVEaXNwb3NlKGNsZWFudXApO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogc2hhbGxvd1JlYWRvbmx5KHgpLFxuICAgIHk6IHNoYWxsb3dSZWFkb25seSh5KSxcbiAgICBzdHJhdGVneTogc2hhbGxvd1JlYWRvbmx5KHN0cmF0ZWd5KSxcbiAgICBwbGFjZW1lbnQ6IHNoYWxsb3dSZWFkb25seShwbGFjZW1lbnQpLFxuICAgIG1pZGRsZXdhcmVEYXRhOiBzaGFsbG93UmVhZG9ubHkobWlkZGxld2FyZURhdGEpLFxuICAgIGlzUG9zaXRpb25lZDogc2hhbGxvd1JlYWRvbmx5KGlzUG9zaXRpb25lZCksXG4gICAgZmxvYXRpbmdTdHlsZXMsXG4gICAgdXBkYXRlXG4gIH07XG59XG5cbmV4cG9ydCB7IGFycm93LCB1c2VGbG9hdGluZyB9O1xuIiwiZXhwb3J0IGNvbnN0IGlzQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50LCBlbGVtZW50czogSFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHRhcmdldHMgPSBBcnJheS5pc0FycmF5KGVsZW1lbnRzKSA/IGVsZW1lbnRzIDogW2VsZW1lbnRzXTtcbiAgcmV0dXJuICF0YXJnZXRzLnNvbWUoKGVsKSA9PiBlbC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIG9mZnNldCBhcyBvZmZzZXRNaWRkbGV3YXJlLCBzaGlmdCwgdXNlRmxvYXRpbmcgfSBmcm9tICdAZmxvYXRpbmctdWkvdnVlJztcbiAgaW1wb3J0IHsgY29tcHV0ZWQsIG9uQmVmb3JlTW91bnQsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGlzQ2xpY2tPdXRzaWRlIH0gZnJvbSAnQC91dGlsaXRpZXMvZXZlbnQnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYW5jaG9ySWQ6IHN0cmluZztcbiAgICBvZmZzZXQ/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvZmZzZXQ6IDE2LFxuICB9KTtcblxuICBjb25zdCBhbmNob3I6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBmbG9hdGluZzogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG4gIGNvbnN0IHJvb3Q6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBpc0hvdmVyZWQgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpc1RvZ2dsZWRPcGVuID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgbWlkZGxld2FyZSA9IHJlZihbYXV0b1BsYWNlbWVudCgpLCBvZmZzZXRNaWRkbGV3YXJlKHsgbWFpbkF4aXM6IHByb3BzLm9mZnNldCB9KSwgc2hpZnQoeyBwYWRkaW5nOiAxNiB9KV0pO1xuXG4gIGNvbnN0IGlzU2hvd1BvcG92ZXIgPSBjb21wdXRlZCgoKSA9PiBpc0hvdmVyZWQudmFsdWUgfHwgaXNUb2dnbGVkT3Blbi52YWx1ZSk7XG5cbiAgY29uc3QgeyBmbG9hdGluZ1N0eWxlcyB9ID0gdXNlRmxvYXRpbmcoYW5jaG9yLCBmbG9hdGluZywge1xuICAgIG1pZGRsZXdhcmUsXG4gICAgc3RyYXRlZ3k6ICdmaXhlZCcsXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlIHx8ICFmbG9hdGluZy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc0NsaWNrT3V0c2lkZShlLCBbYW5jaG9yLnZhbHVlLCBmbG9hdGluZy52YWx1ZV0pKSB7XG4gICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyID0gKCkgPT4ge1xuICAgIGlzSG92ZXJlZC52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUgPSAoKSA9PiB7XG4gICAgaXNIb3ZlcmVkLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gdHJ1ZTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICBjb25zdCBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUpIHJldHVybiBudWxsO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyKTtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlKTtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3Zlcik7XG4gICAgYW5jaG9yLnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSk7XG4gICAgYW5jaG9yLnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24gPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCA9ICgpID0+IHtcbiAgICBpZiAoIXJvb3QudmFsdWUpIHJldHVybjtcbiAgICByb290LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljaywgdHJ1ZSk7XG4gICAgcm9vdC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVPcGVuTGlzdGVuZXJzRnJvbVJvb3QgPSAoKSA9PiB7XG4gICAgaWYgKCFyb290LnZhbHVlKSByZXR1cm47XG4gICAgcm9vdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2ssIHRydWUpO1xuICAgIHJvb3QudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93bik7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlQW5jaG9yRWxlbWVudCA9ICgpID0+IHtcbiAgICBhbmNob3IudmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwcm9wcy5hbmNob3JJZCk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gaXNUb2dnbGVkT3Blbi52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICBhZGRPcGVuTGlzdGVuZXJzVG9Sb290KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZW1vdmVPcGVuTGlzdGVuZXJzRnJvbVJvb3QoKTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuYW5jaG9ySWQsXG4gICAgKCkgPT4ge1xuICAgICAgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQoKTtcbiAgICAgIHVwZGF0ZUFuY2hvckVsZW1lbnQoKTtcbiAgICAgIGFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCgpO1xuICAgIH1cbiAgKTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgbWlkZGxld2FyZS52YWx1ZSA9IFthdXRvUGxhY2VtZW50KCksIG9mZnNldE1pZGRsZXdhcmUoeyBtYWluQXhpczogcHJvcHMub2Zmc2V0IH0pLCBzaGlmdCh7IHBhZGRpbmc6IDE2IH0pXTtcbiAgfSk7XG5cbiAgb25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgaW5pdEZhdXhUb3BMYXllcigpO1xuICB9KTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIHVwZGF0ZUFuY2hvckVsZW1lbnQoKTtcbiAgICByb290LnZhbHVlID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCgpO1xuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQoKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8VGVsZXBvcnQgOnRvPVwiYCMke1RPUF9MQVlFUl9JRH1gXCI+XG4gICAgPFRyYW5zaXRpb24+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1wb3BvdmVyJyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMixcbiAgICAgICAgICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuU0hBRE9XLkJPVFRPTSxcbiAgICAgICAgXVwiXG4gICAgICAgIHJlZj1cImZsb2F0aW5nXCJcbiAgICAgICAgOnN0eWxlPVwieyAuLi5mbG9hdGluZ1N0eWxlcyB9XCJcbiAgICAgICAgdi1zaG93PVwiaXNTaG93UG9wb3ZlclwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L1RyYW5zaXRpb24+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1wb3BvdmVyIHtcbiAgICBtYXgtd2lkdGg6IDI1NnB4O1xuICB9XG4gIC52LWVudGVyLWZyb20sXG4gIC52LWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIC52LWVudGVyLWFjdGl2ZSxcbiAgLnYtbGVhdmUtYWN0aXZlIHtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cbiAgLnYtZW50ZXItdG8sXG4gIC52LWxlYXZlLWZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBvbkJlZm9yZU1vdW50LCBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVE9QX0xBWUVSX0lELCBpbml0RmF1eFRvcExheWVyLCBzZXRTY3JvbGxMb2NrIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCBUaWRlRGl2aWRlciBmcm9tICcuL1RpZGVEaXZpZGVyLnZ1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNPcGVuOiBib29sZWFuO1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gIH07XG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgICAoZTogJ2Nsb3NlJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IGRpYWxvZ0VsZW1lbnQ6IFJlZjxIVE1MRGlhbG9nRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuID0gKCkgPT4ge1xuICAgIGRpYWxvZ0VsZW1lbnQudmFsdWU/LnNob3dNb2RhbCgpO1xuICB9O1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5jbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgZW1pdCgnY2xvc2UnKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFc2NhcGVLZXlkb3duID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGVtaXQoJ2Nsb3NlJyk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuaXNPcGVuLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKCFkaWFsb2dFbGVtZW50LnZhbHVlKSByZXR1cm47XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSgpO1xuICAgICAgfVxuICAgICAgc2V0U2Nyb2xsTG9jayhuZXdWYWx1ZSk7XG4gICAgfVxuICApO1xuXG4gIG9uQmVmb3JlTW91bnQoKCkgPT4ge1xuICAgIGluaXRGYXV4VG9wTGF5ZXIoKTtcbiAgfSk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMuaXNPcGVuKSB7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgIH1cbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8VGVsZXBvcnQgOnRvPVwiYCMke1RPUF9MQVlFUl9JRH1gXCI+XG4gICAgPGRpYWxvZ1xuICAgICAgOmNsYXNzPVwiWyd0aWRlLXNoZWV0JywgQ1NTLkJHLklOSVRJQUwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLldJRFRILkZVTEwsIENTUy5PVkVSRkxPVy5YWS5ISURERU5dXCJcbiAgICAgIHJlZj1cImRpYWxvZ0VsZW1lbnRcIlxuICAgICAgQGNsaWNrLnNlbGY9XCJoYW5kbGVCYWNrZHJvcENsaWNrXCJcbiAgICAgIEBjbG9zZS5wcmV2ZW50XG4gICAgICBAa2V5ZG93bi5lc2NhcGU9XCJoYW5kbGVFc2NhcGVLZXlkb3duXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1zaGVldC1ib2R5JyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxoZWFkZXIgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5QQURESU5HLlguT05FLCBDU1MuUEFERElORy5UT1AuT05FXVwiPlxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiZW1pdCgnYmFjaycpXCJcbiAgICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2Nsb3NlJylcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDxUaWRlRGl2aWRlciAvPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1zaGVldC1jb250ZW50JyxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RpYWxvZz5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXNoZWV0IHtcbiAgICAtLXNoZWV0LXBhZGRpbmcteDogdmFyKC0tdGlkZS1zcGFjaW5nLTEpO1xuICAgIG1heC13aWR0aDogdW5zZXQ7XG4gICAgbWF4LWhlaWdodDogdW5zZXQ7XG4gICAganVzdGlmeS1pdGVtczogcmlnaHQ7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gIH1cblxuICAudGlkZS1zaGVldFtvcGVuXSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQ6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0W29wZW5dOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0LWJvZHkge1xuICAgIG1heC13aWR0aDogbWluKGNhbGMoMTAwdncgLSB2YXIoLS10aWRlLXNwYWNpbmctMikpLCAzMTFweCk7XG4gIH1cblxuICAudGlkZS1zaGVldC1jb250ZW50IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLXNoZWV0LXBhZGRpbmcteCkgMWZyIHZhcigtLXNoZWV0LXBhZGRpbmcteCk7XG4gIH1cblxuICA6d2hlcmUoLnRpZGUtc2hlZXQtY29udGVudCk6ZGVlcCg+IDp3aGVyZSgqKSkge1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICB9XG5cbiAgQHN0YXJ0aW5nLXN0eWxlIHtcbiAgICAudGlkZS1zaGVldFtvcGVuXSB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIH1cblxuICAgIC50aWRlLXNoZWV0W29wZW5dOjpiYWNrZHJvcCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpc0FjdGl2ZTogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICBpZiAoIXByb3BzLmRpc2FibGVkKSB7XG4gICAgICBlbWl0KCdjaGFuZ2UnKTtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtc3dpdGNoJyxcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gJ2FjdGl2ZScgOiAnJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/ICcnIDogQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gQ1NTLkJHLlNFQ09OREFSWSA6IENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgIEBjbGljaz1cImhhbmRsZUNsaWNrXCJcbiAgICBhcmlhLWxhYmVsPVwiU3dpdGNoXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtc3dpdGNoLWluZGljYXRvcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgcHJvcHMuaXNBY3RpdmUgPyBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUIDogQ1NTLkJHLlNFQ09OREFSWSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uQ0hFQ0tcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1zd2l0Y2gge1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAudGlkZS1zd2l0Y2g6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuMzI7XG4gIH1cblxuICAudGlkZS1zd2l0Y2guYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC5hY3RpdmUgLnRpZGUtc3dpdGNoLWluZGljYXRvciB7XG4gICAgbGVmdDogMzZweDtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC1pbmRpY2F0b3Ige1xuICAgIGxlZnQ6IDRweDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQsIGJvcmRlci1jb2xvciwgYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0UGhvbmUsIGZvcm1hdFByaWNlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuZXhwb3J0IHR5cGUgRm9ybWF0dGVkID0ge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBGT1JNQVQgPSB7XG4gIE5VTUJFUjogZm9ybWF0TnVtYmVyLFxuICBQSE9ORTogZm9ybWF0UGhvbmUsXG4gIFBSSUNFOiBmb3JtYXRQcmljZSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBGT1JNQVRfUkVHRVggPSB7XG4gIGFscGhhOiAvXlthLXpBLVpdKyQvZyxcbiAgYWxwaGFOdW1iZXJPckVtcHR5OiAvXiR8XlthLXowLTldKyQvaSxcbiAgYWxwaGFTcGFjZTogL15bYS16QS1aIF0rJC9nLFxuICBlbWFpbDpcbiAgICAvXigoW148PigpW1xcXVxcXFwuLDs6XFxzQFwiXSsoXFwuW148PigpW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcXSl8KChbYS16QS1aXFwtMC05XStcXC4pK1thLXpBLVpdezIsfSkpJC8sXG4gIG51bWJlckZvcm1hdHRlZDogL14kfCg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxuICBwaG9uZTogL14oPzpcXGR7M30tXFxkezN9LVxcZHs0fXxcXGR7MX0tXFxkezN9LVxcZHszfS1cXGR7NH0pPyQvLFxuICBwcmljZTogLyg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxufTtcbiIsIi8qKlxuICogVGhlc2Ugc2xpZGVzIGFyZSB1c2VkIGluIGJvdGggdGhlIGlubGluZSBkZXRhaWwgcGFnZSBwaG90byBzbGlkZXJcbiAqIGFuZCB0aGUgZnVsbHNjcmVlbiBtZWRpYSBnYWxsZXJ5LlxuICovXG5cbmV4cG9ydCBjb25zdCBNRURJQV9TTElERV9UWVBFUyA9IHtcbiAgSU1BR0U6IHtcbiAgICBGTE9PUlBMQU46ICdmbG9vcnBsYW4nLFxuICAgIElNQUdFOiAnaW1hZ2UnLFxuICB9LFxuICBWSURFTzogJ3ZpZGVvJyxcbiAgVlI6ICd2cicsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBNZWRpYVNsaWRlVHlwZSA9XG4gIHwgKHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5JTUFHRSlba2V5b2YgdHlwZW9mIE1FRElBX1NMSURFX1RZUEVTLklNQUdFXVxuICB8IHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5WSURFT1xuICB8IHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5WUjtcblxuZXhwb3J0IHR5cGUgSW1hZ2VTbGlkZVR5cGUgPSAodHlwZW9mIE1FRElBX1NMSURFX1RZUEVTLklNQUdFKVtrZXlvZiB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuSU1BR0VdO1xuXG50eXBlIEltYWdlU2xpZGUgPSB7XG4gIGltYWdlVXJsOiBzdHJpbmc7XG4gIHR5cGU6IEltYWdlU2xpZGVUeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgVmlkZW9TbGlkZVR5cGUgPSB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuVklERU87XG5cbnR5cGUgVmlkZW9TbGlkZSA9IHtcbiAgaW1hZ2VVcmw6IHN0cmluZztcbiAgdHlwZTogVmlkZW9TbGlkZVR5cGU7XG4gIHZpZGVvVXJsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBWclNsaWRlVHlwZSA9IHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5WUjtcblxudHlwZSBWclNsaWRlID0ge1xuICBpbWFnZVVybDogc3RyaW5nO1xuICB0eXBlOiBWclNsaWRlVHlwZTtcbiAgdnJVcmw6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIExpc3RpbmdNZWRpYSA9IEltYWdlU2xpZGUgfCBWaWRlb1NsaWRlIHwgVnJTbGlkZTtcbiIsImltcG9ydCB7IEZPUk1BVF9SRUdFWCB9IGZyb20gJ0AvdHlwZXMvRm9ybWF0dGVkJztcbmltcG9ydCB7IGNoZWNrRm9ybWF0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbmV4cG9ydCBjb25zdCBWQUxJREFUT1IgPSB7XG4gIEFMUEhBX05VTUJFUl9FTVBUWTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhTnVtYmVyT3JFbXB0eSksXG4gIEFMUEhBX1NQQUNFOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguYWxwaGFTcGFjZSksXG4gIEVNQUlMOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguZW1haWwpLFxuICBOVU1CRVI6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5udW1iZXJGb3JtYXR0ZWQpLFxuICBQSE9ORTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLnBob25lKSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25FcnJvciA9IHN0cmluZyB8IGJvb2xlYW47XG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUmVzdWx0ID0ge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHZhbGlkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkxlbmd0aCA9IHtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdmFsdWU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRvciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0O1xuIl0sIm5hbWVzIjpbIk9SSUVOVEFUSU9OIiwiQ1NTIiwidXRpbGl0aWVzIiwiYnJlYWtwb2ludCIsInV0aWxpdHkiLCJSRUFMTSIsIlNJWkUiLCJTSVpFX0JVVFRPTiIsImZvcm1hdE51bWJlciIsImlucHV0Iiwib3V0cHV0IiwiZGlnaXRzIiwiZm9ybWF0UGFzY2FsQ2FzZSIsIndvcmQiLCJmb3JtYXRQaG9uZSIsImZvcm1hdFByaWNlIiwiaW5uZXJTVkciLCJyZWYiLCJ3YXRjaCIsInByb3BzIiwiaWQiLCJuYW1lIiwicHJlZml4IiwicmVhbG1Gb2xkZXIiLCJjb21wb25lbnQiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsIl9fdmFyaWFibGVEeW5hbWljSW1wb3J0UnVudGltZUhlbHBlciIsIm1hcmtSYXciLCJJQ09OIiwiSUNPTl9SRUFMTSIsImhhbmRsZVRvZ2dsZUNsaWNrIiwiZW1pdCIsIkVMRU1FTlQiLCJFTEVNRU5UX1RFWFRfQVNfSUNPTiIsIlBSSU9SSVRZIiwiVEFSR0VUIiwiQUxFUlQiLCJCQURHRV9DT0xPUiIsIkJBREdFX0NPTE9SX0RFVEFJTFMiLCJCQURHRV9UUlVTVEVEIiwiaGFuZGxlQ2xpY2siLCJpbmRleCIsIlRZUEVfQ0FSRCIsImNvbnRhaW5lclJlZiIsInNsaWRlT2JzZXJ2ZXIiLCJzbG90T2JzZXJ2ZXIiLCJjb250ZW50UmlnaHRFZGdlIiwiY29udGVudFdpZHRoIiwiY3VycmVudFNsaWRlIiwiZnJhbWVXaWR0aCIsImhhc092ZXJmbG93IiwiaXNGaXJzdFNsaWRlIiwiaXNMYXN0U2xpZGUiLCJsYXN0UG9zaXRpb24iLCJzaG93QnV0dG9ucyIsInVwZGF0ZUNvbnRhaW5lckJsZWVkIiwibWVhc3VyZUN1cnJlbnRTbGlkZSIsImNvbnRhaW5lciIsInNsaWRlT2Zmc2V0cyIsInNsaWRlIiwic2Nyb2xsTGVmdCIsImNsb3Nlc3RTbGlkZU9mZnNldCIsInByZXYiLCJjdXJyIiwibWVhc3VyZURvbSIsImhhbmRsZVNjcm9sbCIsInNjcm9sbFRvU2xpZGUiLCJzbGlkZUluZGV4Iiwic2hvd05leHRTbGlkZSIsInNob3dQcmV2aW91c1NsaWRlIiwib2JzZXJ2ZVNsaWRlcyIsIm9wdGlvbnMiLCJlbnRyaWVzIiwic2xpZGVzIiwiZW50cnkiLCJfYSIsImNoaWxkIiwib2JzZXJ2ZVNsb3QiLCJvYnNlcnZlckNhbGxiYWNrIiwib25Nb3VudGVkIiwib25Vbm1vdW50ZWQiLCJfYiIsIm9uVXBkYXRlZCIsIk9CSkVDVF9GSVQiLCJpbWFnZURlZmF1bHQiLCJwaWN0dXJlIiwiaW1nIiwib2JqZWN0Rml0Q2xhc3NOYW1lIiwiY29tcHV0ZWQiLCJzZXRJbWFnZUZyb21EZWZhdWx0IiwiY3VycmVudFNyYyIsInBpY3R1cmVTb3VyY2UiLCJpc0NoZWNrZWQiLCJjaGVja2VkIiwibmV3VmFsdWUiLCJvbGRWYWx1ZSIsImVycm9yTWVzc2FnZURlZmF1bHQiLCJub0Vycm9yIiwiY2hlY2tGb3JtYXQiLCJmb3JtYXQiLCJ2YWx1ZSIsInJlc3VsdCIsImdldEVycm9yTWVzc2FnZSIsImVycm9yRnJvbVByb3BzIiwiZXJyb3JGcm9tUmVmIiwiZ2V0RmllbGRIYXNFcnJvciIsImdldEZpZWxkTGVuZ3RoSXNWYWxpZCIsIm1heGxlbmd0aCIsIm1pbmxlbmd0aCIsInJlcXVpcmVkIiwiaXNFbXB0eUFuZFVucmVxdWlyZWQiLCJpc1Rvb0xvbmciLCJoYW5kbGVGaWVsZFZhbGlkYXRpb24iLCJlcnJvciIsInZhbGlkYXRvcnMiLCJ2YWxpZGF0aW9uIiwidmFsaWRhdGVQcm9wZXJ0eSIsImxlbmd0aFZhbGlkYXRpb24iLCJ2YWxpZGF0ZUxlbmd0aCIsInJlc3BvbnNlIiwidmFsaWRhdG9yIiwiaGFzRm9jdXMiLCJlcnJvck1lc3NhZ2UiLCJmb3JtYXR0ZWRMYWJlbCIsImhhc0Vycm9yIiwiaGFzTWluaWxhYmVsIiwiaXNFbXB0eSIsImV4cGFuZE9wdGlvbnMiLCJldmVudCIsImhhbmRsZUZvY3VzIiwiaGFuZGxlRm9jdXNPdXQiLCJfX2V4cG9zZSIsIlRFWFRfSU5QVVRfVFlQRSIsInNob3dQYXNzd29yZCIsImhhc0NsZWFyIiwidHlwZSIsImhhbmRsZUNsZWFyIiwiaGFuZGxlVmFsaWRhdGlvbiIsImhhbmRsZUlucHV0IiwidXBkYXRlVmFsdWUiLCJCUkVBS1BPSU5UIiwiTUVESUEiLCJzZXRTY3JvbGxMb2NrIiwiaXNMb2NrZWQiLCJib2R5Iiwic2Nyb2xsWSIsIm5leHRUaWNrIiwic2F2ZWRTY3JvbGxZIiwiVE9QX0xBWUVSX0lEIiwiaW5pdEZhdXhUb3BMYXllciIsInRvcExheWVyIiwibW9kYWxDb250ZW50IiwibW9kYWxEaWFsb2ciLCJ0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiIsInRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSIsInNjcm9sbENvbnRlbnRUb1RvcCIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJoYW5kbGVFc2NhcGVLZXlkb3duIiwiZSIsInBhZ2VDdXJyZW50IiwicGFnaW5hdGlvbkJ1dHRvbnMiLCJlbXB0eSIsInNpZGVzIiwiYWxpZ25tZW50cyIsInBsYWNlbWVudHMiLCJhY2MiLCJzaWRlIiwibWluIiwibWF4Iiwicm91bmQiLCJmbG9vciIsImNyZWF0ZUNvb3JkcyIsInYiLCJvcHBvc2l0ZVNpZGVNYXAiLCJvcHBvc2l0ZUFsaWdubWVudE1hcCIsImNsYW1wIiwic3RhcnQiLCJlbmQiLCJldmFsdWF0ZSIsInBhcmFtIiwiZ2V0U2lkZSIsInBsYWNlbWVudCIsImdldEFsaWdubWVudCIsImdldE9wcG9zaXRlQXhpcyIsImF4aXMiLCJnZXRBeGlzTGVuZ3RoIiwiZ2V0U2lkZUF4aXMiLCJnZXRBbGlnbm1lbnRBeGlzIiwiZ2V0QWxpZ25tZW50U2lkZXMiLCJyZWN0cyIsInJ0bCIsImFsaWdubWVudCIsImFsaWdubWVudEF4aXMiLCJsZW5ndGgiLCJtYWluQWxpZ25tZW50U2lkZSIsImdldE9wcG9zaXRlUGxhY2VtZW50IiwiZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQiLCJleHBhbmRQYWRkaW5nT2JqZWN0IiwicGFkZGluZyIsImdldFBhZGRpbmdPYmplY3QiLCJyZWN0VG9DbGllbnRSZWN0IiwicmVjdCIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudCIsIl9yZWYiLCJyZWZlcmVuY2UiLCJmbG9hdGluZyIsInNpZGVBeGlzIiwiYWxpZ25MZW5ndGgiLCJpc1ZlcnRpY2FsIiwiY29tbW9uWCIsImNvbW1vblkiLCJjb21tb25BbGlnbiIsImNvb3JkcyIsImNvbXB1dGVQb3NpdGlvbiIsImNvbmZpZyIsInN0cmF0ZWd5IiwibWlkZGxld2FyZSIsInBsYXRmb3JtIiwidmFsaWRNaWRkbGV3YXJlIiwic3RhdGVmdWxQbGFjZW1lbnQiLCJtaWRkbGV3YXJlRGF0YSIsInJlc2V0Q291bnQiLCJpIiwiZm4iLCJuZXh0WCIsIm5leHRZIiwiZGF0YSIsInJlc2V0IiwiZGV0ZWN0T3ZlcmZsb3ciLCJzdGF0ZSIsIl9hd2FpdCRwbGF0Zm9ybSRpc0VsZSIsImVsZW1lbnRzIiwiYm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJlbGVtZW50Q29udGV4dCIsImFsdEJvdW5kYXJ5IiwicGFkZGluZ09iamVjdCIsImVsZW1lbnQiLCJjbGlwcGluZ0NsaWVudFJlY3QiLCJvZmZzZXRQYXJlbnQiLCJvZmZzZXRTY2FsZSIsImVsZW1lbnRDbGllbnRSZWN0IiwiZ2V0UGxhY2VtZW50TGlzdCIsImF1dG9BbGlnbm1lbnQiLCJhbGxvd2VkUGxhY2VtZW50cyIsImF1dG9QbGFjZW1lbnQiLCJfbWlkZGxld2FyZURhdGEkYXV0b1AiLCJfbWlkZGxld2FyZURhdGEkYXV0b1AyIiwiX3BsYWNlbWVudHNUaGF0Rml0T25FIiwiY3Jvc3NBeGlzIiwiZGV0ZWN0T3ZlcmZsb3dPcHRpb25zIiwicGxhY2VtZW50cyQxIiwib3ZlcmZsb3ciLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50UGxhY2VtZW50IiwiYWxpZ25tZW50U2lkZXMiLCJjdXJyZW50T3ZlcmZsb3dzIiwiYWxsT3ZlcmZsb3dzIiwibmV4dFBsYWNlbWVudCIsInBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZSIsImQiLCJhIiwiYiIsInJlc2V0UGxhY2VtZW50IiwiY29udmVydFZhbHVlVG9Db29yZHMiLCJtYWluQXhpc011bHRpIiwiY3Jvc3NBeGlzTXVsdGkiLCJyYXdWYWx1ZSIsIm1haW5BeGlzIiwib2Zmc2V0IiwiX21pZGRsZXdhcmVEYXRhJG9mZnNlIiwiX21pZGRsZXdhcmVEYXRhJGFycm93IiwiZGlmZkNvb3JkcyIsInNoaWZ0IiwiY2hlY2tNYWluQXhpcyIsImNoZWNrQ3Jvc3NBeGlzIiwibGltaXRlciIsIm1haW5BeGlzQ29vcmQiLCJjcm9zc0F4aXNDb29yZCIsIm1pblNpZGUiLCJtYXhTaWRlIiwibGltaXRlZENvb3JkcyIsImhhc1dpbmRvdyIsImdldE5vZGVOYW1lIiwibm9kZSIsImlzTm9kZSIsImdldFdpbmRvdyIsIl9ub2RlJG93bmVyRG9jdW1lbnQiLCJnZXREb2N1bWVudEVsZW1lbnQiLCJpc0VsZW1lbnQiLCJpc0hUTUxFbGVtZW50IiwiaXNTaGFkb3dSb290IiwiaXNPdmVyZmxvd0VsZW1lbnQiLCJvdmVyZmxvd1giLCJvdmVyZmxvd1kiLCJkaXNwbGF5IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImlzVGFibGVFbGVtZW50IiwiaXNUb3BMYXllciIsInNlbGVjdG9yIiwiaXNDb250YWluaW5nQmxvY2siLCJlbGVtZW50T3JDc3MiLCJ3ZWJraXQiLCJpc1dlYktpdCIsImNzcyIsImdldENvbnRhaW5pbmdCbG9jayIsImN1cnJlbnROb2RlIiwiZ2V0UGFyZW50Tm9kZSIsImlzTGFzdFRyYXZlcnNhYmxlTm9kZSIsImdldE5vZGVTY3JvbGwiLCJnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvciIsInBhcmVudE5vZGUiLCJnZXRPdmVyZmxvd0FuY2VzdG9ycyIsImxpc3QiLCJ0cmF2ZXJzZUlmcmFtZXMiLCJfbm9kZSRvd25lckRvY3VtZW50MiIsInNjcm9sbGFibGVBbmNlc3RvciIsImlzQm9keSIsIndpbiIsImZyYW1lRWxlbWVudCIsImdldEZyYW1lRWxlbWVudCIsImdldENzc0RpbWVuc2lvbnMiLCJoYXNPZmZzZXQiLCJvZmZzZXRXaWR0aCIsIm9mZnNldEhlaWdodCIsInNob3VsZEZhbGxiYWNrIiwidW53cmFwRWxlbWVudCIsImdldFNjYWxlIiwiZG9tRWxlbWVudCIsIiQiLCJub09mZnNldHMiLCJnZXRWaXN1YWxPZmZzZXRzIiwic2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyIsImlzRml4ZWQiLCJmbG9hdGluZ09mZnNldFBhcmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImluY2x1ZGVTY2FsZSIsImlzRml4ZWRTdHJhdGVneSIsImNsaWVudFJlY3QiLCJzY2FsZSIsInZpc3VhbE9mZnNldHMiLCJvZmZzZXRXaW4iLCJjdXJyZW50V2luIiwiY3VycmVudElGcmFtZSIsImlmcmFtZVNjYWxlIiwiaWZyYW1lUmVjdCIsImxlZnQiLCJ0b3AiLCJnZXRXaW5kb3dTY3JvbGxCYXJYIiwibGVmdFNjcm9sbCIsImdldEhUTUxPZmZzZXQiLCJkb2N1bWVudEVsZW1lbnQiLCJzY3JvbGwiLCJpZ25vcmVTY3JvbGxiYXJYIiwiaHRtbFJlY3QiLCJjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCIsIm9mZnNldHMiLCJpc09mZnNldFBhcmVudEFuRWxlbWVudCIsIm9mZnNldFJlY3QiLCJodG1sT2Zmc2V0IiwiZ2V0Q2xpZW50UmVjdHMiLCJnZXREb2N1bWVudFJlY3QiLCJodG1sIiwiZ2V0Vmlld3BvcnRSZWN0IiwidmlzdWFsVmlld3BvcnQiLCJ2aXN1YWxWaWV3cG9ydEJhc2VkIiwiZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QiLCJnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IiLCJjbGlwcGluZ0FuY2VzdG9yIiwiaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yIiwic3RvcE5vZGUiLCJnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMiLCJjYWNoZSIsImNhY2hlZFJlc3VsdCIsImVsIiwiY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUiLCJlbGVtZW50SXNGaXhlZCIsImNvbXB1dGVkU3R5bGUiLCJjdXJyZW50Tm9kZUlzQ29udGFpbmluZyIsImFuY2VzdG9yIiwiZ2V0Q2xpcHBpbmdSZWN0IiwiY2xpcHBpbmdBbmNlc3RvcnMiLCJmaXJzdENsaXBwaW5nQW5jZXN0b3IiLCJjbGlwcGluZ1JlY3QiLCJhY2NSZWN0IiwiZ2V0RGltZW5zaW9ucyIsImdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50IiwiaXNTdGF0aWNQb3NpdGlvbmVkIiwiZ2V0VHJ1ZU9mZnNldFBhcmVudCIsInBvbHlmaWxsIiwicmF3T2Zmc2V0UGFyZW50IiwiZ2V0T2Zmc2V0UGFyZW50Iiwic3ZnT2Zmc2V0UGFyZW50IiwiZ2V0RWxlbWVudFJlY3RzIiwiZ2V0T2Zmc2V0UGFyZW50Rm4iLCJnZXREaW1lbnNpb25zRm4iLCJmbG9hdGluZ0RpbWVuc2lvbnMiLCJpc1JUTCIsInJlY3RzQXJlRXF1YWwiLCJvYnNlcnZlTW92ZSIsIm9uTW92ZSIsImlvIiwidGltZW91dElkIiwicm9vdCIsImNsZWFudXAiLCJfaW8iLCJyZWZyZXNoIiwic2tpcCIsInRocmVzaG9sZCIsImVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbiIsImluc2V0VG9wIiwiaW5zZXRSaWdodCIsImluc2V0Qm90dG9tIiwiaW5zZXRMZWZ0IiwiaXNGaXJzdFVwZGF0ZSIsImhhbmRsZU9ic2VydmUiLCJyYXRpbyIsImF1dG9VcGRhdGUiLCJ1cGRhdGUiLCJhbmNlc3RvclNjcm9sbCIsImFuY2VzdG9yUmVzaXplIiwiZWxlbWVudFJlc2l6ZSIsImxheW91dFNoaWZ0IiwiYW5pbWF0aW9uRnJhbWUiLCJyZWZlcmVuY2VFbCIsImFuY2VzdG9ycyIsImNsZWFudXBJbyIsInJlb2JzZXJ2ZUZyYW1lIiwicmVzaXplT2JzZXJ2ZXIiLCJmaXJzdEVudHJ5IiwiX3Jlc2l6ZU9ic2VydmVyIiwiZnJhbWVJZCIsInByZXZSZWZSZWN0IiwiZnJhbWVMb29wIiwibmV4dFJlZlJlY3QiLCJfcmVzaXplT2JzZXJ2ZXIyIiwib2Zmc2V0JDEiLCJhdXRvUGxhY2VtZW50JDEiLCJzaGlmdCQxIiwibWVyZ2VkT3B0aW9ucyIsInBsYXRmb3JtV2l0aENhY2hlIiwiY29tcHV0ZVBvc2l0aW9uJDEiLCJpc0NvbXBvbmVudFB1YmxpY0luc3RhbmNlIiwidGFyZ2V0IiwidG9WYWx1ZSIsInNvdXJjZSIsInVucmVmIiwiZ2V0RFBSIiwicm91bmRCeURQUiIsImRwciIsInVzZUZsb2F0aW5nIiwid2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24iLCJvcGVuT3B0aW9uIiwiX3RvVmFsdWUiLCJtaWRkbGV3YXJlT3B0aW9uIiwicGxhY2VtZW50T3B0aW9uIiwiX3RvVmFsdWUyIiwic3RyYXRlZ3lPcHRpb24iLCJfdG9WYWx1ZTMiLCJ0cmFuc2Zvcm1PcHRpb24iLCJfdG9WYWx1ZTQiLCJyZWZlcmVuY2VFbGVtZW50IiwiZmxvYXRpbmdFbGVtZW50Iiwic2hhbGxvd1JlZiIsImlzUG9zaXRpb25lZCIsImZsb2F0aW5nU3R5bGVzIiwiaW5pdGlhbFN0eWxlcyIsInhWYWwiLCJ5VmFsIiwid2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwIiwib3BlbiIsInBvc2l0aW9uIiwiYXR0YWNoIiwiZ2V0Q3VycmVudFNjb3BlIiwib25TY29wZURpc3Bvc2UiLCJzaGFsbG93UmVhZG9ubHkiLCJpc0NsaWNrT3V0c2lkZSIsImFuY2hvciIsImlzSG92ZXJlZCIsImlzVG9nZ2xlZE9wZW4iLCJvZmZzZXRNaWRkbGV3YXJlIiwiaXNTaG93UG9wb3ZlciIsImhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2siLCJoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyIiwiaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUiLCJoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2siLCJhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQiLCJyZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCIsImhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93biIsImFkZE9wZW5MaXN0ZW5lcnNUb1Jvb3QiLCJyZW1vdmVPcGVuTGlzdGVuZXJzRnJvbVJvb3QiLCJ1cGRhdGVBbmNob3JFbGVtZW50Iiwid2F0Y2hFZmZlY3QiLCJvbkJlZm9yZU1vdW50IiwiZGlhbG9nRWxlbWVudCIsIkZPUk1BVCIsIkZPUk1BVF9SRUdFWCIsIk1FRElBX1NMSURFX1RZUEVTIiwiVkFMSURBVE9SIl0sIm1hcHBpbmdzIjoiO0FBQU8sTUFBTUEsS0FBYztBQUFBLEVBQ3pCLFlBQVk7QUFBQSxFQUNaLFVBQVU7QUFDWixHQ0NhQyxJQUFNO0FBQUEsRUFDakIsZ0JBQWdCLENBQUNDLEdBQXFCQyxNQUM3QkQsRUFBVSxJQUFJLENBQUNFLE1BQVksR0FBR0QsQ0FBVSxJQUFJQyxDQUFPLEVBQUU7QUFBQSxFQUU5RCxPQUFPO0FBQUEsSUFDTCxHQUFHO0FBQUEsTUFDRCxRQUFRO0FBQUEsTUFDUixNQUFNO0FBQUEsTUFDTixPQUFPO0FBQUEsSUFBQTtBQUFBLElBRVQsR0FBRztBQUFBLE1BQ0QsU0FBUztBQUFBLE1BQ1QsUUFBUTtBQUFBLElBQUE7QUFBQSxFQUNWO0FBQUEsRUFFRixPQUFPO0FBQUEsSUFDTCxRQUFRO0FBQUEsSUFDUixTQUFTO0FBQUEsSUFDVCxRQUFRO0FBQUEsSUFDUixLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsRUFBQTtBQUFBLEVBRVQsT0FBTztBQUFBLElBQ0wsUUFBUTtBQUFBLElBQ1IsUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLElBQ1AsU0FBUztBQUFBLEVBQUE7QUFBQSxFQUVYLElBQUk7QUFBQSxJQUNGLFFBQVE7QUFBQSxNQUNOLFNBQVM7QUFBQSxRQUNQLE9BQU87QUFBQSxRQUNQLE1BQU07QUFBQSxRQUNOLFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxNQUFBO0FBQUEsTUFFWCxTQUFTO0FBQUEsUUFDUCxPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsUUFFVCxNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsTUFBQTtBQUFBLElBQ1Y7QUFBQSxJQUVGLFNBQVM7QUFBQSxJQUNULE1BQU07QUFBQSxJQUNOLFNBQVM7QUFBQSxJQUNULFdBQVc7QUFBQSxJQUNYLFNBQVM7QUFBQSxNQUNQLFFBQVE7QUFBQSxNQUNSLE9BQU87QUFBQSxNQUNQLFNBQVM7QUFBQSxNQUNULFVBQVU7QUFBQSxNQUNWLFVBQVU7QUFBQSxNQUNWLFNBQVM7QUFBQSxJQUFBO0FBQUEsSUFFWCxhQUFhO0FBQUEsTUFDWCxhQUFhO0FBQUEsTUFDYixhQUFhO0FBQUEsTUFDYixlQUFlO0FBQUEsTUFDZixjQUFjO0FBQUEsSUFBQTtBQUFBLEVBQ2hCO0FBQUEsRUFFRixRQUFRO0FBQUEsSUFDTixPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsUUFFVCxNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsTUFBQTtBQUFBLE1BRVYsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsVUFBVTtBQUFBLE1BQ1YsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLElBQUE7QUFBQSxJQUVYLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsTUFDUixPQUFPO0FBQUEsSUFB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O0FBQUEsSUFDUCxLQUFLO0FBQUEsSUFDTCxJQUFJO0FBQUEsRUFBQTtBQUFBLEVBRU4sVUFBVTtBQUFBLElBQ1IsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLE1BQ1IsUUFBUTtBQUFBLElBQUE7QUFBQSxJQUVWLElBQUk7QUFBQSxNQUNGLE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxJQUFBO0FBQUEsSUFFVixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsSUFBQTtBQUFBLEVBQ1Y7QUFBQSxFQUVGLFNBQVM7QUFBQSxJQUNQLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLE9BQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixLQUFLO0FBQUEsTUFDSCxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFB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QUFBQSxFQUNoQixhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixVQUFVO0FBQUEsRUFDVixVQUFVO0FBQUEsRUFDVixpQkFBaUI7QUFBQSxFQUNqQixNQUFNO0FBQUEsRUFDTixhQUFhO0FBQUEsRUFDYixlQUFlO0FBQUEsRUFDZixzQkFBc0I7QUFBQSxFQUN0QixPQUFPO0FBQUEsRUFDUCxLQUFLO0FBQUEsRUFDTCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxvQkFBb0I7QUFBQSxFQUNwQixRQUFRO0FBQUEsRUFDUixZQUFZO0FBQUEsRUFDWixNQUFNO0FBQUEsRUFDTixXQUFXO0FBQUEsRUFDWCxVQUFVO0FBQUEsRUFDVixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixXQUFXO0FBQUEsRUFDWCxXQUFXO0FBQUEsRUFDWCxRQUFRO0FBQUEsRUFDUixnQkFBZ0I7QUFBQSxFQUNoQixXQUFXO0FBQUEsRUFDWCxnQkFBZ0I7QUFBQSxFQUNoQixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixXQUFXO0FBQUEsRUFDWCxZQUFZO0FBQUEsRUFDWixlQUFlO0FBQUEsRUFDZixVQUFVO0FBQUEsRUFDVixhQUFhO0FBQUEsRUFDYixTQUFTO0FBQUEsRUFDVCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixlQUFlO0FBQUEsRUFDZixjQUFjO0FBQUEsRUFDZCxXQUFXO0FBQUEsRUFDWCxZQUFZO0FBQUEsRUFDWixRQUFRO0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxXQUFXO0FBQUEsRUFDWCxlQUFlO0FBQUEsRUFDZixRQUFRO0FBQUEsRUFDUixlQUFlO0FBQUEsRUFDZixjQUFjO0FBQUEsRUFDZCxNQUFNO0FBQUEsRUFDTixnQkFBZ0I7QUFBQSxFQUNoQixPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixTQUFTO0FBQUEsRUFDVCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQUEsRUFDVCxVQUFVO0FBQUEsRUFDVixPQUFPO0FBQUEsRUFDUCxjQUFjO0FBQUEsRUFDZCxlQUFlO0FBQUEsRUFDZixRQUFRO0FBQUEsRUFDUixLQUFLO0FBQUEsRUFDTCxXQUFXO0FBQUEsRUFDWCxNQUFNO0FBQUEsRUFDTixXQUFXO0FBQUEsRUFDWCxZQUFZO0FBQUEsRUFDWixXQUFXO0FBQUEsRUFDWCxrQkFBa0I7QUFBQSxFQUNsQixVQUFVO0FBQUEsRUFDVixlQUFlO0FBQUEsRUFDZixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixTQUFTO0FBQUEsRUFDVCxVQUFVO0FBQUEsRUFDVixVQUFVO0FBQUEsRUFDVixVQUFVO0FBQUEsRUFDVixZQUFZO0FBQUEsRUFDWixZQUFZO0FBQUEsRUFDWixZQUFZO0FBQUEsRUFDWixXQUFXO0FBQUEsRUFDWCxXQUFXO0FBQUEsRUFDWCxTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxtQkFBbUI7QUFBQSxFQUNuQixRQUFRO0FBQUEsRUFDUixTQUFTO0FBQ1gsR0FFYUMsS0FBYTtBQUFBLEVBQ3hCLEtBQUs7QUFBQSxJQUNILEtBQUs7QUFBQSxJQUNMLFlBQVk7QUFBQSxJQUNaLFdBQVc7QUFBQSxJQUNYLFNBQVM7QUFBQSxJQUNULFdBQVc7QUFBQSxJQUNYLGNBQWM7QUFBQSxJQUNkLFNBQVM7QUFBQSxFQUFBO0FBQUEsRUFFWCxVQUFVO0FBQUEsSUFDUixLQUFLO0FBQUEsSUFDTCxTQUFTO0FBQUEsRUFBQTtBQUFBLEVBRVgsSUFBSTtBQUFBLElBQ0YsU0FBUztBQUFBLElBQ1QsU0FBUztBQUFBLElBQ1QsU0FBUztBQUFBLElBQ1QsYUFBYTtBQUFBLElBQ2IsWUFBWTtBQUFBLElBQ1osWUFBWTtBQUFBLElBQ1osZUFBZTtBQUFBLElBQ2YsZ0JBQWdCO0FBQUEsSUFDaEIsY0FBYztBQUFBLEVBQUE7QUFFbEI7Ozs7Ozs7Ozs7O2lCQzFJUUMsSUFBb0IsTUFBTTtBQUM5QixNQUFBQyxFQUFLLFFBQVE7QUFBQSxJQUNmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0VDM0JXQyxJQUFVO0FBQUEsRUFDckIsUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUNSLEdBRWFDLEtBQXVCO0FBQUEsRUFDbEMsUUFBUTtBQUFBLEVBQ1IsS0FBSztBQUFBLEVBQ0wsTUFBTTtBQUNSLEdDUGFDLElBQVc7QUFBQSxFQUN0QixTQUFTO0FBQUEsRUFDVCxXQUFXO0FBQUEsRUFDWCxVQUFVO0FBQUEsRUFDVixZQUFZO0FBQUEsRUFDWixVQUFVO0FBQ1osR0NSYUMsS0FBUztBQUFBLEVBQ3BCLE9BQU87QUFBQSxFQUNQLE1BQU07QUFDUjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ0hhQyxLQUFRO0FBQUEsRUFDbkIsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsU0FBUztBQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0VDSGFDLElBQWM7QUFBQSxFQUN6QixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixLQUFLO0FBQUEsRUFDTCxRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixRQUFRO0FBQ1YsR0FFYUMsS0FNVDtBQUFBLEVBQ0YsQ0FBQ0QsRUFBWSxLQUFLLEdBQUc7QUFBQSxJQUNuQixhQUFhcEMsRUFBSSxPQUFPLE1BQU07QUFBQSxJQUM5QixXQUFXQSxFQUFJLEtBQUssTUFBTSxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRXBDLENBQUNvQyxFQUFZLElBQUksR0FBRztBQUFBLElBQ2xCLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRTNDLENBQUNvQyxFQUFZLEtBQUssR0FBRztBQUFBLElBQ25CLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRTNDLENBQUNvQyxFQUFZLElBQUksR0FBRztBQUFBLElBQ2xCLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRTNDLENBQUNvQyxFQUFZLE1BQU0sR0FBRztBQUFBLElBQ3BCLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRTNDLENBQUNvQyxFQUFZLE1BQU0sR0FBRztBQUFBLElBQ3BCLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRTNDLENBQUNvQyxFQUFZLEdBQUcsR0FBRztBQUFBLElBQ2pCLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRTNDLENBQUNvQyxFQUFZLE1BQU0sR0FBRztBQUFBLElBQ3BCLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRTNDLENBQUNvQyxFQUFZLElBQUksR0FBRztBQUFBLElBQ2xCLGFBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRTNDLENBQUNv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QUFBLEVBQzFCLE9BQU87QUFBQSxFQUNQLG9CQUFvQjtBQUFBLEVBQ3BCLFlBQVk7QUFBQSxFQUNaLE9BQ0U7QUFBQSxFQUNGLGlCQUFpQjtBQUFBLEVBQ2pCLE9BQU87QUFBQSxFQUNQLE9BQU87QUFDVCxHQ2hCYUMsS0FBb0I7QUFBQSxFQUMvQixPQUFPO0FBQUEsSUFDTCxXQUFXO0FBQUEsSUFDWCxPQUFPO0FBQUEsRUFBQTtBQUFBLEVBRVQsT0FBTztBQUFBLEVBQ1AsSUFBSTtBQUNOLEdDVGFDLEtBQVk7QUFBQSxFQUN2QixvQkFBb0JwWixHQUFZa1osR0FBYSxrQkFBa0I7QUFBQSxFQUMvRCxhQUFhbFosR0FBWWtaLEdBQWEsVUFBVTtBQUFBLEVBQ2hELE9BQU9sWixHQUFZa1osR0FBYSxLQUFLO0FBQUEsRUFDckMsUUFBUWxaLEdBQVlrWixHQUFhLGVBQWU7QUFBQSxFQUNoRCxPQUFPbFosR0FBWWtaLEdBQWEsS0FBSztBQUN2QzsiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMjksMzAsMzEsMzIsMzNdfQ==
|