@envive-ai/react-hooks 0.1.5 → 0.1.6
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/amplitudeContext-CHzas7Cf.d.cts +52 -0
- package/dist/amplitudeContext-D-7fmVh1.cjs +356 -0
- package/dist/amplitudeContext-hY3caPC6.js +322 -0
- package/dist/amplitudeContext-tJ4y-SzX.d.ts +52 -0
- package/dist/api-DjeZXxl_.js +207 -0
- package/dist/api-_JaUnIUj.cjs +292 -0
- package/dist/app-CjsQ2_n-.js +132 -0
- package/dist/app-CnKRZ9RW.cjs +178 -0
- package/dist/application/models/graphql/index.cjs +3 -12
- package/dist/application/models/graphql/index.d.cts +1 -1
- package/dist/application/models/graphql/index.d.ts +1 -1
- package/dist/application/models/graphql/index.js +1 -10
- package/dist/application/models/guards/api/index.cjs +1 -2
- package/dist/application/models/guards/api/index.d.cts +2 -2
- package/dist/application/models/guards/api/index.d.ts +2 -2
- package/dist/application/models/guards/api/index.js +1 -2
- package/dist/application/models/index.cjs +48 -54
- package/dist/application/models/index.d.cts +7 -9
- package/dist/application/models/index.d.ts +7 -9
- package/dist/application/models/index.js +7 -11
- package/dist/application/models/utilityTypes/index.cjs +1 -1
- package/dist/application/models/utilityTypes/index.d.cts +1 -1
- package/dist/application/models/utilityTypes/index.d.ts +1 -1
- package/dist/application/models/utilityTypes/index.js +1 -1
- package/dist/application/models/variantInfo/index.cjs +1 -1
- package/dist/application/models/variantInfo/index.d.cts +1 -1
- package/dist/application/models/variantInfo/index.d.ts +1 -1
- package/dist/application/models/variantInfo/index.js +1 -1
- package/dist/application/utils/index.cjs +40 -37
- package/dist/application/utils/index.d.cts +18 -14
- package/dist/application/utils/index.d.ts +19 -15
- package/dist/application/utils/index.js +13 -10
- package/dist/{atomStore-JwGb7pcy.cjs → atomStore-B4jIaDPd.cjs} +1 -1
- package/dist/{atomStore-B1cgmbP0.js → atomStore-D8pjE1vL.js} +1 -1
- package/dist/atoms/app/index.cjs +14 -16
- package/dist/atoms/app/index.d.cts +20 -19
- package/dist/atoms/app/index.d.ts +20 -19
- package/dist/atoms/app/index.js +10 -11
- package/dist/atoms/atomStore/index.cjs +2 -1
- package/dist/atoms/atomStore/index.d.cts +24 -2
- package/dist/atoms/atomStore/index.d.ts +24 -2
- package/dist/atoms/atomStore/index.js +2 -1
- package/dist/atoms/chat/index.cjs +44 -40
- package/dist/atoms/chat/index.d.cts +35 -36
- package/dist/atoms/chat/index.d.ts +35 -36
- package/dist/atoms/chat/index.js +14 -10
- package/dist/atoms/globalSearch/index.cjs +1 -1
- package/dist/atoms/globalSearch/index.d.cts +5 -5
- package/dist/atoms/globalSearch/index.d.ts +6 -6
- package/dist/atoms/globalSearch/index.js +1 -1
- package/dist/atoms/org/index.cjs +26 -38
- package/dist/atoms/org/index.d.cts +35 -48
- package/dist/atoms/org/index.d.ts +35 -48
- package/dist/atoms/org/index.js +11 -11
- package/dist/atoms/search/index.cjs +47 -41
- package/dist/atoms/search/index.d.cts +7 -9
- package/dist/atoms/search/index.d.ts +7 -9
- package/dist/atoms/search/index.js +16 -10
- package/dist/bandolier-DYEz4-8C.js +1229 -0
- package/dist/bandolier-o_-xrbOV.cjs +1229 -0
- package/dist/carpe-CsG5jCcl.cjs +607 -0
- package/dist/carpe-DONk00bZ.js +605 -0
- package/dist/cdnUtils-32v8bDX9.cjs +16 -0
- package/dist/cdnUtils-E4tLBt2g.js +11 -0
- package/dist/{chat-_NzpO_Hn.cjs → chat-BubCW1as.cjs} +1 -1
- package/dist/chat-CO7cRkaq.cjs +506 -0
- package/dist/{chat-CHmD79E1.js → chat-CV6MXeID.js} +1 -1
- package/dist/chat-hcRc4RRd.js +285 -0
- package/dist/{components-Dl-TMD9k.js → components-B4T3Uzth.js} +1 -1
- package/dist/{components-D0XDRcaN.cjs → components-Cw9WjA6g.cjs} +1 -1
- package/dist/config/locators/components/chat/index.cjs +1 -1
- package/dist/config/locators/components/chat/index.d.cts +1 -1
- package/dist/config/locators/components/chat/index.d.ts +1 -1
- package/dist/config/locators/components/chat/index.js +1 -1
- package/dist/config/locators/components/chat/variants/index.d.cts +1 -1
- package/dist/config/locators/components/chat/variants/index.d.ts +1 -1
- package/dist/config/locators/components/index.cjs +1 -1
- package/dist/config/locators/components/index.d.cts +1 -1
- package/dist/config/locators/components/index.d.ts +1 -1
- package/dist/config/locators/components/index.js +1 -1
- package/dist/config/locators/components/search/index.d.ts +1 -1
- package/dist/config/locators/index.cjs +4 -4
- package/dist/config/locators/index.d.cts +2 -2
- package/dist/config/locators/index.d.ts +2 -2
- package/dist/config/locators/index.js +4 -4
- package/dist/contexts/index.cjs +45 -14
- package/dist/contexts/index.d.cts +10 -10
- package/dist/contexts/index.d.ts +10 -10
- package/dist/contexts/index.js +22 -11
- package/dist/contexts-B4ihTBsV.cjs +2980 -0
- package/dist/contexts-DGlr7M1o.js +2596 -0
- package/dist/coterie-CKB93qfz.cjs +239 -0
- package/dist/{coterie--MGvWeVh.cjs → coterie-DHcj2fRE.js} +64 -65
- package/dist/{custservice-types-C8-9vKWb.cjs → custservice-types-Dy0kc9TW.cjs} +1 -1
- package/dist/{custservice-types-CamCiXjq.js → custservice-types-mnIunabv.js} +1 -1
- package/dist/default-BnB4p0Se.cjs +234 -0
- package/dist/default-D6f5Dyt7.js +199 -0
- package/dist/default-ZKkE5zT4.cjs +4 -0
- package/dist/default-legGZJwI.js +4 -0
- package/dist/{divIds-CjceLRD9.cjs → divIds-2dJlU3z8.cjs} +1 -15
- package/dist/{divIds-0Vj9g-fM.js → divIds-BUrN2vY-.js} +2 -4
- package/dist/dreamlandBaby-BiRYYFav.js +346 -0
- package/dist/dreamlandBaby-zuvmfzfD.cjs +346 -0
- package/dist/{embedded-_cLpd6FK.js → embedded-BJLWIriJ.js} +1 -1
- package/dist/{embedded-B5Wi9g0T.cjs → embedded-Dl79TJLC.cjs} +1 -1
- package/dist/{entrypoints-CNUvSgnk.js → entrypoints-Bs3pn6EV.js} +1 -1
- package/dist/{entrypoints-DM9Sm18O.cjs → entrypoints-Dqi5pzWH.cjs} +1 -1
- package/dist/enviveConfig-BccuzS2a.cjs +240 -0
- package/dist/enviveConfig-CzhTz8Aa.js +152 -0
- package/dist/events/index.cjs +1 -1
- package/dist/events/index.js +1 -1
- package/dist/{events-ClCDFK7t.js → events-BrLpaNxh.js} +1 -1
- package/dist/{events-Da7gpmGv.cjs → events-DwT6cEwI.cjs} +1 -1
- package/dist/fiveCbd-DwTTwC2j.cjs +613 -0
- package/dist/fiveCbd-Dz2NouOF.js +613 -0
- package/dist/forLoveAndLemons-DqSdyD6S.js +665 -0
- package/dist/forLoveAndLemons-Ud6mPrV3.cjs +667 -0
- package/dist/{globalSearch-b0wC7ZEO.js → globalSearch-B6THR7Jx.js} +1 -1
- package/dist/{globalSearch-BTeZxvk1.cjs → globalSearch-BFvEg53C.cjs} +1 -1
- package/dist/graphql-BNW60InJ.cjs +128 -0
- package/dist/graphql-CjB8wHzm.js +74 -0
- package/dist/graphqlConfig-CYt6tWII.js +30 -0
- package/dist/graphqlConfig-DicykC-o.cjs +61 -0
- package/dist/greenpan-B_EbPkSP.js +397 -0
- package/dist/greenpan-kPE4fJgd.cjs +397 -0
- package/dist/grooveLife-Ckuir319.js +342 -0
- package/dist/grooveLife-DKSEQp1F.cjs +342 -0
- package/dist/homegrownCannabis-BVPa2pqe.js +410 -0
- package/dist/homegrownCannabis-BwIAkxuA.cjs +410 -0
- package/dist/hooks/index.cjs +39 -13
- package/dist/hooks/index.d.cts +127 -45
- package/dist/hooks/index.d.ts +124 -42
- package/dist/hooks/index.js +22 -11
- package/dist/{index-D46Rd0io.d.cts → index-B0NW9KTj.d.cts} +1 -1
- package/dist/{index-BdNKc2ix.d.cts → index-BDPWBU3h.d.cts} +1 -1
- package/dist/index-BMPtlgac.d.ts +191 -0
- package/dist/{index-BTK5uzs6.d.cts → index-Bmub8e38.d.cts} +1 -1
- package/dist/{index-BrXuc_Ck.d.cts → index-Byb45OPg.d.cts} +1 -1
- package/dist/{index-CSIOQD-A.d.ts → index-C6KdON7d.d.ts} +1 -1
- package/dist/index-C7pGDl1A.d.ts +1609 -0
- package/dist/{index-K2kNsOTw.d.cts → index-C9lgsCWp.d.cts} +32 -32
- package/dist/{index-BzgkfbNO.d.cts → index-CESxqFso.d.cts} +1 -1
- package/dist/{index-CbJZOEU4.d.ts → index-Cc-wBCn6.d.ts} +32 -32
- package/dist/{index-Cx9e-fRi.d.ts → index-CcIG01PJ.d.ts} +2 -2
- package/dist/{index-ClJ0nMsR.d.cts → index-CiWEYzXl.d.cts} +2 -2
- package/dist/{index-CKKkTsms.d.ts → index-Cqg6ltII.d.ts} +1 -1
- package/dist/{index-Cr2y08f1.d.ts → index-DOii3C6b.d.ts} +1 -1
- package/dist/index-DTu2X-YS.d.cts +1609 -0
- package/dist/index-OEifcBsm.d.cts +191 -0
- package/dist/{index-Dxpscrvz.d.ts → index-PGF8BvxQ.d.ts} +1 -1
- package/dist/{index-D2VaMPA3.d.ts → index-ylUiJvnr.d.ts} +1 -1
- package/dist/interceptors/index.cjs +2 -12
- package/dist/interceptors/index.d.cts +8 -13
- package/dist/interceptors/index.d.ts +8 -13
- package/dist/interceptors/index.js +2 -11
- package/dist/jackArcher-B39OEIj6.cjs +727 -0
- package/dist/{jackArcher-sO9EbgrZ.js → jackArcher-BwkWGybC.js} +24 -25
- package/dist/jordanCraig-CxRH_jLi.js +1786 -0
- package/dist/jordanCraig-RwmWw-jM.cjs +1786 -0
- package/dist/kindredBravely-D78VwL20.cjs +490 -0
- package/dist/kindredBravely-DQDpAzdl.js +490 -0
- package/dist/kutFromTheKloth-TcXQkIti.js +369 -0
- package/dist/kutFromTheKloth-dXRrNti0.cjs +369 -0
- package/dist/larryAndSerges-Bh5XEXsZ.js +262 -0
- package/dist/larryAndSerges-COdBzOzu.cjs +262 -0
- package/dist/leapsAndRebounds-BbXnqkl5.cjs +360 -0
- package/dist/leapsAndRebounds-mjCaH1k-.js +360 -0
- package/dist/longevityrx-DdV3v26F.cjs +320 -0
- package/dist/longevityrx-DfPDfvAt.js +320 -0
- package/dist/lookOptic-DgXFGBPP.cjs +282 -0
- package/dist/{lookOptic-Jwf7EAU8.js → lookOptic-FgVW1afF.js} +19 -20
- package/dist/mantraBrand-C5gVm3rk.cjs +750 -0
- package/dist/{mantraBrand-DoaVj837.js → mantraBrand-uV8HCDR8.js} +22 -23
- package/dist/medterra-BtDpr1Hw.cjs +583 -0
- package/dist/medterra-DgzE7-mj.js +583 -0
- package/dist/modells-CJjsxOIR.js +484 -0
- package/dist/modells-Ck5KbRFj.cjs +484 -0
- package/dist/models-BkXg5eIP.cjs +1534 -0
- package/dist/models-UZ6HszfZ.js +1281 -0
- package/dist/{nodeSelector-DybpVr-i.d.ts → nodeSelector-BxrS2S_k.d.ts} +1 -1
- package/dist/{nodeSelector-vKB44CDB.d.cts → nodeSelector-Dm4S-10n.d.cts} +1 -1
- package/dist/org-C2RrBVQR.cjs +81 -0
- package/dist/org-xMytX--e.js +38 -0
- package/dist/orgAnalyticsConfig-BJ2A1RZ-.cjs +39 -0
- package/dist/orgAnalyticsConfig-ClrFy2qH.js +14 -0
- package/dist/pressedFloral-Bteoboms.js +661 -0
- package/dist/pressedFloral-CexgV-xy.cjs +661 -0
- package/dist/search-BMOAmrmY.js +459 -0
- package/dist/search-Df0Ifneg.cjs +672 -0
- package/dist/{search-filter-types-9rTb3jMj.d.cts → search-filter-types-DosbseF3.d.cts} +1 -1
- package/dist/{search-filter-types-C-zZSpGo.d.ts → search-filter-types-fZf91Pdw.d.ts} +1 -1
- package/dist/skinPerfection-BGzq9lq-.cjs +334 -0
- package/dist/skinPerfection-BlvcEcUE.js +334 -0
- package/dist/snapSupplements-CbbGzAgO.cjs +285 -0
- package/dist/snapSupplements-kcsPAOm9.js +285 -0
- package/dist/{socialProofClasses-ky69yppk.cjs → socialProofClasses-Db8gzsfi.cjs} +1 -1
- package/dist/{socialProofClasses-DdzG1tZy.js → socialProofClasses-kwDvwLOZ.js} +1 -1
- package/dist/spanx-B4WFA_rI.js +661 -0
- package/dist/spanx-BWoE4F8b.cjs +663 -0
- package/dist/spanxStaging-BOrOjhXn.js +845 -0
- package/dist/spanxStaging-BfdfIug4.cjs +848 -0
- package/dist/{suggestionBarV2-types-Penx3Y67.js → suggestionBarV2-types-IMMOmCir.js} +1 -1
- package/dist/{suggestionBarV2-types-B3lwrENK.cjs → suggestionBarV2-types-nnGNgFvR.cjs} +1 -1
- package/dist/supergoop-22dd5_BS.js +323 -0
- package/dist/supergoop-B-a4cku2.cjs +323 -0
- package/dist/{test-types-CXVJxTeu.d.ts → test-types-C9b_OdfO.d.ts} +1 -1
- package/dist/{test-types-CuOq25VT.d.cts → test-types-CgVJtwUr.d.cts} +1 -1
- package/dist/types/index.cjs +2 -2
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.js +2 -2
- package/dist/types--pr1GQQx.js +154 -0
- package/dist/types-BVSyY3Hk.cjs +196 -0
- package/dist/{uniqueVintage-BWkDgt1z.js → uniqueVintage-CJXiNNe7.js} +19 -20
- package/dist/uniqueVintage-D0jzJWlo.cjs +1213 -0
- package/dist/useMessageInterceptor-B87e3yu3.cjs +33 -0
- package/dist/useMessageInterceptor-Bb7YRaWk.js +25 -0
- package/dist/userIdentityContext-BPqvVIg0.d.cts +20 -0
- package/dist/userIdentityContext-wbCRmlzp.d.ts +20 -0
- package/dist/utils-C9ZSCx12.js +888 -0
- package/dist/utils-D5HO61hG.cjs +1016 -0
- package/dist/variantInfo-DbVxA1yE.js +1 -0
- package/dist/variantInfo-orXoPBCU.cjs +0 -0
- package/dist/venaCbd-Bhhu_qUf.cjs +365 -0
- package/dist/venaCbd-CanovPS_.js +365 -0
- package/dist/westonJonBoucher-BC0x1ktI.cjs +422 -0
- package/dist/{westonJonBoucher-BAGXegsX.js → westonJonBoucher-BUu1_wP1.js} +19 -20
- package/dist/wineEnthusiast-BlCryfil.cjs +940 -0
- package/dist/{wineEnthusiast-EJbhMeKQ.js → wineEnthusiast-Ck1x5iJq.js} +19 -20
- package/dist/wolfMattress-D9Mjq-HP.js +372 -0
- package/dist/wolfMattress-JssghhC-.cjs +372 -0
- package/dist/wolfTactical-C6exYhL7.cjs +349 -0
- package/dist/wolfTactical-CnV3KQdI.js +349 -0
- package/package.json +100 -19
- package/src/{adapters/spiffy/commerce/api.ts → application/commerce-api.ts} +31 -23
- package/src/application/models/colorsConfig.ts +18 -18
- package/src/application/models/frontendConfig.ts +3 -3
- package/src/application/models/graphql/queries/getMerchantColorsQuery.ts +1 -1
- package/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.ts +1 -1
- package/src/application/models/index.ts +0 -2
- package/src/application/models/localStorageEventListener.ts +2 -2
- package/src/application/models/utils/snakeToCamelTransformer.ts +8 -8
- package/src/application/models/validators/validateGraphQLColorsConfig.ts +0 -21
- package/src/application/models/validators/validateGraphQLFrontendConfig.ts +2 -2
- package/src/application/utils/analyticsUtils.ts +53 -22
- package/src/application/utils/cdnUtils.ts +11 -0
- package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +15 -0
- package/src/atoms/app/index.ts +7 -17
- package/src/atoms/app/variant.ts +13 -4
- package/src/atoms/chat/chatState.ts +28 -18
- package/src/atoms/chat/messageQueue.ts +36 -5
- package/src/atoms/chat/replies.ts +45 -37
- package/src/atoms/envive/enviveConfig.ts +10 -6
- package/src/atoms/org/graphqlConfig.ts +7 -1
- package/src/atoms/org/index.ts +3 -3
- package/src/atoms/org/newOrgConfigAtom.ts +8 -0
- package/src/atoms/org/orgPageConfig.ts +6 -5
- package/src/atoms/search/chatSearch.ts +11 -5
- package/src/atoms/search/searchAPI.ts +22 -12
- package/src/atoms/search/searchServiceAdapter.ts +25 -0
- package/src/contexts/amplitudeContext.tsx +466 -0
- package/src/contexts/cdnContext.tsx +48 -0
- package/src/contexts/chatContext.tsx +15 -12
- package/src/contexts/enviveConfigContext.tsx +22 -17
- package/src/contexts/enviveCssContext.tsx +34 -5
- package/src/contexts/featureFlagContext.tsx +193 -0
- package/src/contexts/featureFlagServiceContext.tsx +87 -0
- package/src/contexts/graphqlContext.tsx +165 -0
- package/src/contexts/index.ts +13 -3
- package/src/contexts/localStorageContext.tsx +159 -0
- package/src/contexts/newOrgConfigContext.tsx +104 -0
- package/src/contexts/orgConfigContext.tsx +92 -92
- package/src/contexts/searchContext.tsx +187 -0
- package/src/contexts/sessionStorageContext.tsx +80 -0
- package/src/contexts/shopifyUrlContext.tsx +97 -0
- package/src/contexts/types.ts +12 -8
- package/src/contexts/userIdentityContext.tsx +197 -0
- package/src/events/registerAnalyticsListeners.ts +32 -38
- package/src/hooks/index.ts +10 -4
- package/src/hooks/useAmplitudeOperations.ts +35 -0
- package/src/hooks/useAppDetails.ts +49 -0
- package/src/hooks/useCdnOperations.ts +16 -0
- package/src/hooks/useChatToggle.ts +5 -4
- package/src/hooks/useChatToggleAnalytics.ts +15 -0
- package/src/hooks/useGraphQLConfig.ts +63 -0
- package/src/hooks/useIdentifyUser.ts +33 -0
- package/src/hooks/useImageResolver.ts +7 -7
- package/src/hooks/useLocalStorageOperations.ts +92 -0
- package/src/hooks/useNewOrgConfig.ts +3 -76
- package/src/hooks/useSearch.tsx +21 -18
- package/src/hooks/useSearchOperations.ts +97 -0
- package/src/hooks/useSessionStorageOperations.ts +28 -0
- package/src/hooks/useShopifyUrlOperations.ts +45 -0
- package/src/hooks/useTrackComponentVisibleEvent.ts +12 -8
- package/src/hooks/useUpdateAnalyticsProps.ts +28 -17
- package/src/interceptors/index.ts +0 -1
- package/src/interceptors/useMessageInterceptor.ts +5 -8
- package/src/merchants/bandolier/bandolier.ts +10 -28
- package/src/merchants/carpe/carpe.ts +5 -8
- package/src/merchants/coterie/coterie.ts +3 -6
- package/src/merchants/default.ts +73 -70
- package/src/merchants/domInsertion.ts +30 -0
- package/src/merchants/dreamlandBaby/dreamlandBaby.ts +12 -6
- package/src/merchants/fiveCbd/fiveCbd.ts +7 -13
- package/src/merchants/forLoveAndLemons/forLoveAndLemons.ts +44 -14
- package/src/merchants/greenpan/greenpan.ts +6 -12
- package/src/merchants/gridInsertion.ts +19 -0
- package/src/merchants/grooveLife/grooveLife.ts +13 -7
- package/src/merchants/homegrownCannabis/homegrownCannabis.ts +12 -6
- package/src/merchants/jackArcher/jackArcher.ts +26 -11
- package/src/merchants/jordanCraig/jordanCraig.ts +5 -5
- package/src/merchants/kindredBravely/kindredBravely.ts +16 -7
- package/src/merchants/kutFromTheKloth/kutFromTheKloth.ts +9 -6
- package/src/merchants/larryAndSerges/larryAndSerges.ts +6 -2
- package/src/merchants/leapsAndRebounds/leapsAndRebounds.ts +7 -7
- package/src/merchants/longevityrx/longevityrx.ts +14 -8
- package/src/merchants/lookOptic/lookOptic.ts +6 -6
- package/src/merchants/mantraBrand/mantraBrand.ts +14 -8
- package/src/merchants/medterra/medterra.ts +14 -11
- package/src/merchants/modells/modells.ts +6 -9
- package/src/merchants/pressedFloral/pressedFloral.ts +7 -13
- package/src/merchants/skinPerfection/skinPerfection.ts +13 -7
- package/src/merchants/snapSupplements/snapSupplements.ts +13 -10
- package/src/merchants/spanx/spanx.ts +6 -6
- package/src/merchants/spanx/spanxStaging.ts +6 -12
- package/src/merchants/supergoop/supergoop.ts +11 -12
- package/src/merchants/uniqueVintage/uniqueVintage.ts +6 -6
- package/src/merchants/venaCbd/venaCbd.ts +6 -9
- package/src/merchants/westonJonBoucher/westonJonBoucher.ts +6 -6
- package/src/merchants/wineEnthusiast/wineEnthusiast.ts +6 -6
- package/src/merchants/wolfMattress/wolfMattress.ts +3 -3
- package/src/merchants/wolfTactical/wolfTactical.ts +5 -11
- package/src/types/config-versions.ts +6 -0
- package/src/types.ts +0 -53
- package/dist/adapters/amplitude/index.cjs +0 -14
- package/dist/adapters/amplitude/index.d.cts +0 -6
- package/dist/adapters/amplitude/index.d.ts +0 -6
- package/dist/adapters/amplitude/index.js +0 -12
- package/dist/api-B2euFL-5.cjs +0 -269
- package/dist/api-XRr_lAG6.js +0 -190
- package/dist/application/config/index.cjs +0 -43
- package/dist/application/config/index.d.cts +0 -15
- package/dist/application/config/index.d.ts +0 -15
- package/dist/application/config/index.js +0 -41
- package/dist/application/service/customerService/index.cjs +0 -4
- package/dist/application/service/customerService/index.d.cts +0 -3
- package/dist/application/service/customerService/index.d.ts +0 -3
- package/dist/application/service/customerService/index.js +0 -4
- package/dist/application/service/index.cjs +0 -42
- package/dist/application/service/index.d.cts +0 -413
- package/dist/application/service/index.d.ts +0 -413
- package/dist/application/service/index.js +0 -12
- package/dist/atomStore-ONYy0XuA.d.cts +0 -24
- package/dist/atomStore-kOKiEcNl.d.ts +0 -24
- package/dist/bandolier-Da4wt6sm.cjs +0 -1230
- package/dist/bandolier-DzEmYWcz.js +0 -1230
- package/dist/carpe-AXipz0Xl.cjs +0 -608
- package/dist/carpe-CaUKwcEa.js +0 -606
- package/dist/contexts-CtRlNXaS.js +0 -7674
- package/dist/contexts-CtgmnYNn.cjs +0 -9088
- package/dist/coterie-oKHAT0lx.js +0 -240
- package/dist/customerService-BG1uNZZ1.cjs +0 -36
- package/dist/customerService-BHQRnLhC.js +0 -23
- package/dist/default-B4fINY5_.cjs +0 -4
- package/dist/default-BrTQxA0c.js +0 -4
- package/dist/default-C3LrcbZB.cjs +0 -199
- package/dist/default-CXkYrLEr.js +0 -176
- package/dist/dreamlandBaby-BEqt0eKF.js +0 -347
- package/dist/dreamlandBaby-DBDjEJCc.cjs +0 -347
- package/dist/featureFlagService-5wdmW02z.d.ts +0 -18
- package/dist/featureFlagService-DaelrXEk.d.cts +0 -18
- package/dist/fiveCbd-CdqNt16h.cjs +0 -614
- package/dist/fiveCbd-D6B-sgnX.js +0 -614
- package/dist/forLoveAndLemons-C7GsJG7f.cjs +0 -668
- package/dist/forLoveAndLemons-gNDlMtPR.js +0 -666
- package/dist/greenpan-B5AaW4M_.js +0 -398
- package/dist/greenpan-DrORpYms.cjs +0 -398
- package/dist/grooveLife-BJqsfH2H.cjs +0 -343
- package/dist/grooveLife-xIUmDM8s.js +0 -343
- package/dist/homegrownCannabis-8TZ21u6L.cjs +0 -411
- package/dist/homegrownCannabis-BtMuEvbZ.js +0 -411
- package/dist/index-CKUpnyJQ.d.ts +0 -72
- package/dist/index-DFL1dIT_.d.ts +0 -7
- package/dist/index-DXpgMVpp.d.ts +0 -749
- package/dist/index-MFbPQ8Ji.d.ts +0 -95
- package/dist/index-VHFMGkO-.d.cts +0 -72
- package/dist/index-VSFakgAI.d.cts +0 -95
- package/dist/index-aNW5V9fh.d.cts +0 -749
- package/dist/index-zZjcds15.d.cts +0 -7
- package/dist/jackArcher-WtkbLBZj.cjs +0 -728
- package/dist/jordanCraig-471FcgqF.cjs +0 -1787
- package/dist/jordanCraig-DNOncplU.js +0 -1787
- package/dist/kindredBravely-BlLyHGMX.cjs +0 -491
- package/dist/kindredBravely-cqZ4OvXp.js +0 -491
- package/dist/kutFromTheKloth-3mOIryvt.cjs +0 -370
- package/dist/kutFromTheKloth-DtVNCMKa.js +0 -370
- package/dist/larryAndSerges-88Bvq-Us.cjs +0 -262
- package/dist/larryAndSerges-cvak6May.js +0 -262
- package/dist/leapsAndRebounds-Dmf8eUPq.js +0 -361
- package/dist/leapsAndRebounds-iWKc923H.cjs +0 -361
- package/dist/logger-Dln20ans.cjs +0 -26
- package/dist/logger-pdEEY8T2.js +0 -20
- package/dist/longevityrx-BTMI9vn-.js +0 -321
- package/dist/longevityrx-CobPyigd.cjs +0 -321
- package/dist/lookOptic-C4H_c0JZ.cjs +0 -283
- package/dist/mantraBrand-CySGqbn6.cjs +0 -751
- package/dist/medterra-BnZ5p27n.cjs +0 -584
- package/dist/medterra-DaICcPPp.js +0 -584
- package/dist/modells-CZ1L6dD_.js +0 -485
- package/dist/modells-DF0SndHr.cjs +0 -485
- package/dist/orgConfigResults--dAwtw3W.d.ts +0 -881
- package/dist/orgConfigResults-BL0XBA6x.d.cts +0 -881
- package/dist/pressedFloral-B3t2cYzs.cjs +0 -662
- package/dist/pressedFloral-Dsws2Kfb.js +0 -662
- package/dist/skinPerfection-CILQM2bR.cjs +0 -335
- package/dist/skinPerfection-DmQCntRf.js +0 -335
- package/dist/snapSupplements--X_v0KRM.js +0 -286
- package/dist/snapSupplements-Djuzl0Ed.cjs +0 -286
- package/dist/spanx-Bo81yXSF.cjs +0 -664
- package/dist/spanx-DauxB8KE.js +0 -662
- package/dist/spanxStaging-BucYQvR1.cjs +0 -849
- package/dist/spanxStaging-CfXUukdP.js +0 -846
- package/dist/supergoop-8qa_NV3F.cjs +0 -338
- package/dist/supergoop-DOaui-A6.js +0 -336
- package/dist/types-CD4LFta-.d.cts +0 -33
- package/dist/types-CGC6Oozp.cjs +0 -231
- package/dist/types-CnTCkyvK.js +0 -177
- package/dist/types-DBdI0j89.d.ts +0 -33
- package/dist/uniqueVintage-DAne8XcL.cjs +0 -1214
- package/dist/variant-CC1nrywd.d.ts +0 -13
- package/dist/variant-CQTuQQSq.d.cts +0 -13
- package/dist/venaCbd-B1HO_Pkr.cjs +0 -366
- package/dist/venaCbd-CnByO-5R.js +0 -366
- package/dist/westonJonBoucher-BRfHWMbs.cjs +0 -423
- package/dist/wineEnthusiast-DW8JVwV8.cjs +0 -941
- package/dist/wolfMattress-B6INZNRJ.cjs +0 -373
- package/dist/wolfMattress-D9P7ErH_.js +0 -373
- package/dist/wolfTactical-C5Pupi3J.js +0 -350
- package/dist/wolfTactical-TMthZM93.cjs +0 -350
- package/src/adapters/amplitude/amplitudeAdapter.ts +0 -477
- package/src/adapters/amplitude/index.ts +0 -2
- package/src/adapters/amplitude/stubAmplitudeAdapter.ts +0 -34
- package/src/adapters/spiffy/commerce/graphql.ts +0 -219
- package/src/application/config/generalStaticConfig.ts +0 -40
- package/src/application/config/index.ts +0 -1
- package/src/application/models/domMutationContinuation.ts +0 -7
- package/src/application/models/domObservationStrategy.ts +0 -9
- package/src/application/service/cachingService.ts +0 -84
- package/src/application/service/cdnService.ts +0 -20
- package/src/application/service/customerService/index.ts +0 -8
- package/src/application/service/customerService/providers/UnsupportedCustomerService.ts +0 -15
- package/src/application/service/domMutationObserver.ts +0 -320
- package/src/application/service/domMutations/GridInsertionService.ts +0 -123
- package/src/application/service/domMutations/dataLayer/dataLayerEventsListener.ts +0 -99
- package/src/application/service/domMutations/domInsertionService.ts +0 -90
- package/src/application/service/domMutations/domMutationListener.ts +0 -15
- package/src/application/service/domMutations/domMutationListenerState.ts +0 -52
- package/src/application/service/domMutations/floatingChat/embeddedChatsPlacementsListener.ts +0 -41
- package/src/application/service/domMutations/gladly/gladlyListener.ts +0 -61
- package/src/application/service/domMutations/spiffy/orgs/common/kustomerVisibilityListener.ts +0 -41
- package/src/application/service/domMutations/spiffy/orgs/common/orgsCommonDataLayerListener.ts +0 -119
- package/src/application/service/featureFlagService.ts +0 -130
- package/src/application/service/graphqlConfigService.ts +0 -59
- package/src/application/service/index.ts +0 -32
- package/src/application/service/kustomerIntegrationService.ts +0 -111
- package/src/application/service/localStorageService.ts +0 -77
- package/src/application/service/pageVariantService.ts +0 -866
- package/src/application/service/searchService.ts +0 -147
- package/src/application/service/sessionStorageService.ts +0 -27
- package/src/application/service/shopifyUrlService.ts +0 -63
- package/src/application/service/userIdentityService.ts +0 -114
- package/src/application/service/windowChatToggleService.ts +0 -80
- package/src/application/service/windowDataLayerService.ts +0 -181
- package/src/application/service/windowFrontendConfigService.ts +0 -129
- package/src/atoms/org/merchantCss.ts +0 -161
- package/src/atoms/org/org.ts +0 -251
- package/src/atoms/org/orgUIConfig.ts +0 -142
- package/src/enabled-features.ts +0 -83
- package/src/hooks/useDynamicVariants.ts +0 -226
- package/src/hooks/useFileUpload.ts +0 -63
- package/src/hooks/useHideElements.ts +0 -85
- package/src/interceptors/useFormEscalation.ts +0 -57
- /package/dist/{locators-DnKpajbY.js → atomStore-CZnUUsrr.js} +0 -0
- /package/dist/{locators-CugndTUM.cjs → atomStore-KSoFS3Jj.cjs} +0 -0
- /package/dist/{utilityTypes-C4h2wgAK.cjs → locators-0YYZu9n4.cjs} +0 -0
- /package/dist/{utilityTypes-BVikejDo.js → locators-fBXS_pxP.js} +0 -0
- /package/dist/{variantInfo-CzhR5W6h.js → utilityTypes-8sETsYPk.js} +0 -0
- /package/dist/{variantInfo-CNRTY0gH.cjs → utilityTypes-COShxVir.cjs} +0 -0
- /package/src/{application/service/customerService/types.ts → types/customerService.ts} +0 -0
- /package/src/{adapters/spiffy/commerce → types}/exceptions/sessionExceptions.ts +0 -0
- /package/src/{adapters/spiffy/commerce → types}/exceptions/unsupportedProductExceptions.ts +0 -0
|
@@ -1,413 +0,0 @@
|
|
|
1
|
-
import { CategoryExtractor, DOMInsertionService, DOMInsertionType, DOMInsertionTypeToInsertPosition, FeatureGates, GridInsertionService, GridInsertionType, IdExtractor, OrgAnalyticsConfig, OrgAnalyticsGoogleAnalyticsConfig, OrgPageConfig, PageVariantConfig, PageVariantTest } from "../../orgConfigResults-BL0XBA6x.cjs";
|
|
2
|
-
import { CustomerServiceIntegration, CustomerServiceIntegrationMode, CustomerServiceType } from "../../types-CD4LFta-.cjs";
|
|
3
|
-
import "../../test-types-CuOq25VT.cjs";
|
|
4
|
-
import { FeatureFlagService } from "../../featureFlagService-DaelrXEk.cjs";
|
|
5
|
-
import "../../index-BTK5uzs6.cjs";
|
|
6
|
-
import "../../index-ClJ0nMsR.cjs";
|
|
7
|
-
import "../../index-BzgkfbNO.cjs";
|
|
8
|
-
import { DomMutationObserverContinuation, DomObservationStrategy, Message } from "../../index-aNW5V9fh.cjs";
|
|
9
|
-
import { VariantInfo } from "../../index-D46Rd0io.cjs";
|
|
10
|
-
import { findCustomerServiceImpl } from "../../index-zZjcds15.cjs";
|
|
11
|
-
import { AtomStore } from "../../atomStore-ONYy0XuA.cjs";
|
|
12
|
-
import { SupportedEvent } from "../../variant-CQTuQQSq.cjs";
|
|
13
|
-
import { PageVisitCategory } from "@spiffy-ai/commerce-api-client";
|
|
14
|
-
|
|
15
|
-
//#region src/application/service/cachingService.d.ts
|
|
16
|
-
declare function cacheableAsync<T extends (...args: never[]) => Promise<unknown>>(func: T, expiry: number): (...args: Parameters<T>) => Promise<ReturnType<T>>;
|
|
17
|
-
declare function cacheable<T extends (...args: unknown[]) => unknown>(func: T, expiry: number): (...args: Parameters<T>) => ReturnType<T>;
|
|
18
|
-
//#endregion
|
|
19
|
-
//#region src/application/service/cdnService.d.ts
|
|
20
|
-
declare class CdnService {
|
|
21
|
-
static get CDN_URL(): string;
|
|
22
|
-
static getCndBasePath(): string;
|
|
23
|
-
static getAssetURL(assetName: string, orgShortName: string): string;
|
|
24
|
-
}
|
|
25
|
-
//#endregion
|
|
26
|
-
//#region src/application/service/domMutations/domMutationListener.d.ts
|
|
27
|
-
interface DomMutationListener {
|
|
28
|
-
getName(): string;
|
|
29
|
-
runOnceImmediately(): boolean;
|
|
30
|
-
disconnect?(): void;
|
|
31
|
-
triesMax(): number;
|
|
32
|
-
onDomChange(): DomMutationObserverContinuation;
|
|
33
|
-
}
|
|
34
|
-
//#endregion
|
|
35
|
-
//#region src/application/service/domMutations/domMutationListenerState.d.ts
|
|
36
|
-
declare class DomMutationListenerState {
|
|
37
|
-
private readonly listener;
|
|
38
|
-
private currentState;
|
|
39
|
-
private attached;
|
|
40
|
-
private currentTryCount;
|
|
41
|
-
constructor(listener: DomMutationListener);
|
|
42
|
-
getListener(): DomMutationListener;
|
|
43
|
-
setCurrentState(state: DomMutationObserverContinuation): void;
|
|
44
|
-
getCurrentState(): DomMutationObserverContinuation;
|
|
45
|
-
getIsAttached(): boolean;
|
|
46
|
-
setIsAttached(attached: boolean): void;
|
|
47
|
-
getCurrentTryCount(): number;
|
|
48
|
-
incrementCurrentTryCount(): void;
|
|
49
|
-
}
|
|
50
|
-
//#endregion
|
|
51
|
-
//#region src/application/service/domMutationObserver.d.ts
|
|
52
|
-
/**
|
|
53
|
-
* - When used before page load/render, an unoptimized MutationObserver callback can significantly delay page load time,
|
|
54
|
-
* especially on complex pages.
|
|
55
|
-
* - The callback runs as a microtask and can block further DOM processing, often firing hundreds or even thousands of times
|
|
56
|
-
* per second on a complex page. Many libraries don't optimize for this, resulting in clean-looking but potentially slow code.
|
|
57
|
-
*
|
|
58
|
-
* Best Practices for MutationObserver Optimization:
|
|
59
|
-
* - **Profiling:** Use DevTools Profiler to ensure the observer callback uses less than 0.1% of total CPU during page load.
|
|
60
|
-
* - **Avoid Forced Layouts:** Refrain from triggering synchronous layouts by accessing properties like `offsetTop`.
|
|
61
|
-
* - **Prefer Native DOM:** Use native DOM methods instead of complex frameworks like jQuery to reduce overhead.
|
|
62
|
-
* - **Use `attributeFilter`:** When observing attributes, limit the observations to specific attributes, e.g., `attributeFilter: ['attr1', 'attr2']`.
|
|
63
|
-
* - **Non-recursive Observations:** Observe direct parent elements with `subtree: false` whenever possible. For instance, initially observe `document` recursively, disconnect on success, and reattach a non-recursive observer to the parent element.
|
|
64
|
-
* - **Direct Element Access:** When waiting for a single element with an `id`, use `getElementById` instead of looping over the `mutations` array.
|
|
65
|
-
* - **HTMLCollection Checks:** For rare elements (e.g., `<iframe>` or `<object>`), use live HTMLCollections from `getElementsByTagName` or `getElementsByClassName` rather than enumerating mutations, especially with large numbers of mutations.
|
|
66
|
-
* - **Avoid `querySelectorAll`:** Use `querySelector` first for an initial check; if successful, proceed with `querySelectorAll` only when absolutely necessary. This combo is often faster on average.
|
|
67
|
-
* - **Legacy Browser Compatibility:**
|
|
68
|
-
* - Avoid `Array` methods like `forEach`, `filter`, etc., and ES2015 loops (`for...of`) in pre-2018 Chrome for MutationObserver callbacks,
|
|
69
|
-
* as these can be up to 100x slower than traditional `for` loops.
|
|
70
|
-
* - Alternatively, use a fast functional library like lodash on older browsers. Chrome 2018+ inlines array methods efficiently.
|
|
71
|
-
* - **Scheduled Re-checking:** For visual updates, if you can determine elements are offscreen, disconnect the observer and use `setTimeout(fn, 0)` to delay processing until initial parsing/layout is complete. After that, use `requestAnimationFrame` for chunked processing.
|
|
72
|
-
* - **Debounce Long Processing:** If the callback processing is lengthy, causing unresponsiveness or jank, use debouncing by accumulating mutations in an array and scheduling processing with `setTimeout`, `requestIdleCallback`, or `requestAnimationFrame`.
|
|
73
|
-
*
|
|
74
|
-
* Example of Debounce Setup:
|
|
75
|
-
* ```typescript
|
|
76
|
-
* const queue: MutationRecord[] = [];
|
|
77
|
-
* const mo = new MutationObserver(mutations => {
|
|
78
|
-
* if (!queue.length) requestAnimationFrame(process);
|
|
79
|
-
* queue.push(...mutations);
|
|
80
|
-
* });
|
|
81
|
-
* function process() {
|
|
82
|
-
* for (const mutations of queue) {
|
|
83
|
-
* // Processing logic
|
|
84
|
-
* }
|
|
85
|
-
* queue.length = 0;
|
|
86
|
-
* }
|
|
87
|
-
* ```
|
|
88
|
-
* Note: `requestAnimationFrame` only triggers when the page is visible.
|
|
89
|
-
*/
|
|
90
|
-
declare class DomMutationObserver {
|
|
91
|
-
private static observerVersion;
|
|
92
|
-
private static individualObservers;
|
|
93
|
-
private static deferredExecutionDelay;
|
|
94
|
-
private static startingPollingInterval;
|
|
95
|
-
private static endingPollingInterval;
|
|
96
|
-
private static useDebounce;
|
|
97
|
-
private static listeners;
|
|
98
|
-
private static mutationsQueuePerListener;
|
|
99
|
-
private static mutationsQueue;
|
|
100
|
-
private static observationStrategy;
|
|
101
|
-
static addDomMutationListener(listener: DomMutationListener): void;
|
|
102
|
-
static invokeListener(l: DomMutationListenerState): void;
|
|
103
|
-
static observeOnDomReady(strategy: DomObservationStrategy): void;
|
|
104
|
-
static observe(strategyRequested: DomObservationStrategy): void;
|
|
105
|
-
private static runOnceImmediatelyIfRequired;
|
|
106
|
-
private static observeIndividuallyWithDebounce;
|
|
107
|
-
private static observeIndividually;
|
|
108
|
-
private static observeCollectivelyWithDebounce;
|
|
109
|
-
private static observeCollectively;
|
|
110
|
-
private static poll;
|
|
111
|
-
private static observeByPolling;
|
|
112
|
-
static disconnect(listener: DomMutationListener): void;
|
|
113
|
-
static setStartingPollingInterval(interval: number): void;
|
|
114
|
-
static setEndingPollingInterval(interval: number): void;
|
|
115
|
-
}
|
|
116
|
-
//#endregion
|
|
117
|
-
//#region src/application/service/graphqlConfigService.d.ts
|
|
118
|
-
/**
|
|
119
|
-
* Service for handling GraphQL configuration fetching and management
|
|
120
|
-
* This service is separated to avoid circular dependencies between atoms
|
|
121
|
-
*/
|
|
122
|
-
declare class GraphQLConfigService {
|
|
123
|
-
/**
|
|
124
|
-
* Fetches GraphQL configuration and updates the relevant atoms
|
|
125
|
-
* @param atomStore - The atom store instance to use for setting values
|
|
126
|
-
*/
|
|
127
|
-
static fetchAndSetGraphQLConfig(atomStore: AtomStore): Promise<void>;
|
|
128
|
-
}
|
|
129
|
-
//#endregion
|
|
130
|
-
//#region src/application/service/kustomerIntegrationService.d.ts
|
|
131
|
-
declare class KustomerIntegrationService {
|
|
132
|
-
static KUSTOMER_LOCAL_STORAGE_KEY: string;
|
|
133
|
-
static KUSTOMER_IFRAME_ID: string;
|
|
134
|
-
initialized: boolean;
|
|
135
|
-
constructor();
|
|
136
|
-
initOnce(): void;
|
|
137
|
-
disconnect(): void;
|
|
138
|
-
/**
|
|
139
|
-
* Updates the visibility of the Kustomer chat icon.
|
|
140
|
-
*/
|
|
141
|
-
updateVisibility(): boolean;
|
|
142
|
-
/**
|
|
143
|
-
* Queries the document body for the Kustomer SDK iframe. This function is to be run in a
|
|
144
|
-
* MutationObserver.
|
|
145
|
-
* @returns the iframe element if it exists, else undefine.
|
|
146
|
-
*/
|
|
147
|
-
findKustomerButton(): HTMLIFrameElement | undefined;
|
|
148
|
-
/**
|
|
149
|
-
* Updates the Kustomer chat icon visibility when the kustomerState localStorage item changes.
|
|
150
|
-
* @param event The event that triggered the event listener.
|
|
151
|
-
*/
|
|
152
|
-
onCustomerStateChange(event: StorageEvent): void;
|
|
153
|
-
}
|
|
154
|
-
//#endregion
|
|
155
|
-
//#region src/application/service/localStorageService.d.ts
|
|
156
|
-
declare enum LocalStorageKeys {
|
|
157
|
-
ChatId = "v1-spiffy-chat-session-id",
|
|
158
|
-
SpiffyOnOverride = "spiffy_on",
|
|
159
|
-
EnviveOnOverride = "envive_on",
|
|
160
|
-
}
|
|
161
|
-
declare class LocalStorageService {
|
|
162
|
-
static setItem(key: string, value: string): void;
|
|
163
|
-
static getItem(key: string): string | null;
|
|
164
|
-
static setSpiffyOnFeatureFlag(value: boolean | null): void;
|
|
165
|
-
static getSpiffyOnFeatureFlag(): string | null;
|
|
166
|
-
static getLocalStorage(): Storage;
|
|
167
|
-
private static listenersCache;
|
|
168
|
-
private static listenerForKey;
|
|
169
|
-
/**
|
|
170
|
-
* Attach a listener to the window's storage event. Safe to call multiple times.
|
|
171
|
-
* @param listener
|
|
172
|
-
*/
|
|
173
|
-
static attachListener(listener: LocalStorageEventListener): void;
|
|
174
|
-
static detachListener(listener: LocalStorageEventListener): void;
|
|
175
|
-
}
|
|
176
|
-
//#endregion
|
|
177
|
-
//#region src/application/service/pageVariantService.d.ts
|
|
178
|
-
/**
|
|
179
|
-
* This class is used to resolve the PageVariants for the Spiffy App.
|
|
180
|
-
* It includes a number of static utility functions for performing pageTests and
|
|
181
|
-
* extracting data necessary to build the PageVariants.
|
|
182
|
-
*
|
|
183
|
-
* Under most circumstances only `getVariantInfoWithPageConfig` will be called externally
|
|
184
|
-
* The other functions should be used internally by that function.
|
|
185
|
-
*/
|
|
186
|
-
declare class PageVariantService {
|
|
187
|
-
static readonly pageTest: (test: PageVariantTest, pageVariantConfig: PageVariantConfig, atomValues?: {
|
|
188
|
-
responseStreaming: boolean;
|
|
189
|
-
messages: Message[][];
|
|
190
|
-
lastAssistantMessage?: Message[] | null | undefined;
|
|
191
|
-
}) => Promise<boolean>;
|
|
192
|
-
private static readonly getCachedUrlResolver;
|
|
193
|
-
/**
|
|
194
|
-
* Checks if the current page matches the expected catalog category.
|
|
195
|
-
*
|
|
196
|
-
* @param category - The expected catalog category as defined by data in Elastic Search.
|
|
197
|
-
* @param pageVariantConfig - The variant config for the current page.
|
|
198
|
-
*
|
|
199
|
-
* @returns True if the current page matches the expected catalog category.
|
|
200
|
-
*/
|
|
201
|
-
private static readonly checkCatalogCategory;
|
|
202
|
-
private static readonly checkInTopCategory;
|
|
203
|
-
private static readonly checkHasReviews;
|
|
204
|
-
private static readonly checkInCollection;
|
|
205
|
-
private static readonly checkHasMerchantTag;
|
|
206
|
-
private static readonly userHasInteracted;
|
|
207
|
-
private static readonly userHasNotInteracted;
|
|
208
|
-
private static readonly isLoading;
|
|
209
|
-
private static readonly isProductComparison;
|
|
210
|
-
private static readonly checkPlpIds;
|
|
211
|
-
private static readonly checkQueryParam;
|
|
212
|
-
private static readonly checkProductId;
|
|
213
|
-
static checkFeatureGate(featureGate: FeatureGates): boolean;
|
|
214
|
-
static getCategory(extractor: CategoryExtractor): PageVisitCategory | null;
|
|
215
|
-
static getId(extractor?: IdExtractor): Promise<string | null>;
|
|
216
|
-
private static readonly getIdFromUrlResolver;
|
|
217
|
-
/**
|
|
218
|
-
* Gets the variant info for the current page based on the merchant's page config.
|
|
219
|
-
*
|
|
220
|
-
* @param orgPageConfig - The merchant's page config.
|
|
221
|
-
*
|
|
222
|
-
* @returns The variant info for the current page, or undefined if the page tests do not
|
|
223
|
-
* return any matches.
|
|
224
|
-
*/
|
|
225
|
-
static readonly getVariantInfoWithPageConfig: (orgPageConfig: OrgPageConfig) => Promise<[VariantInfo, PageVariantConfig] | undefined>;
|
|
226
|
-
/**
|
|
227
|
-
* Checks if the current page is supported. A page is supported if it has been indexed in
|
|
228
|
-
* Elastic Search and its category has been whitelisted by the backend.
|
|
229
|
-
*
|
|
230
|
-
* @param pageVariantConfig - The variant config for the current page which is used to get
|
|
231
|
-
* the variant info.
|
|
232
|
-
*
|
|
233
|
-
* @returns The supported event response from the backend, or undefined if the page is not supported.
|
|
234
|
-
*/
|
|
235
|
-
static readonly checkSupportedEvent: (pageVariantConfig: PageVariantConfig) => Promise<SupportedEvent | undefined>;
|
|
236
|
-
/**
|
|
237
|
-
* Parses the page variant config into a variant info object.
|
|
238
|
-
*
|
|
239
|
-
* @param pageVariantConfig - The variant config for the current page.
|
|
240
|
-
* @param url - The current URL of the page. This is used to extract the pdp/plp id.
|
|
241
|
-
*
|
|
242
|
-
* @returns The variant info for the current page, or undefined if the page variant config is invalid or not supported.
|
|
243
|
-
*/
|
|
244
|
-
private static readonly parsePageVariantConfig;
|
|
245
|
-
}
|
|
246
|
-
//#endregion
|
|
247
|
-
//#region src/application/service/sessionStorageService.d.ts
|
|
248
|
-
declare class SessionStorageService {
|
|
249
|
-
static setItem(key: string, value: string): void;
|
|
250
|
-
static getItem(key: string): string | null;
|
|
251
|
-
static getSessionStorage(): Storage;
|
|
252
|
-
}
|
|
253
|
-
//#endregion
|
|
254
|
-
//#region src/application/service/shopifyUrlService.d.ts
|
|
255
|
-
declare class ShopifyUrlService {
|
|
256
|
-
static getTrimmedPathName(): string | null;
|
|
257
|
-
/**
|
|
258
|
-
* Parses the URL to determine the PLP or PDP ID.
|
|
259
|
-
*
|
|
260
|
-
* @param extractor the type of extractor to parse segments of the page URL
|
|
261
|
-
*
|
|
262
|
-
* @returns the PLP or PDP ID if found, otherwise null
|
|
263
|
-
*/
|
|
264
|
-
static getPlpOrPdpId(extractor: IdExtractor): string | null;
|
|
265
|
-
static isOnPdpPage(): boolean;
|
|
266
|
-
static isOnPlpPage(): boolean;
|
|
267
|
-
}
|
|
268
|
-
//#endregion
|
|
269
|
-
//#region src/application/service/userIdentityService.d.ts
|
|
270
|
-
declare class UserIdentityService {
|
|
271
|
-
static USER_ID_OVERRIDE_KEY: string;
|
|
272
|
-
static USER_ID_DEFAULT_KEY: string;
|
|
273
|
-
static identifyUser(): Promise<void>;
|
|
274
|
-
static getUserIdOrDefault(): string;
|
|
275
|
-
static getUserIdOverrideFromLocalStorage(): string | undefined;
|
|
276
|
-
static getUserIdDefaultFromLocalStorage(): string | undefined;
|
|
277
|
-
static setUserIdDefaultInLocalStorage(userId: string): string;
|
|
278
|
-
static setUserIdOverrideInLocalStorage(userId: string): string;
|
|
279
|
-
static clearUserIdOverrideInLocalStorage(): void;
|
|
280
|
-
}
|
|
281
|
-
//#endregion
|
|
282
|
-
//#region src/application/service/windowChatToggleService.d.ts
|
|
283
|
-
declare const WindowChatToggleBinder: () => null;
|
|
284
|
-
//#endregion
|
|
285
|
-
//#region src/application/service/windowDataLayerService.d.ts
|
|
286
|
-
declare global {
|
|
287
|
-
interface Window {
|
|
288
|
-
dataLayer: any;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
declare class WindowDataLayerService {
|
|
292
|
-
private readonly gaConfig;
|
|
293
|
-
private readonly dataLayer;
|
|
294
|
-
private readonly originalDataLayerPush;
|
|
295
|
-
private static instance;
|
|
296
|
-
private readonly merchantGoogleMeasurementId;
|
|
297
|
-
private constructor();
|
|
298
|
-
/**
|
|
299
|
-
* Pushes data to the dataLayer
|
|
300
|
-
* @param data
|
|
301
|
-
* data has the shape: { event: 'event_name', ... }
|
|
302
|
-
* Example:
|
|
303
|
-
* {
|
|
304
|
-
* "event": "add_to_cart",
|
|
305
|
-
* "currency": "USD",
|
|
306
|
-
* "value": 30.03,
|
|
307
|
-
* "items": [
|
|
308
|
-
* {
|
|
309
|
-
* "item_id": "SKU_12345",
|
|
310
|
-
* "item_name": "Stan and Friends Tee",
|
|
311
|
-
* "affiliation": "Google Merchandise Store",
|
|
312
|
-
* "coupon": "SUMMER_FUN",
|
|
313
|
-
* "discount": 2.22,
|
|
314
|
-
* "index": 0,
|
|
315
|
-
* "item_brand": "Google",
|
|
316
|
-
* "item_category": "Apparel",
|
|
317
|
-
* "item_category2": "Adult",
|
|
318
|
-
* "item_category3": "Shirts",
|
|
319
|
-
* "item_category4": "Crew",
|
|
320
|
-
* "item_category5": "Short sleeve",
|
|
321
|
-
* "item_list_id": "related_products",
|
|
322
|
-
* "item_list_name": "Related Products",
|
|
323
|
-
* "item_variant": "green",
|
|
324
|
-
* "location_id": "ChIJIQBpAG2ahYAR_6128GcTUEo",
|
|
325
|
-
* "price": 10.01,
|
|
326
|
-
* "quantity": 3
|
|
327
|
-
* }
|
|
328
|
-
* ]
|
|
329
|
-
* }
|
|
330
|
-
*/
|
|
331
|
-
push(data: any): void;
|
|
332
|
-
static isDataLayerAvailable(): boolean;
|
|
333
|
-
static tryFlattenArguments(args: any): any;
|
|
334
|
-
wrapWithProxyMethod(methodName: string, callback: Function): void;
|
|
335
|
-
static getSingletonInstanceOf(gaConfig: OrgAnalyticsGoogleAnalyticsConfig): WindowDataLayerService;
|
|
336
|
-
sendToGoogleAnalyticsCircularEventsSafe(eventName: string, eventProps: Record<string, unknown> | undefined): void;
|
|
337
|
-
static getGoogleAnalyticsClientId: () => string | undefined;
|
|
338
|
-
}
|
|
339
|
-
//#endregion
|
|
340
|
-
//#region src/application/service/windowFrontendConfigService.d.ts
|
|
341
|
-
declare const initWindowFrontendConfigOverridesApplyFunction: () => void;
|
|
342
|
-
//#endregion
|
|
343
|
-
//#region src/application/service/customerService/providers/UnsupportedCustomerService.d.ts
|
|
344
|
-
declare const UnsupportedCustomerService: CustomerServiceIntegration;
|
|
345
|
-
//#endregion
|
|
346
|
-
//#region src/application/service/domMutations/dataLayer/dataLayerEventsListener.d.ts
|
|
347
|
-
declare class DataLayerEventsListener implements DomMutationListener {
|
|
348
|
-
private readonly onDataLayerPush;
|
|
349
|
-
private readonly eventsToIntercept;
|
|
350
|
-
private readonly windowDataLayerService;
|
|
351
|
-
constructor(onDataLayerPush: (event: object) => void, eventsToIntercept: string[], gaConfig: OrgAnalyticsGoogleAnalyticsConfig);
|
|
352
|
-
runOnceImmediately(): boolean;
|
|
353
|
-
triesMax(): number;
|
|
354
|
-
onDomChange(): DomMutationObserverContinuation;
|
|
355
|
-
getName(): string;
|
|
356
|
-
}
|
|
357
|
-
//#endregion
|
|
358
|
-
//#region src/application/service/domMutations/floatingChat/embeddedChatsPlacementsListener.d.ts
|
|
359
|
-
declare class EmbeddedChatsPlacementsListener implements DomMutationListener {
|
|
360
|
-
private readonly findPlacementNodes;
|
|
361
|
-
constructor(findPlacementNodes: () => DomMutationObserverContinuation);
|
|
362
|
-
runOnceImmediately(): boolean;
|
|
363
|
-
onDomChange(): DomMutationObserverContinuation;
|
|
364
|
-
getName(): string;
|
|
365
|
-
triesMax(): number;
|
|
366
|
-
}
|
|
367
|
-
//#endregion
|
|
368
|
-
//#region src/application/service/domMutations/gladly/gladlyListener.d.ts
|
|
369
|
-
declare global {
|
|
370
|
-
interface Window {
|
|
371
|
-
Gladly: {
|
|
372
|
-
show: () => void;
|
|
373
|
-
getUser: () => {
|
|
374
|
-
identity: string;
|
|
375
|
-
} | undefined;
|
|
376
|
-
getAvailability: () => string;
|
|
377
|
-
on: (eventName: string, callback: () => void) => void;
|
|
378
|
-
};
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
declare class GladlyListener implements DomMutationListener {
|
|
382
|
-
private readonly onGladlyAvailable;
|
|
383
|
-
private static readonly GLADLY_RETRIES_MAX;
|
|
384
|
-
private static readonly GLADLY_CONVERSATION_STARTED_EVENT_NAME;
|
|
385
|
-
constructor(onGladlyAvailable: () => void);
|
|
386
|
-
runOnceImmediately(): boolean;
|
|
387
|
-
triesMax(): number;
|
|
388
|
-
onDomChange(): DomMutationObserverContinuation;
|
|
389
|
-
getName(): string;
|
|
390
|
-
}
|
|
391
|
-
//#endregion
|
|
392
|
-
//#region src/application/service/domMutations/spiffy/orgs/common/kustomerVisibilityListener.d.ts
|
|
393
|
-
declare class KustomerVisibilityListener implements DomMutationListener {
|
|
394
|
-
kustomerIntegrationService: KustomerIntegrationService;
|
|
395
|
-
constructor();
|
|
396
|
-
runOnceImmediately(): boolean;
|
|
397
|
-
triesMax(): number;
|
|
398
|
-
disconnect(): void;
|
|
399
|
-
onDomChange(): DomMutationObserverContinuation;
|
|
400
|
-
getName(): string;
|
|
401
|
-
}
|
|
402
|
-
//#endregion
|
|
403
|
-
//#region src/application/service/domMutations/spiffy/orgs/common/orgsCommonDataLayerListener.d.ts
|
|
404
|
-
declare class OrgsCommonDataLayerListener {
|
|
405
|
-
private static dataLayerCache;
|
|
406
|
-
static resetDataLayerCache(): void;
|
|
407
|
-
static getSingletonDataLayerListenerCallbackCombo(orgShortName: string, orgAnalyticsConfig: OrgAnalyticsConfig): {
|
|
408
|
-
dataLayerListener: DataLayerEventsListener;
|
|
409
|
-
} | undefined;
|
|
410
|
-
}
|
|
411
|
-
//#endregion
|
|
412
|
-
export { CdnService, CustomerServiceIntegration, CustomerServiceIntegrationMode, CustomerServiceType, DOMInsertionService, DOMInsertionType, DOMInsertionTypeToInsertPosition, DataLayerEventsListener, type DomMutationListener, DomMutationListenerState, DomMutationObserver, EmbeddedChatsPlacementsListener, FeatureFlagService, GladlyListener, GraphQLConfigService, GridInsertionService, GridInsertionType, KustomerIntegrationService, KustomerVisibilityListener, LocalStorageKeys, LocalStorageService, OrgsCommonDataLayerListener, PageVariantService, SessionStorageService, ShopifyUrlService, UnsupportedCustomerService, UserIdentityService, WindowChatToggleBinder, WindowDataLayerService, cacheable, cacheableAsync, findCustomerServiceImpl, initWindowFrontendConfigOverridesApplyFunction };
|
|
413
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvY2FjaGluZ1NlcnZpY2UuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2NkblNlcnZpY2UuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2RvbU11dGF0aW9ucy9kb21NdXRhdGlvbkxpc3RlbmVyLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9kb21NdXRhdGlvbnMvZG9tTXV0YXRpb25MaXN0ZW5lclN0YXRlLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9kb21NdXRhdGlvbk9ic2VydmVyLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9ncmFwaHFsQ29uZmlnU2VydmljZS5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2Uva3VzdG9tZXJJbnRlZ3JhdGlvblNlcnZpY2UuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2xvY2FsU3RvcmFnZVNlcnZpY2UuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL3BhZ2VWYXJpYW50U2VydmljZS5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2Uvc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9zaG9waWZ5VXJsU2VydmljZS5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvdXNlcklkZW50aXR5U2VydmljZS5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2Uvd2luZG93Q2hhdFRvZ2dsZVNlcnZpY2UuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL3dpbmRvd0RhdGFMYXllclNlcnZpY2UuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL3dpbmRvd0Zyb250ZW5kQ29uZmlnU2VydmljZS5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvY3VzdG9tZXJTZXJ2aWNlL3Byb3ZpZGVycy9VbnN1cHBvcnRlZEN1c3RvbWVyU2VydmljZS5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvZG9tTXV0YXRpb25zL2RhdGFMYXllci9kYXRhTGF5ZXJFdmVudHNMaXN0ZW5lci5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvZG9tTXV0YXRpb25zL2Zsb2F0aW5nQ2hhdC9lbWJlZGRlZENoYXRzUGxhY2VtZW50c0xpc3RlbmVyLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9kb21NdXRhdGlvbnMvZ2xhZGx5L2dsYWRseUxpc3RlbmVyLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9kb21NdXRhdGlvbnMvc3BpZmZ5L29yZ3MvY29tbW9uL2t1c3RvbWVyVmlzaWJpbGl0eUxpc3RlbmVyLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9kb21NdXRhdGlvbnMvc3BpZmZ5L29yZ3MvY29tbW9uL29yZ3NDb21tb25EYXRhTGF5ZXJMaXN0ZW5lci5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImRlY2xhcmUgZnVuY3Rpb24gY2FjaGVhYmxlQXN5bmM8VCBleHRlbmRzICguLi5hcmdzOiBuZXZlcltdKSA9PiBQcm9taXNlPHVua25vd24+PihmdW5jOiBULCBleHBpcnk6IG51bWJlcik6ICguLi5hcmdzOiBQYXJhbWV0ZXJzPFQ+KSA9PiBQcm9taXNlPFJldHVyblR5cGU8VD4+O1xuZGVjbGFyZSBmdW5jdGlvbiBjYWNoZWFibGU8VCBleHRlbmRzICguLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd24+KGZ1bmM6IFQsIGV4cGlyeTogbnVtYmVyKTogKC4uLmFyZ3M6IFBhcmFtZXRlcnM8VD4pID0+IFJldHVyblR5cGU8VD47XG5leHBvcnQgeyBjYWNoZWFibGUsIGNhY2hlYWJsZUFzeW5jIH07XG4iLCJkZWNsYXJlIGNsYXNzIENkblNlcnZpY2Uge1xuICAgIHN0YXRpYyBnZXQgQ0ROX1VSTCgpOiBzdHJpbmc7XG4gICAgc3RhdGljIGdldENuZEJhc2VQYXRoKCk6IHN0cmluZztcbiAgICBzdGF0aWMgZ2V0QXNzZXRVUkwoYXNzZXROYW1lOiBzdHJpbmcsIG9yZ1Nob3J0TmFtZTogc3RyaW5nKTogc3RyaW5nO1xufVxuZXhwb3J0IHsgQ2RuU2VydmljZSB9O1xuIiwiaW1wb3J0IHsgRG9tTXV0YXRpb25PYnNlcnZlckNvbnRpbnVhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9kb21NdXRhdGlvbkNvbnRpbnVhdGlvbic7XG5pbnRlcmZhY2UgRG9tTXV0YXRpb25MaXN0ZW5lciB7XG4gICAgZ2V0TmFtZSgpOiBzdHJpbmc7XG4gICAgcnVuT25jZUltbWVkaWF0ZWx5KCk6IGJvb2xlYW47XG4gICAgZGlzY29ubmVjdD8oKTogdm9pZDtcbiAgICB0cmllc01heCgpOiBudW1iZXI7XG4gICAgb25Eb21DaGFuZ2UoKTogRG9tTXV0YXRpb25PYnNlcnZlckNvbnRpbnVhdGlvbjtcbn1cbmV4cG9ydCB0eXBlIHsgRG9tTXV0YXRpb25MaXN0ZW5lciB9O1xuIiwiaW1wb3J0IHsgRG9tTXV0YXRpb25MaXN0ZW5lciB9IGZyb20gJy4vZG9tTXV0YXRpb25MaXN0ZW5lcic7XG5pbXBvcnQgeyBEb21NdXRhdGlvbk9ic2VydmVyQ29udGludWF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RvbU11dGF0aW9uQ29udGludWF0aW9uJztcbmRlY2xhcmUgY2xhc3MgRG9tTXV0YXRpb25MaXN0ZW5lclN0YXRlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpc3RlbmVyO1xuICAgIHByaXZhdGUgY3VycmVudFN0YXRlO1xuICAgIHByaXZhdGUgYXR0YWNoZWQ7XG4gICAgcHJpdmF0ZSBjdXJyZW50VHJ5Q291bnQ7XG4gICAgY29uc3RydWN0b3IobGlzdGVuZXI6IERvbU11dGF0aW9uTGlzdGVuZXIpO1xuICAgIGdldExpc3RlbmVyKCk6IERvbU11dGF0aW9uTGlzdGVuZXI7XG4gICAgc2V0Q3VycmVudFN0YXRlKHN0YXRlOiBEb21NdXRhdGlvbk9ic2VydmVyQ29udGludWF0aW9uKTogdm9pZDtcbiAgICBnZXRDdXJyZW50U3RhdGUoKTogRG9tTXV0YXRpb25PYnNlcnZlckNvbnRpbnVhdGlvbjtcbiAgICBnZXRJc0F0dGFjaGVkKCk6IGJvb2xlYW47XG4gICAgc2V0SXNBdHRhY2hlZChhdHRhY2hlZDogYm9vbGVhbik6IHZvaWQ7XG4gICAgZ2V0Q3VycmVudFRyeUNvdW50KCk6IG51bWJlcjtcbiAgICBpbmNyZW1lbnRDdXJyZW50VHJ5Q291bnQoKTogdm9pZDtcbn1cbmV4cG9ydCB7IERvbU11dGF0aW9uTGlzdGVuZXJTdGF0ZSB9O1xuIiwiaW1wb3J0IHsgRG9tTXV0YXRpb25MaXN0ZW5lclN0YXRlIH0gZnJvbSAnLi9kb21NdXRhdGlvbnMvZG9tTXV0YXRpb25MaXN0ZW5lclN0YXRlJztcbmltcG9ydCB7IERvbU11dGF0aW9uTGlzdGVuZXIgfSBmcm9tICcuL2RvbU11dGF0aW9ucy9kb21NdXRhdGlvbkxpc3RlbmVyJztcbmltcG9ydCB7IERvbU9ic2VydmF0aW9uU3RyYXRlZ3kgfSBmcm9tICcuLi9tb2RlbHMvZG9tT2JzZXJ2YXRpb25TdHJhdGVneSc7XG4vKipcbiAqIC0gV2hlbiB1c2VkIGJlZm9yZSBwYWdlIGxvYWQvcmVuZGVyLCBhbiB1bm9wdGltaXplZCBNdXRhdGlvbk9ic2VydmVyIGNhbGxiYWNrIGNhbiBzaWduaWZpY2FudGx5IGRlbGF5IHBhZ2UgbG9hZCB0aW1lLFxuICogICBlc3BlY2lhbGx5IG9uIGNvbXBsZXggcGFnZXMuXG4gKiAtIFRoZSBjYWxsYmFjayBydW5zIGFzIGEgbWljcm90YXNrIGFuZCBjYW4gYmxvY2sgZnVydGhlciBET00gcHJvY2Vzc2luZywgb2Z0ZW4gZmlyaW5nIGh1bmRyZWRzIG9yIGV2ZW4gdGhvdXNhbmRzIG9mIHRpbWVzXG4gKiAgIHBlciBzZWNvbmQgb24gYSBjb21wbGV4IHBhZ2UuIE1hbnkgbGlicmFyaWVzIGRvbid0IG9wdGltaXplIGZvciB0aGlzLCByZXN1bHRpbmcgaW4gY2xlYW4tbG9va2luZyBidXQgcG90ZW50aWFsbHkgc2xvdyBjb2RlLlxuICpcbiAqIEJlc3QgUHJhY3RpY2VzIGZvciBNdXRhdGlvbk9ic2VydmVyIE9wdGltaXphdGlvbjpcbiAqIC0gKipQcm9maWxpbmc6KiogVXNlIERldlRvb2xzIFByb2ZpbGVyIHRvIGVuc3VyZSB0aGUgb2JzZXJ2ZXIgY2FsbGJhY2sgdXNlcyBsZXNzIHRoYW4gMC4xJSBvZiB0b3RhbCBDUFUgZHVyaW5nIHBhZ2UgbG9hZC5cbiAqIC0gKipBdm9pZCBGb3JjZWQgTGF5b3V0czoqKiBSZWZyYWluIGZyb20gdHJpZ2dlcmluZyBzeW5jaHJvbm91cyBsYXlvdXRzIGJ5IGFjY2Vzc2luZyBwcm9wZXJ0aWVzIGxpa2UgYG9mZnNldFRvcGAuXG4gKiAtICoqUHJlZmVyIE5hdGl2ZSBET006KiogVXNlIG5hdGl2ZSBET00gbWV0aG9kcyBpbnN0ZWFkIG9mIGNvbXBsZXggZnJhbWV3b3JrcyBsaWtlIGpRdWVyeSB0byByZWR1Y2Ugb3ZlcmhlYWQuXG4gKiAtICoqVXNlIGBhdHRyaWJ1dGVGaWx0ZXJgOioqIFdoZW4gb2JzZXJ2aW5nIGF0dHJpYnV0ZXMsIGxpbWl0IHRoZSBvYnNlcnZhdGlvbnMgdG8gc3BlY2lmaWMgYXR0cmlidXRlcywgZS5nLiwgYGF0dHJpYnV0ZUZpbHRlcjogWydhdHRyMScsICdhdHRyMiddYC5cbiAqIC0gKipOb24tcmVjdXJzaXZlIE9ic2VydmF0aW9uczoqKiBPYnNlcnZlIGRpcmVjdCBwYXJlbnQgZWxlbWVudHMgd2l0aCBgc3VidHJlZTogZmFsc2VgIHdoZW5ldmVyIHBvc3NpYmxlLiBGb3IgaW5zdGFuY2UsIGluaXRpYWxseSBvYnNlcnZlIGBkb2N1bWVudGAgcmVjdXJzaXZlbHksIGRpc2Nvbm5lY3Qgb24gc3VjY2VzcywgYW5kIHJlYXR0YWNoIGEgbm9uLXJlY3Vyc2l2ZSBvYnNlcnZlciB0byB0aGUgcGFyZW50IGVsZW1lbnQuXG4gKiAtICoqRGlyZWN0IEVsZW1lbnQgQWNjZXNzOioqIFdoZW4gd2FpdGluZyBmb3IgYSBzaW5nbGUgZWxlbWVudCB3aXRoIGFuIGBpZGAsIHVzZSBgZ2V0RWxlbWVudEJ5SWRgIGluc3RlYWQgb2YgbG9vcGluZyBvdmVyIHRoZSBgbXV0YXRpb25zYCBhcnJheS5cbiAqIC0gKipIVE1MQ29sbGVjdGlvbiBDaGVja3M6KiogRm9yIHJhcmUgZWxlbWVudHMgKGUuZy4sIGA8aWZyYW1lPmAgb3IgYDxvYmplY3Q+YCksIHVzZSBsaXZlIEhUTUxDb2xsZWN0aW9ucyBmcm9tIGBnZXRFbGVtZW50c0J5VGFnTmFtZWAgb3IgYGdldEVsZW1lbnRzQnlDbGFzc05hbWVgIHJhdGhlciB0aGFuIGVudW1lcmF0aW5nIG11dGF0aW9ucywgZXNwZWNpYWxseSB3aXRoIGxhcmdlIG51bWJlcnMgb2YgbXV0YXRpb25zLlxuICogLSAqKkF2b2lkIGBxdWVyeVNlbGVjdG9yQWxsYDoqKiBVc2UgYHF1ZXJ5U2VsZWN0b3JgIGZpcnN0IGZvciBhbiBpbml0aWFsIGNoZWNrOyBpZiBzdWNjZXNzZnVsLCBwcm9jZWVkIHdpdGggYHF1ZXJ5U2VsZWN0b3JBbGxgIG9ubHkgd2hlbiBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4gVGhpcyBjb21ibyBpcyBvZnRlbiBmYXN0ZXIgb24gYXZlcmFnZS5cbiAqIC0gKipMZWdhY3kgQnJvd3NlciBDb21wYXRpYmlsaXR5OioqXG4gKiAgIC0gQXZvaWQgYEFycmF5YCBtZXRob2RzIGxpa2UgYGZvckVhY2hgLCBgZmlsdGVyYCwgZXRjLiwgYW5kIEVTMjAxNSBsb29wcyAoYGZvci4uLm9mYCkgaW4gcHJlLTIwMTggQ2hyb21lIGZvciBNdXRhdGlvbk9ic2VydmVyIGNhbGxiYWNrcyxcbiAqICAgICBhcyB0aGVzZSBjYW4gYmUgdXAgdG8gMTAweCBzbG93ZXIgdGhhbiB0cmFkaXRpb25hbCBgZm9yYCBsb29wcy5cbiAqICAgLSBBbHRlcm5hdGl2ZWx5LCB1c2UgYSBmYXN0IGZ1bmN0aW9uYWwgbGlicmFyeSBsaWtlIGxvZGFzaCBvbiBvbGRlciBicm93c2Vycy4gQ2hyb21lIDIwMTgrIGlubGluZXMgYXJyYXkgbWV0aG9kcyBlZmZpY2llbnRseS5cbiAqIC0gKipTY2hlZHVsZWQgUmUtY2hlY2tpbmc6KiogRm9yIHZpc3VhbCB1cGRhdGVzLCBpZiB5b3UgY2FuIGRldGVybWluZSBlbGVtZW50cyBhcmUgb2Zmc2NyZWVuLCBkaXNjb25uZWN0IHRoZSBvYnNlcnZlciBhbmQgdXNlIGBzZXRUaW1lb3V0KGZuLCAwKWAgdG8gZGVsYXkgcHJvY2Vzc2luZyB1bnRpbCBpbml0aWFsIHBhcnNpbmcvbGF5b3V0IGlzIGNvbXBsZXRlLiBBZnRlciB0aGF0LCB1c2UgYHJlcXVlc3RBbmltYXRpb25GcmFtZWAgZm9yIGNodW5rZWQgcHJvY2Vzc2luZy5cbiAqIC0gKipEZWJvdW5jZSBMb25nIFByb2Nlc3Npbmc6KiogSWYgdGhlIGNhbGxiYWNrIHByb2Nlc3NpbmcgaXMgbGVuZ3RoeSwgY2F1c2luZyB1bnJlc3BvbnNpdmVuZXNzIG9yIGphbmssIHVzZSBkZWJvdW5jaW5nIGJ5IGFjY3VtdWxhdGluZyBtdXRhdGlvbnMgaW4gYW4gYXJyYXkgYW5kIHNjaGVkdWxpbmcgcHJvY2Vzc2luZyB3aXRoIGBzZXRUaW1lb3V0YCwgYHJlcXVlc3RJZGxlQ2FsbGJhY2tgLCBvciBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYC5cbiAqXG4gKiBFeGFtcGxlIG9mIERlYm91bmNlIFNldHVwOlxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcXVldWU6IE11dGF0aW9uUmVjb3JkW10gPSBbXTtcbiAqIGNvbnN0IG1vID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25zID0+IHtcbiAqICAgaWYgKCFxdWV1ZS5sZW5ndGgpIHJlcXVlc3RBbmltYXRpb25GcmFtZShwcm9jZXNzKTtcbiAqICAgcXVldWUucHVzaCguLi5tdXRhdGlvbnMpO1xuICogfSk7XG4gKiBmdW5jdGlvbiBwcm9jZXNzKCkge1xuICogICBmb3IgKGNvbnN0IG11dGF0aW9ucyBvZiBxdWV1ZSkge1xuICogICAgIC8vIFByb2Nlc3NpbmcgbG9naWNcbiAqICAgfVxuICogICBxdWV1ZS5sZW5ndGggPSAwO1xuICogfVxuICogYGBgXG4gKiBOb3RlOiBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYCBvbmx5IHRyaWdnZXJzIHdoZW4gdGhlIHBhZ2UgaXMgdmlzaWJsZS5cbiAqL1xuZGVjbGFyZSBjbGFzcyBEb21NdXRhdGlvbk9ic2VydmVyIHtcbiAgICBwcml2YXRlIHN0YXRpYyBvYnNlcnZlclZlcnNpb247XG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5kaXZpZHVhbE9ic2VydmVycztcbiAgICBwcml2YXRlIHN0YXRpYyBkZWZlcnJlZEV4ZWN1dGlvbkRlbGF5O1xuICAgIHByaXZhdGUgc3RhdGljIHN0YXJ0aW5nUG9sbGluZ0ludGVydmFsO1xuICAgIHByaXZhdGUgc3RhdGljIGVuZGluZ1BvbGxpbmdJbnRlcnZhbDtcbiAgICBwcml2YXRlIHN0YXRpYyB1c2VEZWJvdW5jZTtcbiAgICBwcml2YXRlIHN0YXRpYyBsaXN0ZW5lcnM7XG4gICAgcHJpdmF0ZSBzdGF0aWMgbXV0YXRpb25zUXVldWVQZXJMaXN0ZW5lcjtcbiAgICBwcml2YXRlIHN0YXRpYyBtdXRhdGlvbnNRdWV1ZTtcbiAgICBwcml2YXRlIHN0YXRpYyBvYnNlcnZhdGlvblN0cmF0ZWd5O1xuICAgIHN0YXRpYyBhZGREb21NdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyOiBEb21NdXRhdGlvbkxpc3RlbmVyKTogdm9pZDtcbiAgICBzdGF0aWMgaW52b2tlTGlzdGVuZXIobDogRG9tTXV0YXRpb25MaXN0ZW5lclN0YXRlKTogdm9pZDtcbiAgICBzdGF0aWMgb2JzZXJ2ZU9uRG9tUmVhZHkoc3RyYXRlZ3k6IERvbU9ic2VydmF0aW9uU3RyYXRlZ3kpOiB2b2lkO1xuICAgIHN0YXRpYyBvYnNlcnZlKHN0cmF0ZWd5UmVxdWVzdGVkOiBEb21PYnNlcnZhdGlvblN0cmF0ZWd5KTogdm9pZDtcbiAgICBwcml2YXRlIHN0YXRpYyBydW5PbmNlSW1tZWRpYXRlbHlJZlJlcXVpcmVkO1xuICAgIHByaXZhdGUgc3RhdGljIG9ic2VydmVJbmRpdmlkdWFsbHlXaXRoRGVib3VuY2U7XG4gICAgcHJpdmF0ZSBzdGF0aWMgb2JzZXJ2ZUluZGl2aWR1YWxseTtcbiAgICBwcml2YXRlIHN0YXRpYyBvYnNlcnZlQ29sbGVjdGl2ZWx5V2l0aERlYm91bmNlO1xuICAgIHByaXZhdGUgc3RhdGljIG9ic2VydmVDb2xsZWN0aXZlbHk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcG9sbDtcbiAgICBwcml2YXRlIHN0YXRpYyBvYnNlcnZlQnlQb2xsaW5nO1xuICAgIHN0YXRpYyBkaXNjb25uZWN0KGxpc3RlbmVyOiBEb21NdXRhdGlvbkxpc3RlbmVyKTogdm9pZDtcbiAgICBzdGF0aWMgc2V0U3RhcnRpbmdQb2xsaW5nSW50ZXJ2YWwoaW50ZXJ2YWw6IG51bWJlcik6IHZvaWQ7XG4gICAgc3RhdGljIHNldEVuZGluZ1BvbGxpbmdJbnRlcnZhbChpbnRlcnZhbDogbnVtYmVyKTogdm9pZDtcbn1cbmV4cG9ydCB7IERvbU11dGF0aW9uT2JzZXJ2ZXIgfTtcbiIsImltcG9ydCB7IEF0b21TdG9yZSB9IGZyb20gXCJzcmMvYXRvbXMvYXRvbVN0b3JlL2F0b21TdG9yZVwiO1xuLyoqXG4gKiBTZXJ2aWNlIGZvciBoYW5kbGluZyBHcmFwaFFMIGNvbmZpZ3VyYXRpb24gZmV0Y2hpbmcgYW5kIG1hbmFnZW1lbnRcbiAqIFRoaXMgc2VydmljZSBpcyBzZXBhcmF0ZWQgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIGJldHdlZW4gYXRvbXNcbiAqL1xuZXhwb3J0IGRlY2xhcmUgY2xhc3MgR3JhcGhRTENvbmZpZ1NlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIEZldGNoZXMgR3JhcGhRTCBjb25maWd1cmF0aW9uIGFuZCB1cGRhdGVzIHRoZSByZWxldmFudCBhdG9tc1xuICAgICAqIEBwYXJhbSBhdG9tU3RvcmUgLSBUaGUgYXRvbSBzdG9yZSBpbnN0YW5jZSB0byB1c2UgZm9yIHNldHRpbmcgdmFsdWVzXG4gICAgICovXG4gICAgc3RhdGljIGZldGNoQW5kU2V0R3JhcGhRTENvbmZpZyhhdG9tU3RvcmU6IEF0b21TdG9yZSk6IFByb21pc2U8dm9pZD47XG59XG4iLCJkZWNsYXJlIGNsYXNzIEt1c3RvbWVySW50ZWdyYXRpb25TZXJ2aWNlIHtcbiAgICBzdGF0aWMgS1VTVE9NRVJfTE9DQUxfU1RPUkFHRV9LRVk6IHN0cmluZztcbiAgICBzdGF0aWMgS1VTVE9NRVJfSUZSQU1FX0lEOiBzdHJpbmc7XG4gICAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG4gICAgY29uc3RydWN0b3IoKTtcbiAgICBpbml0T25jZSgpOiB2b2lkO1xuICAgIGRpc2Nvbm5lY3QoKTogdm9pZDtcbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBLdXN0b21lciBjaGF0IGljb24uXG4gICAgICovXG4gICAgdXBkYXRlVmlzaWJpbGl0eSgpOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFF1ZXJpZXMgdGhlIGRvY3VtZW50IGJvZHkgZm9yIHRoZSBLdXN0b21lciBTREsgaWZyYW1lLiBUaGlzIGZ1bmN0aW9uIGlzIHRvIGJlIHJ1biBpbiBhXG4gICAgICogTXV0YXRpb25PYnNlcnZlci5cbiAgICAgKiBAcmV0dXJucyB0aGUgaWZyYW1lIGVsZW1lbnQgaWYgaXQgZXhpc3RzLCBlbHNlIHVuZGVmaW5lLlxuICAgICAqL1xuICAgIGZpbmRLdXN0b21lckJ1dHRvbigpOiBIVE1MSUZyYW1lRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBLdXN0b21lciBjaGF0IGljb24gdmlzaWJpbGl0eSB3aGVuIHRoZSBrdXN0b21lclN0YXRlIGxvY2FsU3RvcmFnZSBpdGVtIGNoYW5nZXMuXG4gICAgICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQgbGlzdGVuZXIuXG4gICAgICovXG4gICAgb25DdXN0b21lclN0YXRlQ2hhbmdlKGV2ZW50OiBTdG9yYWdlRXZlbnQpOiB2b2lkO1xufVxuZXhwb3J0IHsgS3VzdG9tZXJJbnRlZ3JhdGlvblNlcnZpY2UgfTtcbiIsImV4cG9ydCBkZWNsYXJlIGVudW0gTG9jYWxTdG9yYWdlS2V5cyB7XG4gICAgQ2hhdElkID0gXCJ2MS1zcGlmZnktY2hhdC1zZXNzaW9uLWlkXCIsXG4gICAgU3BpZmZ5T25PdmVycmlkZSA9IFwic3BpZmZ5X29uXCIsXG4gICAgRW52aXZlT25PdmVycmlkZSA9IFwiZW52aXZlX29uXCJcbn1cbmRlY2xhcmUgY2xhc3MgTG9jYWxTdG9yYWdlU2VydmljZSB7XG4gICAgc3RhdGljIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuICAgIHN0YXRpYyBnZXRJdGVtKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbDtcbiAgICBzdGF0aWMgc2V0U3BpZmZ5T25GZWF0dXJlRmxhZyh2YWx1ZTogYm9vbGVhbiB8IG51bGwpOiB2b2lkO1xuICAgIHN0YXRpYyBnZXRTcGlmZnlPbkZlYXR1cmVGbGFnKCk6IHN0cmluZyB8IG51bGw7XG4gICAgc3RhdGljIGdldExvY2FsU3RvcmFnZSgpOiBTdG9yYWdlO1xuICAgIHByaXZhdGUgc3RhdGljIGxpc3RlbmVyc0NhY2hlO1xuICAgIHByaXZhdGUgc3RhdGljIGxpc3RlbmVyRm9yS2V5O1xuICAgIC8qKlxuICAgICAqIEF0dGFjaCBhIGxpc3RlbmVyIHRvIHRoZSB3aW5kb3cncyBzdG9yYWdlIGV2ZW50LiBTYWZlIHRvIGNhbGwgbXVsdGlwbGUgdGltZXMuXG4gICAgICogQHBhcmFtIGxpc3RlbmVyXG4gICAgICovXG4gICAgc3RhdGljIGF0dGFjaExpc3RlbmVyKGxpc3RlbmVyOiBMb2NhbFN0b3JhZ2VFdmVudExpc3RlbmVyKTogdm9pZDtcbiAgICBzdGF0aWMgZGV0YWNoTGlzdGVuZXIobGlzdGVuZXI6IExvY2FsU3RvcmFnZUV2ZW50TGlzdGVuZXIpOiB2b2lkO1xufVxuZXhwb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9O1xuIiwiaW1wb3J0IHsgQ2F0ZWdvcnlFeHRyYWN0b3IsIElkRXh0cmFjdG9yLCBPcmdQYWdlQ29uZmlnLCBQYWdlVmFyaWFudENvbmZpZywgUGFnZVZhcmlhbnRUZXN0IH0gZnJvbSBcInNyYy9jb250ZXh0cy90eXBlc1wiO1xuaW1wb3J0IHsgTWVzc2FnZSwgVmFyaWFudEluZm8gfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVsc1wiO1xuaW1wb3J0IHsgRmVhdHVyZUdhdGVzIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZmVhdHVyZUdhdGVzXCI7XG5pbXBvcnQgeyBQYWdlVmlzaXRDYXRlZ29yeSB9IGZyb20gXCJAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnRcIjtcbmltcG9ydCB7IFN1cHBvcnRlZEV2ZW50IH0gZnJvbSBcInNyYy9hdG9tcy9hcHAvdmFyaWFudFwiO1xuLyoqXG4gKiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gcmVzb2x2ZSB0aGUgUGFnZVZhcmlhbnRzIGZvciB0aGUgU3BpZmZ5IEFwcC5cbiAqIEl0IGluY2x1ZGVzIGEgbnVtYmVyIG9mIHN0YXRpYyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgcGVyZm9ybWluZyBwYWdlVGVzdHMgYW5kXG4gKiBleHRyYWN0aW5nIGRhdGEgbmVjZXNzYXJ5IHRvIGJ1aWxkIHRoZSBQYWdlVmFyaWFudHMuXG4gKlxuICogVW5kZXIgbW9zdCBjaXJjdW1zdGFuY2VzIG9ubHkgYGdldFZhcmlhbnRJbmZvV2l0aFBhZ2VDb25maWdgIHdpbGwgYmUgY2FsbGVkIGV4dGVybmFsbHlcbiAqIFRoZSBvdGhlciBmdW5jdGlvbnMgc2hvdWxkIGJlIHVzZWQgaW50ZXJuYWxseSBieSB0aGF0IGZ1bmN0aW9uLlxuICovXG5kZWNsYXJlIGNsYXNzIFBhZ2VWYXJpYW50U2VydmljZSB7XG4gICAgc3RhdGljIHJlYWRvbmx5IHBhZ2VUZXN0OiAodGVzdDogUGFnZVZhcmlhbnRUZXN0LCBwYWdlVmFyaWFudENvbmZpZzogUGFnZVZhcmlhbnRDb25maWcsIGF0b21WYWx1ZXM/OiB7XG4gICAgICAgIHJlc3BvbnNlU3RyZWFtaW5nOiBib29sZWFuO1xuICAgICAgICBtZXNzYWdlczogTWVzc2FnZVtdW107XG4gICAgICAgIGxhc3RBc3Npc3RhbnRNZXNzYWdlPzogTWVzc2FnZVtdIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICB9KSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGdldENhY2hlZFVybFJlc29sdmVyO1xuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBwYWdlIG1hdGNoZXMgdGhlIGV4cGVjdGVkIGNhdGFsb2cgY2F0ZWdvcnkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnkgLSBUaGUgZXhwZWN0ZWQgY2F0YWxvZyBjYXRlZ29yeSBhcyBkZWZpbmVkIGJ5IGRhdGEgaW4gRWxhc3RpYyBTZWFyY2guXG4gICAgICogQHBhcmFtIHBhZ2VWYXJpYW50Q29uZmlnIC0gVGhlIHZhcmlhbnQgY29uZmlnIGZvciB0aGUgY3VycmVudCBwYWdlLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgY3VycmVudCBwYWdlIG1hdGNoZXMgdGhlIGV4cGVjdGVkIGNhdGFsb2cgY2F0ZWdvcnkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgY2hlY2tDYXRhbG9nQ2F0ZWdvcnk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgY2hlY2tJblRvcENhdGVnb3J5O1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGNoZWNrSGFzUmV2aWV3cztcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBjaGVja0luQ29sbGVjdGlvbjtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBjaGVja0hhc01lcmNoYW50VGFnO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IHVzZXJIYXNJbnRlcmFjdGVkO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IHVzZXJIYXNOb3RJbnRlcmFjdGVkO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGlzTG9hZGluZztcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBpc1Byb2R1Y3RDb21wYXJpc29uO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGNoZWNrUGxwSWRzO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGNoZWNrUXVlcnlQYXJhbTtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBjaGVja1Byb2R1Y3RJZDtcbiAgICBzdGF0aWMgY2hlY2tGZWF0dXJlR2F0ZShmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzKTogYm9vbGVhbjtcbiAgICBzdGF0aWMgZ2V0Q2F0ZWdvcnkoZXh0cmFjdG9yOiBDYXRlZ29yeUV4dHJhY3Rvcik6IFBhZ2VWaXNpdENhdGVnb3J5IHwgbnVsbDtcbiAgICBzdGF0aWMgZ2V0SWQoZXh0cmFjdG9yPzogSWRFeHRyYWN0b3IpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGdldElkRnJvbVVybFJlc29sdmVyO1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZhcmlhbnQgaW5mbyBmb3IgdGhlIGN1cnJlbnQgcGFnZSBiYXNlZCBvbiB0aGUgbWVyY2hhbnQncyBwYWdlIGNvbmZpZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcmdQYWdlQ29uZmlnIC0gVGhlIG1lcmNoYW50J3MgcGFnZSBjb25maWcuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgdmFyaWFudCBpbmZvIGZvciB0aGUgY3VycmVudCBwYWdlLCBvciB1bmRlZmluZWQgaWYgdGhlIHBhZ2UgdGVzdHMgZG8gbm90XG4gICAgICogcmV0dXJuIGFueSBtYXRjaGVzLlxuICAgICAqL1xuICAgIHN0YXRpYyByZWFkb25seSBnZXRWYXJpYW50SW5mb1dpdGhQYWdlQ29uZmlnOiAob3JnUGFnZUNvbmZpZzogT3JnUGFnZUNvbmZpZykgPT4gUHJvbWlzZTxbVmFyaWFudEluZm8sIFBhZ2VWYXJpYW50Q29uZmlnXSB8IHVuZGVmaW5lZD47XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHBhZ2UgaXMgc3VwcG9ydGVkLiBBIHBhZ2UgaXMgc3VwcG9ydGVkIGlmIGl0IGhhcyBiZWVuIGluZGV4ZWQgaW5cbiAgICAgKiBFbGFzdGljIFNlYXJjaCBhbmQgaXRzIGNhdGVnb3J5IGhhcyBiZWVuIHdoaXRlbGlzdGVkIGJ5IHRoZSBiYWNrZW5kLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhZ2VWYXJpYW50Q29uZmlnIC0gVGhlIHZhcmlhbnQgY29uZmlnIGZvciB0aGUgY3VycmVudCBwYWdlIHdoaWNoIGlzIHVzZWQgdG8gZ2V0XG4gICAgICogdGhlIHZhcmlhbnQgaW5mby5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBzdXBwb3J0ZWQgZXZlbnQgcmVzcG9uc2UgZnJvbSB0aGUgYmFja2VuZCwgb3IgdW5kZWZpbmVkIGlmIHRoZSBwYWdlIGlzIG5vdCBzdXBwb3J0ZWQuXG4gICAgICovXG4gICAgc3RhdGljIHJlYWRvbmx5IGNoZWNrU3VwcG9ydGVkRXZlbnQ6IChwYWdlVmFyaWFudENvbmZpZzogUGFnZVZhcmlhbnRDb25maWcpID0+IFByb21pc2U8U3VwcG9ydGVkRXZlbnQgfCB1bmRlZmluZWQ+O1xuICAgIC8qKlxuICAgICAqIFBhcnNlcyB0aGUgcGFnZSB2YXJpYW50IGNvbmZpZyBpbnRvIGEgdmFyaWFudCBpbmZvIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYWdlVmFyaWFudENvbmZpZyAtIFRoZSB2YXJpYW50IGNvbmZpZyBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cbiAgICAgKiBAcGFyYW0gdXJsIC0gVGhlIGN1cnJlbnQgVVJMIG9mIHRoZSBwYWdlLiBUaGlzIGlzIHVzZWQgdG8gZXh0cmFjdCB0aGUgcGRwL3BscCBpZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSB2YXJpYW50IGluZm8gZm9yIHRoZSBjdXJyZW50IHBhZ2UsIG9yIHVuZGVmaW5lZCBpZiB0aGUgcGFnZSB2YXJpYW50IGNvbmZpZyBpcyBpbnZhbGlkIG9yIG5vdCBzdXBwb3J0ZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgcGFyc2VQYWdlVmFyaWFudENvbmZpZztcbn1cbmV4cG9ydCB7IFBhZ2VWYXJpYW50U2VydmljZSB9O1xuIiwiZGVjbGFyZSBjbGFzcyBTZXNzaW9uU3RvcmFnZVNlcnZpY2Uge1xuICAgIHN0YXRpYyBzZXRJdGVtKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgICBzdGF0aWMgZ2V0SXRlbShrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGw7XG4gICAgc3RhdGljIGdldFNlc3Npb25TdG9yYWdlKCk6IFN0b3JhZ2U7XG59XG5leHBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfTtcbiIsImltcG9ydCB7IElkRXh0cmFjdG9yIH0gZnJvbSAnc3JjL2NvbnRleHRzL3R5cGVzJztcbmRlY2xhcmUgY2xhc3MgU2hvcGlmeVVybFNlcnZpY2Uge1xuICAgIHN0YXRpYyBnZXRUcmltbWVkUGF0aE5hbWUoKTogc3RyaW5nIHwgbnVsbDtcbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIFVSTCB0byBkZXRlcm1pbmUgdGhlIFBMUCBvciBQRFAgSUQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXh0cmFjdG9yIHRoZSB0eXBlIG9mIGV4dHJhY3RvciB0byBwYXJzZSBzZWdtZW50cyBvZiB0aGUgcGFnZSBVUkxcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSBQTFAgb3IgUERQIElEIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRQbHBPclBkcElkKGV4dHJhY3RvcjogSWRFeHRyYWN0b3IpOiBzdHJpbmcgfCBudWxsO1xuICAgIHN0YXRpYyBpc09uUGRwUGFnZSgpOiBib29sZWFuO1xuICAgIHN0YXRpYyBpc09uUGxwUGFnZSgpOiBib29sZWFuO1xufVxuZXhwb3J0IHsgU2hvcGlmeVVybFNlcnZpY2UgfTtcbiIsImRlY2xhcmUgY2xhc3MgVXNlcklkZW50aXR5U2VydmljZSB7XG4gICAgc3RhdGljIFVTRVJfSURfT1ZFUlJJREVfS0VZOiBzdHJpbmc7XG4gICAgc3RhdGljIFVTRVJfSURfREVGQVVMVF9LRVk6IHN0cmluZztcbiAgICBzdGF0aWMgaWRlbnRpZnlVc2VyKCk6IFByb21pc2U8dm9pZD47XG4gICAgc3RhdGljIGdldFVzZXJJZE9yRGVmYXVsdCgpOiBzdHJpbmc7XG4gICAgc3RhdGljIGdldFVzZXJJZE92ZXJyaWRlRnJvbUxvY2FsU3RvcmFnZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgc3RhdGljIGdldFVzZXJJZERlZmF1bHRGcm9tTG9jYWxTdG9yYWdlKCk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBzdGF0aWMgc2V0VXNlcklkRGVmYXVsdEluTG9jYWxTdG9yYWdlKHVzZXJJZDogc3RyaW5nKTogc3RyaW5nO1xuICAgIHN0YXRpYyBzZXRVc2VySWRPdmVycmlkZUluTG9jYWxTdG9yYWdlKHVzZXJJZDogc3RyaW5nKTogc3RyaW5nO1xuICAgIHN0YXRpYyBjbGVhclVzZXJJZE92ZXJyaWRlSW5Mb2NhbFN0b3JhZ2UoKTogdm9pZDtcbn1cbmV4cG9ydCB7IFVzZXJJZGVudGl0eVNlcnZpY2UgfTtcbiIsImV4cG9ydCBkZWNsYXJlIGNvbnN0IFdpbmRvd0NoYXRUb2dnbGVCaW5kZXI6ICgpID0+IG51bGw7XG4iLCJpbXBvcnQgeyBPcmdBbmFseXRpY3NHb29nbGVBbmFseXRpY3NDb25maWcgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9vcmdBbmFseXRpY3NDb25maWcnO1xuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBXaW5kb3cge1xuICAgICAgICBkYXRhTGF5ZXI6IGFueTtcbiAgICB9XG59XG5kZWNsYXJlIGNsYXNzIFdpbmRvd0RhdGFMYXllclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZ2FDb25maWc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXRhTGF5ZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvcmlnaW5hbERhdGFMYXllclB1c2g7XG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXJjaGFudEdvb2dsZU1lYXN1cmVtZW50SWQ7XG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpO1xuICAgIC8qKlxuICAgICAqIFB1c2hlcyBkYXRhIHRvIHRoZSBkYXRhTGF5ZXJcbiAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAqICBkYXRhIGhhcyB0aGUgc2hhcGU6IHsgZXZlbnQ6ICdldmVudF9uYW1lJywgLi4uIH1cbiAgICAgKiAgRXhhbXBsZTpcbiAgICAgKiAge1xuICAgICAqICAgICAgICAgXCJldmVudFwiOiBcImFkZF90b19jYXJ0XCIsXG4gICAgICogICAgICAgICBcImN1cnJlbmN5XCI6IFwiVVNEXCIsXG4gICAgICogICAgICAgICBcInZhbHVlXCI6IDMwLjAzLFxuICAgICAqICAgICAgICAgXCJpdGVtc1wiOiBbXG4gICAgICogICAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgICBcIml0ZW1faWRcIjogXCJTS1VfMTIzNDVcIixcbiAgICAgKiAgICAgICAgICAgICBcIml0ZW1fbmFtZVwiOiBcIlN0YW4gYW5kIEZyaWVuZHMgVGVlXCIsXG4gICAgICogICAgICAgICAgICAgXCJhZmZpbGlhdGlvblwiOiBcIkdvb2dsZSBNZXJjaGFuZGlzZSBTdG9yZVwiLFxuICAgICAqICAgICAgICAgICAgIFwiY291cG9uXCI6IFwiU1VNTUVSX0ZVTlwiLFxuICAgICAqICAgICAgICAgICAgIFwiZGlzY291bnRcIjogMi4yMixcbiAgICAgKiAgICAgICAgICAgICBcImluZGV4XCI6IDAsXG4gICAgICogICAgICAgICAgICAgXCJpdGVtX2JyYW5kXCI6IFwiR29vZ2xlXCIsXG4gICAgICogICAgICAgICAgICAgXCJpdGVtX2NhdGVnb3J5XCI6IFwiQXBwYXJlbFwiLFxuICAgICAqICAgICAgICAgICAgIFwiaXRlbV9jYXRlZ29yeTJcIjogXCJBZHVsdFwiLFxuICAgICAqICAgICAgICAgICAgIFwiaXRlbV9jYXRlZ29yeTNcIjogXCJTaGlydHNcIixcbiAgICAgKiAgICAgICAgICAgICBcIml0ZW1fY2F0ZWdvcnk0XCI6IFwiQ3Jld1wiLFxuICAgICAqICAgICAgICAgICAgIFwiaXRlbV9jYXRlZ29yeTVcIjogXCJTaG9ydCBzbGVldmVcIixcbiAgICAgKiAgICAgICAgICAgICBcIml0ZW1fbGlzdF9pZFwiOiBcInJlbGF0ZWRfcHJvZHVjdHNcIixcbiAgICAgKiAgICAgICAgICAgICBcIml0ZW1fbGlzdF9uYW1lXCI6IFwiUmVsYXRlZCBQcm9kdWN0c1wiLFxuICAgICAqICAgICAgICAgICAgIFwiaXRlbV92YXJpYW50XCI6IFwiZ3JlZW5cIixcbiAgICAgKiAgICAgICAgICAgICBcImxvY2F0aW9uX2lkXCI6IFwiQ2hJSklRQnBBRzJhaFlBUl82MTI4R2NUVUVvXCIsXG4gICAgICogICAgICAgICAgICAgXCJwcmljZVwiOiAxMC4wMSxcbiAgICAgKiAgICAgICAgICAgICBcInF1YW50aXR5XCI6IDNcbiAgICAgKiAgICAgICAgICAgfVxuICAgICAqICAgICAgICAgXVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBwdXNoKGRhdGE6IGFueSk6IHZvaWQ7XG4gICAgc3RhdGljIGlzRGF0YUxheWVyQXZhaWxhYmxlKCk6IGJvb2xlYW47XG4gICAgc3RhdGljIHRyeUZsYXR0ZW5Bcmd1bWVudHMoYXJnczogYW55KTogYW55O1xuICAgIHdyYXBXaXRoUHJveHlNZXRob2QobWV0aG9kTmFtZTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkO1xuICAgIHN0YXRpYyBnZXRTaW5nbGV0b25JbnN0YW5jZU9mKGdhQ29uZmlnOiBPcmdBbmFseXRpY3NHb29nbGVBbmFseXRpY3NDb25maWcpOiBXaW5kb3dEYXRhTGF5ZXJTZXJ2aWNlO1xuICAgIHNlbmRUb0dvb2dsZUFuYWx5dGljc0NpcmN1bGFyRXZlbnRzU2FmZShldmVudE5hbWU6IHN0cmluZywgZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQpOiB2b2lkO1xuICAgIHN0YXRpYyBnZXRHb29nbGVBbmFseXRpY3NDbGllbnRJZDogKCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuZXhwb3J0IHsgV2luZG93RGF0YUxheWVyU2VydmljZSB9O1xuIiwiZXhwb3J0IGRlY2xhcmUgY29uc3QgaW5pdFdpbmRvd0Zyb250ZW5kQ29uZmlnT3ZlcnJpZGVzQXBwbHlGdW5jdGlvbjogKCkgPT4gdm9pZDtcbiIsImltcG9ydCB7IEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgVW5zdXBwb3J0ZWRDdXN0b21lclNlcnZpY2U6IEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uO1xuIiwiaW1wb3J0IHsgT3JnQW5hbHl0aWNzR29vZ2xlQW5hbHl0aWNzQ29uZmlnIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQW5hbHl0aWNzQ29uZmlnJztcbmltcG9ydCB7IERvbU11dGF0aW9uTGlzdGVuZXIgfSBmcm9tICcuLi9kb21NdXRhdGlvbkxpc3RlbmVyJztcbmltcG9ydCB7IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZG9tTXV0YXRpb25Db250aW51YXRpb24nO1xuZGVjbGFyZSBjbGFzcyBEYXRhTGF5ZXJFdmVudHNMaXN0ZW5lciBpbXBsZW1lbnRzIERvbU11dGF0aW9uTGlzdGVuZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb25EYXRhTGF5ZXJQdXNoO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRzVG9JbnRlcmNlcHQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3dEYXRhTGF5ZXJTZXJ2aWNlO1xuICAgIGNvbnN0cnVjdG9yKG9uRGF0YUxheWVyUHVzaDogKGV2ZW50OiBvYmplY3QpID0+IHZvaWQsIGV2ZW50c1RvSW50ZXJjZXB0OiBzdHJpbmdbXSwgZ2FDb25maWc6IE9yZ0FuYWx5dGljc0dvb2dsZUFuYWx5dGljc0NvbmZpZyk7XG4gICAgcnVuT25jZUltbWVkaWF0ZWx5KCk6IGJvb2xlYW47XG4gICAgdHJpZXNNYXgoKTogbnVtYmVyO1xuICAgIG9uRG9tQ2hhbmdlKCk6IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb247XG4gICAgZ2V0TmFtZSgpOiBzdHJpbmc7XG59XG5leHBvcnQgeyBEYXRhTGF5ZXJFdmVudHNMaXN0ZW5lciB9O1xuIiwiaW1wb3J0IHsgRG9tTXV0YXRpb25MaXN0ZW5lciB9IGZyb20gJy4uL2RvbU11dGF0aW9uTGlzdGVuZXInO1xuaW1wb3J0IHsgRG9tTXV0YXRpb25PYnNlcnZlckNvbnRpbnVhdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9kb21NdXRhdGlvbkNvbnRpbnVhdGlvbic7XG5kZWNsYXJlIGNsYXNzIEVtYmVkZGVkQ2hhdHNQbGFjZW1lbnRzTGlzdGVuZXIgaW1wbGVtZW50cyBEb21NdXRhdGlvbkxpc3RlbmVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbmRQbGFjZW1lbnROb2RlcztcbiAgICBjb25zdHJ1Y3RvcihmaW5kUGxhY2VtZW50Tm9kZXM6ICgpID0+IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb24pO1xuICAgIHJ1bk9uY2VJbW1lZGlhdGVseSgpOiBib29sZWFuO1xuICAgIG9uRG9tQ2hhbmdlKCk6IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb247XG4gICAgZ2V0TmFtZSgpOiBzdHJpbmc7XG4gICAgdHJpZXNNYXgoKTogbnVtYmVyO1xufVxuZXhwb3J0IHsgRW1iZWRkZWRDaGF0c1BsYWNlbWVudHNMaXN0ZW5lciwgfTtcbiIsImltcG9ydCB7IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZG9tTXV0YXRpb25Db250aW51YXRpb24nO1xuaW1wb3J0IHsgRG9tTXV0YXRpb25MaXN0ZW5lciB9IGZyb20gJy4uL2RvbU11dGF0aW9uTGlzdGVuZXInO1xuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBXaW5kb3cge1xuICAgICAgICBHbGFkbHk6IHtcbiAgICAgICAgICAgIHNob3c6ICgpID0+IHZvaWQ7XG4gICAgICAgICAgICBnZXRVc2VyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWRlbnRpdHk6IHN0cmluZztcbiAgICAgICAgICAgIH0gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBnZXRBdmFpbGFiaWxpdHk6ICgpID0+IHN0cmluZztcbiAgICAgICAgICAgIG9uOiAoZXZlbnROYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSA9PiB2b2lkO1xuICAgICAgICB9O1xuICAgIH1cbn1cbmRlY2xhcmUgY2xhc3MgR2xhZGx5TGlzdGVuZXIgaW1wbGVtZW50cyBEb21NdXRhdGlvbkxpc3RlbmVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uR2xhZGx5QXZhaWxhYmxlO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEdMQURMWV9SRVRSSUVTX01BWDtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBHTEFETFlfQ09OVkVSU0FUSU9OX1NUQVJURURfRVZFTlRfTkFNRTtcbiAgICBjb25zdHJ1Y3RvcihvbkdsYWRseUF2YWlsYWJsZTogKCkgPT4gdm9pZCk7XG4gICAgcnVuT25jZUltbWVkaWF0ZWx5KCk6IGJvb2xlYW47XG4gICAgdHJpZXNNYXgoKTogbnVtYmVyO1xuICAgIG9uRG9tQ2hhbmdlKCk6IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb247XG4gICAgZ2V0TmFtZSgpOiBzdHJpbmc7XG59XG5leHBvcnQgeyBHbGFkbHlMaXN0ZW5lciB9O1xuIiwiaW1wb3J0IHsgRG9tTXV0YXRpb25PYnNlcnZlckNvbnRpbnVhdGlvbiB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZG9tTXV0YXRpb25Db250aW51YXRpb24nO1xuaW1wb3J0IHsgRG9tTXV0YXRpb25MaXN0ZW5lciB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2RvbU11dGF0aW9ucy9kb21NdXRhdGlvbkxpc3RlbmVyJztcbmltcG9ydCB7IEt1c3RvbWVySW50ZWdyYXRpb25TZXJ2aWNlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2Uva3VzdG9tZXJJbnRlZ3JhdGlvblNlcnZpY2UnO1xuZGVjbGFyZSBjbGFzcyBLdXN0b21lclZpc2liaWxpdHlMaXN0ZW5lciBpbXBsZW1lbnRzIERvbU11dGF0aW9uTGlzdGVuZXIge1xuICAgIGt1c3RvbWVySW50ZWdyYXRpb25TZXJ2aWNlOiBLdXN0b21lckludGVncmF0aW9uU2VydmljZTtcbiAgICBjb25zdHJ1Y3RvcigpO1xuICAgIHJ1bk9uY2VJbW1lZGlhdGVseSgpOiBib29sZWFuO1xuICAgIHRyaWVzTWF4KCk6IG51bWJlcjtcbiAgICBkaXNjb25uZWN0KCk6IHZvaWQ7XG4gICAgb25Eb21DaGFuZ2UoKTogRG9tTXV0YXRpb25PYnNlcnZlckNvbnRpbnVhdGlvbjtcbiAgICBnZXROYW1lKCk6IHN0cmluZztcbn1cbmV4cG9ydCB7IEt1c3RvbWVyVmlzaWJpbGl0eUxpc3RlbmVyIH07XG4iLCJpbXBvcnQgeyBPcmdBbmFseXRpY3NDb25maWcgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9vcmdBbmFseXRpY3NDb25maWcnO1xuaW1wb3J0IHsgRGF0YUxheWVyRXZlbnRzTGlzdGVuZXIgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vc2VydmljZS9kb21NdXRhdGlvbnMvZGF0YUxheWVyL2RhdGFMYXllckV2ZW50c0xpc3RlbmVyJztcbmRlY2xhcmUgY2xhc3MgT3Jnc0NvbW1vbkRhdGFMYXllckxpc3RlbmVyIHtcbiAgICBwcml2YXRlIHN0YXRpYyBkYXRhTGF5ZXJDYWNoZTtcbiAgICBzdGF0aWMgcmVzZXREYXRhTGF5ZXJDYWNoZSgpOiB2b2lkO1xuICAgIHN0YXRpYyBnZXRTaW5nbGV0b25EYXRhTGF5ZXJMaXN0ZW5lckNhbGxiYWNrQ29tYm8ob3JnU2hvcnROYW1lOiBzdHJpbmcsIG9yZ0FuYWx5dGljc0NvbmZpZzogT3JnQW5hbHl0aWNzQ29uZmlnKToge1xuICAgICAgICBkYXRhTGF5ZXJMaXN0ZW5lcjogRGF0YUxheWVyRXZlbnRzTGlzdGVuZXI7XG4gICAgfSB8IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCB7IE9yZ3NDb21tb25EYXRhTGF5ZXJMaXN0ZW5lciB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJLGlCQUFpQjtDQUFDO09BQVc7T0FBZTtPQUFTO09BQVM7T0FBa0I7T0FBUztPQUFrQjtDQUFRO0FBQ3ZILElBQUksWUFBWTtDQUFDO09BQVc7T0FBUztPQUFTO09BQWtCO09BQVM7Q0FBVzs7OztBQ0RwRixJQUFJLGFBQWEsQ0FBQyxJQUFJOzs7O0FDQ3RCLElBQUksc0JBQXNCLENBQUMsV0FBRyxnQ0FBQTs7OztBQ0M5QixJQUFJLDJCQUEyQjtDQUFDO09BQU87T0FBQTtPQUFBO09BQUE7Q0FBQTs7OztBQ0N2QyxJQUFFLHNCQUFBO0NBQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUE7Ozs7QUNGRixJQUFFLHVCQUFBO0NBQUE7T0FBQTtPQUFBO0NBQUE7Ozs7QUNERixJQUFJLDZCQUE2QjtDQUFDO09BQU87T0FBQTtDQUFBOzs7O0FDQXpDLElBQVcsbUJBQW1CLENBQUMsSUFBSTtBQUNuQyxJQUFJLHNCQUFzQjtDQUFDO09BQVc7T0FBRTtPQUFBO0NBQUE7Ozs7QUNJeEMsSUFBRSxxQkFBQTtDQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBOzs7O0FDTEYsSUFBSSx3QkFBd0IsQ0FBQyxXQUFPLFFBQUE7Ozs7QUNDcEMsSUFBSSxvQkFBb0IsQ0FBQyxXQUFPLFlBQUE7Ozs7QUNEaEMsSUFBSSxzQkFBc0IsQ0FBQyxXQUFPLFFBQUE7Ozs7QUNBbEMsSUFBVyx5QkFBeUIsQ0FBQyxJQUFJOzs7O0FDQ3pDLElBQUksT0FBSyxDQUFDLEtBQUssV0FBQSxLQUFBLENBQUE7QUFDZixJQUFJLHlCQUFpQjtDQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTs7OztBQ0ZyQixJQUFXLGlEQUFpRCxDQUFDLElBQUk7Ozs7QUNDakUsSUFBVyw2QkFBNkIsQ0FBQyxXQUFXLDJCQUF1Qjs7OztBQ0UzRSxJQUFJLDBCQUEwQjtDQUFDO09BQVc7T0FBMkI7T0FBQTtDQUFBOzs7O0FDRHJFLElBQUksa0NBQWtDO0NBQUM7T0FBVztPQUEyQjtPQUFBO0NBQUE7Ozs7QUNBN0UsSUFBSSxLQUFLLENBQUMsS0FBSyxXQUFBLEdBQUEsQ0FBQTtBQUNmLElBQUksaUJBQWlCO0NBQUE7T0FBQTtPQUFBO0NBQUE7Ozs7QUNBckIsSUFBSSw2QkFBNkI7Q0FBQztPQUFXO09BQTJCO09BQUE7Q0FBQTs7OztBQ0R4RSxJQUFJLDhCQUE4QjtDQUFDO09BQU87T0FBQTtDQUFBIn0=
|