@envive-ai/react-hooks 0.1.4 → 0.1.5

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.
Files changed (202) hide show
  1. package/dist/adapters/amplitude/index.cjs +2 -2
  2. package/dist/adapters/amplitude/index.js +2 -2
  3. package/dist/application/config/index.cjs +3 -3
  4. package/dist/application/config/index.js +3 -3
  5. package/dist/application/models/graphql/index.cjs +2 -2
  6. package/dist/application/models/graphql/index.js +2 -2
  7. package/dist/application/models/index.cjs +2 -2
  8. package/dist/application/models/index.d.cts +1 -1
  9. package/dist/application/models/index.d.ts +1 -1
  10. package/dist/application/models/index.js +2 -2
  11. package/dist/application/service/index.cjs +3 -2
  12. package/dist/application/service/index.d.cts +18 -4
  13. package/dist/application/service/index.d.ts +18 -4
  14. package/dist/application/service/index.js +3 -3
  15. package/dist/application/utils/index.cjs +2 -2
  16. package/dist/application/utils/index.d.cts +5 -5
  17. package/dist/application/utils/index.d.ts +5 -5
  18. package/dist/application/utils/index.js +2 -2
  19. package/dist/atomStore-ONYy0XuA.d.cts +24 -0
  20. package/dist/atomStore-kOKiEcNl.d.ts +24 -0
  21. package/dist/atoms/app/index.cjs +2 -2
  22. package/dist/atoms/app/index.d.cts +2 -2
  23. package/dist/atoms/app/index.d.ts +3 -3
  24. package/dist/atoms/app/index.js +2 -2
  25. package/dist/atoms/atomStore/index.d.cts +2 -24
  26. package/dist/atoms/atomStore/index.d.ts +2 -24
  27. package/dist/atoms/chat/index.cjs +2 -2
  28. package/dist/atoms/chat/index.d.cts +27 -27
  29. package/dist/atoms/chat/index.d.ts +27 -27
  30. package/dist/atoms/chat/index.js +2 -2
  31. package/dist/atoms/globalSearch/index.d.cts +5 -5
  32. package/dist/atoms/globalSearch/index.d.ts +6 -6
  33. package/dist/atoms/org/index.cjs +3 -2
  34. package/dist/atoms/org/index.d.cts +29 -26
  35. package/dist/atoms/org/index.d.ts +29 -26
  36. package/dist/atoms/org/index.js +3 -3
  37. package/dist/atoms/search/index.cjs +2 -2
  38. package/dist/atoms/search/index.d.cts +2 -2
  39. package/dist/atoms/search/index.d.ts +2 -2
  40. package/dist/atoms/search/index.js +2 -2
  41. package/dist/{bandolier-B76-OE75.cjs → bandolier-Da4wt6sm.cjs} +10 -10
  42. package/dist/{bandolier-DRn_x1g1.js → bandolier-DzEmYWcz.js} +10 -10
  43. package/dist/{carpe-kHi4RLB5.cjs → carpe-AXipz0Xl.cjs} +10 -10
  44. package/dist/{carpe-qrSU99gq.js → carpe-CaUKwcEa.js} +10 -10
  45. package/dist/{chat-CLJ4NWcN.js → chat-CHmD79E1.js} +1 -1
  46. package/dist/{chat-BgONoYU7.cjs → chat-_NzpO_Hn.cjs} +1 -1
  47. package/dist/{components-BKZbet67.cjs → components-D0XDRcaN.cjs} +1 -1
  48. package/dist/{components-CV1fhAkj.js → components-Dl-TMD9k.js} +1 -1
  49. package/dist/config/locators/components/chat/index.cjs +1 -1
  50. package/dist/config/locators/components/chat/index.d.cts +1 -1
  51. package/dist/config/locators/components/chat/index.d.ts +1 -1
  52. package/dist/config/locators/components/chat/index.js +1 -1
  53. package/dist/config/locators/components/chat/variants/index.d.cts +1 -1
  54. package/dist/config/locators/components/index.cjs +1 -1
  55. package/dist/config/locators/components/index.d.cts +1 -1
  56. package/dist/config/locators/components/index.d.ts +1 -1
  57. package/dist/config/locators/components/index.js +1 -1
  58. package/dist/config/locators/components/search/index.d.ts +1 -1
  59. package/dist/config/locators/index.cjs +4 -4
  60. package/dist/config/locators/index.d.cts +2 -2
  61. package/dist/config/locators/index.d.ts +3 -3
  62. package/dist/config/locators/index.js +4 -4
  63. package/dist/contexts/index.cjs +2 -2
  64. package/dist/contexts/index.d.cts +4 -72
  65. package/dist/contexts/index.d.ts +4 -72
  66. package/dist/contexts/index.js +2 -2
  67. package/dist/contexts-CtRlNXaS.js +7674 -0
  68. package/dist/contexts-CtgmnYNn.cjs +9088 -0
  69. package/dist/{coterie-yQ-_JXSw.cjs → coterie--MGvWeVh.cjs} +10 -10
  70. package/dist/{coterie-mMirPcHP.js → coterie-oKHAT0lx.js} +10 -10
  71. package/dist/{custservice-types-C83itZmy.cjs → custservice-types-C8-9vKWb.cjs} +1 -1
  72. package/dist/{custservice-types-DPQ-4TI6.js → custservice-types-CamCiXjq.js} +1 -1
  73. package/dist/default-B4fINY5_.cjs +4 -0
  74. package/dist/default-BrTQxA0c.js +4 -0
  75. package/dist/{default-8Jfv8ehQ.cjs → default-C3LrcbZB.cjs} +2 -2
  76. package/dist/{default-C8PQf-38.js → default-CXkYrLEr.js} +2 -2
  77. package/dist/{divIds-CWkntTsx.js → divIds-0Vj9g-fM.js} +1 -1
  78. package/dist/{divIds-DEL_-qU0.cjs → divIds-CjceLRD9.cjs} +1 -1
  79. package/dist/{dreamlandBaby-cG0HM9bt.js → dreamlandBaby-BEqt0eKF.js} +10 -10
  80. package/dist/{dreamlandBaby-DHltv12Z.cjs → dreamlandBaby-DBDjEJCc.cjs} +10 -10
  81. package/dist/{embedded--2L0F4b5.cjs → embedded-B5Wi9g0T.cjs} +1 -1
  82. package/dist/{embedded-C5uJqmuD.js → embedded-_cLpd6FK.js} +1 -1
  83. package/dist/events/index.d.cts +1 -1
  84. package/dist/{fiveCbd-Cvnwh03g.cjs → fiveCbd-CdqNt16h.cjs} +10 -10
  85. package/dist/{fiveCbd-DhYMlsf9.js → fiveCbd-D6B-sgnX.js} +10 -10
  86. package/dist/{forLoveAndLemons-DR6a1zjJ.cjs → forLoveAndLemons-C7GsJG7f.cjs} +6 -6
  87. package/dist/{forLoveAndLemons-C8DuUexW.js → forLoveAndLemons-gNDlMtPR.js} +6 -6
  88. package/dist/{greenpan-B4Pu65kV.js → greenpan-B5AaW4M_.js} +10 -10
  89. package/dist/{greenpan-BL5p6j7f.cjs → greenpan-DrORpYms.cjs} +10 -10
  90. package/dist/{grooveLife-DjKWHoN3.cjs → grooveLife-BJqsfH2H.cjs} +10 -10
  91. package/dist/{grooveLife-JK0TyaPz.js → grooveLife-xIUmDM8s.js} +10 -10
  92. package/dist/{homegrownCannabis-ZnfCqW-m.cjs → homegrownCannabis-8TZ21u6L.cjs} +10 -10
  93. package/dist/{homegrownCannabis-DxqSDkmS.js → homegrownCannabis-BtMuEvbZ.js} +10 -10
  94. package/dist/hooks/index.cjs +3 -5
  95. package/dist/hooks/index.d.cts +19 -74
  96. package/dist/hooks/index.d.ts +15 -70
  97. package/dist/hooks/index.js +3 -3
  98. package/dist/index-BTK5uzs6.d.cts +1 -1
  99. package/dist/{index-jBATkcc_.d.cts → index-BdNKc2ix.d.cts} +1 -1
  100. package/dist/{index-C62lPpy4.d.cts → index-BrXuc_Ck.d.cts} +1 -1
  101. package/dist/index-BzgkfbNO.d.cts +1 -1
  102. package/dist/index-CKUpnyJQ.d.ts +72 -0
  103. package/dist/{index-DPx8s5YH.d.ts → index-CSIOQD-A.d.ts} +1 -1
  104. package/dist/{index-C_C0tLeD.d.ts → index-CbJZOEU4.d.ts} +31 -31
  105. package/dist/{index-CExtydIH.d.ts → index-Cr2y08f1.d.ts} +1 -1
  106. package/dist/{index-CNsGWfS6.d.cts → index-DXpgMVpp.d.ts} +7 -7
  107. package/dist/index-Dxpscrvz.d.ts +1 -1
  108. package/dist/{index-CYtsPztZ.d.cts → index-K2kNsOTw.d.cts} +31 -31
  109. package/dist/index-VHFMGkO-.d.cts +72 -0
  110. package/dist/index-aNW5V9fh.d.cts +749 -0
  111. package/dist/interceptors/index.cjs +2 -2
  112. package/dist/interceptors/index.d.cts +2 -2
  113. package/dist/interceptors/index.d.ts +1 -1
  114. package/dist/interceptors/index.js +2 -2
  115. package/dist/{jackArcher-mGkojXek.cjs → jackArcher-WtkbLBZj.cjs} +10 -10
  116. package/dist/{jackArcher-CXf_IAmC.js → jackArcher-sO9EbgrZ.js} +10 -10
  117. package/dist/{jordanCraig-Dv8pVCiS.cjs → jordanCraig-471FcgqF.cjs} +10 -10
  118. package/dist/{jordanCraig-BvCvPRoR.js → jordanCraig-DNOncplU.js} +10 -10
  119. package/dist/{kindredBravely-UQP7wiNu.cjs → kindredBravely-BlLyHGMX.cjs} +9 -9
  120. package/dist/{kindredBravely-X8F_LNph.js → kindredBravely-cqZ4OvXp.js} +9 -9
  121. package/dist/{kutFromTheKloth-BhYKk3CN.cjs → kutFromTheKloth-3mOIryvt.cjs} +10 -10
  122. package/dist/{kutFromTheKloth-D1xsTSJr.js → kutFromTheKloth-DtVNCMKa.js} +10 -10
  123. package/dist/{larryAndSerges-1411NuZa.cjs → larryAndSerges-88Bvq-Us.cjs} +7 -7
  124. package/dist/{larryAndSerges-DVIRLItu.js → larryAndSerges-cvak6May.js} +7 -7
  125. package/dist/{leapsAndRebounds-BJ8mwr33.js → leapsAndRebounds-Dmf8eUPq.js} +10 -10
  126. package/dist/{leapsAndRebounds-UcP9EJVO.cjs → leapsAndRebounds-iWKc923H.cjs} +10 -10
  127. package/dist/{longevityrx-Cp6wleWr.js → longevityrx-BTMI9vn-.js} +10 -10
  128. package/dist/{longevityrx-BFSv9GF5.cjs → longevityrx-CobPyigd.cjs} +10 -10
  129. package/dist/{lookOptic-KieSqskd.cjs → lookOptic-C4H_c0JZ.cjs} +10 -10
  130. package/dist/{lookOptic-BGhU4910.js → lookOptic-Jwf7EAU8.js} +10 -10
  131. package/dist/{mantraBrand-CHQw-0nw.cjs → mantraBrand-CySGqbn6.cjs} +10 -10
  132. package/dist/{mantraBrand-DrqG9uqO.js → mantraBrand-DoaVj837.js} +10 -10
  133. package/dist/{medterra-CLG6Co1C.cjs → medterra-BnZ5p27n.cjs} +10 -10
  134. package/dist/{medterra-D8ZX9NZC.js → medterra-DaICcPPp.js} +10 -10
  135. package/dist/{modells-CAfqOCW4.js → modells-CZ1L6dD_.js} +10 -10
  136. package/dist/{modells-BzyPwN2m.cjs → modells-DF0SndHr.cjs} +10 -10
  137. package/dist/{nodeSelector-BiCDowlK.d.ts → nodeSelector-DybpVr-i.d.ts} +1 -1
  138. package/dist/{nodeSelector-B3bPtEjX.d.cts → nodeSelector-vKB44CDB.d.cts} +1 -1
  139. package/dist/orgConfigResults-BL0XBA6x.d.cts +1 -1
  140. package/dist/{pressedFloral-DULBuQwR.cjs → pressedFloral-B3t2cYzs.cjs} +10 -10
  141. package/dist/{pressedFloral-Dp-7Fk3S.js → pressedFloral-Dsws2Kfb.js} +10 -10
  142. package/dist/{search-filter-types-BNTLVXqQ.d.cts → search-filter-types-9rTb3jMj.d.cts} +1 -1
  143. package/dist/{search-filter-types-DkmH1TxJ.d.ts → search-filter-types-C-zZSpGo.d.ts} +1 -1
  144. package/dist/{skinPerfection-Cd3XZ6By.cjs → skinPerfection-CILQM2bR.cjs} +10 -10
  145. package/dist/{skinPerfection-BxuYCeJX.js → skinPerfection-DmQCntRf.js} +10 -10
  146. package/dist/{snapSupplements-Bf6htPM0.js → snapSupplements--X_v0KRM.js} +10 -10
  147. package/dist/{snapSupplements-ZFnXyMuZ.cjs → snapSupplements-Djuzl0Ed.cjs} +10 -10
  148. package/dist/{spanx-Cyd4qDlK.cjs → spanx-Bo81yXSF.cjs} +11 -11
  149. package/dist/{spanx-CwDPQaGj.js → spanx-DauxB8KE.js} +11 -11
  150. package/dist/{spanxStaging-ijbYnHzr.cjs → spanxStaging-BucYQvR1.cjs} +11 -11
  151. package/dist/{spanxStaging-D43nyAGy.js → spanxStaging-CfXUukdP.js} +11 -11
  152. package/dist/{suggestionBarV2-types-Dc4-zJlV.cjs → suggestionBarV2-types-B3lwrENK.cjs} +1 -1
  153. package/dist/{suggestionBarV2-types-CwOXzIKq.js → suggestionBarV2-types-Penx3Y67.js} +1 -1
  154. package/dist/{supergoop-BnbFG7hm.cjs → supergoop-8qa_NV3F.cjs} +11 -11
  155. package/dist/{supergoop-CY043wIg.js → supergoop-DOaui-A6.js} +11 -11
  156. package/dist/types/index.cjs +2 -2
  157. package/dist/types/index.d.cts +1 -1
  158. package/dist/types/index.d.ts +1 -1
  159. package/dist/types/index.js +2 -2
  160. package/dist/types-CGC6Oozp.cjs +231 -0
  161. package/dist/types-CnTCkyvK.js +177 -0
  162. package/dist/{uniqueVintage-Cui74mlJ.js → uniqueVintage-BWkDgt1z.js} +10 -10
  163. package/dist/{uniqueVintage-R2Jcu1y1.cjs → uniqueVintage-DAne8XcL.cjs} +10 -10
  164. package/dist/{variant-CKVRF2-W.d.ts → variant-CC1nrywd.d.ts} +3 -3
  165. package/dist/{variant-raYuOP4L.d.cts → variant-CQTuQQSq.d.cts} +3 -3
  166. package/dist/{venaCbd-r-IxEVc1.cjs → venaCbd-B1HO_Pkr.cjs} +10 -10
  167. package/dist/{venaCbd-o5_vOp4e.js → venaCbd-CnByO-5R.js} +10 -10
  168. package/dist/{westonJonBoucher-C95EuCl-.js → westonJonBoucher-BAGXegsX.js} +10 -10
  169. package/dist/{westonJonBoucher-DjGEW3ZB.cjs → westonJonBoucher-BRfHWMbs.cjs} +10 -10
  170. package/dist/{wineEnthusiast-DvfcV5B3.cjs → wineEnthusiast-DW8JVwV8.cjs} +10 -10
  171. package/dist/{wineEnthusiast-DeTFY8Gm.js → wineEnthusiast-EJbhMeKQ.js} +10 -10
  172. package/dist/{wolfMattress-BjGnGKjP.cjs → wolfMattress-B6INZNRJ.cjs} +10 -10
  173. package/dist/{wolfMattress-6xPfOJt3.js → wolfMattress-D9P7ErH_.js} +10 -10
  174. package/dist/{wolfTactical-C_F9-oPX.js → wolfTactical-C5Pupi3J.js} +10 -10
  175. package/dist/{wolfTactical-Bi3WZu0m.cjs → wolfTactical-TMthZM93.cjs} +10 -10
  176. package/package.json +2 -1
  177. package/src/application/models/supportedOrgs.ts +1 -1
  178. package/src/application/service/graphqlConfigService.ts +59 -0
  179. package/src/application/service/index.ts +1 -0
  180. package/src/atoms/org/graphqlConfig.ts +14 -3
  181. package/src/atoms/org/index.ts +7 -7
  182. package/src/atoms/org/merchantCss.ts +5 -2
  183. package/src/atoms/org/org.ts +2 -42
  184. package/src/atoms/search/searchAPI.ts +52 -42
  185. package/src/hooks/index.ts +1 -3
  186. package/src/hooks/useDynamicVariants.ts +48 -32
  187. package/src/hooks/useFileUpload.ts +1 -1
  188. package/src/hooks/useHideElements.ts +21 -18
  189. package/src/hooks/useImageResolver.ts +16 -8
  190. package/src/hooks/useNewOrgConfig.ts +80 -0
  191. package/dist/contexts-CQDwe3rK.cjs +0 -14333
  192. package/dist/contexts-e2sM-B9g.js +0 -12919
  193. package/dist/default-LukSiCz1.js +0 -4
  194. package/dist/default-rJSJ887P.cjs +0 -4
  195. package/dist/index-BfuO9b0Q.d.ts +0 -749
  196. package/dist/types-BF_CJeck.js +0 -177
  197. package/dist/types-CNH4sfF-.cjs +0 -231
  198. package/src/hooks/useHorizontalScrollAnimation.ts +0 -115
  199. package/src/hooks/useReducedMotionWithOverride.ts +0 -15
  200. package/src/hooks/useSnapControl.ts +0 -155
  201. /package/dist/{locators-lQMJj830.cjs → locators-CugndTUM.cjs} +0 -0
  202. /package/dist/{locators-Dc5ZT0aF.js → locators-DnKpajbY.js} +0 -0
@@ -1,231 +0,0 @@
1
-
2
- //#region src/application/models/colorsConfig.ts
3
- var ColorNames = /* @__PURE__ */ function(ColorNames$1) {
4
- ColorNames$1["TextPrimary"] = "text-primary";
5
- ColorNames$1["TextSecondary"] = "text-secondary";
6
- ColorNames$1["TextAccent"] = "text-accent";
7
- ColorNames$1["TextLink"] = "text-link";
8
- ColorNames$1["TextLight"] = "text-light";
9
- ColorNames$1["BackgroundPrimary"] = "background-primary";
10
- ColorNames$1["BackgroundSecondary"] = "background-secondary";
11
- ColorNames$1["BackgroundSecondaryDark"] = "background-secondary-dark";
12
- ColorNames$1["BackgroundTertiary"] = "background-tertiary";
13
- ColorNames$1["BackgroundDark"] = "background-dark";
14
- ColorNames$1["BackgroundLight"] = "background-light";
15
- ColorNames$1["BackgroundSaturated"] = "background-saturated";
16
- ColorNames$1["BorderLight"] = "border-light";
17
- ColorNames$1["BorderMedium"] = "border-medium";
18
- ColorNames$1["BorderDark"] = "border-dark";
19
- ColorNames$1["BorderOutline"] = "border-outline";
20
- ColorNames$1["AccentPrimary"] = "accent-primary";
21
- ColorNames$1["AccentSecondary"] = "accent-secondary";
22
- return ColorNames$1;
23
- }(ColorNames || {});
24
- const colorVar = (color) => `var(--spiffy-colors-${color})`;
25
-
26
- //#endregion
27
- //#region src/application/models/orgsEnum.ts
28
- const OrgShortName = {
29
- Coterie: "coterie",
30
- ForLoveAndLemons: "for-love-and-lemons",
31
- Greenpan: "greenpan",
32
- JordanCraig: "jordan-craig",
33
- LarryAndSerges: "larry_and_serges",
34
- LeapsAndRebounds: "leaps-and-rebounds",
35
- MantraBrand: "mantra-brand",
36
- Spanx: "spanx",
37
- SpanxStaging: "staging-spanx",
38
- Supergoop: "supergoop",
39
- UniqueVintage: "unique-vintage",
40
- JackArcher: "jack-archer",
41
- SkinPerfection: "skin-perfection",
42
- LookOptic: "look-optic",
43
- FiveCbd: "five-cbd",
44
- SnapSupplements: "snap-supplements",
45
- Longevityrx: "longevityrx",
46
- VenaCbd: "vena-cbd",
47
- Medterra: "medterra",
48
- Modells: "modells",
49
- PressedFloral: "pressed-floral",
50
- KindredBravely: "kindred-bravely",
51
- WineEnthusiast: "wine-enthusiast",
52
- HomegrownCannabis: "homegrown-cannabis",
53
- DreamlandBaby: "dreamland-baby",
54
- Bandolier: "bandolier",
55
- WestonJonBoucher: "weston-jon-boucher",
56
- KutFromTheKloth: "kut-from-the-kloth",
57
- GrooveLife: "groove-life",
58
- Carpe: "carpe",
59
- WolfTactical: "wolf-tactical",
60
- WolfMattress: "wolfmattress",
61
- Default: "default"
62
- };
63
-
64
- //#endregion
65
- //#region src/application/models/supportedOrgs.ts
66
- const getOrgInfo = async (orgShortName) => {
67
- switch (orgShortName) {
68
- case OrgShortName.Bandolier: return Promise.resolve().then(() => require("./bandolier-B76-OE75.cjs")).then((module$1) => module$1.bandolierOrgInfo);
69
- case OrgShortName.Carpe: return Promise.resolve().then(() => require("./carpe-kHi4RLB5.cjs")).then((module$1) => module$1.carpeOrgInfo);
70
- case OrgShortName.Coterie: return Promise.resolve().then(() => require("./coterie-yQ-_JXSw.cjs")).then((module$1) => module$1.coterieOrgInfo);
71
- case OrgShortName.DreamlandBaby: return Promise.resolve().then(() => require("./dreamlandBaby-DHltv12Z.cjs")).then((module$1) => module$1.dreamlandBabyOrgInfo);
72
- case OrgShortName.ForLoveAndLemons: return Promise.resolve().then(() => require("./forLoveAndLemons-DR6a1zjJ.cjs")).then((module$1) => module$1.forLoveAndLemonsOrgInfo);
73
- case OrgShortName.Greenpan: return Promise.resolve().then(() => require("./greenpan-BL5p6j7f.cjs")).then((module$1) => module$1.greenpanOrgInfo);
74
- case OrgShortName.GrooveLife: return Promise.resolve().then(() => require("./grooveLife-DjKWHoN3.cjs")).then((module$1) => module$1.grooveLifeOrgInfo);
75
- case OrgShortName.JackArcher: return Promise.resolve().then(() => require("./jackArcher-mGkojXek.cjs")).then((module$1) => module$1.jackArcherOrgInfo);
76
- case OrgShortName.JordanCraig: return Promise.resolve().then(() => require("./jordanCraig-Dv8pVCiS.cjs")).then((module$1) => module$1.jordanCraigOrgInfo);
77
- case OrgShortName.KutFromTheKloth: return Promise.resolve().then(() => require("./kutFromTheKloth-BhYKk3CN.cjs")).then((module$1) => module$1.kutFromTheKlothOrgInfo);
78
- case OrgShortName.LarryAndSerges: return Promise.resolve().then(() => require("./larryAndSerges-1411NuZa.cjs")).then((module$1) => module$1.larryAndSergesOrgInfo);
79
- case OrgShortName.LeapsAndRebounds: return Promise.resolve().then(() => require("./leapsAndRebounds-UcP9EJVO.cjs")).then((module$1) => module$1.leapsAndReboundsOrgInfo);
80
- case OrgShortName.MantraBrand: return Promise.resolve().then(() => require("./mantraBrand-CHQw-0nw.cjs")).then((module$1) => module$1.mantraBrandOrgInfo);
81
- case OrgShortName.Spanx: return Promise.resolve().then(() => require("./spanx-Cyd4qDlK.cjs")).then((module$1) => module$1.spanxOrgInfo);
82
- case OrgShortName.SpanxStaging: return Promise.resolve().then(() => require("./spanxStaging-ijbYnHzr.cjs")).then((module$1) => module$1.spanxOrgInfo);
83
- case OrgShortName.Supergoop: return Promise.resolve().then(() => require("./supergoop-BnbFG7hm.cjs")).then((module$1) => module$1.supergoopOrgInfo);
84
- case OrgShortName.UniqueVintage: return Promise.resolve().then(() => require("./uniqueVintage-R2Jcu1y1.cjs")).then((module$1) => module$1.uniqueVintageOrgInfo);
85
- case OrgShortName.WestonJonBoucher: return Promise.resolve().then(() => require("./westonJonBoucher-DjGEW3ZB.cjs")).then((module$1) => module$1.westonJonBoucherOrgInfo);
86
- case OrgShortName.WolfMattress: return Promise.resolve().then(() => require("./wolfMattress-BjGnGKjP.cjs")).then((module$1) => module$1.wolfMattressOrgInfo);
87
- case OrgShortName.WolfTactical: return Promise.resolve().then(() => require("./wolfTactical-Bi3WZu0m.cjs")).then((module$1) => module$1.wolfTacticalOrgInfo);
88
- case OrgShortName.SkinPerfection: return Promise.resolve().then(() => require("./skinPerfection-Cd3XZ6By.cjs")).then((module$1) => module$1.skinPerfectionOrgInfo);
89
- case OrgShortName.LookOptic: return Promise.resolve().then(() => require("./lookOptic-KieSqskd.cjs")).then((module$1) => module$1.lookOpticOrgInfo);
90
- case OrgShortName.FiveCbd: return Promise.resolve().then(() => require("./fiveCbd-Cvnwh03g.cjs")).then((module$1) => module$1.fiveCbdOrgInfo);
91
- case OrgShortName.SnapSupplements: return Promise.resolve().then(() => require("./snapSupplements-ZFnXyMuZ.cjs")).then((module$1) => module$1.snapSupplementsOrgInfo);
92
- case OrgShortName.Longevityrx: return Promise.resolve().then(() => require("./longevityrx-BFSv9GF5.cjs")).then((module$1) => module$1.longevityrxOrgInfo);
93
- case OrgShortName.VenaCbd: return Promise.resolve().then(() => require("./venaCbd-r-IxEVc1.cjs")).then((module$1) => module$1.venaCbdOrgInfo);
94
- case OrgShortName.Medterra: return Promise.resolve().then(() => require("./medterra-CLG6Co1C.cjs")).then((module$1) => module$1.medterraOrgInfo);
95
- case OrgShortName.Modells: return Promise.resolve().then(() => require("./modells-BzyPwN2m.cjs")).then((module$1) => module$1.modellsOrgInfo);
96
- case OrgShortName.PressedFloral: return Promise.resolve().then(() => require("./pressedFloral-DULBuQwR.cjs")).then((module$1) => module$1.pressedFloralOrgInfo);
97
- case OrgShortName.KindredBravely: return Promise.resolve().then(() => require("./kindredBravely-UQP7wiNu.cjs")).then((module$1) => module$1.kindredBravelyOrgInfo);
98
- case OrgShortName.WineEnthusiast: return Promise.resolve().then(() => require("./wineEnthusiast-DvfcV5B3.cjs")).then((module$1) => module$1.wineEnthusiastOrgInfo);
99
- case OrgShortName.HomegrownCannabis: return Promise.resolve().then(() => require("./homegrownCannabis-ZnfCqW-m.cjs")).then((module$1) => module$1.homegrownCannabisOrgInfo);
100
- default: return Promise.resolve().then(() => require("./default-rJSJ887P.cjs")).then((module$1) => module$1.defaultOrgInfo);
101
- }
102
- };
103
-
104
- //#endregion
105
- //#region src/contexts/types.ts
106
- var CategoryExtractorType = /* @__PURE__ */ function(CategoryExtractorType$1) {
107
- CategoryExtractorType$1["VisitCategoryMap"] = "VisitCategoryMap";
108
- CategoryExtractorType$1["VisitCategoryDefault"] = "VisitCategoryDefault";
109
- return CategoryExtractorType$1;
110
- }(CategoryExtractorType || {});
111
- var PageVariantTestType = /* @__PURE__ */ function(PageVariantTestType$1) {
112
- PageVariantTestType$1["ShopifyPLP"] = "ShopifyPLP";
113
- PageVariantTestType$1["ShopifyPDP"] = "ShopifyPDP";
114
- PageVariantTestType$1["PageCategory"] = "PageCategory";
115
- PageVariantTestType$1["CatalogCategory"] = "CatalogCategory";
116
- PageVariantTestType$1["TopCatalogCategory"] = "TopCatalogCategory";
117
- PageVariantTestType$1["HasReviews"] = "HasReviews";
118
- PageVariantTestType$1["InCollection"] = "InCollection";
119
- PageVariantTestType$1["HasMerchantTag"] = "HasMerchantTag";
120
- PageVariantTestType$1["FeatureGate"] = "FeatureGate";
121
- PageVariantTestType$1["PlpId"] = "PlpId";
122
- PageVariantTestType$1["QueryParam"] = "QueryParam";
123
- PageVariantTestType$1["ProductId"] = "ProductId";
124
- PageVariantTestType$1["UserHasInteracted"] = "UserHasInteracted";
125
- PageVariantTestType$1["UserHasNotInteracted"] = "UserHasNotInteracted";
126
- PageVariantTestType$1["isLoading"] = "isLoading";
127
- PageVariantTestType$1["isProductComparison"] = "isProductComparison";
128
- PageVariantTestType$1["Fallback"] = "Fallback";
129
- PageVariantTestType$1["UrlResolver"] = "UrlResolver";
130
- PageVariantTestType$1["Null"] = "null";
131
- return PageVariantTestType$1;
132
- }(PageVariantTestType || {});
133
- var WidgetType = /* @__PURE__ */ function(WidgetType$1) {
134
- WidgetType$1["ChatPreview"] = "ChatPreview";
135
- WidgetType$1["SocialProofV2"] = "SocialProofV2";
136
- WidgetType$1["ChatPreviewV2"] = "ChatPreviewV2";
137
- WidgetType$1["ChatPreviewIsLoading"] = "ChatPreviewIsLoading";
138
- WidgetType$1["ChatPreviewPostInteraction"] = "ChatPreviewPostInteraction";
139
- WidgetType$1["ChatPreviewProductComparison"] = "ChatPreviewProductComparison";
140
- WidgetType$1["SuggestionBar"] = "SuggestionBar";
141
- WidgetType$1["SuggestionBarV2"] = "SuggestionBarV2";
142
- WidgetType$1["ImagePromptCard"] = "ImagePromptCard";
143
- WidgetType$1["ImageBanner"] = "ImageBanner";
144
- WidgetType$1["SingleImagePrompt"] = "SingleImagePrompt";
145
- WidgetType$1["SearchPrompt"] = "SearchPrompt";
146
- WidgetType$1["SearchZeroStateEntryPoint"] = "SearchZeroStateEntryPoint";
147
- WidgetType$1["SearchResultsEntryPoint"] = "SearchResultsEntryPoint";
148
- WidgetType$1["SearchOverlayHost"] = "SearchOverlayHost";
149
- WidgetType$1["NoOp"] = "NoOp";
150
- return WidgetType$1;
151
- }(WidgetType || {});
152
-
153
- //#endregion
154
- //#region src/application/service/customerService/types.ts
155
- let CustomerServiceType = /* @__PURE__ */ function(CustomerServiceType$1) {
156
- CustomerServiceType$1["shopify"] = "shopify";
157
- CustomerServiceType$1["gorgias"] = "gorgias";
158
- CustomerServiceType$1["kustomer"] = "kustomer";
159
- CustomerServiceType$1["groove"] = "groove";
160
- CustomerServiceType$1["tidio"] = "tidio";
161
- CustomerServiceType$1["zowie"] = "zowie";
162
- CustomerServiceType$1["redo"] = "redo";
163
- CustomerServiceType$1["gladly"] = "gladly";
164
- CustomerServiceType$1["richpanel"] = "richpanel";
165
- CustomerServiceType$1["zendesk"] = "zendesk";
166
- CustomerServiceType$1["unsupported"] = "unsupported";
167
- return CustomerServiceType$1;
168
- }({});
169
- let CustomerServiceIntegrationMode = /* @__PURE__ */ function(CustomerServiceIntegrationMode$1) {
170
- CustomerServiceIntegrationMode$1["none"] = "none";
171
- CustomerServiceIntegrationMode$1["simple"] = "simple";
172
- CustomerServiceIntegrationMode$1["full"] = "full";
173
- return CustomerServiceIntegrationMode$1;
174
- }({});
175
-
176
- //#endregion
177
- Object.defineProperty(exports, 'CategoryExtractorType', {
178
- enumerable: true,
179
- get: function () {
180
- return CategoryExtractorType;
181
- }
182
- });
183
- Object.defineProperty(exports, 'ColorNames', {
184
- enumerable: true,
185
- get: function () {
186
- return ColorNames;
187
- }
188
- });
189
- Object.defineProperty(exports, 'CustomerServiceIntegrationMode', {
190
- enumerable: true,
191
- get: function () {
192
- return CustomerServiceIntegrationMode;
193
- }
194
- });
195
- Object.defineProperty(exports, 'CustomerServiceType', {
196
- enumerable: true,
197
- get: function () {
198
- return CustomerServiceType;
199
- }
200
- });
201
- Object.defineProperty(exports, 'OrgShortName', {
202
- enumerable: true,
203
- get: function () {
204
- return OrgShortName;
205
- }
206
- });
207
- Object.defineProperty(exports, 'PageVariantTestType', {
208
- enumerable: true,
209
- get: function () {
210
- return PageVariantTestType;
211
- }
212
- });
213
- Object.defineProperty(exports, 'WidgetType', {
214
- enumerable: true,
215
- get: function () {
216
- return WidgetType;
217
- }
218
- });
219
- Object.defineProperty(exports, 'colorVar', {
220
- enumerable: true,
221
- get: function () {
222
- return colorVar;
223
- }
224
- });
225
- Object.defineProperty(exports, 'getOrgInfo', {
226
- enumerable: true,
227
- get: function () {
228
- return getOrgInfo;
229
- }
230
- });
231
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMtQ05INHNmRi0uY2pzIiwibmFtZXMiOlsibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9jb2xvcnNDb25maWcudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL29yZ3NFbnVtLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9zdXBwb3J0ZWRPcmdzLnRzIiwiLi4vc3JjL2NvbnRleHRzL3R5cGVzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvY3VzdG9tZXJTZXJ2aWNlL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImVudW0gQ29sb3JOYW1lcyB7XG4gIFRleHRQcmltYXJ5ID0gJ3RleHQtcHJpbWFyeScsXG4gIFRleHRTZWNvbmRhcnkgPSAndGV4dC1zZWNvbmRhcnknLFxuICBUZXh0QWNjZW50ID0gJ3RleHQtYWNjZW50JyxcbiAgVGV4dExpbmsgPSAndGV4dC1saW5rJyxcbiAgVGV4dExpZ2h0ID0gJ3RleHQtbGlnaHQnLFxuICBCYWNrZ3JvdW5kUHJpbWFyeSA9ICdiYWNrZ3JvdW5kLXByaW1hcnknLFxuICBCYWNrZ3JvdW5kU2Vjb25kYXJ5ID0gJ2JhY2tncm91bmQtc2Vjb25kYXJ5JyxcbiAgQmFja2dyb3VuZFNlY29uZGFyeURhcmsgPSAnYmFja2dyb3VuZC1zZWNvbmRhcnktZGFyaycsXG4gIEJhY2tncm91bmRUZXJ0aWFyeSA9ICdiYWNrZ3JvdW5kLXRlcnRpYXJ5JyxcbiAgQmFja2dyb3VuZERhcmsgPSAnYmFja2dyb3VuZC1kYXJrJyxcbiAgQmFja2dyb3VuZExpZ2h0ID0gJ2JhY2tncm91bmQtbGlnaHQnLFxuICBCYWNrZ3JvdW5kU2F0dXJhdGVkID0gJ2JhY2tncm91bmQtc2F0dXJhdGVkJyxcbiAgQm9yZGVyTGlnaHQgPSAnYm9yZGVyLWxpZ2h0JyxcbiAgQm9yZGVyTWVkaXVtID0gJ2JvcmRlci1tZWRpdW0nLFxuICBCb3JkZXJEYXJrID0gJ2JvcmRlci1kYXJrJyxcbiAgQm9yZGVyT3V0bGluZSA9ICdib3JkZXItb3V0bGluZScsXG4gIEFjY2VudFByaW1hcnkgPSAnYWNjZW50LXByaW1hcnknLFxuICBBY2NlbnRTZWNvbmRhcnkgPSAnYWNjZW50LXNlY29uZGFyeScsXG59XG5cbnR5cGUgQ29sb3JNYXBwaW5nID0ge1xuICBba2V5IGluIENvbG9yTmFtZXNdOiBzdHJpbmc7XG59O1xuXG5jb25zdCBjb2xvclZhciA9IChjb2xvcjogQ29sb3JOYW1lcyk6IHN0cmluZyA9PiBgdmFyKC0tc3BpZmZ5LWNvbG9ycy0ke2NvbG9yfSlgO1xuZXhwb3J0IHsgQ29sb3JOYW1lcywgY29sb3JWYXIgfTtcbmV4cG9ydCB0eXBlIHsgQ29sb3JNYXBwaW5nIH07XG4iLCJleHBvcnQgY29uc3QgT3JnU2hvcnROYW1lID0ge1xuICBDb3RlcmllOiAnY290ZXJpZScsXG4gIEZvckxvdmVBbmRMZW1vbnM6ICdmb3ItbG92ZS1hbmQtbGVtb25zJyxcbiAgR3JlZW5wYW46ICdncmVlbnBhbicsXG4gIEpvcmRhbkNyYWlnOiAnam9yZGFuLWNyYWlnJyxcbiAgTGFycnlBbmRTZXJnZXM6ICdsYXJyeV9hbmRfc2VyZ2VzJyxcbiAgTGVhcHNBbmRSZWJvdW5kczogJ2xlYXBzLWFuZC1yZWJvdW5kcycsXG4gIE1hbnRyYUJyYW5kOiAnbWFudHJhLWJyYW5kJyxcbiAgU3Bhbng6ICdzcGFueCcsXG4gIFNwYW54U3RhZ2luZzogJ3N0YWdpbmctc3BhbngnLFxuICBTdXBlcmdvb3A6ICdzdXBlcmdvb3AnLFxuICBVbmlxdWVWaW50YWdlOiAndW5pcXVlLXZpbnRhZ2UnLFxuICBKYWNrQXJjaGVyOiAnamFjay1hcmNoZXInLFxuICAvKiAtLSBCZWxvdyBpdGVtcyBhcmUgZ2VuZXJhdGVkIGJ5IHBsb3AgLS0gKi9cbiAgU2tpblBlcmZlY3Rpb246ICdza2luLXBlcmZlY3Rpb24nLFxuICBMb29rT3B0aWM6ICdsb29rLW9wdGljJyxcbiAgRml2ZUNiZDogJ2ZpdmUtY2JkJyxcbiAgU25hcFN1cHBsZW1lbnRzOiAnc25hcC1zdXBwbGVtZW50cycsXG4gIExvbmdldml0eXJ4OiAnbG9uZ2V2aXR5cngnLFxuICBWZW5hQ2JkOiAndmVuYS1jYmQnLFxuICBNZWR0ZXJyYTogJ21lZHRlcnJhJyxcbiAgTW9kZWxsczogJ21vZGVsbHMnLFxuICBQcmVzc2VkRmxvcmFsOiAncHJlc3NlZC1mbG9yYWwnLFxuICBLaW5kcmVkQnJhdmVseTogJ2tpbmRyZWQtYnJhdmVseScsXG4gIFdpbmVFbnRodXNpYXN0OiAnd2luZS1lbnRodXNpYXN0JyxcbiAgSG9tZWdyb3duQ2FubmFiaXM6ICdob21lZ3Jvd24tY2FubmFiaXMnLFxuICBEcmVhbWxhbmRCYWJ5OiAnZHJlYW1sYW5kLWJhYnknLFxuICBCYW5kb2xpZXI6ICdiYW5kb2xpZXInLFxuICBXZXN0b25Kb25Cb3VjaGVyOiAnd2VzdG9uLWpvbi1ib3VjaGVyJyxcbiAgS3V0RnJvbVRoZUtsb3RoOiAna3V0LWZyb20tdGhlLWtsb3RoJyxcbiAgR3Jvb3ZlTGlmZTogJ2dyb292ZS1saWZlJyxcbiAgQ2FycGU6ICdjYXJwZScsXG4gIFdvbGZUYWN0aWNhbDogJ3dvbGYtdGFjdGljYWwnLFxuICBXb2xmTWF0dHJlc3M6ICd3b2xmbWF0dHJlc3MnLFxuICBEZWZhdWx0OiAnZGVmYXVsdCcsXG59IGFzIGNvbnN0O1xuIiwiaW1wb3J0IHsgT3JnU2hvcnROYW1lIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvb3Jnc0VudW1cIjtcbmltcG9ydCB7IENvbG9yTWFwcGluZywgT3JnUGFnZUNvbmZpZywgT3JnVUlDb25maWcgfSBmcm9tIFwic3JjL2NvbnRleHRzL3R5cGVzXCI7XG5cbmV4cG9ydCB7IE9yZ1Nob3J0TmFtZSB9IGZyb20gXCIuL29yZ3NFbnVtXCI7XG5cbmV4cG9ydCB0eXBlIEJhc2ljT3JnSW5mb1R5cGUgPSB7XG4gIHNob3J0TmFtZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRvbWFpbjogc3RyaW5nO1xuICBkZWZhdWx0UHJvZHVjdElkOiBzdHJpbmc7XG4gIGFsd2F5c0VuYWJsZWRNZXJjaGFudHM6IGJvb2xlYW47XG4gIG9yZ1VJQ29uZmlnOiAoKSA9PiBPcmdVSUNvbmZpZyB8IHVuZGVmaW5lZDtcbiAgb3JnUGFnZUNvbmZpZzogKCkgPT4gT3JnUGFnZUNvbmZpZztcbiAgb3JnQ29sb3JzOiAoKSA9PiBDb2xvck1hcHBpbmcgfCB7fTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmdJbmZvID0gYXN5bmMgKFxuICBvcmdTaG9ydE5hbWU6IHN0cmluZ1xuKTogUHJvbWlzZTxCYXNpY09yZ0luZm9UeXBlPiA9PiB7XG4gIHN3aXRjaCAob3JnU2hvcnROYW1lKSB7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuQmFuZG9saWVyOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvYmFuZG9saWVyL2JhbmRvbGllclwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUuYmFuZG9saWVyT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5DYXJwZTpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL2NhcnBlL2NhcnBlXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5jYXJwZU9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuQ290ZXJpZTpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL2NvdGVyaWUvY290ZXJpZVwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUuY290ZXJpZU9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuRHJlYW1sYW5kQmFieTpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL2RyZWFtbGFuZEJhYnkvZHJlYW1sYW5kQmFieVwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUuZHJlYW1sYW5kQmFieU9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuRm9yTG92ZUFuZExlbW9uczpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL2ZvckxvdmVBbmRMZW1vbnMvZm9yTG92ZUFuZExlbW9uc1wiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUuZm9yTG92ZUFuZExlbW9uc09yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuR3JlZW5wYW46XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9ncmVlbnBhbi9ncmVlbnBhblwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUuZ3JlZW5wYW5PcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkdyb292ZUxpZmU6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9ncm9vdmVMaWZlL2dyb292ZUxpZmVcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmdyb292ZUxpZmVPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkphY2tBcmNoZXI6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9qYWNrQXJjaGVyL2phY2tBcmNoZXJcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmphY2tBcmNoZXJPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkpvcmRhbkNyYWlnOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvam9yZGFuQ3JhaWcvam9yZGFuQ3JhaWdcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmpvcmRhbkNyYWlnT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5LdXRGcm9tVGhlS2xvdGg6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9rdXRGcm9tVGhlS2xvdGgva3V0RnJvbVRoZUtsb3RoXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5rdXRGcm9tVGhlS2xvdGhPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkxhcnJ5QW5kU2VyZ2VzOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvbGFycnlBbmRTZXJnZXMvbGFycnlBbmRTZXJnZXNcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmxhcnJ5QW5kU2VyZ2VzT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5MZWFwc0FuZFJlYm91bmRzOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvbGVhcHNBbmRSZWJvdW5kcy9sZWFwc0FuZFJlYm91bmRzXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5sZWFwc0FuZFJlYm91bmRzT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5NYW50cmFCcmFuZDpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL21hbnRyYUJyYW5kL21hbnRyYUJyYW5kXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5tYW50cmFCcmFuZE9yZ0luZm9cbiAgICAgICk7XG5cbiAgICAvLyAtLS0tIFNQQU5YIC0tLS1cbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5TcGFueDpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL3NwYW54L3NwYW54XCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5zcGFueE9yZ0luZm9cbiAgICAgICk7XG4gICAgLy8gU3Bhbnggc3RhZ2luZyAoaGVhZGxlc3Mgc2hvcGlmeSlcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5TcGFueFN0YWdpbmc6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9zcGFueC9zcGFueFN0YWdpbmdcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLnNwYW54T3JnSW5mb1xuICAgICAgKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS1cblxuICAgIGNhc2UgT3JnU2hvcnROYW1lLlN1cGVyZ29vcDpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL3N1cGVyZ29vcC9zdXBlcmdvb3BcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLnN1cGVyZ29vcE9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuVW5pcXVlVmludGFnZTpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL3VuaXF1ZVZpbnRhZ2UvdW5pcXVlVmludGFnZVwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUudW5pcXVlVmludGFnZU9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuV2VzdG9uSm9uQm91Y2hlcjpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL3dlc3RvbkpvbkJvdWNoZXIvd2VzdG9uSm9uQm91Y2hlclwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUud2VzdG9uSm9uQm91Y2hlck9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuV29sZk1hdHRyZXNzOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvd29sZk1hdHRyZXNzL3dvbGZNYXR0cmVzc1wiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUud29sZk1hdHRyZXNzT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5Xb2xmVGFjdGljYWw6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy93b2xmVGFjdGljYWwvd29sZlRhY3RpY2FsXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS53b2xmVGFjdGljYWxPcmdJbmZvXG4gICAgICApO1xuICAgIC8qIC0tIEJlbG93IGl0ZW1zIGFyZSBnZW5lcmF0ZWQgYnkgcGxvcCAtLSAqL1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLlNraW5QZXJmZWN0aW9uOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvc2tpblBlcmZlY3Rpb24vc2tpblBlcmZlY3Rpb25cIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLnNraW5QZXJmZWN0aW9uT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5Mb29rT3B0aWM6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9sb29rT3B0aWMvbG9va09wdGljXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5sb29rT3B0aWNPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkZpdmVDYmQ6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9maXZlQ2JkL2ZpdmVDYmRcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmZpdmVDYmRPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLlNuYXBTdXBwbGVtZW50czpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL3NuYXBTdXBwbGVtZW50cy9zbmFwU3VwcGxlbWVudHNcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLnNuYXBTdXBwbGVtZW50c09yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuTG9uZ2V2aXR5cng6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9sb25nZXZpdHlyeC9sb25nZXZpdHlyeFwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUubG9uZ2V2aXR5cnhPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLlZlbmFDYmQ6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy92ZW5hQ2JkL3ZlbmFDYmRcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLnZlbmFDYmRPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLk1lZHRlcnJhOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvbWVkdGVycmEvbWVkdGVycmFcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLm1lZHRlcnJhT3JnSW5mb1xuICAgICAgKTtcblxuICAgIGNhc2UgT3JnU2hvcnROYW1lLk1vZGVsbHM6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9tb2RlbGxzL21vZGVsbHNcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLm1vZGVsbHNPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLlByZXNzZWRGbG9yYWw6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9wcmVzc2VkRmxvcmFsL3ByZXNzZWRGbG9yYWxcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLnByZXNzZWRGbG9yYWxPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLktpbmRyZWRCcmF2ZWx5OlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMva2luZHJlZEJyYXZlbHkva2luZHJlZEJyYXZlbHlcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmtpbmRyZWRCcmF2ZWx5T3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5XaW5lRW50aHVzaWFzdDpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL3dpbmVFbnRodXNpYXN0L3dpbmVFbnRodXNpYXN0XCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS53aW5lRW50aHVzaWFzdE9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuSG9tZWdyb3duQ2FubmFiaXM6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9ob21lZ3Jvd25DYW5uYWJpcy9ob21lZ3Jvd25DYW5uYWJpc1wiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUuaG9tZWdyb3duQ2FubmFiaXNPcmdJbmZvXG4gICAgICApO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9kZWZhdWx0XCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5kZWZhdWx0T3JnSW5mb1xuICAgICAgKTtcbiAgfVxufTtcbiIsImltcG9ydCB7IENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25cIjtcbmltcG9ydCB7XG4gIENvbG9yTWFwcGluZyxcbiAgQ29sb3JOYW1lcyxcbiAgY29sb3JWYXIsXG59IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbG9yc0NvbmZpZ1wiO1xuaW1wb3J0IHsgRmVhdHVyZUdhdGVzIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZmVhdHVyZUdhdGVzXCI7XG5pbXBvcnQge1xuICBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbk1vZGUsXG4gIEN1c3RvbWVyU2VydmljZVR5cGUsXG59IGZyb20gXCJzcmMvYXBwbGljYXRpb24vc2VydmljZS9jdXN0b21lclNlcnZpY2UvdHlwZXNcIjtcbmltcG9ydCB7IEdyaWRJbnNlcnRpb25UeXBlIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2RvbU11dGF0aW9ucy9HcmlkSW5zZXJ0aW9uU2VydmljZVwiO1xuaW1wb3J0IHsgRE9NSW5zZXJ0aW9uVHlwZSB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vc2VydmljZS9kb21NdXRhdGlvbnMvZG9tSW5zZXJ0aW9uU2VydmljZVwiO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFBhZ2VWaXNpdENhdGVnb3J5LFxuICBTdXBwb3J0ZWRFdmVudFByb2R1Y3RDYXRlZ29yeSxcbn0gZnJvbSBcIkBzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudFwiO1xuaW1wb3J0IHsgQ2hhdFN0YXRlIH0gZnJvbSBcInNyYy90eXBlcy9jdXN0c2VydmljZS10eXBlc1wiO1xuaW1wb3J0IHsgU3VnZ2VzdGlvbkJhckxvY2F0aW9uRm9yTWV0cmljcyB9IGZyb20gXCJzcmMvdHlwZXMvc3VnZ2VzdGlvbkJhclYyLXR5cGVzXCI7XG5pbXBvcnQgeyBUZXN0UHJvcHMgfSBmcm9tIFwic3JjL3R5cGVzL3Rlc3QtdHlwZXNcIjtcblxudHlwZSBTaG93RmxvYXRpbmdCdXR0b25PcHRpb25zID1cbiAgfCBcImFsd2F5c1wiXG4gIHwgXCJhZnRlci1pbnRlcmFjdGlvbi1vbi1tb2JpbGUtYWx3YXlzLWRlc2t0b3BcIlxuICB8IFwiYWZ0ZXItaW50ZXJhY3Rpb24tYW55d2hlcmVcIlxuICB8IFwibmV2ZXJcIjtcblxudHlwZSBGbG9hdGluZ0VudHJ5UG9pbnRDb25maWcgPSB7XG4gIHBvc2l0aW9uOiBcImJvdHRvbS1sZWZ0XCIgfCBcIm1pZGRsZS1sZWZ0XCIgfCBcIm1pZGRsZS1yaWdodFwiIHwgXCJib3R0b20tcmlnaHRcIjtcbiAgZXhwYW5zaW9uVGV4dD86IHtcbiAgICBwZHA6IHN0cmluZztcbiAgICBwbHA6IHN0cmluZztcbiAgfTtcbiAgbWluaW1pemVkQ29sb3I6IHN0cmluZztcbiAgZXhwYW5kZWRDb2xvcjogc3RyaW5nO1xuICB0ZXh0Q29sb3I/OiBzdHJpbmc7XG4gIHNob3dPcHRpb246IFNob3dGbG9hdGluZ0J1dHRvbk9wdGlvbnM7XG4gIGljb25TVkdTcmM/OiBzdHJpbmc7XG4gIGljb25TaXplPzogbnVtYmVyO1xuICBpY29uU3Ryb2tlQ29sb3I/OiBzdHJpbmc7XG4gIGljb25GaWxsQ29sb3I/OiBzdHJpbmc7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgZm9udFNpemU/OiBudW1iZXI7XG59O1xuXG50eXBlIFdlbGNvbWVTZWN0aW9uVmFyaWFudCA9IFwic3RhbmRhcmRcIiB8IFwib3V0bGluZWRcIjtcblxudHlwZSBXZWxjb21lU2VjdGlvbkNvbG9yVmFyaWFudCA9IFwic3RhbmRhcmRcIiB8IFwiYWNjZW50XCIgfCBcImJyYW5kXCIgfCBcImxpZ2h0XCI7XG5cbnR5cGUgV2VsY29tZVNlY3Rpb25Db25maWcgPSB7XG4gIHZhcmlhbnQ6IFdlbGNvbWVTZWN0aW9uVmFyaWFudDtcbiAgY29sb3JWYXJpYW50PzogV2VsY29tZVNlY3Rpb25Db2xvclZhcmlhbnQ7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBzdWJ0aXRsZT86IHN0cmluZztcbiAgLy8gaWNvbj86IFJlYWN0LkZ1bmN0aW9uQ29tcG9uZW50PFJlYWN0LlNWR1Byb3BzPFNWR1NWR0VsZW1lbnQ+PjtcbiAgLyogU2VyaWFsaXphYmxlIGljb24gbmFtZSB0aGF0IG1hcHMgdG8gYSBSZWFjdCBjb21wb25lbnQuIFByZWZlcnJlZCBvdmVyIGljb24gZm9yIGRhdGFiYXNlIHN0b3JhZ2UuICovXG4gIGljb25OYW1lPzogc3RyaW5nO1xuICBpbWFnZVNyYz86IHN0cmluZztcbn07XG5cbnR5cGUgQ2hhdFByZXZpZXdDb25maWcgPSB7XG4gIHZhcmlhbnQ6IFwiZmxhdFwiIHwgXCJmaWxsZWRcIiB8IFwib3V0bGluZWRcIjtcbiAgbGFyZ2VQcm9kdWN0Q29tcGFyaXNvbj86IGJvb2xlYW47XG4gIGZpbGxlZEJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICBpY29uRmlsbENvbG9yOiBzdHJpbmc7XG4gIGJ1dHRvblRleHRDb2xvcj86IHN0cmluZztcbiAgYnV0dG9uVGV4dFNlY29uZGFyeUNvbG9yPzogc3RyaW5nO1xuICBidXR0b25UZXh0SG92ZXJDb2xvcj86IHN0cmluZztcbiAgYnV0dG9uQmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIGJ1dHRvbkJhY2tncm91bmRIb3ZlckNvbG9yOiBzdHJpbmc7XG4gIGJ1dHRvbkJvcmRlckNvbG9yPzogc3RyaW5nO1xuICBidXR0b25Cb3JkZXJIb3ZlckNvbG9yPzogc3RyaW5nO1xuICBjb3BpZXM6IHsgcGRwOiBzdHJpbmdbXTsgcGxwOiBzdHJpbmdbXSB9O1xuICBzdGF0aWNTdWdnZXN0aW9uQ29waWVzPzogeyBwZHA6IHN0cmluZ1tdOyBwbHA6IHN0cmluZ1tdIH07XG4gIHN0YXRpY1BMUEltYWdlcz86IHN0cmluZ1tdO1xuICBmb290ZXJDb25maWc/OiBDaGF0UHJldmlld0Zvb3RlckNvbmZpZztcbiAgaGVhZGVyQ29uZmlnPzogQ2hhdFByZXZpZXdIZWFkZXJDb25maWc7XG4gIHRvcE1hcmdpbj86IG51bWJlcjtcbn07XG5cbnR5cGUgQ2hhdFByZXZpZXdIZWFkZXJDb25maWcgPSB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBpbWFnZVNyYz86IHN0cmluZztcbiAgaW1hZ2VIZWlnaHQ/OiBudW1iZXI7XG4gIHNwYXJrbGVzQ29sb3I/OiBzdHJpbmc7IC8vIHVzZWQgYnk6IHNwYW54LCB1bmlxdWVWaW50YWdlLCBkcmVhbWxhbmRCYWJ5XG4gIGZvbnRTaXplPzogc3RyaW5nO1xuICBpY29uV2lkdGg/OiBzdHJpbmc7XG4gIGljb25IZWlnaHQ/OiBzdHJpbmc7XG59O1xuXG5pbnRlcmZhY2UgQ2hhdFByZXZpZXdGb290ZXJDb25maWcge1xuICBoYXNGYWRlPzogYm9vbGVhbjsgLy8gdXNlZCBieTogc3BhbngsIHVuaXF1ZVZpbnRhZ2VcbiAgc3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ/OiBcImRhcmtcIiB8IFwibGlnaHRcIiB8IFwib3V0bGluZWRcIjtcbiAgc3VnZ2VzdGlvbnNCYWNrZ3JvdW5kPzogc3RyaW5nOyAvLyB1c2VkIGJ5OiBjYXJiYWhuXG4gIHJlcGx5QnV0dG9uSWNvbj86XG4gICAgfCBcInNlbmRcIlxuICAgIHwgXCJtYWduaWZ5aW5nR2xhc3NcIlxuICAgIHwgXCJ0aGluTWFnbmlmeWluZ0dsYXNzXCJcbiAgICB8IFwic2VhcmNoSWNvblwiO1xuICByZXBseUJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gIHJlcGx5SW5wdXRIYXNTaGFkb3c/OiBib29sZWFuOyAvLyB1c2VkIGJ5OiBzcGFueFxuICByZXBseUlucHV0SGFzQm9yZGVyPzogYm9vbGVhbjsgLy8gdXNlZCBieTogc3BhbnhcbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nOyAvLyB1c2VkIGJ5IHNwYW54LCB0dXNoYmFieSwgd2lsbCBuZWVkIGN1c3RvbSBDU1Mgd2hlbiBzd2l0Y2hpbmcgb3ZlclxufVxuXG50eXBlIFByb2R1Y3RSZXZpZXdTdHlsZVZhcmlhbnQgPSBcInN0YW5kYXJkXCIgfCBcImJvcmRlcmVkXCI7XG5cbnR5cGUgUHJvZHVjdFJldmlld0NvbG9yVmFyaWFudCA9IFwibmV1dHJhbFwiIHwgXCJicmFuZFwiIHwgXCJwcmVtaXVtXCI7XG5cbmludGVyZmFjZSBQcm9kdWN0UmV2aWV3Q29uZmlnIHtcbiAgc3R5bGVWYXJpYW50OiBQcm9kdWN0UmV2aWV3U3R5bGVWYXJpYW50O1xuICBjb2xvclZhcmlhbnQ6IFByb2R1Y3RSZXZpZXdDb2xvclZhcmlhbnQ7XG4gIHZlcmlmaWVkQnV5ZXJUaXRsZTogc3RyaW5nO1xuICBpbmNlbnRpdml6ZWRSZXZpZXdGbGFnPzogYm9vbGVhbjtcbn1cblxudHlwZSBQYWdlQ2FyZFZhcmlhbnQgPSBcImZpbGxlZFwiIHwgXCJvdXRsaW5lZFwiIHwgXCJtaW5pbWFsXCI7XG5cbnR5cGUgUGFnZUNhcmRIb3ZlclZhcmlhbnQgPSBcIm5vbmVcIiB8IFwic2hhZG93XCIgfCBcImxpZnRcIjtcblxudHlwZSBQYWdlQ2FyZEljb25WYXJpYW50ID0gXCJwcmltYXJ5XCIgfCBcImFjY2VudFwiIHwgXCJiYWNrZ3JvdW5kXCIgfCBcIm5vbmVcIjtcblxudHlwZSBQYWdlQ2FyZENvbmZpZyA9IHtcbiAgdmFyaWFudDogUGFnZUNhcmRWYXJpYW50O1xuICBob3ZlclZhcmlhbnQ6IFBhZ2VDYXJkSG92ZXJWYXJpYW50O1xuICBpY29uVmFyaWFudDogUGFnZUNhcmRJY29uVmFyaWFudDtcbn07XG5cbnR5cGUgUHJvZHVjdENhcmRWYXJpYW50ID1cbiAgfCBcImZpbGxlZFwiXG4gIHwgXCJib3JkZXJlZFwiXG4gIHwgXCJtaW5pbWFsXCJcbiAgfCBcInRyYW5zcGFyZW50Qm9yZGVyZWRcIjtcblxudHlwZSBQcm9kdWN0Q2FyZEhvdmVyVmFyaWFudCA9IFwiYmFja2dyb3VuZERhcmtcIiB8IFwibm9uZVwiO1xuXG50eXBlIFByb2R1Y3RDYXJkTGF5b3V0VmFyaWFudCA9IFwibm9ybWFsXCIgfCBcInRhbGxcIiB8IFwic3F1YXJlXCI7XG5cbmludGVyZmFjZSBQcm9kdWN0Q2FyZENvbmZpZyB7XG4gIHZhcmlhbnQ6IFByb2R1Y3RDYXJkVmFyaWFudDtcbiAgaG92ZXJWYXJpYW50OiBQcm9kdWN0Q2FyZEhvdmVyVmFyaWFudDtcbiAgbGF5b3V0VmFyaWFudDogUHJvZHVjdENhcmRMYXlvdXRWYXJpYW50O1xuICBwcmljZVByZWZpeD86IHN0cmluZztcbn1cblxudHlwZSBDU1N3aXRjaENvbmZpZyA9IHtcbiAgdmFyaWFudDogXCJhdHRhY2hlZFwiIHwgXCJkZXRhY2hlZFwiO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgYm9yZGVyQ29sb3I6IHN0cmluZztcbiAgc2VsZWN0ZWRUZXh0Q29sb3I6IHN0cmluZztcbiAgc2VsZWN0ZWRCYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIHVuc2VsZWN0ZWRUZXh0Q29sb3I6IHN0cmluZztcbiAgdW5zZWxlY3RlZEJhY2tncm91bmRDb2xvcj86IHN0cmluZztcbiAgc3VwcG9ydFRpdGxlPzogc3RyaW5nO1xuICBzcGlmZnlUaXRsZT86IHN0cmluZztcbiAgc3BpZmZ5VGl0bGVIYXNMb2dvPzogYm9vbGVhbjtcbn07XG5cbnR5cGUgQ2hhdEhlYWRlckNvbmZpZyA9IHtcbiAgY29sbGFwc2VkQ29sb3I6IHN0cmluZztcbiAgZXhwYW5kZWRDb2xvcjogc3RyaW5nO1xuICBjaGV2cm9uQ29sb3I6IHN0cmluZztcbiAgaW1hZ2VTcmM/OiBzdHJpbmc7XG4gIGljb24/OiBSZWFjdC5GdW5jdGlvbkNvbXBvbmVudDxSZWFjdC5TVkdQcm9wczxTVkdTVkdFbGVtZW50Pj47XG4gIGNsb3NlSWNvbj86IFJlYWN0LkZ1bmN0aW9uQ29tcG9uZW50PFJlYWN0LlNWR1Byb3BzPFNWR1NWR0VsZW1lbnQ+PjtcbiAgYm9yZGVyQm90dG9tPzogc3RyaW5nO1xuICBoZWFkZXJCYXJIZWlnaHRQYXJ0aWFsVmlldzogbnVtYmVyO1xuICBoZWFkZXJCYXJIZWlnaHRGdWxsVmlldzogbnVtYmVyO1xuICBjdXN0b21lclN1cHBvcnRTd2l0Y2hDb25maWc/OiBDU1N3aXRjaENvbmZpZztcbn07XG5cbnR5cGUgU2ltcGxlQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb24gPSB7XG4gIGludGVncmF0aW9uTW9kZTogQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb25Nb2RlO1xuICBwcm92aWRlcjogQ3VzdG9tZXJTZXJ2aWNlVHlwZTtcbiAgdXNlVW5pZmllZEJ1dHRvbj86IGJvb2xlYW47XG59O1xuXG50eXBlIEZ1bGxDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbiA9IHtcbiAgaW50ZWdyYXRpb25Nb2RlOiBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbk1vZGU7XG4gIHByb3ZpZGVyOiBDdXN0b21lclNlcnZpY2VUeXBlO1xuICB1c2VVbmlmaWVkQnV0dG9uPzogYm9vbGVhbjtcbiAgY2hhdEVuYWJsZWREdXJpbmdCdXNpbmVzc0hvdXJzPzogYm9vbGVhbjtcbiAgc2hvd05hbWVJbnB1dD86IGJvb2xlYW47XG4gIGZvcm1BaU5hbWU/OiBzdHJpbmc7XG4gIHdlbGNvbWVUaXRsZTogc3RyaW5nO1xuICB3ZWxjb21lRGVzY3JpcHRpb246IHN0cmluZztcbiAgc2hvd1dlbGNvbWVPbkZvcm0/OiBib29sZWFuO1xuICBjb250YWN0U3ViamVjdE9wdGlvbnM/OiBzdHJpbmdbXTtcbiAgZ2V0Q3VzdG9tV2FpdGluZ01lc3NhZ2U/OiAobmFtZT86IHN0cmluZykgPT4gc3RyaW5nO1xuICB3aXRoaW5CdXNpbmVzc0hvdXJzTWVzc2FnZT86IHN0cmluZztcbiAgd2l0aGluQnVzaW5lc3NIb3Vyc1dhaXRpbmdNZXNzYWdlPzogc3RyaW5nO1xuICBvdXRzaWRlQnVzaW5lc3NIb3Vyc01lc3NhZ2U/OiBzdHJpbmc7XG4gIG91dHNpZGVCdXNpbmVzc0hvdXJzV2FpdGluZ01lc3NhZ2U/OiBzdHJpbmc7XG4gIHdpdGhpbkJ1c2luZXNzSG91cnNGb3JtTWVzc2FnZT86IHN0cmluZztcbiAgb3V0c2lkZUJ1c2luZXNzSG91cnNGb3JtTWVzc2FnZT86IHN0cmluZztcbiAgc3VnZ2VzdGVkQUlRdWVzdGlvbnM/OiBzdHJpbmdbXTtcbiAgYnVzaW5lc3NIb3Vyc1BvbGxpbmc/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgaXMgaGFuZGxlZCBieSB0aGUgQkUuXG4gICAqL1xuICBidXNpbmVzc0hvdXJzU3RhcnRVVEM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIGlzIGhhbmRsZWQgYnkgdGhlIEJFLlxuICAgKi9cbiAgYnVzaW5lc3NIb3Vyc0VuZFVUQz86IHN0cmluZztcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgaXMgaGFuZGxlZCBieSB0aGUgQkUuXG4gICAqL1xuICBidXNpbmVzc0hvdXJzVGltZXpvbmU/OiBzdHJpbmc7XG5cbiAgc2hvd0FJU3VnZ2VzdGlvbnNXaXRoaW5CdXNpbmVzc0hvdXJzPzogYm9vbGVhbjtcbiAgd2FpdGluZ01lc3NhZ2VQb3NpdGlvbj86IFwiQkVGT1JFX01FU1NBR0VTXCIgfCBcIkFGVEVSX01FU1NBR0VTXCI7XG4gIGxlZ2FsTWVzc2FnZT86IHN0cmluZztcbiAgd2l0aGluQnVzaW5lc3NIb3Vyc0luaXRpYWxTdGF0ZT86IENoYXRTdGF0ZTtcbiAgb3V0c2lkZUJ1c2luZXNzSG91cnNJbml0aWFsU3RhdGU/OiBDaGF0U3RhdGU7XG4gIHdpdGhpbkJ1c2luZXNzSG91cnNCdXR0b250ZXh0Pzogc3RyaW5nO1xuICBvdXRzaWRlQnVzaW5lc3NIb3Vyc0J1dHRvbnRleHQ/OiBzdHJpbmc7XG4gIHJlb3BlbkNoYXRNZXNzYWdlOiBzdHJpbmc7XG59O1xuXG50eXBlIEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uID1cbiAgfCBTaW1wbGVDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvblxuICB8IEZ1bGxDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbjtcblxudHlwZSBDb252ZXJzYXRpb25hbFNlYWNoID0ge1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgcmVwbHlJbnB1dD86IFJlcGx5SW5wdXRDb25maWc7XG4gIHN1Z2dlc3Rpb25zPzogc3RyaW5nW107XG4gIGVudHJ5cG9pbnRCZ0NvbG9yPzogc3RyaW5nO1xuICBlbnRyeXBvaW50VGV4dENvbG9yPzogc3RyaW5nO1xuICBlbnRyeXBvaW50QnRuQ29sb3I/OiBzdHJpbmc7XG4gIGVudHJ5cG9pbnRCdG5UZXh0Q29sb3I/OiBzdHJpbmc7XG4gIGVudHJ5cG9pbnRCdG5Cb3JkZXJDb2xvcj86IHN0cmluZztcbiAgZW50cnlwb2ludENvbnRhaW5lcj86IHN0cmluZztcbiAgZW50cnlwb2ludFRyaWdnZXI/OiBzdHJpbmc7XG4gIHByb2R1Y3RHcmlkQ29udGFpbmVyPzogc3RyaW5nO1xuICBnZW5lcmFsU2VhcmNoQnRuPzogc3RyaW5nO1xuICBwYWdlQ29udGVudD86IHN0cmluZztcbiAgc2VhcmNoQ29udGVudD86IHN0cmluZztcbiAgc29ydGluZ1RpdGxlPzogc3RyaW5nO1xuICBzZWxlY3Rpb25UaXRsZT86IHN0cmluZztcbiAgc29ydGluZ0ZvbnQ/OiBzdHJpbmc7XG4gIG9wdGlvbnNGb250Pzogc3RyaW5nO1xuICBzb3J0aW5nQnV0dG9uVGV4dD86IHN0cmluZztcbn07XG5cbnR5cGUgQ2hhdE1lc3NhZ2VWYXJpYW50ID0gXCJzdGFuZGFyZFwiIHwgXCJwcmVtaXVtXCIgfCBcImFjY2VudFwiO1xuXG5pbnRlcmZhY2UgQ2hhdE1lc3NhZ2VDb25maWcge1xuICBhc3Npc3RhbnRDaGF0VGl0bGU6IHN0cmluZztcbiAgdmFyaWFudDogQ2hhdE1lc3NhZ2VWYXJpYW50O1xuICBwcm9kdWN0TGluazoge1xuICAgIHZhcmlhbnQ6IFByb2R1Y3RMaW5rVmFyaWFudDtcbiAgICBob3ZlclZhcmlhbnQ6IFByb2R1Y3RMaW5rSG92ZXJWYXJpYW50O1xuICAgIGljb25WYXJpYW50OiBQcm9kdWN0TGlua0ljb25WYXJpYW50O1xuICB9O1xufVxuXG5pbnRlcmZhY2UgUmVwbHlJbnB1dENvbmZpZyB7XG4gIC8vIFRPRE8gY29uc2lkZXIgbWFraW5nIHRoaXMgYSBudW1iZXJcbiAgc2l6ZT86IFwibWRcIiB8IFwibGdcIjtcbiAgc2VuZEljb246IFwiYXJyb3dVcFwiIHwgXCJzZW5kXCIgfCBcInNlYXJjaFwiO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFBhcnRpYWxWaWV3Q29uZmlnIHtcbiAgLy8gbWF4aW11bSBoZWlnaHQgb2YgdGhlIHBhcnRpYWwgdmlldyBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHNjcmVlbiBoZWlnaHRcbiAgbWF4SGVpZ2h0OiBudW1iZXI7XG4gIGJvcmRlclJhZGl1cz86IHN0cmluZztcbn1cblxudHlwZSBQcm9kdWN0TGlua0ljb25WYXJpYW50ID1cbiAgfCBcImFjY2VudFByaW1hcnlcIlxuICB8IFwiYmFja2dyb3VuZFByaW1hcnlcIlxuICB8IFwiYmFja2dyb3VuZFByaW1hcnlEYXJrXCJcbiAgfCBcImJvcmRlckxpZ2h0XCJcbiAgfCBcImJhY2tncm91bmRTYXR1cmF0ZWRcIjtcblxudHlwZSBQcm9kdWN0TGlua1ZhcmlhbnQgPSBcInRleHRMaW5rXCI7XG5cbnR5cGUgUHJvZHVjdExpbmtIb3ZlclZhcmlhbnQgPSBcImJhY2tncm91bmREYXJrXCI7XG5cbnR5cGUgU2VhcmNoQ2FyZFZhcmlhbnQgPVxuICB8IFwiYmFja2dyb3VuZFByaW1hcnlcIlxuICB8IFwiYmFja2dyb3VuZFNlY29uZGFyeVwiXG4gIHwgXCJiYWNrZ3JvdW5kU2Vjb25kYXJ5RGFya1wiXG4gIHwgXCJiYWNrZ3JvdW5kTGlnaHRcIlxuICB8IFwiYmFja2dyb3VuZFNhdHVyYXRlZFwiO1xuXG50eXBlIFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50ID1cbiAgfCBcIm91dGxpbmVkXCJcbiAgfCBcIm91dGxpbmVkTGlnaHRcIlxuICB8IFwicHJpbWFyeVwiXG4gIHwgXCJzZWNvbmRhcnlcIlxuICB8IFwidGVydGlhcnlcIlxuICB8IFwiZGFya1wiXG4gIHwgXCJkYXJrQWNjZW50XCJcbiAgfCBcImRhcmtQcmltYXJ5XCJcbiAgfCBcInNlY29uZGFyeURhcmtcIlxuICB8IFwic2Vjb25kYXJ5QWNjZW50XCJcbiAgfCBcInRyYW5zcGFyZW50XCJcbiAgfCBcInRyYW5zcGFyZW50RGFya1wiXG4gIHwgXCJsaWdodERhcmtcIjtcblxuaW50ZXJmYWNlIFN1Z2dlc3Rpb25CdXR0b25Db25maWcge1xuICB2YXJpYW50PzogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gIGhvdmVyVmFyaWFudD86IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBhbnN3ZXJWYXJpYW50PzogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gIGJvcmRlclJhZGl1cz86IFwic21cIiB8IFwibWRcIiB8IFwibGdcIjtcbn1cblxudHlwZSBOdW1Sb3dzID0gXCJkZWZhdWx0XCIgfCBcImFsd2F5c09uZVJvd1wiIHwgXCJhbHdheXNUd29Sb3dzXCIgfCBcInR3b1Jvd3NPbk1vYmlsZVwiO1xuXG5pbnRlcmZhY2UgQWxwaGFiZXRpY0ZpbHRlclNvcnRpbmcge1xuICB0eXBlOiBcImFscGhhYmV0aWNcIjtcbn1cbmludGVyZmFjZSBQcm9kdWN0Q291bnRGaWx0ZXJTb3J0aW5nIHtcbiAgdHlwZTogXCJwcm9kdWN0Q291bnRcIjtcbn1cbmludGVyZmFjZSBDdXN0b21GaWx0ZXJTb3J0aW5nIHtcbiAgdHlwZTogXCJjdXN0b21cIjtcbiAgbWFwOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xufVxuXG50eXBlIEZpbHRlclNvcnRpbmcgPVxuICB8IEFscGhhYmV0aWNGaWx0ZXJTb3J0aW5nXG4gIHwgUHJvZHVjdENvdW50RmlsdGVyU29ydGluZ1xuICB8IEN1c3RvbUZpbHRlclNvcnRpbmc7XG5cbmludGVyZmFjZSBCYXNlRmlsdGVyQ29uZmlnIHtcbiAgZmlsdGVySWQ6IHN0cmluZztcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbn1cbmludGVyZmFjZSBEeW5hbWljRmlsdGVyQ29uZmlnIGV4dGVuZHMgQmFzZUZpbHRlckNvbmZpZyB7XG4gIHR5cGU6IFwiZHluYW1pY1wiO1xuICBhdHRyaWJ1dGU6IHN0cmluZztcbiAgc29ydGluZzogRmlsdGVyU29ydGluZztcbn1cblxuaW50ZXJmYWNlIFByaWNlRmlsdGVyQ29uZmlnIGV4dGVuZHMgQmFzZUZpbHRlckNvbmZpZyB7XG4gIHR5cGU6IFwicHJpY2VcIjtcbiAgYnVja2V0U2l6ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBGaWx0ZXJBdHRyaWJ1dGUgPSBEeW5hbWljRmlsdGVyQ29uZmlnIHwgUHJpY2VGaWx0ZXJDb25maWc7XG5cbmV4cG9ydCB0eXBlIFNlYXJjaFplcm9TdGF0ZVZhcmlhbnQgPVxuICB8IFwiYmFja2dyb3VuZFRlcnRpYXJ5XCJcbiAgfCBcImJhY2tncm91bmREYXJrXCJcbiAgfCBcImJhY2tncm91bmRQcmltYXJ5XCI7XG5leHBvcnQgdHlwZSBTZWFyY2haZXJvU3RhdGVMYXlvdXQgPSBcImlucHV0XCIgfCBcImljb25cIjtcblxuZXhwb3J0IHR5cGUgU2VhcmNoSW5wdXRWYXJpYW50ID0gXCJzdGFuZGFyZFwiO1xuXG5leHBvcnQgdHlwZSBTZWFyY2hJY29uVmFyaWFudCA9IFwidGhpblwiIHwgXCJib2xkXCI7XG5cbmV4cG9ydCB0eXBlIFNlYXJjaEZpbHRlclNpZGViYXJWYXJpYW50ID0gXCJkYXJrQnV0dG9uXCIgfCBcImxpZ2h0QnV0dG9uXCI7XG5cbmV4cG9ydCB0eXBlIFByb2R1Y3RHcmlkVmFyaWFudCA9IFwic3RhbmRhcmRcIiB8IFwic3F1YXJlXCI7XG5cbnR5cGUgVXNlclF1ZXJ5QnV0dG9uSWNvbiA9XG4gIHwgXCJtYWduaWZ5aW5nR2xhc3NcIlxuICB8IFwic2VuZFwiXG4gIHwgXCJtYWduaWZ5aW5nR2xhc3NUaGluXCJcbiAgfCBcInNlbmRBcnJvd1wiXG4gIHwgXCJzZWFyY2hJY29uXCI7XG5cbmludGVyZmFjZSBVc2VyUXVlcnlCdXR0b25Db25maWcge1xuICB2YXJpYW50PzogXCJib3hcIiB8IFwidW5kZXJsaW5lTGlnaHRcIiB8IFwidW5kZXJsaW5lRGFya1wiO1xuICBwbGFjZWhvbGRlclRleHQ/OiBzdHJpbmc7XG4gIGljb246IFVzZXJRdWVyeUJ1dHRvbkljb247XG59XG5cbi8vIFRPRE86IHRoaXMgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSB0b3AtbGV2ZWwgd2lkZ2V0IGNvbmZpZ1xuaW50ZXJmYWNlIFRlcm1zQW5kQ29uZGl0aW9uc0NvbmZpZyB7XG4gIGNvcHk6IHN0cmluZztcbiAgbGluazogc3RyaW5nO1xuICBsaW5rVGV4dDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTWVyY2hhbnRWYXJpYW50U2V0dGluZ3Mge1xuICBkeW5hbWljVmFyaWFudHM6IHtcbiAgICBlbmFibGVkOiBib29sZWFuOyAvLyBUaGlzIGZlYXR1cmUgd2lsbCBlbmFibGUgZHluYW1pYyB2YXJpYW50cyBmb3IgdGhlIG1lcmNoYW50LiBVc2VmdWwgZm9yIFNQQSdzXG4gICAgcmVmcmVzaEludGVydmFsPzogbnVtYmVyOyAvLyBUaGUgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIHRvIGNoZWNrIGZvciBjaGFuZ2VzIGluIHRoZSBVUkxcbiAgfTtcbn1cblxuaW50ZXJmYWNlIEZsb2F0aW5nQ2hhdENvbmZpZyB7XG4gIGVuYWJsZVdhdGVybWFyazogYm9vbGVhbjtcbiAgdXNlclF1ZXJ5SW5wdXRFbmFibGVkOiBib29sZWFuO1xuICBpZ25vcmVGaXJzdE1vZGVsUmVzcG9uc2U/OiBib29sZWFuO1xuICBuZXZlclNob3dTaW5nbGVQcm9kdWN0Q2FyZHM/OiBib29sZWFuO1xuICB0ZXJtc0FuZENvbmRpdGlvbnNDb25maWc/OiBUZXJtc0FuZENvbmRpdGlvbnNDb25maWc7XG5cbiAgLy8gRm9vdGVyIGNvbmZpZ1xuICBzdWdnZXN0aW9uQnV0dG9uQ29uZmlnPzogU3VnZ2VzdGlvbkJ1dHRvbkNvbmZpZztcbiAgcmVwbHlJbnB1dENvbmZpZzogUmVwbHlJbnB1dENvbmZpZztcbn1cblxuaW50ZXJmYWNlIFNlYXJjaENvbmZpZyB7XG4gIGVuYWJsZUdsb2JhbFNlYXJjaDogYm9vbGVhbjtcbiAgc2VhcmNoRmlsdGVyQ29uZmlnOiBGaWx0ZXJBdHRyaWJ1dGVbXTtcbiAgcmVkaXJlY3RTZWFyY2hSZXN1bHRzVXJsPzogc3RyaW5nO1xuICBhZGRpdGl2ZUR5bmFtaWNGaWx0ZXJzPzogYm9vbGVhbjtcbn1cblxudHlwZSBPcmdVSUNvbmZpZyA9IHtcbiAgc2hvcnROYW1lOiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBmbG9hdGluZ0VudHJ5cG9pbnRDb25maWc/OiBGbG9hdGluZ0VudHJ5UG9pbnRDb25maWc7XG4gIC8vIERlcHJlY2F0ZWQgLSByZW1vdmUgd2l0aCBDaGF0UHJldmlldyByZXdyaXRlXG4gIGNoYXRQcmV2aWV3Q29uZmlnPzogQ2hhdFByZXZpZXdDb25maWc7XG5cbiAgY3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb246IEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uO1xuICAvLyBEZXByZWNhdGVkIC0gcmVtb3ZlIHdoZW4gR2xvYmFsIFNlYXJjaCBpcyBmdWxseSBsYXVuY2hlZFxuICBjb252ZXJzYXRpb25hbFNlYXJjaD86IENvbnZlcnNhdGlvbmFsU2VhY2g7XG5cbiAgbWVyY2hhbnRPdmVycmlkZUNzcz86IHN0cmluZztcblxuICAvLyBEZXByZWNhdGVkIFRPRE86IFJlbW92ZSB0aGlzIGRlcHJlY2F0ZWQgdmFsdWUgd2hlbiBHcm9vdmUgQ1ggaGFzIHByb3BlciB1bmlmaWVkIGJ1dHRvbiBzdXBwb3J0XG4gIC8vIHNlbGVjdG9ycyBmb3IgZWxlbWVudHMgdGhhdCBzaG91bGQgYmUgaGlkZGVuIHdoZW4gdGhlIGNoYXQgaXMgb3BlblxuICAvLyBlLmcuIENTIHdpZGdldHMgd2l0aCBtYXggei1pbmRleCAoXCJkaXZbaWQqPSdjcy1jb250YWluZXInXVwiKVxuICBoaWRkZW5FbGVtZW50U2VsZWN0b3JzPzogc3RyaW5nW107XG5cbiAgbWVyY2hhbnRWYXJpYW50U2V0dGluZ3M/OiBNZXJjaGFudFZhcmlhbnRTZXR0aW5ncztcbiAgLy8gVE9ETzogTWlncmF0ZSBhbGwgZmxvYXRpbmcgY2hhdCBjb25maWcgaW50byB0aGlzIHRvcC1sZXZlbCBrZXlcbiAgLy9cbiAgZmxvYXRpbmdDaGF0Q29uZmlnOiBGbG9hdGluZ0NoYXRDb25maWc7XG5cbiAgLy8gQ29udGFpbiBhbGwgc2VhcmNoIGNvbmZpZyBoZXJlXG4gIHNlYXJjaENvbmZpZzogU2VhcmNoQ29uZmlnO1xuICAvLyBUT0RPOiBNb3ZlIHRoZXNlIGludG8gRmxvYXRpbmdDaGF0Q29uZmlnXG4gIC8vIENoYXQgSGVhZGVyIHJlbGF0ZWQgdmFsdWVzXG4gIGNoYXRIZWFkZXI6IENoYXRIZWFkZXJDb25maWc7XG4gIHN0aWNreUFnZW50U3dpdGNoU3VnZ2VzdGlvbj86IGJvb2xlYW47XG4gIHBhcnRpYWxWaWV3Q29uZmlnOiBQYXJ0aWFsVmlld0NvbmZpZztcbiAgd2VsY29tZVNlY3Rpb25Db25maWc/OiBXZWxjb21lU2VjdGlvbkNvbmZpZztcbiAgLy8gRGlmZmVyZW50IHJlc3BvbnNlIHZhbHVlc1xuICBwcm9kdWN0Q2FyZENvbmZpZz86IFByb2R1Y3RDYXJkQ29uZmlnO1xuICBwcm9kdWN0UmV2aWV3Q29uZmlnPzogUHJvZHVjdFJldmlld0NvbmZpZztcbiAgcGFnZUNhcmRDb25maWc/OiBQYWdlQ2FyZENvbmZpZztcbiAgY2hhdE1lc3NhZ2VDb25maWc6IENoYXRNZXNzYWdlQ29uZmlnO1xufTtcblxudHlwZSBJbnNlcnRpb25Qb2ludCA9IHtcbiAgc2VsZWN0b3I6IHN0cmluZztcbiAgLy8gdGhpcyBpcyB0aGUgaW5kZXggb2YgdGhlIHRhcmdldCBlbGVtZW50LCAwIGlmIG1pc3NpbmdcbiAgc2VsZWN0aW9uSW5kZXg/OiBudW1iZXI7XG4gIGluc2VydGlvblR5cGU6IERPTUluc2VydGlvblR5cGU7XG59O1xuXG50eXBlIFVSTFRlc3QgPSBcInNob3BpZnlcIiB8IFwibnVsbFwiO1xuXG50eXBlIElkRXh0cmFjdG9yID1cbiAgfCBcInNob3BpZnktcHJvZHVjdC1pZFwiXG4gIHwgXCJzaG9waWZ5LWNvbGxlY3Rpb24taWRcIlxuICB8IFwic2hvcGlmeS1wcm9kdWN0LXZhcmlhbnQtaWRcIlxuICB8IFwidXJsLXJlc29sdmVyLXByb2R1Y3QtaWRcIlxuICB8IFwidXJsLXJlc29sdmVyLXBscC1pZFwiXG4gIHwgXCJudWxsXCI7XG5cbi8vIFRoaXMgY29udGFpbnMgYSBtYXAgYmV0d2VlbiBQYWdlVmlzaXRDYXRlZ29yeSBhbmQgYSBsaXN0IG9mIFVSTCdzIHRoYXQgYXJlIGNsYXNzaWZpZWQgYXMgdGhlIHZhbHVlXG5lbnVtIENhdGVnb3J5RXh0cmFjdG9yVHlwZSB7XG4gIFZpc2l0Q2F0ZWdvcnlNYXAgPSBcIlZpc2l0Q2F0ZWdvcnlNYXBcIixcbiAgVmlzaXRDYXRlZ29yeURlZmF1bHQgPSBcIlZpc2l0Q2F0ZWdvcnlEZWZhdWx0XCIsXG59XG5cbmludGVyZmFjZSBCYXNlQ2F0ZWdvcnlFeHRyYWN0b3I8VCBleHRlbmRzIENhdGVnb3J5RXh0cmFjdG9yVHlwZT4ge1xuICB0eXBlOiBUO1xufVxuXG4vLyBUaGlzIG1hcCBiZXR3ZWVucyBhIGNhdGVnb3J5IGFuZCBhIGxpc3Qgb2YgdXJsIHBhdHRlcm5zXG5pbnRlcmZhY2UgVmlzaXRDYXRlZ29yeU1hcFxuICBleHRlbmRzIEJhc2VDYXRlZ29yeUV4dHJhY3RvcjxDYXRlZ29yeUV4dHJhY3RvclR5cGUuVmlzaXRDYXRlZ29yeU1hcD4ge1xuICBtYXA6IHtcbiAgICBba2V5IGluIFBhZ2VWaXNpdENhdGVnb3J5XT86IHN0cmluZ1tdO1xuICB9O1xufVxuXG4vLyBUaGlzIHdpbGwgcmV0dXJuIGEgaGFyZC1jb2RlZCBkZWZhdWx0IFBhZ2VWaXNpdENhdGVnb3J5LiBJdCBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGJ5IGZhbGxiYWNrIHBhZ2UgdHlwZXNcbmludGVyZmFjZSBWaXNpdENhdGVnb3J5RGVmYXVsdFxuICBleHRlbmRzIEJhc2VDYXRlZ29yeUV4dHJhY3RvcjxDYXRlZ29yeUV4dHJhY3RvclR5cGUuVmlzaXRDYXRlZ29yeURlZmF1bHQ+IHtcbiAgdmFsdWU6IFBhZ2VWaXNpdENhdGVnb3J5O1xufVxuXG50eXBlIENhdGVnb3J5RXh0cmFjdG9yID0gVmlzaXRDYXRlZ29yeU1hcCB8IFZpc2l0Q2F0ZWdvcnlEZWZhdWx0O1xuXG50eXBlIFdyYXBwaW5nRWxlbWVudCA9IHtcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIGVsZW1lbnQ6IHN0cmluZztcbiAgaW5zZXJ0aW9uVHlwZTogRE9NSW5zZXJ0aW9uVHlwZTtcbn07XG5cbmVudW0gUGFnZVZhcmlhbnRUZXN0VHlwZSB7XG4gIFNob3BpZnlQTFAgPSBcIlNob3BpZnlQTFBcIixcbiAgU2hvcGlmeVBEUCA9IFwiU2hvcGlmeVBEUFwiLFxuICBQYWdlQ2F0ZWdvcnkgPSBcIlBhZ2VDYXRlZ29yeVwiLFxuICBDYXRhbG9nQ2F0ZWdvcnkgPSBcIkNhdGFsb2dDYXRlZ29yeVwiLFxuICBUb3BDYXRhbG9nQ2F0ZWdvcnkgPSBcIlRvcENhdGFsb2dDYXRlZ29yeVwiLFxuICBIYXNSZXZpZXdzID0gXCJIYXNSZXZpZXdzXCIsXG4gIEluQ29sbGVjdGlvbiA9IFwiSW5Db2xsZWN0aW9uXCIsXG4gIEhhc01lcmNoYW50VGFnID0gXCJIYXNNZXJjaGFudFRhZ1wiLFxuICBGZWF0dXJlR2F0ZSA9IFwiRmVhdHVyZUdhdGVcIixcbiAgUGxwSWQgPSBcIlBscElkXCIsXG4gIFF1ZXJ5UGFyYW0gPSBcIlF1ZXJ5UGFyYW1cIixcbiAgUHJvZHVjdElkID0gXCJQcm9kdWN0SWRcIixcbiAgVXNlckhhc0ludGVyYWN0ZWQgPSBcIlVzZXJIYXNJbnRlcmFjdGVkXCIsXG4gIFVzZXJIYXNOb3RJbnRlcmFjdGVkID0gXCJVc2VySGFzTm90SW50ZXJhY3RlZFwiLFxuICBpc0xvYWRpbmcgPSBcImlzTG9hZGluZ1wiLFxuICBpc1Byb2R1Y3RDb21wYXJpc29uID0gXCJpc1Byb2R1Y3RDb21wYXJpc29uXCIsXG4gIEZhbGxiYWNrID0gXCJGYWxsYmFja1wiLFxuICBVcmxSZXNvbHZlciA9IFwiVXJsUmVzb2x2ZXJcIixcbiAgTnVsbCA9IFwibnVsbFwiLFxufVxuXG5pbnRlcmZhY2UgQmFzZVBhZ2VWYXJpYW50VGVzdDxUIGV4dGVuZHMgUGFnZVZhcmlhbnRUZXN0VHlwZT4ge1xuICB0ZXN0VHlwZTogVDtcbn1cblxuaW50ZXJmYWNlIFRvcENhdGFsb2dDYXRlZ29yeVxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5Ub3BDYXRhbG9nQ2F0ZWdvcnk+IHtcbiAgdG9wQ2F0ZWdvcnk6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgQ2F0YWxvZ0NhdGVnb3J5VGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5DYXRhbG9nQ2F0ZWdvcnk+IHtcbiAgY2F0ZWdvcnk6IFN1cHBvcnRlZEV2ZW50UHJvZHVjdENhdGVnb3J5O1xufVxuXG5pbnRlcmZhY2UgSGFzUmV2aWV3c1Rlc3RcbiAgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuSGFzUmV2aWV3cz4ge1xuICByZXZpZXdNaW5pbXVtPzogbnVtYmVyO1xufVxuXG4vLyBUaGlzIHdpbGwgcmV0dXJuIHRydWUgaWYgdGhlIHByb2R1Y3QgaXMgaW4gYW55IG9mIHRoZSBsaXN0ZWQgY29sbGVjdGlvbnNcbmludGVyZmFjZSBJbkNvbGxlY3Rpb25UZXN0XG4gIGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLkluQ29sbGVjdGlvbj4ge1xuICBjb2xsZWN0aW9uczogc3RyaW5nW107XG59XG5cbi8vIFRoaXMgd2lsbCByZXR1cm4gdHJ1ZSBpZiB0aGUgcHJvZHVjdCBoYXMgYW55IG9mIHRoZSBsaXN0ZWQgbWVyY2hhbnQgdGFnc1xuaW50ZXJmYWNlIEhhc01lcmNoYW50VGFnVGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5IYXNNZXJjaGFudFRhZz4ge1xuICBtZXJjaGFudFRhZ3M6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgU2hvcGlmeVBMUFVSTFRlc3RcbiAgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuU2hvcGlmeVBMUD4ge31cblxuaW50ZXJmYWNlIFNob3BpZnlQRFBVUkxUZXN0XG4gIGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLlNob3BpZnlQRFA+IHt9XG5cbmludGVyZmFjZSBQYWdlQ2F0ZWdvcnlUZXN0XG4gIGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLlBhZ2VDYXRlZ29yeT4ge1xuICBleHRyYWN0b3I6IENhdGVnb3J5RXh0cmFjdG9yO1xufVxuXG5pbnRlcmZhY2UgRmVhdHVyZUdhdGVUZXN0XG4gIGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLkZlYXR1cmVHYXRlPiB7XG4gIGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZXM7XG59XG5cbmludGVyZmFjZSBQcm9kdWN0SWRUZXN0XG4gIGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLlByb2R1Y3RJZD4ge1xuICBwcm9kdWN0SWRFeHRyYWN0b3I6IElkRXh0cmFjdG9yO1xuICBwcm9kdWN0SWRzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIFBscElkVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5QbHBJZD4ge1xuICBwbHBJZEV4dHJhY3RvcjogSWRFeHRyYWN0b3I7XG4gIHBscElkczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBRdWVyeVBhcmFtVGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5RdWVyeVBhcmFtPiB7XG4gIHF1ZXJ5UGFyYW06IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFVzZXJIYXNJbnRlcmFjdGVkVGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5Vc2VySGFzSW50ZXJhY3RlZD4ge31cblxuaW50ZXJmYWNlIFVzZXJIYXNOb3RJbnRlcmFjdGVkVGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5Vc2VySGFzTm90SW50ZXJhY3RlZD4ge31cblxuaW50ZXJmYWNlIElzTG9hZGluZ1Rlc3RcbiAgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuaXNMb2FkaW5nPiB7fVxuXG5pbnRlcmZhY2UgSXNQcm9kdWN0Q29tcGFyaXNvblxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5pc1Byb2R1Y3RDb21wYXJpc29uPiB7fVxuXG5pbnRlcmZhY2UgUGFnZUZhbGxiYWNrVGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5GYWxsYmFjaz4ge31cblxuaW50ZXJmYWNlIFVybFJlc29sdmVyVGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5VcmxSZXNvbHZlcj4ge31cblxuZXhwb3J0IHR5cGUgUGFnZVZhcmlhbnRUZXN0ID1cbiAgfCBQYWdlQ2F0ZWdvcnlUZXN0XG4gIHwgU2hvcGlmeVBMUFVSTFRlc3RcbiAgfCBTaG9waWZ5UERQVVJMVGVzdFxuICB8IENhdGFsb2dDYXRlZ29yeVRlc3RcbiAgfCBUb3BDYXRhbG9nQ2F0ZWdvcnlcbiAgfCBIYXNSZXZpZXdzVGVzdFxuICB8IEluQ29sbGVjdGlvblRlc3RcbiAgfCBIYXNNZXJjaGFudFRhZ1Rlc3RcbiAgfCBGZWF0dXJlR2F0ZVRlc3RcbiAgfCBQcm9kdWN0SWRUZXN0XG4gIHwgUGxwSWRUZXN0XG4gIHwgUXVlcnlQYXJhbVRlc3RcbiAgfCBVc2VySGFzSW50ZXJhY3RlZFRlc3RcbiAgfCBVc2VySGFzTm90SW50ZXJhY3RlZFRlc3RcbiAgfCBJc0xvYWRpbmdUZXN0XG4gIHwgSXNQcm9kdWN0Q29tcGFyaXNvblxuICB8IFBhZ2VGYWxsYmFja1Rlc3RcbiAgfCBVcmxSZXNvbHZlclRlc3Q7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIHNvY2lhbCBwcm9vZiBlbWJlZGRlZCB3aWRnZXRcbiAqXG4gKiBAcGFyYW0gaGVhZGVyVGl0bGUgLSBUaGUgdGl0bGUgdGV4dCB0byBkaXNwbGF5IGluIHRoZSB3aWRnZXQgaGVhZGVyXG4gKiBAcGFyYW0gc3RhdGljU3VnZ2VzdGlvbnMgLSBBIGxpc3Qgb2Ygc3RyaW5ncyB0byBkaXNwbGF5IGFzIHN1Z2dlc3Rpb25zIGluIHRoZSB3aWRnZXRcbiAqIEBwYXJhbSBzdWdnZXN0aW9uQnV0dG9uVmFyaWFudERlZmF1bHQgLSBUaGUgdmFyaWFudCBvZiB0aGUgc3VnZ2VzdGlvbiBidXR0b24gdG8gZGlzcGxheSBpbiB0aGUgd2lkZ2V0IGZvb3RlclxuICogQHBhcmFtIHN1Z2dlc3Rpb25CdXR0b25WYXJpYW50QWNjZW50IC0gVGhlIHZhcmlhbnQgb2YgdGhlIHN1Z2dlc3Rpb24gYnV0dG9uIHRvIGRpc3BsYXkgaW4gdGhlIHdpZGdldCBib2R5XG4gKiBAcGFyYW0gc3RhdGljSW1hZ2VJbmRleCAtIEluZGV4IG9mIHRoZSBpbWFnZVVybCB0byB1c2UgZnJvbSB0aGUgcHJvZHVjdCByZXNwb25zZVxuICovXG5pbnRlcmZhY2UgU29jaWFsUHJvb2ZDb25maWcge1xuICBjdXN0b21lclF1ZXJ5OiBzdHJpbmc7XG4gIGhlYWRlclRpdGxlOiBzdHJpbmc7XG4gIHN0YXRpY1BMUEltYWdlc0xheW91dD86IFwiZ3JpZFwiIHwgXCJob3Jpem9udGFsXCI7XG4gIGhlYWRlckZvbnRGYW1pbHk/OiBzdHJpbmc7XG4gIHN0YXRpY1BMUEltYWdlTmFtZXM/OiBzdHJpbmdbXTtcbiAgc3RhdGljSW1hZ2VJbmRleD86IG51bWJlcjtcbiAgc3VnZ2VzdGlvbkJ1dHRvblN0cmluZ3M6IHN0cmluZ1tdO1xuICBzdWdnZXN0aW9uQnV0dG9uVmFyaWFudERlZmF1bHQ6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBzdWdnZXN0aW9uQnV0dG9uVmFyaWFudEFjY2VudD86IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBzdWdnZXN0aW9uQnV0dG9uRGF0YUF0dHJpYnV0ZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICB1c2VyUXVlcnlCdXR0b25Db25maWc/OiBVc2VyUXVlcnlCdXR0b25Db25maWc7XG4gIGxvZ29OYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGNyZWF0aW5nIHRoZSBtb3VudCBwb2ludCBmb3IgYSB3aWRnZXRcbiAqXG4gKiBAcGFyYW0gY2xhc3NOYW1lIC0gT3B0aW9uYWwgY2xhc3MgbmFtZSB0byBhcHBseSB0byB0aGUgbW91bnQgcG9pbnQuIFRhaWx3aW5kIGNsYXNzZXMgYXJlIHN1cHBvcnRlZFxuICogYW5kIGVuY291cmFnZWQuIFVzZSB0aGlzIHBhcmFtZXRlciB0byBzdHlsZSB0aGUgbW91bnRpbmcgY29udGFpbmVyIGZvciB0aGUgd2lkZ2V0LlxuICovXG5leHBvcnQgdHlwZSBXaWRnZXRNb3VudGluZ0NvbmZpZyA9IHtcbiAgbW91bnRpbmdDb25maWdJZDogc3RyaW5nO1xuICBjb250YWluZXJJZDogc3RyaW5nO1xuICB0ZXN0SWQ6IHN0cmluZztcbiAgcGFyZW50SW5zZXJ0aW9uUG9pbnQ/OiBJbnNlcnRpb25Qb2ludDtcbiAgaW5zZXJ0aW9uUG9pbnQ6IEluc2VydGlvblBvaW50O1xuICBncmlkSW5zZXJ0aW9uVHlwZT86IEdyaWRJbnNlcnRpb25UeXBlO1xuICB3cmFwcGluZ0VsZW1lbnQ/OiBXcmFwcGluZ0VsZW1lbnQ7XG4gIGRpdkNoZWNrU2VsZWN0b3I/OiBzdHJpbmc7XG4gIHN1cHByZXNzaW9uU2VsZWN0b3I/OiBzdHJpbmc7XG4gIHN0eWxlPzogUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBkYXRhQXR0cmlidXRlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59O1xuXG50eXBlIFN0YXRpY1dpZGdldE1vdW50aW5nID0ge1xuICBtb3VudGluZ0NvbmZpZ0lkOiBzdHJpbmc7XG4gIHdpZGdldENvbmZpZ0lkOiBzdHJpbmc7XG59O1xudHlwZSBEeW5hbWljV2lkZ2V0TW91bnRpbmcgPSB7XG4gIG1vdW50aW5nQ29uZmlnSWQ6IHN0cmluZztcbiAgbW91bnRpbmdQb2ludFdpZGdldHM6IFdpZGdldERpc3BsYXlUZXN0c1tdO1xufTtcblxudHlwZSBXaWRnZXREaXNwbGF5VGVzdHMgPSB7XG4gIHRlc3RzOiBQYWdlVmFyaWFudFRlc3RbXTtcbiAgd2lkZ2V0Q29uZmlnSWQ6IHN0cmluZztcbn07XG5cbnR5cGUgV2lkZ2V0TW91bnRpbmcgPSBTdGF0aWNXaWRnZXRNb3VudGluZyB8IER5bmFtaWNXaWRnZXRNb3VudGluZztcblxuZW51bSBXaWRnZXRUeXBlIHtcbiAgQ2hhdFByZXZpZXcgPSBcIkNoYXRQcmV2aWV3XCIsXG4gIFNvY2lhbFByb29mVjIgPSBcIlNvY2lhbFByb29mVjJcIixcbiAgQ2hhdFByZXZpZXdWMiA9IFwiQ2hhdFByZXZpZXdWMlwiLFxuICBDaGF0UHJldmlld0lzTG9hZGluZyA9IFwiQ2hhdFByZXZpZXdJc0xvYWRpbmdcIixcbiAgQ2hhdFByZXZpZXdQb3N0SW50ZXJhY3Rpb24gPSBcIkNoYXRQcmV2aWV3UG9zdEludGVyYWN0aW9uXCIsXG4gIENoYXRQcmV2aWV3UHJvZHVjdENvbXBhcmlzb24gPSBcIkNoYXRQcmV2aWV3UHJvZHVjdENvbXBhcmlzb25cIixcbiAgU3VnZ2VzdGlvbkJhciA9IFwiU3VnZ2VzdGlvbkJhclwiLFxuICBTdWdnZXN0aW9uQmFyVjIgPSBcIlN1Z2dlc3Rpb25CYXJWMlwiLFxuICBJbWFnZVByb21wdENhcmQgPSBcIkltYWdlUHJvbXB0Q2FyZFwiLFxuICBJbWFnZUJhbm5lciA9IFwiSW1hZ2VCYW5uZXJcIixcbiAgU2luZ2xlSW1hZ2VQcm9tcHQgPSBcIlNpbmdsZUltYWdlUHJvbXB0XCIsXG4gIFNlYXJjaFByb21wdCA9IFwiU2VhcmNoUHJvbXB0XCIsXG4gIFNlYXJjaFplcm9TdGF0ZUVudHJ5UG9pbnQgPSBcIlNlYXJjaFplcm9TdGF0ZUVudHJ5UG9pbnRcIixcbiAgU2VhcmNoUmVzdWx0c0VudHJ5UG9pbnQgPSBcIlNlYXJjaFJlc3VsdHNFbnRyeVBvaW50XCIsXG4gIFNlYXJjaE92ZXJsYXlIb3N0ID0gXCJTZWFyY2hPdmVybGF5SG9zdFwiLFxuICBOb09wID0gXCJOb09wXCIsXG59XG5cbnR5cGUgV2lkZ2V0Q29uZmlnID1cbiAgfCBDaGF0UHJldmlld1dpZGdldENvbmZpZ1xuICB8IFNvY2lhbFByb29mVjJXaWRnZXRDb25maWdcbiAgfCBDaGF0UHJldmlld1YyV2lkZ2V0Q29uZmlnXG4gIHwgQ2hhdFByZXZpZXdQb3N0SW50ZXJhY3Rpb25XaWRnZXRDb25maWdcbiAgfCBDaGF0UHJldmlld0lzTG9hZGluZ1dpZGdldENvbmZpZ1xuICB8IENoYXRQcmV2aWV3UHJvZHVjdENvbXBhcmlzb25XaWRnZXRDb25maWdcbiAgfCBTdWdnZXN0aW9uQmFyV2lkZ2V0VjJDb25maWdcbiAgfCBJbWFnZVByb21wdFdpZGdldENvbmZpZ1xuICB8IEltYWdlQmFubmVyV2lkZ2V0Q29uZmlnXG4gIHwgU2luZ2xlSW1hZ2VQcm9tcHRXaWRnZXRDb25maWdcbiAgfCBTZWFyY2hQcm9tcHRXaWRnZXRDb25maWdcbiAgfCBTZWFyY2hFbnRyeVBvaW50V2lkZ2V0Q29uZmlnXG4gIHwgU2VhcmNoUmVzdWx0c0VudHJ5UG9pbnRXaWRnZXRDb25maWdcbiAgfCBTZWFyY2hPdmVybGF5SG9zdFdpZGdldENvbmZpZ1xuICB8IE5vT3BXaWRnZXRDb25maWc7XG5cbmludGVyZmFjZSBCYXNlV2lkZ2V0Q29uZmlnPFQgZXh0ZW5kcyBXaWRnZXRUeXBlPiB7XG4gIHdpZGdldENvbmZpZ0lkOiBzdHJpbmc7XG4gIHR5cGU6IFQ7XG4gIGNvbnRlbnRJZD86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEltYWdlQmFubmVyV2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLkltYWdlQmFubmVyPiB7XG4gIGltYWdlU3JjOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN1YnRpdGxlOiBzdHJpbmc7XG4gIGFzc2lzdGFudE1lc3NhZ2U6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIENoYXRQcmV2aWV3V2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLkNoYXRQcmV2aWV3PiB7XG4gIHZhcmlhbnQ6IFwiZmlsbGVkXCIgfCBcImZsYXRcIiB8IFwib3V0bGluZWRcIjtcbiAgYWRkU2VwYXJhdG9ycz86IGJvb2xlYW47XG4gIHNvY2lhbFByb29mQ29uZmlnPzogU29jaWFsUHJvb2ZDb25maWc7XG4gIGZvb3RlckNvbmZpZz86IENoYXRQcmV2aWV3Rm9vdGVyQ29uZmlnO1xufVxuXG5pbnRlcmZhY2UgQ2hhdFByZXZpZXdIZWFkZXJWMkNvbmZpZyB7XG4gIHRpdGxlPzogc3RyaW5nOyAvLyBEZWZhdWx0OiAnU2hvcHBpbmcgQXNzaXN0YW50J1xuICBpbWFnZVNyYz86IHN0cmluZztcbiAgaW1hZ2VIZWlnaHQ/OiBudW1iZXI7XG59XG5cbnR5cGUgU2luZ2xlSW1hZ2VDb25maWcgPSB7XG4gIGxheW91dDogXCJzaW5nbGVcIjtcbiAgaW1hZ2VJbmRleDogbnVtYmVyO1xufTtcbnR5cGUgTXVsdGlJbWFnZUNvbmZpZyA9IHtcbiAgbGF5b3V0OiBcImdyaWRcIiB8IFwiaG9yaXpvbnRhbFwiO1xuICBpbWFnZU5hbWVzOiBzdHJpbmdbXTtcbn07XG50eXBlIFNvY2lhbFByb29mSW1hZ2VDb25maWcgPSBTaW5nbGVJbWFnZUNvbmZpZyB8IE11bHRpSW1hZ2VDb25maWc7XG5cbnR5cGUgQ2hhdFByZXZpZXdTdWdnZXN0aW9uQnV0dG9uQ29uZmlnID0ge1xuICBidXR0b25TdHJpbmdzOiBzdHJpbmdbXTtcbiAgYWNjZW50QnV0dG9uVmFyaWFudHM/OiB7XG4gICAgYnV0dG9uOiBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudDtcbiAgICBob3ZlcjogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gIH07XG4gIGJ1dHRvblZhcmlhbnRzOiB7XG4gICAgYnV0dG9uOiBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudDtcbiAgICBob3ZlcjogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gIH07XG4gIG51bVJvd3M/OiBOdW1Sb3dzO1xufTtcblxudHlwZSBDaGF0UHJldmlld0FuaW1hdGVkVGV4dENvbmZpZyA9IHtcbiAgbGVhZGluZ1RleHQ6IHN0cmluZztcbiAgYW5pbWF0ZWRTdHJpbmdzOiBzdHJpbmdbXTtcbn07XG5cbnR5cGUgQ2hhdFByZXZpZXdWYXJpYW50ID1cbiAgfCB7IHZhcmlhbnQ6IFwiZmxhdFwiIH1cbiAgfCB7IHZhcmlhbnQ6IFwiZmlsbGVkXCI7IGJhY2tncm91bmRGaWxsQ29sb3I6IHN0cmluZyB9XG4gIHwgeyB2YXJpYW50OiBcIm91dGxpbmVkXCIgfTtcblxuLy8gQmFzZSBpbnRlcmZhY2UgZm9yIGNvbW1vbiBjaGF0IHByZXZpZXcgcHJvcGVydGllc1xuaW50ZXJmYWNlIEJhc2VDaGF0UHJldmlld0NvbmZpZyB7XG4gIGhlYWRlckNvbmZpZzogQ2hhdFByZXZpZXdIZWFkZXJWMkNvbmZpZztcbiAgc3VnZ2VzdGlvbkJ1dHRvbnNDb25maWc6IENoYXRQcmV2aWV3U3VnZ2VzdGlvbkJ1dHRvbkNvbmZpZztcbiAgdXNlclF1ZXJ5QnV0dG9uQ29uZmlnOiBVc2VyUXVlcnlCdXR0b25Db25maWc7XG4gIGNoYXRQcmV2aWV3VmFyaWFudDogQ2hhdFByZXZpZXdWYXJpYW50O1xuICBhZGRTZXBhcmF0b3JzPzogYm9vbGVhbjtcbn1cblxuLy8gU3BlY2lmaWMgY2hhdCBwcmV2aWV3IHdpZGdldCBjb25maWd1cmF0aW9uc1xuaW50ZXJmYWNlIENoYXRQcmV2aWV3UG9zdEludGVyYWN0aW9uV2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLkNoYXRQcmV2aWV3UG9zdEludGVyYWN0aW9uPixcbiAgICBCYXNlQ2hhdFByZXZpZXdDb25maWcge1xuICBjaGF0UHJldmlld1ZhcmlhbnQ6IENoYXRQcmV2aWV3VmFyaWFudDtcbiAgYWRkU2VwYXJhdG9ycz86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBDaGF0UHJldmlld0lzTG9hZGluZ1dpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5DaGF0UHJldmlld0lzTG9hZGluZz4sXG4gICAgQmFzZUNoYXRQcmV2aWV3Q29uZmlnIHt9XG5cbmludGVyZmFjZSBDaGF0UHJldmlld1Byb2R1Y3RDb21wYXJpc29uV2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLkNoYXRQcmV2aWV3UHJvZHVjdENvbXBhcmlzb24+LFxuICAgIEJhc2VDaGF0UHJldmlld0NvbmZpZyB7XG4gIHVzZUxhcmdlUHJvZHVjdENvbXBhcmlzb24/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hhdFByZXZpZXdWMldpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5DaGF0UHJldmlld1YyPixcbiAgICBCYXNlQ2hhdFByZXZpZXdDb25maWcge1xuICBhbmltYXRlZFRleHRDb25maWc6IENoYXRQcmV2aWV3QW5pbWF0ZWRUZXh0Q29uZmlnO1xufVxuXG5pbnRlcmZhY2UgU29jaWFsUHJvb2ZWMldpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5Tb2NpYWxQcm9vZlYyPixcbiAgICBCYXNlQ2hhdFByZXZpZXdDb25maWcge1xuICBjdXN0b21lclF1ZXJ5Pzogc3RyaW5nOyAvLyBEZWZhdWx0OiAnYXNrZWQgd2hpY2ggcHJvZHVjdHMgYXJlIHRoZSBiZXN0J1xuICBpbWFnZUNvbmZpZzogU29jaWFsUHJvb2ZJbWFnZUNvbmZpZztcbn1cblxuaW50ZXJmYWNlIFN1Z2dlc3Rpb25CYXJXaWRnZXRWMkNvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5TdWdnZXN0aW9uQmFyVjI+IHtcbiAgbWV0cmljRGlzcGxheUxvY2F0aW9uOiBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvbjtcbiAgbG9jYXRpb246IFN1Z2dlc3Rpb25CYXJMb2NhdGlvbkZvck1ldHJpY3M7XG4gIHZhcmlhbnQ6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBob3ZlclZhcmlhbnQ6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBidXR0b25UZXh0czoge1xuICAgIGRlZmF1bHQ6IHN0cmluZ1tdO1xuICAgIHByb2R1Y3RTcGVjaWZpYz86IHsgW3Byb2R1Y3RJZDogc3RyaW5nXTogc3RyaW5nW10gfTtcbiAgfTtcbiAgYm9sZEZpcnN0QnV0dG9uPzogYm9vbGVhbjtcbiAgdHdvUm93c09uTW9iaWxlPzogYm9vbGVhbjtcbiAgYW5pbWF0aW9uU3BlZWQ/OiBcInN0YW5kYXJkXCIgfCBcInNsb3dcIiB8IFwibm9uZVwiO1xuICBidXR0b25Cb3JkZXJSYWRpdXM/OiBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCI7XG59XG5cbmludGVyZmFjZSBJbWFnZVByb21wdFdpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5JbWFnZVByb21wdENhcmQ+IHtcbiAgdXJsOiBzdHJpbmc7XG4gIGxpZ2h0VGV4dD86IGJvb2xlYW47XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN1YnRpdGxlOiBzdHJpbmdbXTtcbiAgc3RhdGljU3VnZ2VzdGlvbkNvcGllczogc3RyaW5nW107XG4gIHVzZXJRdWVyeUJ1dHRvbkNvbmZpZzogVXNlclF1ZXJ5QnV0dG9uQ29uZmlnO1xuICBmYWxsYmFja0JhY2tncm91bmRDb2xvcj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFNpbmdsZUltYWdlUHJvbXB0V2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLlNpbmdsZUltYWdlUHJvbXB0PiB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN0YXRpY1N1Z2dlc3Rpb25Db3BpZXM6IHN0cmluZ1tdO1xuICB1c2VyUXVlcnlCdXR0b25Db25maWc6IFVzZXJRdWVyeUJ1dHRvbkNvbmZpZztcbn1cblxuaW50ZXJmYWNlIFNlYXJjaEVudHJ5UG9pbnRXaWRnZXRDb25maWdcbiAgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuU2VhcmNoWmVyb1N0YXRlRW50cnlQb2ludD4ge1xuICBzZWFyY2haZXJvU3RhdGVWYXJpYW50OiBTZWFyY2haZXJvU3RhdGVWYXJpYW50O1xuICBzZWFyY2hJbnB1dFZhcmlhbnQ6IFNlYXJjaElucHV0VmFyaWFudDtcbiAgc2VhcmNoSWNvblZhcmlhbnQ/OiBTZWFyY2hJY29uVmFyaWFudDtcbiAgc2VhcmNoSWNvblNpemU/OiBudW1iZXI7XG4gIHN1Z2dlc3Rpb25CdXR0b25Db25maWc6IFN1Z2dlc3Rpb25CdXR0b25Db25maWc7XG4gIGxheW91dDogU2VhcmNoWmVyb1N0YXRlTGF5b3V0O1xuICBzZWFyY2hCb3hQbGFjZWhvbGRlcjogc3RyaW5nO1xuICBhbmltYXRpb25TcGVlZD86IFwic3RhbmRhcmRcIiB8IFwic2xvd1wiIHwgXCJub25lXCI7XG4gIGNvbXBhY3RMYWJlbD86IHN0cmluZztcbiAgaW5pdGlhbFN1Z2dlc3Rpb25zPzogc3RyaW5nW107XG4gIHVzaW5nUG9ydGFsPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIE5vT3BXaWRnZXRDb25maWcgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuTm9PcD4ge31cbmludGVyZmFjZSBTZWFyY2hPdmVybGF5SG9zdFdpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5TZWFyY2hPdmVybGF5SG9zdD4ge31cblxuaW50ZXJmYWNlIFNlYXJjaFJlc3VsdHNFbnRyeVBvaW50V2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLlNlYXJjaFJlc3VsdHNFbnRyeVBvaW50PiB7XG4gIHNlYXJjaElucHV0VmFyaWFudDogU2VhcmNoSW5wdXRWYXJpYW50O1xuICBzZWFyY2hGaWx0ZXJTaWRlYmFyVmFyaWFudDogU2VhcmNoRmlsdGVyU2lkZWJhclZhcmlhbnQ7XG4gIHByb2R1Y3RHcmlkVmFyaWFudDogUHJvZHVjdEdyaWRWYXJpYW50O1xuICBzZWFyY2hCb3hQbGFjZWhvbGRlcjogc3RyaW5nO1xuICBub1Jlc3VsdHNGb3VuZFRleHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2lkZ2V0SGVhZGVyUHJvcHMgZXh0ZW5kcyBUZXN0UHJvcHMge1xuICB0aXRsZT86IHN0cmluZztcbiAgbG9nbz86IHN0cmluZztcbiAgbG9nb0hlaWdodD86IG51bWJlcjtcbiAgb3JnU2hvcnROYW1lOiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiBTZWFyY2hQcm9tcHRWYXJpYW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJRdWVyeU9wdGlvbnMge1xuICBmb290ZXJWYXJpYW50PzogXCJzdGFuZGFyZFwiO1xuICByZXBseUJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gIHJlcGx5QnV0dG9uSWNvbj86XG4gICAgfCBcIm1hZ25pZnlpbmdHbGFzc1wiXG4gICAgfCBcInNlbmRcIlxuICAgIHwgXCJ0aGluTWFnbmlmeWluZ0dsYXNzXCJcbiAgICB8IFwiYWktc2VhcmNoXCI7XG59XG5cbnR5cGUgU2VhcmNoUHJvbXB0VmFyaWFudCA9IFwicHJpbWFyeVwiO1xuaW50ZXJmYWNlIFNlYXJjaFByb21wdFdpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5TZWFyY2hQcm9tcHQ+IHtcbiAgdmFyaWFudDogU2VhcmNoUHJvbXB0VmFyaWFudDtcbiAgdGl0bGU6IHN0cmluZztcbiAgaGVhZGVyQ29uZmlnOiBXaWRnZXRIZWFkZXJQcm9wcztcbiAgc3VnZ2VzdGlvbkJ1dHRvbnM6IHtcbiAgICB2YXJpYW50OiBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudDtcbiAgICBob3ZlclZhcmlhbnQ6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICAgIGJ1dHRvblRleHRzOiBzdHJpbmdbXTtcbiAgfTtcbiAgZm9vdGVyQ29uZmlnPzogVXNlclF1ZXJ5T3B0aW9ucztcbn1cblxudHlwZSBQYWdlVmFyaWFudEJhc2UgPSB7XG4gIC8vIFVuaXF1ZSBpZGVudGlmaWVyIGZvciBlYWNoIGVudHJ5IHdpdGhpbiB0aGUgcGFnZVZhcmlhbnRzLlxuICAvLyBVc2VmdWwgdG8gZGlmZmVyZW50aWF0ZSB3aGljaCB2YXJpYW50IGlzIGxvYWRlZCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZXMgb2YgYSBzaW5nbGUgdHlwZS5cbiAgdmFyaWFudElkOiBzdHJpbmc7XG4gIHdpZGdldE1vdW50aW5nOiBXaWRnZXRNb3VudGluZ1tdO1xuICB2YXJpYW50VGVzdHM6IFBhZ2VWYXJpYW50VGVzdFtdO1xufTtcblxudHlwZSBQTFBQYWdlVmFyaWFudCA9IFBhZ2VWYXJpYW50QmFzZSAmIHtcbiAgdmFyaWFudFR5cGU6IFwicGxwXCI7XG4gIHBscElkRXh0cmFjdG9yOiBJZEV4dHJhY3Rvcjtcbn07XG5cbnR5cGUgUERQUGFnZVZhcmlhbnQgPSBQYWdlVmFyaWFudEJhc2UgJiB7XG4gIHZhcmlhbnRUeXBlOiBcInBkcFwiO1xuICBwYXJlbnRQcm9kdWN0SWRFeHRyYWN0b3I/OiBJZEV4dHJhY3RvcjtcbiAgcHJvZHVjdElkRXh0cmFjdG9yOiBJZEV4dHJhY3Rvcjtcbn07XG5cbnR5cGUgVmlzaXRQYWdlVmFyaWFudCA9IFBhZ2VWYXJpYW50QmFzZSAmIHtcbiAgdmFyaWFudFR5cGU6IFwicGFnZV92aXNpdFwiO1xufTtcblxudHlwZSBPdGhlclBhZ2VWYXJpYW50ID0gUGFnZVZhcmlhbnRCYXNlICYge1xuICB2YXJpYW50VHlwZTogXCJvdGhlclwiO1xufTtcblxudHlwZSBIb21lUGFnZVZhcmlhbnQgPSBQYWdlVmFyaWFudEJhc2UgJiB7XG4gIHZhcmlhbnRUeXBlOiBcImhvbWVwYWdlXCI7XG59O1xuXG50eXBlIFNlYXJjaFBhZ2VWYXJpYW50ID0gUGFnZVZhcmlhbnRCYXNlICYge1xuICB2YXJpYW50VHlwZTogXCJzZWFyY2hcIjtcbn07XG5cbmV4cG9ydCB0eXBlIFBhZ2VWYXJpYW50Q29uZmlnID1cbiAgfCBQTFBQYWdlVmFyaWFudFxuICB8IFBEUFBhZ2VWYXJpYW50XG4gIHwgVmlzaXRQYWdlVmFyaWFudFxuICB8IE90aGVyUGFnZVZhcmlhbnRcbiAgfCBIb21lUGFnZVZhcmlhbnRcbiAgfCBTZWFyY2hQYWdlVmFyaWFudDtcblxuZXhwb3J0IHR5cGUgT3JnUGFnZUNvbmZpZyA9IHtcbiAgLy8gcGFnZVZhcmlhbnRzIGlzIGEgbGlzdCBvZiBwYWdlIHZhcmlhbnRzIHRoYXQgd2Ugc3VwcG9ydC5cbiAgcGFnZVZhcmlhbnRzOiBQYWdlVmFyaWFudENvbmZpZ1tdO1xuICAvLyB3aWRnZXRDb25maWdzIGlzIGEgbmFtZWQgc2V0IG9mIHdpZGdldCBjb25maWdzXG4gIHdpZGdldENvbmZpZ3M6IFJlY29yZDxzdHJpbmcsIFdpZGdldENvbmZpZz47XG4gIG1vdW50aW5nQ29uZmlnczogUmVjb3JkPHN0cmluZywgV2lkZ2V0TW91bnRpbmdDb25maWc+O1xufTtcblxuaW50ZXJmYWNlIE9yZ0NvbmZpZ0NvbnRleHRUeXBlIHtcbiAgb3JnVUlDb25maWc6IE9yZ1VJQ29uZmlnO1xufVxuXG5leHBvcnQgdHlwZSBPcmdDb25maWcgPSBPcmdVSUNvbmZpZztcblxuZXhwb3J0IHtcbiAgQ2F0ZWdvcnlFeHRyYWN0b3JUeXBlLFxuICBDb2xvck5hbWVzLFxuICBjb2xvclZhcixcbiAgUGFnZVZhcmlhbnRUZXN0VHlwZSxcbiAgV2lkZ2V0VHlwZSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52aXZlQ29uZmlnIHtcbiAgYW1wbGl0dWRlQXBpS2V5Pzogc3RyaW5nO1xuICBkYXRhUmVzaWRlbmN5Pzogc3RyaW5nO1xuICBlbnY/OiBzdHJpbmc7XG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIHJlYWN0QXBwTmFtZT86IHN0cmluZztcbiAgY2RuVXJsPzogc3RyaW5nO1xuICBjb250ZXh0U291cmNlPzogc3RyaW5nO1xuICBvcmdMZXZlbEFwaUtleT86IHN0cmluZztcbiAgb3JnU2hvcnROYW1lPzogc3RyaW5nO1xuICBpZGVudGlmeWluZ1ByZWZpeD86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUge1xuICBDYXRlZ29yeUV4dHJhY3RvcixcbiAgQ2hhdE1lc3NhZ2VWYXJpYW50LFxuICBDaGF0TWVzc2FnZUNvbmZpZyxcbiAgQ2hhdFByZXZpZXdDb25maWcsXG4gIENoYXRQcmV2aWV3SXNMb2FkaW5nV2lkZ2V0Q29uZmlnLFxuICBDaGF0UHJldmlld1Bvc3RJbnRlcmFjdGlvbldpZGdldENvbmZpZyxcbiAgQ2hhdFByZXZpZXdQcm9kdWN0Q29tcGFyaXNvbldpZGdldENvbmZpZyxcbiAgQ2hhdFByZXZpZXdTdWdnZXN0aW9uQnV0dG9uQ29uZmlnLFxuICBTb2NpYWxQcm9vZlYyV2lkZ2V0Q29uZmlnLFxuICBDaGF0UHJldmlld0hlYWRlclYyQ29uZmlnLFxuICBDaGF0UHJldmlld1YyV2lkZ2V0Q29uZmlnLFxuICBDaGF0UHJldmlld0Zvb3RlckNvbmZpZyxcbiAgQ2hhdFByZXZpZXdIZWFkZXJDb25maWcsXG4gIENoYXRQcmV2aWV3V2lkZ2V0Q29uZmlnLFxuICBDaGF0UHJldmlld1ZhcmlhbnQsXG4gIENvbG9yTWFwcGluZyxcbiAgQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb24sXG4gIEZsb2F0aW5nRW50cnlQb2ludENvbmZpZyxcbiAgRnVsbEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uLFxuICBJZEV4dHJhY3RvcixcbiAgSW1hZ2VCYW5uZXJXaWRnZXRDb25maWcsXG4gIEltYWdlUHJvbXB0V2lkZ2V0Q29uZmlnLFxuICBJbnNlcnRpb25Qb2ludCxcbiAgTXVsdGlJbWFnZUNvbmZpZyxcbiAgT3JnQ29uZmlnQ29udGV4dFR5cGUsXG4gIE9yZ1VJQ29uZmlnLFxuICBQYWdlQ2FyZENvbmZpZyxcbiAgUGFnZUNhcmRWYXJpYW50LFxuICBQYWdlQ2FyZEhvdmVyVmFyaWFudCxcbiAgUGFnZUNhcmRJY29uVmFyaWFudCxcbiAgUHJvZHVjdENhcmRDb25maWcsXG4gIFByb2R1Y3RDYXJkVmFyaWFudCxcbiAgUHJvZHVjdENhcmRMYXlvdXRWYXJpYW50LFxuICBQcm9kdWN0Q2FyZEhvdmVyVmFyaWFudCxcbiAgUHJvZHVjdExpbmtIb3ZlclZhcmlhbnQsXG4gIFByb2R1Y3RMaW5rSWNvblZhcmlhbnQsXG4gIFByb2R1Y3RMaW5rVmFyaWFudCxcbiAgUHJvZHVjdFJldmlld0NvbmZpZyxcbiAgUHJvZHVjdFJldmlld1N0eWxlVmFyaWFudCxcbiAgUHJvZHVjdFJldmlld0NvbG9yVmFyaWFudCxcbiAgU2VhcmNoUHJvbXB0VmFyaWFudCxcbiAgU2VhcmNoUHJvbXB0V2lkZ2V0Q29uZmlnLFxuICBTZWFyY2hSZXN1bHRzRW50cnlQb2ludFdpZGdldENvbmZpZyxcbiAgU2hvd0Zsb2F0aW5nQnV0dG9uT3B0aW9ucyxcbiAgU2luZ2xlSW1hZ2VQcm9tcHRXaWRnZXRDb25maWcsXG4gIFNlYXJjaEVudHJ5UG9pbnRXaWRnZXRDb25maWcsXG4gIFNlYXJjaE92ZXJsYXlIb3N0V2lkZ2V0Q29uZmlnLFxuICBTb2NpYWxQcm9vZkNvbmZpZyxcbiAgU3VnZ2VzdGlvbkJhcldpZGdldFYyQ29uZmlnLFxuICBTdWdnZXN0aW9uQnV0dG9uQ29uZmlnLFxuICBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudCxcbiAgVVJMVGVzdCxcbiAgVXNlclF1ZXJ5QnV0dG9uQ29uZmlnLFxuICBVc2VyUXVlcnlCdXR0b25JY29uLFxuICBXZWxjb21lU2VjdGlvbkNvbmZpZyxcbiAgV2VsY29tZVNlY3Rpb25WYXJpYW50LFxuICBXZWxjb21lU2VjdGlvbkNvbG9yVmFyaWFudCxcbiAgV2lkZ2V0Q29uZmlnLFxuICBXcmFwcGluZ0VsZW1lbnQsXG4gIFNlYXJjaENhcmRWYXJpYW50LFxuICBXaWRnZXREaXNwbGF5VGVzdHMsXG4gIE5vT3BXaWRnZXRDb25maWcsXG4gIFdpZGdldE1vdW50aW5nLFxuICBTdGF0aWNXaWRnZXRNb3VudGluZyxcbiAgRHluYW1pY1dpZGdldE1vdW50aW5nLFxuICBQRFBQYWdlVmFyaWFudCxcbiAgUExQUGFnZVZhcmlhbnQsXG4gIFZpc2l0UGFnZVZhcmlhbnQsXG4gIE90aGVyUGFnZVZhcmlhbnQsXG4gIEhvbWVQYWdlVmFyaWFudCxcbiAgU2VhcmNoUGFnZVZhcmlhbnQsXG4gIE51bVJvd3MsXG59O1xuIiwiaW1wb3J0IHsgQ3VzdG9tZXJTZXJ2aWNlUHJvdmlkZXIgfSBmcm9tIFwiQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50XCI7XG5cbmV4cG9ydCBlbnVtIEN1c3RvbWVyU2VydmljZVR5cGUge1xuICBzaG9waWZ5ID0gXCJzaG9waWZ5XCIsXG4gIGdvcmdpYXMgPSBcImdvcmdpYXNcIixcbiAga3VzdG9tZXIgPSBcImt1c3RvbWVyXCIsXG4gIGdyb292ZSA9IFwiZ3Jvb3ZlXCIsXG4gIHRpZGlvID0gXCJ0aWRpb1wiLFxuICB6b3dpZSA9IFwiem93aWVcIixcbiAgcmVkbyA9IFwicmVkb1wiLFxuICBnbGFkbHkgPSBcImdsYWRseVwiLFxuICByaWNocGFuZWwgPSBcInJpY2hwYW5lbFwiLFxuICB6ZW5kZXNrID0gXCJ6ZW5kZXNrXCIsXG4gIHVuc3VwcG9ydGVkID0gXCJ1bnN1cHBvcnRlZFwiLFxufVxuZXhwb3J0IGVudW0gQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb25Nb2RlIHtcbiAgbm9uZSA9IFwibm9uZVwiLFxuICBzaW1wbGUgPSBcInNpbXBsZVwiLFxuICBmdWxsID0gXCJmdWxsXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb24ge1xuICBwcm92aWRlcjogQ3VzdG9tZXJTZXJ2aWNlUHJvdmlkZXI7XG4gIHN1cHBvcnRlZEludGVncmF0aW9uTW9kZXM6IEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uTW9kZVtdO1xuICBhbGxvd0ZpbGVVcGxvYWQ/OiBib29sZWFuO1xuICBtYXhmaWxlVXBsb2FkU2l6ZT86IG51bWJlcjtcbiAgLy8gVE9ETzogUmVtb3ZlIHRoaXMgbWV0aG9kIHdoZW4gbWlncmF0aW5nIG90aGVyIHByb3ZpZGVycyB0byB0aGUgbmV3IHVuaWZpZWQgQ1ggYnV0dG9uLlxuICBvblN3aXRjaFRvQWdlbnQ6ICgpID0+IHZvaWQ7XG4gIGlzRW5hYmxlZDogKCkgPT4gYm9vbGVhbjtcbiAgaXNCdXNpbmVzc0hvdXJzOiAoYXBpS2V5Pzogc3RyaW5nLCBhcGlFbmRwb2ludD86IHN0cmluZykgPT4gUHJvbWlzZTxib29sZWFuPjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFL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
@@ -1,115 +0,0 @@
1
- import { useEffect, RefObject, useRef } from 'react';
2
- import { useReducedMotionWithOverride } from 'src/hooks/useReducedMotionWithOverride';
3
-
4
- // IMPORTANT: All refs passed to this hook must be mutable (not Readonly)
5
- interface UseHorizontalScrollAnimationOptions {
6
- scrollContainerRef: RefObject<HTMLDivElement>;
7
- animationSpeed?: 'standard' | 'slow' | 'none';
8
- }
9
-
10
- // When using this hook, ensure that scrouuContainerRef is not undefined. It is allowed to
11
- // prevent issued elsewhere in the codebase, but it should be dealt with whenever you use this hook.
12
- export function useHorizontalScrollAnimation({
13
- scrollContainerRef,
14
- animationSpeed = 'standard',
15
- }: UseHorizontalScrollAnimationOptions): void {
16
- const reducedMotion = useReducedMotionWithOverride();
17
- const resumeTimeoutRef = useRef<NodeJS.Timeout | null>(null);
18
- const scrollAnimationRef = useRef<number | null>(null);
19
-
20
- const pauseOnHover = true; // This is unlikely to need to be configurable but I'm throwing it up here just in case.
21
-
22
- // Animation constants: time-based
23
- let PIXELS_PER_SECOND = 40;
24
- switch (animationSpeed) {
25
- case 'standard':
26
- PIXELS_PER_SECOND = 40;
27
- break;
28
- case 'slow':
29
- PIXELS_PER_SECOND = 25;
30
- break;
31
- case 'none':
32
- PIXELS_PER_SECOND = 0;
33
- break;
34
- default:
35
- PIXELS_PER_SECOND = 40;
36
- }
37
- const RESUME_DELAY_MS = 2000;
38
- const isAnimated = animationSpeed !== 'none';
39
-
40
- useEffect(() => {
41
- if (!isAnimated || reducedMotion || !scrollContainerRef) return;
42
-
43
- const container = scrollContainerRef.current;
44
- if (!container) return;
45
- if (container.scrollWidth <= container.clientWidth) return;
46
-
47
- let isPaused = false;
48
- let lastTimestamp: number | null = null;
49
- let accumulatedScroll = 0; // Accumulate fractional pixels
50
-
51
- const step = (timestamp: number) => {
52
- if (lastTimestamp === null) lastTimestamp = timestamp;
53
- if (!isPaused) {
54
- const delta = timestamp - lastTimestamp;
55
- lastTimestamp = timestamp;
56
-
57
- // Accumulate the scroll amount (including fractional pixels)
58
- accumulatedScroll += PIXELS_PER_SECOND * (delta / 1000);
59
-
60
- // Only apply whole pixel movements
61
- const pixelsToScroll = Math.floor(accumulatedScroll);
62
- if (pixelsToScroll > 0) {
63
- container.scrollLeft += pixelsToScroll;
64
- accumulatedScroll -= pixelsToScroll; // Keep the fractional remainder
65
-
66
- if (container.scrollLeft >= container.scrollWidth - container.clientWidth) {
67
- container.scrollLeft = 0; // Reset scroll to create a looping effect
68
- accumulatedScroll = 0; // Reset accumulated scroll when looping
69
- }
70
- }
71
- }
72
- scrollAnimationRef.current = requestAnimationFrame(step);
73
- };
74
-
75
- // Start animation
76
- scrollAnimationRef.current = requestAnimationFrame(step);
77
-
78
- // Pause/resume logic
79
- const pauseAnimation = () => {
80
- isPaused = true;
81
- if (resumeTimeoutRef.current) {
82
- clearTimeout(resumeTimeoutRef.current);
83
- resumeTimeoutRef.current = null;
84
- }
85
- };
86
- const scheduleResumeAnimation = () => {
87
- resumeTimeoutRef.current = setTimeout(() => {
88
- isPaused = false;
89
- lastTimestamp = null; // Reset timestamp so delta is correct after pause
90
- }, RESUME_DELAY_MS);
91
- };
92
-
93
- if (pauseOnHover) {
94
- container.addEventListener('mouseenter', pauseAnimation);
95
- container.addEventListener('mouseleave', scheduleResumeAnimation);
96
- container.addEventListener('touchstart', pauseAnimation);
97
- container.addEventListener('touchend', scheduleResumeAnimation);
98
- }
99
-
100
- return () => {
101
- if (scrollAnimationRef.current) {
102
- cancelAnimationFrame(scrollAnimationRef.current);
103
- }
104
- if (pauseOnHover) {
105
- container.removeEventListener('mouseenter', pauseAnimation);
106
- container.removeEventListener('mouseleave', scheduleResumeAnimation);
107
- container.removeEventListener('touchstart', pauseAnimation);
108
- container.removeEventListener('touchend', scheduleResumeAnimation);
109
- }
110
- if (resumeTimeoutRef.current) {
111
- clearTimeout(resumeTimeoutRef.current);
112
- }
113
- };
114
- }, [isAnimated, reducedMotion, PIXELS_PER_SECOND, pauseOnHover, scrollContainerRef]);
115
- }
@@ -1,15 +0,0 @@
1
- import { useReducedMotionConfig } from 'framer-motion';
2
- import { useMemo } from 'react';
3
-
4
- export const useReducedMotionWithOverride = () => {
5
- const reducedMotionConfig = useReducedMotionConfig();
6
- const reducedMotion = useMemo(() => {
7
- if (window?._spiffy?.reducedMotionOverride) {
8
- return window?._spiffy?.reducedMotionOverride;
9
- }
10
-
11
- return reducedMotionConfig;
12
- }, [reducedMotionConfig]);
13
-
14
- return reducedMotion;
15
- };
@@ -1,155 +0,0 @@
1
- import {
2
- MotionValue,
3
- transform,
4
- useAnimate,
5
- useMotionValue,
6
- useTransform,
7
- ValueAnimationTransition,
8
- } from 'framer-motion';
9
- import { useMemo, useState } from 'react';
10
- import { Unit, useSnapCalculator } from './useSnapCalculator';
11
-
12
- type SnapControl = {
13
- animationKey?: MotionValue;
14
- animation: ValueAnimationTransition;
15
- height: number;
16
- unit: Unit;
17
- snaps: number[];
18
- initSnap: number;
19
- threshold?: number;
20
- overlayOpacity: number;
21
- onSnapComplete: (currentSnap: number, nextSnap: number, collapsed: boolean) => void;
22
- };
23
-
24
- const MIDDLE_SNAP_OFFSET = 5;
25
- const SNAP_DISTANCE_OFFSET = 50;
26
-
27
- export const useSnapControl = ({
28
- animationKey,
29
- animation,
30
- height,
31
- unit,
32
- snaps,
33
- initSnap,
34
- onSnapComplete,
35
- overlayOpacity,
36
- }: SnapControl) => {
37
- const [scope, animate] = useAnimate();
38
- const animatedY = animationKey || useMotionValue(-1);
39
-
40
- const { swipeviewHeightPx, snapsToPixels, viewportHeightPx, getPixelToSnap, getSnapToPixel } =
41
- useSnapCalculator(snaps, height, unit);
42
-
43
- const contentHeight = useTransform(animatedY, [0, swipeviewHeightPx], [swipeviewHeightPx, 0]);
44
-
45
- const snapOverlayReference = useMemo(
46
- () => [
47
- getSnapToPixel(snaps[0]),
48
- getSnapToPixel(snaps[1]) - MIDDLE_SNAP_OFFSET,
49
- getSnapToPixel(snaps[2]),
50
- ],
51
- [],
52
- );
53
-
54
- const displayOverlay = useTransform(() =>
55
- animatedY.get() === -1
56
- ? 'none'
57
- : transform(animatedY.get(), snapOverlayReference, ['none', 'none', 'block']),
58
- );
59
-
60
- const opacityOverlay = useTransform(() =>
61
- animatedY.get() === -1
62
- ? 0
63
- : transform(animatedY.get(), snapOverlayReference, [0, 0, overlayOpacity]),
64
- );
65
-
66
- const initSnapInPixels = snapsToPixels?.[initSnap];
67
- const getInitSnap = () => snaps?.[initSnap];
68
- const [currentSnap, setCurrentSnap] = useState<number>(getInitSnap());
69
- const between = (x: number, min: number, max: number) => x >= min && x <= max;
70
-
71
- const defineNextSnapByPosition = () => {
72
- const scopeEl = scope.current;
73
- const currentSnapRef = Math.abs(
74
- viewportHeightPx - (swipeviewHeightPx - getSnapToPixel(currentSnap)),
75
- );
76
-
77
- const realGestureY =
78
- scopeEl.getBoundingClientRect().y +
79
- scopeEl.getBoundingClientRect().height -
80
- (window.innerHeight - document.documentElement.clientHeight);
81
-
82
- const isGoingUp = realGestureY < currentSnapRef;
83
-
84
- const snapsToPixelsClone = Array.from(snapsToPixels);
85
- isGoingUp
86
- ? snapsToPixelsClone.sort((a, b) => b - a) /* desc*/
87
- : snapsToPixelsClone.sort((a, b) => a - b); /* asc */
88
-
89
- if (realGestureY != currentSnapRef) {
90
- const snapReference = snapsToPixelsClone.find((snap) => {
91
- const current = Math.abs(viewportHeightPx - (swipeviewHeightPx - snap));
92
- return isGoingUp ? current < realGestureY : current > realGestureY;
93
- });
94
-
95
- if (snapReference === undefined) {
96
- return snapsToPixelsClone.slice(-1)[0];
97
- }
98
-
99
- const prevSnapIndex = snapsToPixelsClone.indexOf(snapReference ?? -1);
100
- const prevSnap = snapsToPixelsClone[prevSnapIndex - 1];
101
- const prevSnapPx = Math.abs(viewportHeightPx - (swipeviewHeightPx - prevSnap));
102
- const adjacentSnap = between(
103
- realGestureY,
104
- prevSnapPx - SNAP_DISTANCE_OFFSET,
105
- prevSnapPx + SNAP_DISTANCE_OFFSET,
106
- );
107
-
108
- return adjacentSnap ? prevSnap : snapReference;
109
- }
110
-
111
- return getSnapToPixel(currentSnap);
112
- };
113
-
114
- const jumpTo = (snapPx: number) => {
115
- const collapsed = snapPx === swipeviewHeightPx;
116
- const nextSnap = getPixelToSnap(snapPx);
117
- animate(
118
- scope.current,
119
- { y: snapPx },
120
- {
121
- ...animation,
122
- onComplete: () => {
123
- onSnapComplete(currentSnap, nextSnap, collapsed);
124
- setCurrentSnap(nextSnap);
125
- },
126
- },
127
- );
128
-
129
- return {
130
- nextSnap,
131
- collapsed,
132
- };
133
- };
134
-
135
- const resetControls = () => {
136
- setCurrentSnap(getInitSnap());
137
- return 0;
138
- };
139
-
140
- return {
141
- scope,
142
- animatedY,
143
- animate,
144
- swipeviewHeightPx,
145
- initSnapInPixels,
146
- contentHeight,
147
- currentSnap,
148
- displayOverlay,
149
- opacityOverlay,
150
- getSnapToPixel,
151
- jumpTo,
152
- defineNextSnapByPosition,
153
- resetControls,
154
- };
155
- };