@nlabs/metropolisjs 1.0.0 → 1.0.2

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 (221) hide show
  1. package/lib/actions/appActions/appActions.d.ts +0 -1
  2. package/lib/actions/awsRumActions/awsRumActions.d.ts +4 -4
  3. package/lib/actions/awsRumActions/awsRumActions.js +81 -29
  4. package/lib/actions/connectionActions/connectionActions.d.ts +0 -1
  5. package/lib/actions/contentActions/contentActions.d.ts +0 -1
  6. package/lib/actions/conversationActions/conversationActions.d.ts +0 -1
  7. package/lib/actions/crmActions/crmActions.d.ts +32 -33
  8. package/lib/actions/eventActions/eventActions.d.ts +0 -1
  9. package/lib/actions/groupActions/groupActions.d.ts +0 -1
  10. package/lib/actions/imageActions/imageActions.d.ts +0 -1
  11. package/lib/actions/imageActions/imageActions.js +5 -4
  12. package/lib/actions/index.d.ts +0 -1
  13. package/lib/actions/locationActions/locationActions.d.ts +0 -1
  14. package/lib/actions/messageActions/messageActions.d.ts +0 -1
  15. package/lib/actions/permissionActions/permissionActions.d.ts +0 -1
  16. package/lib/actions/personaActions/personaActions.d.ts +0 -1
  17. package/lib/actions/postActions/postActions.d.ts +0 -1
  18. package/lib/actions/reactionActions/reactionActions.d.ts +0 -1
  19. package/lib/actions/restActions/restActions.d.ts +2 -3
  20. package/lib/actions/sseActions/sseActions.d.ts +0 -1
  21. package/lib/actions/sseActions/sseActions.js +1 -1
  22. package/lib/actions/subscriptionActions/subscriptionActions.d.ts +0 -1
  23. package/lib/actions/tagActions/tagActions.d.ts +0 -1
  24. package/lib/actions/tagActions/tagActions.js +1 -1
  25. package/lib/actions/translationActions/translationActions.d.ts +0 -1
  26. package/lib/actions/userActions/userActions.d.ts +0 -1
  27. package/lib/actions/videoActions/videoActions.d.ts +0 -1
  28. package/lib/actions/websocketActions/websocketActions.d.ts +0 -1
  29. package/lib/adapters/appAdapter/appAdapter.d.ts +2 -3
  30. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts +2 -3
  31. package/lib/adapters/contentAdapter/contentAdapter.d.ts +2 -3
  32. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts +2 -3
  33. package/lib/adapters/eventAdapter/eventAdapter.d.ts +2 -3
  34. package/lib/adapters/fileAdapter/fileAdapter.d.ts +2 -3
  35. package/lib/adapters/groupAdapter/groupAdapter.d.ts +2 -3
  36. package/lib/adapters/imageAdapter/imageAdapter.d.ts +2 -3
  37. package/lib/adapters/index.d.ts +0 -1
  38. package/lib/adapters/locationAdapter/locationAdapter.d.ts +2 -3
  39. package/lib/adapters/messageAdapter/messageAdapter.d.ts +2 -3
  40. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts +2 -3
  41. package/lib/adapters/permissionAdapter/permissionAdapter.js +1 -1
  42. package/lib/adapters/personaAdapter/personaAdapter.d.ts +2 -3
  43. package/lib/adapters/postAdapter/postAdapter.d.ts +2 -3
  44. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts +2 -3
  45. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts +2 -3
  46. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts +2 -3
  47. package/lib/adapters/tagAdapter/tagAdapter.d.ts +2 -3
  48. package/lib/adapters/translationAdapter/translationAdapter.d.ts +2 -3
  49. package/lib/adapters/userAdapter/userAdapter.d.ts +2 -3
  50. package/lib/adapters/videoAdapter/videoAdapter.d.ts +2 -3
  51. package/lib/config/index.d.ts +2 -1
  52. package/lib/config/index.js +7 -3
  53. package/lib/constants/Collections.d.ts +43 -44
  54. package/lib/constants/MetropolisConstants.d.ts +0 -1
  55. package/lib/graphql/message.d.ts +0 -1
  56. package/lib/graphql/notification.d.ts +0 -1
  57. package/lib/graphql/session.d.ts +0 -1
  58. package/lib/index.d.ts +1 -1
  59. package/lib/index.js +31 -1
  60. package/lib/stores/appStore.d.ts +13 -14
  61. package/lib/stores/contentStore.d.ts +11 -12
  62. package/lib/stores/conversationStore.d.ts +11 -12
  63. package/lib/stores/eventStore.d.ts +13 -17
  64. package/lib/stores/groupStore.d.ts +11 -15
  65. package/lib/stores/imageStore.d.ts +16 -20
  66. package/lib/stores/index.d.ts +0 -1
  67. package/lib/stores/locationStore.d.ts +12 -15
  68. package/lib/stores/messageStore.d.ts +14 -20
  69. package/lib/stores/notificationStore.d.ts +3 -6
  70. package/lib/stores/permissionStore.d.ts +13 -14
  71. package/lib/stores/personaStore.d.ts +1 -2
  72. package/lib/stores/postStore.d.ts +11 -14
  73. package/lib/stores/reactionStore.d.ts +9 -10
  74. package/lib/stores/subscriptionStore.d.ts +13 -14
  75. package/lib/stores/tagStore.d.ts +16 -19
  76. package/lib/stores/translationStore.d.ts +8 -9
  77. package/lib/stores/userStore.d.ts +41 -42
  78. package/lib/stores/userStore.js +7 -1
  79. package/lib/stores/videoStore.d.ts +12 -13
  80. package/lib/stores/websocketStore.d.ts +5 -6
  81. package/lib/types/apps.types.d.ts +0 -1
  82. package/lib/types/common.types.d.ts +0 -1
  83. package/lib/types/conversations.types.d.ts +0 -1
  84. package/lib/types/crm.types.d.ts +0 -1
  85. package/lib/types/edges.types.d.ts +0 -1
  86. package/lib/types/groups.types.d.ts +0 -1
  87. package/lib/types/index.d.ts +0 -1
  88. package/lib/types/subscriptions.types.d.ts +0 -1
  89. package/lib/types/videos.types.d.ts +0 -1
  90. package/lib/utils/MetropolisProvider.d.ts +0 -1
  91. package/lib/utils/actionFactory.d.ts +2 -3
  92. package/lib/utils/actionFactory.js +27 -2
  93. package/lib/utils/api.d.ts +1 -2
  94. package/lib/utils/api.js +34 -18
  95. package/lib/utils/app.d.ts +0 -1
  96. package/lib/utils/baseActionFactory.d.ts +2 -3
  97. package/lib/utils/configUtils.d.ts +0 -1
  98. package/lib/utils/dateUtils.d.ts +0 -1
  99. package/lib/utils/file.d.ts +0 -1
  100. package/lib/utils/i18n.d.ts +0 -1
  101. package/lib/utils/index.d.ts +0 -1
  102. package/lib/utils/location.d.ts +1 -2
  103. package/lib/utils/permissionUtils.d.ts +0 -1
  104. package/lib/utils/requestCache.d.ts +1 -2
  105. package/lib/utils/session.d.ts +0 -1
  106. package/lib/utils/useConversationTyping.d.ts +0 -1
  107. package/lib/utils/useMetropolis.d.ts +0 -1
  108. package/lib/utils/useMetropolis.js +9 -5
  109. package/lib/utils/useTranslations.d.ts +0 -1
  110. package/lib/utils/useTranslations.js +1 -1
  111. package/lib/utils/validatorFactory.d.ts +1 -2
  112. package/package.json +3 -3
  113. package/tsconfig.test.json +4 -0
  114. package/lib/actions/appActions/appActions.d.ts.map +0 -1
  115. package/lib/actions/awsRumActions/awsRumActions.d.ts.map +0 -1
  116. package/lib/actions/connectionActions/connectionActions.d.ts.map +0 -1
  117. package/lib/actions/contentActions/contentActions.d.ts.map +0 -1
  118. package/lib/actions/conversationActions/conversationActions.d.ts.map +0 -1
  119. package/lib/actions/crmActions/crmActions.d.ts.map +0 -1
  120. package/lib/actions/eventActions/eventActions.d.ts.map +0 -1
  121. package/lib/actions/groupActions/groupActions.d.ts.map +0 -1
  122. package/lib/actions/imageActions/imageActions.d.ts.map +0 -1
  123. package/lib/actions/index.d.ts.map +0 -1
  124. package/lib/actions/locationActions/locationActions.d.ts.map +0 -1
  125. package/lib/actions/messageActions/messageActions.d.ts.map +0 -1
  126. package/lib/actions/permissionActions/permissionActions.d.ts.map +0 -1
  127. package/lib/actions/personaActions/personaActions.d.ts.map +0 -1
  128. package/lib/actions/postActions/postActions.d.ts.map +0 -1
  129. package/lib/actions/reactionActions/reactionActions.d.ts.map +0 -1
  130. package/lib/actions/restActions/restActions.d.ts.map +0 -1
  131. package/lib/actions/sseActions/sseActions.d.ts.map +0 -1
  132. package/lib/actions/subscriptionActions/subscriptionActions.d.ts.map +0 -1
  133. package/lib/actions/tagActions/tagActions.d.ts.map +0 -1
  134. package/lib/actions/translationActions/translationActions.d.ts.map +0 -1
  135. package/lib/actions/userActions/userActions.d.ts.map +0 -1
  136. package/lib/actions/videoActions/videoActions.d.ts.map +0 -1
  137. package/lib/actions/websocketActions/websocketActions.d.ts.map +0 -1
  138. package/lib/adapters/appAdapter/appAdapter.d.ts.map +0 -1
  139. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts.map +0 -1
  140. package/lib/adapters/contentAdapter/contentAdapter.d.ts.map +0 -1
  141. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts.map +0 -1
  142. package/lib/adapters/eventAdapter/eventAdapter.d.ts.map +0 -1
  143. package/lib/adapters/fileAdapter/fileAdapter.d.ts.map +0 -1
  144. package/lib/adapters/groupAdapter/groupAdapter.d.ts.map +0 -1
  145. package/lib/adapters/imageAdapter/imageAdapter.d.ts.map +0 -1
  146. package/lib/adapters/index.d.ts.map +0 -1
  147. package/lib/adapters/locationAdapter/locationAdapter.d.ts.map +0 -1
  148. package/lib/adapters/messageAdapter/messageAdapter.d.ts.map +0 -1
  149. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts.map +0 -1
  150. package/lib/adapters/personaAdapter/personaAdapter.d.ts.map +0 -1
  151. package/lib/adapters/postAdapter/postAdapter.d.ts.map +0 -1
  152. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts.map +0 -1
  153. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts.map +0 -1
  154. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts.map +0 -1
  155. package/lib/adapters/tagAdapter/tagAdapter.d.ts.map +0 -1
  156. package/lib/adapters/translationAdapter/translationAdapter.d.ts.map +0 -1
  157. package/lib/adapters/userAdapter/userAdapter.d.ts.map +0 -1
  158. package/lib/adapters/videoAdapter/videoAdapter.d.ts.map +0 -1
  159. package/lib/config/index.d.ts.map +0 -1
  160. package/lib/constants/Collections.d.ts.map +0 -1
  161. package/lib/constants/MetropolisConstants.d.ts.map +0 -1
  162. package/lib/graphql/message.d.ts.map +0 -1
  163. package/lib/graphql/notification.d.ts.map +0 -1
  164. package/lib/graphql/session.d.ts.map +0 -1
  165. package/lib/index.d.ts.map +0 -1
  166. package/lib/stores/appStore.d.ts.map +0 -1
  167. package/lib/stores/contentStore.d.ts.map +0 -1
  168. package/lib/stores/conversationStore.d.ts.map +0 -1
  169. package/lib/stores/eventStore.d.ts.map +0 -1
  170. package/lib/stores/groupStore.d.ts.map +0 -1
  171. package/lib/stores/imageStore.d.ts.map +0 -1
  172. package/lib/stores/index.d.ts.map +0 -1
  173. package/lib/stores/locationStore.d.ts.map +0 -1
  174. package/lib/stores/messageStore.d.ts.map +0 -1
  175. package/lib/stores/notificationStore.d.ts.map +0 -1
  176. package/lib/stores/permissionStore.d.ts.map +0 -1
  177. package/lib/stores/personaStore.d.ts.map +0 -1
  178. package/lib/stores/postStore.d.ts.map +0 -1
  179. package/lib/stores/reactionStore.d.ts.map +0 -1
  180. package/lib/stores/subscriptionStore.d.ts.map +0 -1
  181. package/lib/stores/tagStore.d.ts.map +0 -1
  182. package/lib/stores/translationStore.d.ts.map +0 -1
  183. package/lib/stores/userStore.d.ts.map +0 -1
  184. package/lib/stores/videoStore.d.ts.map +0 -1
  185. package/lib/stores/websocketStore.d.ts.map +0 -1
  186. package/lib/tests/actionTestScenarios.d.ts +0 -20
  187. package/lib/tests/actionTestScenarios.d.ts.map +0 -1
  188. package/lib/tests/actionTestScenarios.js +0 -851
  189. package/lib/tests/testGraphQLServer.d.ts +0 -22
  190. package/lib/tests/testGraphQLServer.d.ts.map +0 -1
  191. package/lib/tests/testGraphQLServer.js +0 -197
  192. package/lib/tests/testGraphQLServerSimple.d.ts +0 -3
  193. package/lib/tests/testGraphQLServerSimple.d.ts.map +0 -1
  194. package/lib/tests/testGraphQLServerSimple.js +0 -52
  195. package/lib/types/apps.types.d.ts.map +0 -1
  196. package/lib/types/common.types.d.ts.map +0 -1
  197. package/lib/types/conversations.types.d.ts.map +0 -1
  198. package/lib/types/crm.types.d.ts.map +0 -1
  199. package/lib/types/edges.types.d.ts.map +0 -1
  200. package/lib/types/groups.types.d.ts.map +0 -1
  201. package/lib/types/index.d.ts.map +0 -1
  202. package/lib/types/subscriptions.types.d.ts.map +0 -1
  203. package/lib/types/videos.types.d.ts.map +0 -1
  204. package/lib/utils/MetropolisProvider.d.ts.map +0 -1
  205. package/lib/utils/actionFactory.d.ts.map +0 -1
  206. package/lib/utils/api.d.ts.map +0 -1
  207. package/lib/utils/app.d.ts.map +0 -1
  208. package/lib/utils/baseActionFactory.d.ts.map +0 -1
  209. package/lib/utils/configUtils.d.ts.map +0 -1
  210. package/lib/utils/dateUtils.d.ts.map +0 -1
  211. package/lib/utils/file.d.ts.map +0 -1
  212. package/lib/utils/i18n.d.ts.map +0 -1
  213. package/lib/utils/index.d.ts.map +0 -1
  214. package/lib/utils/location.d.ts.map +0 -1
  215. package/lib/utils/permissionUtils.d.ts.map +0 -1
  216. package/lib/utils/requestCache.d.ts.map +0 -1
  217. package/lib/utils/session.d.ts.map +0 -1
  218. package/lib/utils/useConversationTyping.d.ts.map +0 -1
  219. package/lib/utils/useMetropolis.d.ts.map +0 -1
  220. package/lib/utils/useTranslations.d.ts.map +0 -1
  221. package/lib/utils/validatorFactory.d.ts.map +0 -1
package/lib/index.js CHANGED
@@ -17,6 +17,7 @@ import { MetropolisContext } from './utils/MetropolisProvider.js';
17
17
  import { getRefreshWindowMinutes, hydrateSessionFromStorage, parseJwtExpiryMs } from './utils/session.js';
18
18
  import { createAction } from './utils/actionFactory.js';
19
19
  export { MetropolisContext, MetropolisProvider } from './utils/MetropolisProvider.js';
20
+ export const GOTHAM_ANALYTICS_EVENT = 'nlabs:gotham:analytics';
20
21
  export const onInit = async (flux)=>{
21
22
  if (!flux.getState('app.metropolisInitialized')) {
22
23
  flux.addStores([
@@ -133,6 +134,13 @@ export const Metropolis = ({ adapters, children, config = {}, translations = {}
133
134
  resolvedConfig.adapters,
134
135
  adapters
135
136
  ]);
137
+ const rumOptions = useMemo(()=>({
138
+ ...resolvedConfig.app?.rum,
139
+ appId: resolvedConfig.app?.rum?.appId || resolvedConfig.app?.name
140
+ }), [
141
+ resolvedConfig.app?.name,
142
+ resolvedConfig.app?.rum
143
+ ]);
136
144
  const sessionPersonaId = String(useFluxState('user.session.personaId', '') || '');
137
145
  const sessionToken = String(useFluxState('user.session.token', '') || '');
138
146
  const sessionHydrated = Boolean(useFluxState('app.sessionHydrated', false));
@@ -147,6 +155,28 @@ export const Metropolis = ({ adapters, children, config = {}, translations = {}
147
155
  websocketsRef.current = createAction('websocket', flux);
148
156
  }
149
157
  const websockets = websocketsRef.current;
158
+ const awsRum = useMemo(()=>createAction('awsRum', flux, rumOptions), [
159
+ flux,
160
+ rumOptions
161
+ ]);
162
+ useEffect(()=>{
163
+ if (typeof globalThis.window === 'undefined') {
164
+ return;
165
+ }
166
+ const onGothamAnalytics = (event)=>{
167
+ const detail = event.detail;
168
+ if (detail && typeof detail === 'object') {
169
+ awsRum.track(detail);
170
+ }
171
+ };
172
+ globalThis.window.addEventListener(GOTHAM_ANALYTICS_EVENT, onGothamAnalytics);
173
+ return ()=>{
174
+ globalThis.window.removeEventListener(GOTHAM_ANALYTICS_EVENT, onGothamAnalytics);
175
+ void awsRum.destroy();
176
+ };
177
+ }, [
178
+ awsRum
179
+ ]);
150
180
  useEffect(()=>{
151
181
  initI18n(translations);
152
182
  }, [
@@ -248,4 +278,4 @@ export * from './actions/videoActions/videoActions.js';
248
278
  export * from './constants/Collections.js';
249
279
  export * from './types/index.js';
250
280
 
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3VzZUZsdXgsIHVzZUZsdXhTdGF0ZX0gZnJvbSAnQG5sYWJzL2Fya2hhbWpzLXV0aWxzLXJlYWN0JztcbmltcG9ydCBpMThuIGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IHtEYXRlVGltZX0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtJMThuZXh0UHJvdmlkZXJ9IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuXG5pbXBvcnQge2NyZWF0ZVdlYnNvY2tldEFjdGlvbnN9IGZyb20gJy4vYWN0aW9ucy93ZWJzb2NrZXRBY3Rpb25zL3dlYnNvY2tldEFjdGlvbnMuanMnO1xuaW1wb3J0IHtzeW5jUGVyc29uYVRhZ3NUb1Nlc3Npb24sIHN5bmNQZXJzb25hVG9TZXNzaW9ufSBmcm9tICcuL2FjdGlvbnMvcGVyc29uYUFjdGlvbnMvcGVyc29uYUFjdGlvbnMuanMnO1xuaW1wb3J0IHtyZXNvbHZlRW52aXJvbm1lbnRDb25maWd9IGZyb20gJy4vY29uZmlnL2luZGV4LmpzJztcbmltcG9ydCB7XG4gIGFwcCxcbiAgZXZlbnRzLFxuICBpbWFnZXMsXG4gIGxvY2F0aW9ucyxcbiAgbWVzc2FnZXMsXG4gIG5vdGlmaWNhdGlvbnMsXG4gIE5PVElGSUNBVElPTl9DT05TVEFOVFMsXG4gIHBlcm1pc3Npb25zLFxuICBQRVJTT05BX0NPTlNUQU5UUyxcbiAgcG9zdHMsXG4gIHN1YnNjcmlwdGlvbnMsXG4gIFRBR19DT05TVEFOVFMsXG4gIHRhZ3MsXG4gIFVTRVJfQ09OU1RBTlRTLFxuICB1c2VycyxcbiAgdmlkZW8sXG4gIHdlYnNvY2tldFxufSBmcm9tICcuL3N0b3Jlcy9pbmRleC5qcyc7XG5pbXBvcnQge3JlZnJlc2hTZXNzaW9ufSBmcm9tICcuL3V0aWxzL2FwaS5qcyc7XG5pbXBvcnQge2dldENvbmZpZ0Zyb21GbHV4fSBmcm9tICcuL3V0aWxzL2NvbmZpZ1V0aWxzLmpzJztcbmltcG9ydCB7aW5pdEkxOG59IGZyb20gJy4vdXRpbHMvaTE4bi5qcyc7XG5pbXBvcnQge01ldHJvcG9saXNDb250ZXh0fSBmcm9tICcuL3V0aWxzL01ldHJvcG9saXNQcm92aWRlci5qcyc7XG5pbXBvcnQge2dldFJlZnJlc2hXaW5kb3dNaW51dGVzLCBoeWRyYXRlU2Vzc2lvbkZyb21TdG9yYWdlLCBwYXJzZUp3dEV4cGlyeU1zfSBmcm9tICcuL3V0aWxzL3Nlc3Npb24uanMnO1xuaW1wb3J0IHtjcmVhdGVBY3Rpb259IGZyb20gJy4vdXRpbHMvYWN0aW9uRmFjdG9yeS5qcyc7XG5cbmltcG9ydCB0eXBlIHtGbHV4RnJhbWV3b3JrfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuaW1wb3J0IHR5cGUge01ldHJvcG9saXNDb25maWd1cmF0aW9uLCBNZXRyb3BvbGlzRW52aXJvbm1lbnRDb25maWd1cmF0aW9ufSBmcm9tICcuL2NvbmZpZy9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7TWV0cm9wb2xpc0FkYXB0ZXJzfSBmcm9tICcuL3V0aWxzL01ldHJvcG9saXNQcm92aWRlci5qcyc7XG5cbmV4cG9ydCB7TWV0cm9wb2xpc0NvbnRleHQsIE1ldHJvcG9saXNQcm92aWRlcn0gZnJvbSAnLi91dGlscy9NZXRyb3BvbGlzUHJvdmlkZXIuanMnO1xuXG5leHBvcnQgdHlwZSB7TWV0cm9wb2xpc0NvbmZpZ3VyYXRpb259IGZyb20gJy4vY29uZmlnL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHtNZXRyb3BvbGlzQWRhcHRlcnN9IGZyb20gJy4vdXRpbHMvTWV0cm9wb2xpc1Byb3ZpZGVyLmpzJztcblxuZXhwb3J0IGNvbnN0IG9uSW5pdCA9IGFzeW5jIChmbHV4OiBGbHV4RnJhbWV3b3JrKSA9PiB7XG4gIGlmKCFmbHV4LmdldFN0YXRlKCdhcHAubWV0cm9wb2xpc0luaXRpYWxpemVkJykpIHtcbiAgICBmbHV4LmFkZFN0b3JlcyhbXG4gICAgICBhcHAsXG4gICAgICBldmVudHMsXG4gICAgICBpbWFnZXMsXG4gICAgICBsb2NhdGlvbnMsXG4gICAgICBtZXNzYWdlcyxcbiAgICAgIG5vdGlmaWNhdGlvbnMsXG4gICAgICBwZXJtaXNzaW9ucyxcbiAgICAgIHBvc3RzLFxuICAgICAgc3Vic2NyaXB0aW9ucyxcbiAgICAgIHRhZ3MsXG4gICAgICB1c2VycyxcbiAgICAgIHZpZGVvLFxuICAgICAgd2Vic29ja2V0XG4gICAgXSk7XG4gICAgZmx1eC5vbihVU0VSX0NPTlNUQU5UUy5TSUdOX09VVF9TVUNDRVNTLCAoKSA9PiB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHt0eXBlOiBOT1RJRklDQVRJT05fQ09OU1RBTlRTLkNMRUFSX0lURU1TfSk7XG4gICAgfSk7XG4gICAgZmx1eC5vbihQRVJTT05BX0NPTlNUQU5UUy5BRERfSVRFTV9TVUNDRVNTLCBhc3luYyAoe3BlcnNvbmEgPSB7fX06IHtwZXJzb25hPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj59KSA9PiB7XG4gICAgICBzeW5jUGVyc29uYVRvU2Vzc2lvbihmbHV4LCBwZXJzb25hKTtcblxuICAgICAgaWYocGVyc29uYT8ucGVyc29uYUlkICYmICFBcnJheS5pc0FycmF5KHBlcnNvbmE/LnRhZ3MpKSB7XG4gICAgICAgIGF3YWl0IHN5bmNQZXJzb25hVGFnc1RvU2Vzc2lvbihmbHV4LCBTdHJpbmcocGVyc29uYS5wZXJzb25hSWQpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGZsdXgub24oUEVSU09OQV9DT05TVEFOVFMuVVBEQVRFX0lURU1fU1VDQ0VTUywgYXN5bmMgKHtwZXJzb25hID0ge319OiB7cGVyc29uYT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+fSkgPT4ge1xuICAgICAgc3luY1BlcnNvbmFUb1Nlc3Npb24oZmx1eCwgcGVyc29uYSk7XG5cbiAgICAgIGlmKHBlcnNvbmE/LnBlcnNvbmFJZCAmJiAhQXJyYXkuaXNBcnJheShwZXJzb25hPy50YWdzKSkge1xuICAgICAgICBhd2FpdCBzeW5jUGVyc29uYVRhZ3NUb1Nlc3Npb24oZmx1eCwgU3RyaW5nKHBlcnNvbmEucGVyc29uYUlkKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBmbHV4Lm9uKFRBR19DT05TVEFOVFMuQUREX1BFUlNPTkFfU1VDQ0VTUywgKHt0YWd9OiB7dGFnPzoge25hbWU/OiBzdHJpbmc7IHRhZ0lkPzogc3RyaW5nfX0pID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRTZXNzaW9uID0gKGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicsIHt9KSB8fCB7fSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gJiB7XG4gICAgICAgIHRhZ3M/OiBBcnJheTx7bmFtZT86IHN0cmluZzsgdGFnSWQ/OiBzdHJpbmd9PjtcbiAgICAgIH07XG4gICAgICBjb25zdCBjdXJyZW50VGFncyA9IEFycmF5LmlzQXJyYXkoY3VycmVudFNlc3Npb24udGFncykgPyBjdXJyZW50U2Vzc2lvbi50YWdzIDogW107XG4gICAgICBjb25zdCBuZXh0VGFnSWQgPSBTdHJpbmcodGFnPy50YWdJZCB8fCAnJykudHJpbSgpO1xuXG4gICAgICBpZighbmV4dFRhZ0lkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWVyZ2VkVGFncyA9IFsuLi5jdXJyZW50VGFncy5maWx0ZXIoKGl0ZW0pID0+IFN0cmluZyhpdGVtPy50YWdJZCB8fCAnJykudHJpbSgpICE9PSBuZXh0VGFnSWQpLCB0YWcgYXMge25hbWU/OiBzdHJpbmc7IHRhZ0lkPzogc3RyaW5nfV1cbiAgICAgICAgLnNvcnQoKGxlZnQsIHJpZ2h0KSA9PiBTdHJpbmcobGVmdD8ubmFtZSB8fCAnJykubG9jYWxlQ29tcGFyZShTdHJpbmcocmlnaHQ/Lm5hbWUgfHwgJycpKSk7XG4gICAgICBjb25zdCBuZXh0U2Vzc2lvbiA9IHsuLi5jdXJyZW50U2Vzc2lvbiwgdGFnczogbWVyZ2VkVGFnc307XG5cbiAgICAgIHZvaWQgZmx1eC5zZXRTdGF0ZSgndXNlci5zZXNzaW9uJywgbmV4dFNlc3Npb24pO1xuICAgICAgZmx1eC5kaXNwYXRjaCh7dHlwZTogVVNFUl9DT05TVEFOVFMuVVBEQVRFX1NFU1NJT05fU1VDQ0VTUywgdXNlcjoge3RhZ3M6IG1lcmdlZFRhZ3N9fSk7XG4gICAgfSk7XG5cbiAgICBmbHV4Lm9uKFRBR19DT05TVEFOVFMuUkVNT1ZFX1BFUlNPTkFfU1VDQ0VTUywgKHt0YWd9OiB7dGFnPzoge3RhZ0lkPzogc3RyaW5nfX0pID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRTZXNzaW9uID0gKGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicsIHt9KSB8fCB7fSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gJiB7XG4gICAgICAgIHRhZ3M/OiBBcnJheTx7bmFtZT86IHN0cmluZzsgdGFnSWQ/OiBzdHJpbmd9PjtcbiAgICAgIH07XG4gICAgICBjb25zdCBjdXJyZW50VGFncyA9IEFycmF5LmlzQXJyYXkoY3VycmVudFNlc3Npb24udGFncykgPyBjdXJyZW50U2Vzc2lvbi50YWdzIDogW107XG4gICAgICBjb25zdCBuZXh0VGFnSWQgPSBTdHJpbmcodGFnPy50YWdJZCB8fCAnJykudHJpbSgpO1xuXG4gICAgICBpZighbmV4dFRhZ0lkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV4dFRhZ3MgPSBjdXJyZW50VGFncy5maWx0ZXIoKGl0ZW0pID0+IFN0cmluZyhpdGVtPy50YWdJZCB8fCAnJykudHJpbSgpICE9PSBuZXh0VGFnSWQpO1xuICAgICAgY29uc3QgbmV4dFNlc3Npb24gPSB7Li4uY3VycmVudFNlc3Npb24sIHRhZ3M6IG5leHRUYWdzfTtcblxuICAgICAgdm9pZCBmbHV4LnNldFN0YXRlKCd1c2VyLnNlc3Npb24nLCBuZXh0U2Vzc2lvbik7XG4gICAgICBmbHV4LmRpc3BhdGNoKHt0eXBlOiBVU0VSX0NPTlNUQU5UUy5VUERBVEVfU0VTU0lPTl9TVUNDRVNTLCB1c2VyOiB7dGFnczogbmV4dFRhZ3N9fSk7XG4gICAgfSk7XG4gICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKGZsdXguc2V0U3RhdGUoJ2FwcC5tZXRyb3BvbGlzSW5pdGlhbGl6ZWQnLCB0cnVlKSk7XG4gIH1cblxuICBjb25zdCB0b2tlbiA9IFN0cmluZyhmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24udG9rZW4nKSB8fCAnJyk7XG5cbiAgaWYodG9rZW4pIHtcbiAgICBjb25zdCBzZXNzaW9uID0gKGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicsIHt9KSB8fCB7fSkgYXMge2V4cGlyZXM/OiBudW1iZXI7IGlzc3VlZD86IG51bWJlcjsgdG9rZW4/OiBzdHJpbmd9O1xuICAgIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICAgIGNvbnN0IHRva2VuRXhwaXJlc0F0ID0gcGFyc2VKd3RFeHBpcnlNcyh0b2tlbik7XG4gICAgY29uc3Qgc2Vzc2lvbkxpZmV0aW1lTWludXRlcyA9IE1hdGgucm91bmQoKE51bWJlcihzZXNzaW9uLmV4cGlyZXMgfHwgMCkgLSBOdW1iZXIoc2Vzc2lvbi5pc3N1ZWQgfHwgMCkpIC8gKDEwMDAgKiA2MCkpO1xuICAgIGNvbnN0IHJlZnJlc2hXaW5kb3dNaW51dGVzID0gZ2V0UmVmcmVzaFdpbmRvd01pbnV0ZXMoXG4gICAgICBzZXNzaW9uTGlmZXRpbWVNaW51dGVzIHx8IDE1LFxuICAgICAgY29uZmlnLmFwcD8uc2Vzc2lvbiB8fCB7fVxuICAgICk7XG4gICAgY29uc3QgcmVmcmVzaEV4cGlyZXNNaW51dGVzID0gTWF0aC5tYXgoMSwgTnVtYmVyKGNvbmZpZy5hcHA/LnNlc3Npb24/Lm1heE1pbnV0ZXMgfHwgc2Vzc2lvbkxpZmV0aW1lTWludXRlcyB8fCAxNSkpO1xuICAgIGNvbnN0IGV4cGlyZXNBdCA9IE51bWJlcihzZXNzaW9uLmV4cGlyZXMgfHwgMCk7XG5cbiAgICBpZih0b2tlbkV4cGlyZXNBdCA+IDAgJiYgRGF0ZS5ub3coKSA+PSB0b2tlbkV4cGlyZXNBdCkge1xuICAgICAgYXdhaXQgcmVmcmVzaFNlc3Npb24oZmx1eCwgdG9rZW4sIHJlZnJlc2hFeHBpcmVzTWludXRlcyk7XG4gICAgfSBlbHNlIGlmKCFleHBpcmVzQXQpIHtcbiAgICAgIGF3YWl0IHJlZnJlc2hTZXNzaW9uKGZsdXgsIHRva2VuLCByZWZyZXNoRXhwaXJlc01pbnV0ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtaW51dGVzVW50aWxFeHBpcnkgPSBNYXRoLnJvdW5kKERhdGVUaW1lLmZyb21NaWxsaXMoZXhwaXJlc0F0KS5kaWZmKERhdGVUaW1lLmxvY2FsKCksICdtaW51dGVzJykudG9PYmplY3QoKS5taW51dGVzIHx8IDApO1xuXG4gICAgICBpZihtaW51dGVzVW50aWxFeHBpcnkgPD0gMCB8fCBtaW51dGVzVW50aWxFeHBpcnkgPD0gcmVmcmVzaFdpbmRvd01pbnV0ZXMpIHtcbiAgICAgICAgYXdhaXQgcmVmcmVzaFNlc3Npb24oZmx1eCwgdG9rZW4gYXMgc3RyaW5nLCByZWZyZXNoRXhwaXJlc01pbnV0ZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0ICogZnJvbSAnLi9zdG9yZXMvaW5kZXguanMnO1xuXG5leHBvcnQge1xuICBhcHBNdXRhdGlvbixcbiAgYXBwUXVlcnksXG4gIHB1YmxpY011dGF0aW9uLFxuICBwdWJsaWNRdWVyeSxcbiAgcnVtTXV0YXRpb24sXG4gIHJlZnJlc2hTZXNzaW9uLFxuICByZXNvbHZlUmVzdEVuZHBvaW50LFxuICByZXN0UmVxdWVzdCxcbiAgdXBsb2FkSW1hZ2UsXG4gIHR5cGUgQXBpUmVzdWx0c1R5cGUsXG4gIHR5cGUgUmVha3RvckRiQ29sbGVjdGlvbixcbiAgdHlwZSBSZXN0QXBpT3B0aW9ucyxcbiAgdHlwZSBSZXN0TWV0aG9kXG59IGZyb20gJy4vdXRpbHMvYXBpLmpzJztcblxuZXhwb3J0IHtyZXNvbHZlRW52aXJvbm1lbnRDb25maWd9IGZyb20gJy4vY29uZmlnL2luZGV4LmpzJztcbmV4cG9ydCB7Z2V0Q29uZmlnRnJvbUZsdXh9IGZyb20gJy4vdXRpbHMvY29uZmlnVXRpbHMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJvcG9saXNQcm9wcyB7XG4gIHJlYWRvbmx5IGFkYXB0ZXJzPzogTWV0cm9wb2xpc0FkYXB0ZXJzO1xuICByZWFkb25seSBjaGlsZHJlbj86IFJlYWN0LlJlYWN0RWxlbWVudCB8IFJlYWN0LlJlYWN0RWxlbWVudFtdO1xuICByZWFkb25seSBjb25maWc/OiBNZXRyb3BvbGlzQ29uZmlndXJhdGlvbjtcbiAgcmVhZG9ubHkgdHJhbnNsYXRpb25zPzogU2ltcGxlVHJhbnNsYXRpb25zIHwgQ29tcGxleFRyYW5zbGF0aW9ucztcbn1cblxuZXhwb3J0IHR5cGUgU2ltcGxlVHJhbnNsYXRpb25zID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IGludGVyZmFjZSBDb21wbGV4VHJhbnNsYXRpb24ge1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuICByZWFkb25seSBsb2NhbGU6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZXNwYWNlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBDb21wbGV4VHJhbnNsYXRpb25zID0gUmVjb3JkPHN0cmluZywgQ29tcGxleFRyYW5zbGF0aW9uPjtcblxuZXhwb3J0IGNvbnN0IE1ldHJvcG9saXMgPSAoe2FkYXB0ZXJzLCBjaGlsZHJlbiwgY29uZmlnID0ge30sIHRyYW5zbGF0aW9ucyA9IHt9fTogTWV0cm9wb2xpc1Byb3BzKSA9PiB7XG4gIGNvbnN0IGZsdXggPSB1c2VGbHV4KCk7XG4gIGNvbnN0IHJlc29sdmVkQ29uZmlnID0gdXNlTWVtbzxNZXRyb3BvbGlzRW52aXJvbm1lbnRDb25maWd1cmF0aW9uPigoKSA9PiByZXNvbHZlRW52aXJvbm1lbnRDb25maWcoY29uZmlnKSwgW2NvbmZpZ10pO1xuICBjb25zdCBtZXJnZWRBZGFwdGVycyA9IHVzZU1lbW8oKCkgPT4gKHsuLi5yZXNvbHZlZENvbmZpZy5hZGFwdGVycywgLi4uYWRhcHRlcnN9KSwgW3Jlc29sdmVkQ29uZmlnLmFkYXB0ZXJzLCBhZGFwdGVyc10pO1xuICBjb25zdCBzZXNzaW9uUGVyc29uYUlkID0gU3RyaW5nKHVzZUZsdXhTdGF0ZSgndXNlci5zZXNzaW9uLnBlcnNvbmFJZCcsICcnKSB8fCAnJyk7XG4gIGNvbnN0IHNlc3Npb25Ub2tlbiA9IFN0cmluZyh1c2VGbHV4U3RhdGUoJ3VzZXIuc2Vzc2lvbi50b2tlbicsICcnKSB8fCAnJyk7XG4gIGNvbnN0IHNlc3Npb25IeWRyYXRlZCA9IEJvb2xlYW4odXNlRmx1eFN0YXRlKCdhcHAuc2Vzc2lvbkh5ZHJhdGVkJywgZmFsc2UpKTtcbiAgY29uc3Qgc2Vzc2lvbiA9IHVzZUZsdXhTdGF0ZSgndXNlci5zZXNzaW9uJywge30pIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBub3RpZmljYXRpb25MaXN0ID0gdXNlRmx1eFN0YXRlKCdub3RpZmljYXRpb24ubGlzdCcsIFtdKSBhcyBBcnJheTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIGNvbnN0IGNvbnZlcnNhdGlvbk1hcCA9IHVzZUZsdXhTdGF0ZSgnbWVzc2FnZS5jb252ZXJzYXRpb25zJywge30pIGFzIFJlY29yZDxzdHJpbmcsIEFycmF5PFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj47XG4gIGNvbnN0IG1lc3NhZ2VzID0gdXNlTWVtbygoKSA9PiBPYmplY3QudmFsdWVzKGNvbnZlcnNhdGlvbk1hcCkuZmxhdCgpLCBbY29udmVyc2F0aW9uTWFwXSk7XG5cbiAgY29uc3Qgd2Vic29ja2V0c1JlZiA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVXZWJzb2NrZXRBY3Rpb25zPiB8IG51bGw+KG51bGwpO1xuICBpZighd2Vic29ja2V0c1JlZi5jdXJyZW50KSB7XG4gICAgd2Vic29ja2V0c1JlZi5jdXJyZW50ID0gY3JlYXRlQWN0aW9uKCd3ZWJzb2NrZXQnLCBmbHV4KSBhcyBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVXZWJzb2NrZXRBY3Rpb25zPjtcbiAgfVxuICBjb25zdCB3ZWJzb2NrZXRzID0gd2Vic29ja2V0c1JlZi5jdXJyZW50O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5pdEkxOG4odHJhbnNsYXRpb25zKTtcbiAgfSwgW3RyYW5zbGF0aW9uc10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGlzQWN0aXZlID0gdHJ1ZTtcblxuICAgIHZvaWQgKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZShmbHV4LnNldFN0YXRlKCdhcHAuY29uZmlnJywgcmVzb2x2ZWRDb25maWcpKTtcbiAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZShmbHV4LnNldFN0YXRlKCdhcHAuc2Vzc2lvbkh5ZHJhdGVkJywgZmFsc2UpKTtcbiAgICAgIGF3YWl0IGh5ZHJhdGVTZXNzaW9uRnJvbVN0b3JhZ2UoZmx1eCk7XG5cbiAgICAgIGlmKCFpc0FjdGl2ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IG9uSW5pdChmbHV4KTtcblxuICAgICAgaWYoIWlzQWN0aXZlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKGZsdXguc2V0U3RhdGUoJ2FwcC5zZXNzaW9uSHlkcmF0ZWQnLCB0cnVlKSk7XG4gICAgfSkoKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpc0FjdGl2ZSA9IGZhbHNlO1xuICAgIH07XG4gIH0sIFtmbHV4LCByZXNvbHZlZENvbmZpZ10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYoIXNlc3Npb25IeWRyYXRlZCkge1xuICAgICAgd2Vic29ja2V0cy53c0Nsb3NlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYoc2Vzc2lvblRva2VuKSB7XG4gICAgICB3ZWJzb2NrZXRzLndzSW5pdChzZXNzaW9uVG9rZW4sIHNlc3Npb25QZXJzb25hSWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3ZWJzb2NrZXRzLndzQ2xvc2UoKTtcbiAgICB9XG4gIH0sIFtzZXNzaW9uSHlkcmF0ZWQsIHNlc3Npb25QZXJzb25hSWQsIHNlc3Npb25Ub2tlbiwgd2Vic29ja2V0c10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdlYnNvY2tldHMud3NDbG9zZSgpO1xuICAgIH07XG4gIH0sIFt3ZWJzb2NrZXRzXSk7XG5cbiAgY29uc3QgaXNBdXRoID0gdXNlTWVtbygoKSA9PiByZXNvbHZlZENvbmZpZy5pc0F1dGggfHwgKCgpID0+IHtcbiAgICBjb25zdCBzZXNzaW9uU3RhdGUgPSBmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24nLCB7fSk7XG4gICAgcmV0dXJuICEhc2Vzc2lvblN0YXRlLnVzZXJBY3RpdmU7XG4gIH0pLCBbcmVzb2x2ZWRDb25maWcuaXNBdXRoLCBmbHV4XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8TWV0cm9wb2xpc0NvbnRleHQuUHJvdmlkZXJcbiAgICAgIHZhbHVlPXt7XG4gICAgICAgIGFkYXB0ZXJzOiBtZXJnZWRBZGFwdGVycyxcbiAgICAgICAgY29uZmlnOiByZXNvbHZlZENvbmZpZyxcbiAgICAgICAgZmx1eCxcbiAgICAgICAgaXNBdXRoLFxuICAgICAgICBtZXNzYWdlcyxcbiAgICAgICAgbm90aWZpY2F0aW9uczogbm90aWZpY2F0aW9uTGlzdCxcbiAgICAgICAgc2Vzc2lvbixcbiAgICAgICAgdXBkYXRlTWVzc2FnZTogKCkgPT4geyB9LFxuICAgICAgICB1cGRhdGVOb3RpZmljYXRpb246IHdlYnNvY2tldHMuc2VuZE5vdGlmaWNhdGlvblxuICAgICAgfX0+XG4gICAgICA8STE4bmV4dFByb3ZpZGVyIGkxOG49e2kxOG59PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0kxOG5leHRQcm92aWRlcj5cbiAgICA8L01ldHJvcG9saXNDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTWV0cm9wb2xpcztcblxuZXhwb3J0IHt1c2VUcmFuc2xhdGlvbn0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5leHBvcnQgKiBmcm9tICcuL2FkYXB0ZXJzL2luZGV4LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RhbnRzL01ldHJvcG9saXNDb25zdGFudHMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmFwaHFsL21lc3NhZ2UuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmFwaHFsL25vdGlmaWNhdGlvbi5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3Jlcy9pbmRleC5qcyc7XG5leHBvcnQge1xuICBjcmVhdGVBY3Rpb24sXG4gIGNyZWF0ZUFjdGlvbnMsXG4gIGNyZWF0ZUFsbEFjdGlvbnNcbn0gZnJvbSAnLi91dGlscy9hY3Rpb25GYWN0b3J5LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvYXBwLmpzJztcbmV4cG9ydCB7Y3JlYXRlQmFzZUFjdGlvbnN9IGZyb20gJy4vdXRpbHMvYmFzZUFjdGlvbkZhY3RvcnkuanMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9kYXRlVXRpbHMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9maWxlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvbG9jYXRpb24uanMnO1xuZXhwb3J0IHtcbiAgdXNlQ29udGVudEFjdGlvbnMsXG4gIHVzZUF3c1J1bSxcbiAgdXNlQ3JtQWN0aW9ucyxcbiAgdXNlRXZlbnRBY3Rpb25zLFxuICB1c2VHcm91cEFjdGlvbnMsXG4gIHVzZUltYWdlQWN0aW9ucyxcbiAgdXNlTG9jYXRpb25BY3Rpb25zLFxuICB1c2VNZXNzYWdlQWN0aW9ucywgdXNlTWV0cm9wb2xpcyxcbiAgdXNlTWV0cm9wb2xpc0NvbmZpZyxcbiAgdXNlTWV0cm9wb2xpc0ZsdXgsIHVzZVBvc3RBY3Rpb25zLFxuICB1c2VQZXJzb25hQWN0aW9ucyxcbiAgdXNlUmVhY3Rpb25BY3Rpb25zLFxuICB1c2VSZXN0QWN0aW9ucyxcbiAgdXNlVGFnQWN0aW9ucyxcbiAgdXNlVHJhbnNsYXRpb25BY3Rpb25zLFxuICB1c2VVc2VyQWN0aW9ucyxcbiAgdXNlV2Vic29ja2V0QWN0aW9uc1xufSBmcm9tICcuL3V0aWxzL3VzZU1ldHJvcG9saXMuanMnO1xuZXhwb3J0IHt1c2VDb252ZXJzYXRpb25UeXBpbmd9IGZyb20gJy4vdXRpbHMvdXNlQ29udmVyc2F0aW9uVHlwaW5nLmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29udmVyc2F0aW9uVHlwaW5nT3B0aW9ucyxcbiAgVXNlQ29udmVyc2F0aW9uVHlwaW5nT3B0aW9uc1xufSBmcm9tICcuL3V0aWxzL3VzZUNvbnZlcnNhdGlvblR5cGluZy5qcyc7XG5leHBvcnQge1xuICBjcmVhdGVWYWxpZGF0b3JGYWN0b3J5LFxuICBjcmVhdGVWYWxpZGF0b3JNYW5hZ2VyXG59IGZyb20gJy4vdXRpbHMvdmFsaWRhdG9yRmFjdG9yeS5qcyc7XG5cbmV4cG9ydCB0eXBlIHtcbiAgQWN0aW9uT3B0aW9ucyxcbiAgQWN0aW9uUmV0dXJuVHlwZSxcbiAgQWN0aW9uVHlwZSxcbiAgQWN0aW9uVHlwZXNcbn0gZnJvbSAnLi91dGlscy9hY3Rpb25GYWN0b3J5LmpzJztcbmV4cG9ydCB0eXBlIHtCYXNlQWN0aW9uT3B0aW9uc30gZnJvbSAnLi91dGlscy9iYXNlQWN0aW9uRmFjdG9yeS5qcyc7XG5leHBvcnQgdHlwZSB7QmFzZUFkYXB0ZXJPcHRpb25zfSBmcm9tICcuL3V0aWxzL3ZhbGlkYXRvckZhY3RvcnkuanMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbnMvYXBwQWN0aW9ucy9hcHBBY3Rpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9ucy9hd3NSdW1BY3Rpb25zL2F3c1J1bUFjdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb25zL2Nvbm5lY3Rpb25BY3Rpb25zL2Nvbm5lY3Rpb25BY3Rpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9ucy9jb252ZXJzYXRpb25BY3Rpb25zL2NvbnZlcnNhdGlvbkFjdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb25zL2NybUFjdGlvbnMvY3JtQWN0aW9ucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbnMvcmVzdEFjdGlvbnMvcmVzdEFjdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb25zL3ZpZGVvQWN0aW9ucy92aWRlb0FjdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMvQ29sbGVjdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9pbmRleC5qcyc7XG4iXSwibmFtZXMiOlsidXNlRmx1eCIsInVzZUZsdXhTdGF0ZSIsImkxOG4iLCJEYXRlVGltZSIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJJMThuZXh0UHJvdmlkZXIiLCJzeW5jUGVyc29uYVRhZ3NUb1Nlc3Npb24iLCJzeW5jUGVyc29uYVRvU2Vzc2lvbiIsInJlc29sdmVFbnZpcm9ubWVudENvbmZpZyIsImFwcCIsImV2ZW50cyIsImltYWdlcyIsImxvY2F0aW9ucyIsIm1lc3NhZ2VzIiwibm90aWZpY2F0aW9ucyIsIk5PVElGSUNBVElPTl9DT05TVEFOVFMiLCJwZXJtaXNzaW9ucyIsIlBFUlNPTkFfQ09OU1RBTlRTIiwicG9zdHMiLCJzdWJzY3JpcHRpb25zIiwiVEFHX0NPTlNUQU5UUyIsInRhZ3MiLCJVU0VSX0NPTlNUQU5UUyIsInVzZXJzIiwidmlkZW8iLCJ3ZWJzb2NrZXQiLCJyZWZyZXNoU2Vzc2lvbiIsImdldENvbmZpZ0Zyb21GbHV4IiwiaW5pdEkxOG4iLCJNZXRyb3BvbGlzQ29udGV4dCIsImdldFJlZnJlc2hXaW5kb3dNaW51dGVzIiwiaHlkcmF0ZVNlc3Npb25Gcm9tU3RvcmFnZSIsInBhcnNlSnd0RXhwaXJ5TXMiLCJjcmVhdGVBY3Rpb24iLCJNZXRyb3BvbGlzUHJvdmlkZXIiLCJvbkluaXQiLCJmbHV4IiwiZ2V0U3RhdGUiLCJhZGRTdG9yZXMiLCJvbiIsIlNJR05fT1VUX1NVQ0NFU1MiLCJkaXNwYXRjaCIsInR5cGUiLCJDTEVBUl9JVEVNUyIsIkFERF9JVEVNX1NVQ0NFU1MiLCJwZXJzb25hIiwicGVyc29uYUlkIiwiQXJyYXkiLCJpc0FycmF5IiwiU3RyaW5nIiwiVVBEQVRFX0lURU1fU1VDQ0VTUyIsIkFERF9QRVJTT05BX1NVQ0NFU1MiLCJ0YWciLCJjdXJyZW50U2Vzc2lvbiIsImN1cnJlbnRUYWdzIiwibmV4dFRhZ0lkIiwidGFnSWQiLCJ0cmltIiwibWVyZ2VkVGFncyIsImZpbHRlciIsIml0ZW0iLCJzb3J0IiwibGVmdCIsInJpZ2h0IiwibmFtZSIsImxvY2FsZUNvbXBhcmUiLCJuZXh0U2Vzc2lvbiIsInNldFN0YXRlIiwiVVBEQVRFX1NFU1NJT05fU1VDQ0VTUyIsInVzZXIiLCJSRU1PVkVfUEVSU09OQV9TVUNDRVNTIiwibmV4dFRhZ3MiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRva2VuIiwic2Vzc2lvbiIsImNvbmZpZyIsInRva2VuRXhwaXJlc0F0Iiwic2Vzc2lvbkxpZmV0aW1lTWludXRlcyIsIk1hdGgiLCJyb3VuZCIsIk51bWJlciIsImV4cGlyZXMiLCJpc3N1ZWQiLCJyZWZyZXNoV2luZG93TWludXRlcyIsInJlZnJlc2hFeHBpcmVzTWludXRlcyIsIm1heCIsIm1heE1pbnV0ZXMiLCJleHBpcmVzQXQiLCJEYXRlIiwibm93IiwibWludXRlc1VudGlsRXhwaXJ5IiwiZnJvbU1pbGxpcyIsImRpZmYiLCJsb2NhbCIsInRvT2JqZWN0IiwibWludXRlcyIsImFwcE11dGF0aW9uIiwiYXBwUXVlcnkiLCJwdWJsaWNNdXRhdGlvbiIsInB1YmxpY1F1ZXJ5IiwicnVtTXV0YXRpb24iLCJyZXNvbHZlUmVzdEVuZHBvaW50IiwicmVzdFJlcXVlc3QiLCJ1cGxvYWRJbWFnZSIsIk1ldHJvcG9saXMiLCJhZGFwdGVycyIsImNoaWxkcmVuIiwidHJhbnNsYXRpb25zIiwicmVzb2x2ZWRDb25maWciLCJtZXJnZWRBZGFwdGVycyIsInNlc3Npb25QZXJzb25hSWQiLCJzZXNzaW9uVG9rZW4iLCJzZXNzaW9uSHlkcmF0ZWQiLCJCb29sZWFuIiwibm90aWZpY2F0aW9uTGlzdCIsImNvbnZlcnNhdGlvbk1hcCIsIk9iamVjdCIsInZhbHVlcyIsImZsYXQiLCJ3ZWJzb2NrZXRzUmVmIiwiY3VycmVudCIsIndlYnNvY2tldHMiLCJpc0FjdGl2ZSIsIndzQ2xvc2UiLCJ3c0luaXQiLCJpc0F1dGgiLCJzZXNzaW9uU3RhdGUiLCJ1c2VyQWN0aXZlIiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInVwZGF0ZU1lc3NhZ2UiLCJ1cGRhdGVOb3RpZmljYXRpb24iLCJzZW5kTm90aWZpY2F0aW9uIiwidXNlVHJhbnNsYXRpb24iLCJjcmVhdGVBY3Rpb25zIiwiY3JlYXRlQWxsQWN0aW9ucyIsImNyZWF0ZUJhc2VBY3Rpb25zIiwidXNlQ29udGVudEFjdGlvbnMiLCJ1c2VBd3NSdW0iLCJ1c2VDcm1BY3Rpb25zIiwidXNlRXZlbnRBY3Rpb25zIiwidXNlR3JvdXBBY3Rpb25zIiwidXNlSW1hZ2VBY3Rpb25zIiwidXNlTG9jYXRpb25BY3Rpb25zIiwidXNlTWVzc2FnZUFjdGlvbnMiLCJ1c2VNZXRyb3BvbGlzIiwidXNlTWV0cm9wb2xpc0NvbmZpZyIsInVzZU1ldHJvcG9saXNGbHV4IiwidXNlUG9zdEFjdGlvbnMiLCJ1c2VQZXJzb25hQWN0aW9ucyIsInVzZVJlYWN0aW9uQWN0aW9ucyIsInVzZVJlc3RBY3Rpb25zIiwidXNlVGFnQWN0aW9ucyIsInVzZVRyYW5zbGF0aW9uQWN0aW9ucyIsInVzZVVzZXJBY3Rpb25zIiwidXNlV2Vic29ja2V0QWN0aW9ucyIsInVzZUNvbnZlcnNhdGlvblR5cGluZyIsImNyZWF0ZVZhbGlkYXRvckZhY3RvcnkiLCJjcmVhdGVWYWxpZGF0b3JNYW5hZ2VyIl0sIm1hcHBpbmdzIjoiO0FBQUE7OztDQUdDLEdBQ0QsU0FBUUEsT0FBTyxFQUFFQyxZQUFZLFFBQU8sOEJBQThCO0FBQ2xFLE9BQU9DLFVBQVUsVUFBVTtBQUMzQixTQUFRQyxRQUFRLFFBQU8sUUFBUTtBQUMvQixTQUFRQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxRQUFPLFFBQVE7QUFDakQsU0FBUUMsZUFBZSxRQUFPLGdCQUFnQjtBQUc5QyxTQUFRQyx3QkFBd0IsRUFBRUMsb0JBQW9CLFFBQU8sNkNBQTZDO0FBQzFHLFNBQVFDLHdCQUF3QixRQUFPLG9CQUFvQjtBQUMzRCxTQUNFQyxHQUFHLEVBQ0hDLE1BQU0sRUFDTkMsTUFBTSxFQUNOQyxTQUFTLEVBQ1RDLFFBQVEsRUFDUkMsYUFBYSxFQUNiQyxzQkFBc0IsRUFDdEJDLFdBQVcsRUFDWEMsaUJBQWlCLEVBQ2pCQyxLQUFLLEVBQ0xDLGFBQWEsRUFDYkMsYUFBYSxFQUNiQyxJQUFJLEVBQ0pDLGNBQWMsRUFDZEMsS0FBSyxFQUNMQyxLQUFLLEVBQ0xDLFNBQVMsUUFDSixvQkFBb0I7QUFDM0IsU0FBUUMsY0FBYyxRQUFPLGlCQUFpQjtBQUM5QyxTQUFRQyxpQkFBaUIsUUFBTyx5QkFBeUI7QUFDekQsU0FBUUMsUUFBUSxRQUFPLGtCQUFrQjtBQUN6QyxTQUFRQyxpQkFBaUIsUUFBTyxnQ0FBZ0M7QUFDaEUsU0FBUUMsdUJBQXVCLEVBQUVDLHlCQUF5QixFQUFFQyxnQkFBZ0IsUUFBTyxxQkFBcUI7QUFDeEcsU0FBUUMsWUFBWSxRQUFPLDJCQUEyQjtBQU10RCxTQUFRSixpQkFBaUIsRUFBRUssa0JBQWtCLFFBQU8sZ0NBQWdDO0FBS3BGLE9BQU8sTUFBTUMsU0FBUyxPQUFPQztJQUMzQixJQUFHLENBQUNBLEtBQUtDLFFBQVEsQ0FBQyw4QkFBOEI7UUFDOUNELEtBQUtFLFNBQVMsQ0FBQztZQUNiN0I7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUU7WUFDQUU7WUFDQUM7WUFDQUU7WUFDQUU7WUFDQUM7WUFDQUM7U0FDRDtRQUNEVyxLQUFLRyxFQUFFLENBQUNqQixlQUFla0IsZ0JBQWdCLEVBQUU7WUFDdkNKLEtBQUtLLFFBQVEsQ0FBQztnQkFBQ0MsTUFBTTNCLHVCQUF1QjRCLFdBQVc7WUFBQTtRQUN6RDtRQUNBUCxLQUFLRyxFQUFFLENBQUN0QixrQkFBa0IyQixnQkFBZ0IsRUFBRSxPQUFPLEVBQUNDLFVBQVUsQ0FBQyxDQUFDLEVBQXNDO1lBQ3BHdEMscUJBQXFCNkIsTUFBTVM7WUFFM0IsSUFBR0EsU0FBU0MsYUFBYSxDQUFDQyxNQUFNQyxPQUFPLENBQUNILFNBQVN4QixPQUFPO2dCQUN0RCxNQUFNZix5QkFBeUI4QixNQUFNYSxPQUFPSixRQUFRQyxTQUFTO1lBQy9EO1FBQ0Y7UUFFQVYsS0FBS0csRUFBRSxDQUFDdEIsa0JBQWtCaUMsbUJBQW1CLEVBQUUsT0FBTyxFQUFDTCxVQUFVLENBQUMsQ0FBQyxFQUFzQztZQUN2R3RDLHFCQUFxQjZCLE1BQU1TO1lBRTNCLElBQUdBLFNBQVNDLGFBQWEsQ0FBQ0MsTUFBTUMsT0FBTyxDQUFDSCxTQUFTeEIsT0FBTztnQkFDdEQsTUFBTWYseUJBQXlCOEIsTUFBTWEsT0FBT0osUUFBUUMsU0FBUztZQUMvRDtRQUNGO1FBRUFWLEtBQUtHLEVBQUUsQ0FBQ25CLGNBQWMrQixtQkFBbUIsRUFBRSxDQUFDLEVBQUNDLEdBQUcsRUFBMEM7WUFDeEYsTUFBTUMsaUJBQWtCakIsS0FBS0MsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztZQUc5RCxNQUFNaUIsY0FBY1AsTUFBTUMsT0FBTyxDQUFDSyxlQUFlaEMsSUFBSSxJQUFJZ0MsZUFBZWhDLElBQUksR0FBRyxFQUFFO1lBQ2pGLE1BQU1rQyxZQUFZTixPQUFPRyxLQUFLSSxTQUFTLElBQUlDLElBQUk7WUFFL0MsSUFBRyxDQUFDRixXQUFXO2dCQUNiO1lBQ0Y7WUFFQSxNQUFNRyxhQUFhO21CQUFJSixZQUFZSyxNQUFNLENBQUMsQ0FBQ0MsT0FBU1gsT0FBT1csTUFBTUosU0FBUyxJQUFJQyxJQUFJLE9BQU9GO2dCQUFZSDthQUF1QyxDQUN6SVMsSUFBSSxDQUFDLENBQUNDLE1BQU1DLFFBQVVkLE9BQU9hLE1BQU1FLFFBQVEsSUFBSUMsYUFBYSxDQUFDaEIsT0FBT2MsT0FBT0MsUUFBUTtZQUN0RixNQUFNRSxjQUFjO2dCQUFDLEdBQUdiLGNBQWM7Z0JBQUVoQyxNQUFNcUM7WUFBVTtZQUV4RCxLQUFLdEIsS0FBSytCLFFBQVEsQ0FBQyxnQkFBZ0JEO1lBQ25DOUIsS0FBS0ssUUFBUSxDQUFDO2dCQUFDQyxNQUFNcEIsZUFBZThDLHNCQUFzQjtnQkFBRUMsTUFBTTtvQkFBQ2hELE1BQU1xQztnQkFBVTtZQUFDO1FBQ3RGO1FBRUF0QixLQUFLRyxFQUFFLENBQUNuQixjQUFja0Qsc0JBQXNCLEVBQUUsQ0FBQyxFQUFDbEIsR0FBRyxFQUEyQjtZQUM1RSxNQUFNQyxpQkFBa0JqQixLQUFLQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1lBRzlELE1BQU1pQixjQUFjUCxNQUFNQyxPQUFPLENBQUNLLGVBQWVoQyxJQUFJLElBQUlnQyxlQUFlaEMsSUFBSSxHQUFHLEVBQUU7WUFDakYsTUFBTWtDLFlBQVlOLE9BQU9HLEtBQUtJLFNBQVMsSUFBSUMsSUFBSTtZQUUvQyxJQUFHLENBQUNGLFdBQVc7Z0JBQ2I7WUFDRjtZQUVBLE1BQU1nQixXQUFXakIsWUFBWUssTUFBTSxDQUFDLENBQUNDLE9BQVNYLE9BQU9XLE1BQU1KLFNBQVMsSUFBSUMsSUFBSSxPQUFPRjtZQUNuRixNQUFNVyxjQUFjO2dCQUFDLEdBQUdiLGNBQWM7Z0JBQUVoQyxNQUFNa0Q7WUFBUTtZQUV0RCxLQUFLbkMsS0FBSytCLFFBQVEsQ0FBQyxnQkFBZ0JEO1lBQ25DOUIsS0FBS0ssUUFBUSxDQUFDO2dCQUFDQyxNQUFNcEIsZUFBZThDLHNCQUFzQjtnQkFBRUMsTUFBTTtvQkFBQ2hELE1BQU1rRDtnQkFBUTtZQUFDO1FBQ3BGO1FBQ0EsTUFBTUMsUUFBUUMsT0FBTyxDQUFDckMsS0FBSytCLFFBQVEsQ0FBQyw2QkFBNkI7SUFDbkU7SUFFQSxNQUFNTyxRQUFRekIsT0FBT2IsS0FBS0MsUUFBUSxDQUFDLHlCQUF5QjtJQUU1RCxJQUFHcUMsT0FBTztRQUNSLE1BQU1DLFVBQVd2QyxLQUFLQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1FBQ3ZELE1BQU11QyxTQUFTakQsa0JBQWtCUztRQUNqQyxNQUFNeUMsaUJBQWlCN0MsaUJBQWlCMEM7UUFDeEMsTUFBTUkseUJBQXlCQyxLQUFLQyxLQUFLLENBQUMsQUFBQ0MsQ0FBQUEsT0FBT04sUUFBUU8sT0FBTyxJQUFJLEtBQUtELE9BQU9OLFFBQVFRLE1BQU0sSUFBSSxFQUFDLElBQU0sQ0FBQSxPQUFPLEVBQUM7UUFDbEgsTUFBTUMsdUJBQXVCdEQsd0JBQzNCZ0QsMEJBQTBCLElBQzFCRixPQUFPbkUsR0FBRyxFQUFFa0UsV0FBVyxDQUFDO1FBRTFCLE1BQU1VLHdCQUF3Qk4sS0FBS08sR0FBRyxDQUFDLEdBQUdMLE9BQU9MLE9BQU9uRSxHQUFHLEVBQUVrRSxTQUFTWSxjQUFjVCwwQkFBMEI7UUFDOUcsTUFBTVUsWUFBWVAsT0FBT04sUUFBUU8sT0FBTyxJQUFJO1FBRTVDLElBQUdMLGlCQUFpQixLQUFLWSxLQUFLQyxHQUFHLE1BQU1iLGdCQUFnQjtZQUNyRCxNQUFNbkQsZUFBZVUsTUFBTXNDLE9BQU9XO1FBQ3BDLE9BQU8sSUFBRyxDQUFDRyxXQUFXO1lBQ3BCLE1BQU05RCxlQUFlVSxNQUFNc0MsT0FBT1c7UUFDcEMsT0FBTztZQUNMLE1BQU1NLHFCQUFxQlosS0FBS0MsS0FBSyxDQUFDL0UsU0FBUzJGLFVBQVUsQ0FBQ0osV0FBV0ssSUFBSSxDQUFDNUYsU0FBUzZGLEtBQUssSUFBSSxXQUFXQyxRQUFRLEdBQUdDLE9BQU8sSUFBSTtZQUU3SCxJQUFHTCxzQkFBc0IsS0FBS0Esc0JBQXNCUCxzQkFBc0I7Z0JBQ3hFLE1BQU0xRCxlQUFlVSxNQUFNc0MsT0FBaUJXO1lBQzlDO1FBQ0Y7SUFDRjtBQUNGLEVBQUU7QUFFRixjQUFjLG9CQUFvQjtBQUVsQyxTQUNFWSxXQUFXLEVBQ1hDLFFBQVEsRUFDUkMsY0FBYyxFQUNkQyxXQUFXLEVBQ1hDLFdBQVcsRUFDWDNFLGNBQWMsRUFDZDRFLG1CQUFtQixFQUNuQkMsV0FBVyxFQUNYQyxXQUFXLFFBS04saUJBQWlCO0FBRXhCLFNBQVFoRyx3QkFBd0IsUUFBTyxvQkFBb0I7QUFDM0QsU0FBUW1CLGlCQUFpQixRQUFPLHlCQUF5QjtBQW1CekQsT0FBTyxNQUFNOEUsYUFBYSxDQUFDLEVBQUNDLFFBQVEsRUFBRUMsUUFBUSxFQUFFL0IsU0FBUyxDQUFDLENBQUMsRUFBRWdDLGVBQWUsQ0FBQyxDQUFDLEVBQWtCO0lBQzlGLE1BQU14RSxPQUFPdEM7SUFDYixNQUFNK0csaUJBQWlCMUcsUUFBNEMsSUFBTUsseUJBQXlCb0UsU0FBUztRQUFDQTtLQUFPO0lBQ25ILE1BQU1rQyxpQkFBaUIzRyxRQUFRLElBQU8sQ0FBQTtZQUFDLEdBQUcwRyxlQUFlSCxRQUFRO1lBQUUsR0FBR0EsUUFBUTtRQUFBLENBQUEsR0FBSTtRQUFDRyxlQUFlSCxRQUFRO1FBQUVBO0tBQVM7SUFDckgsTUFBTUssbUJBQW1COUQsT0FBT2xELGFBQWEsMEJBQTBCLE9BQU87SUFDOUUsTUFBTWlILGVBQWUvRCxPQUFPbEQsYUFBYSxzQkFBc0IsT0FBTztJQUN0RSxNQUFNa0gsa0JBQWtCQyxRQUFRbkgsYUFBYSx1QkFBdUI7SUFDcEUsTUFBTTRFLFVBQVU1RSxhQUFhLGdCQUFnQixDQUFDO0lBQzlDLE1BQU1vSCxtQkFBbUJwSCxhQUFhLHFCQUFxQixFQUFFO0lBQzdELE1BQU1xSCxrQkFBa0JySCxhQUFhLHlCQUF5QixDQUFDO0lBQy9ELE1BQU1jLFdBQVdWLFFBQVEsSUFBTWtILE9BQU9DLE1BQU0sQ0FBQ0YsaUJBQWlCRyxJQUFJLElBQUk7UUFBQ0g7S0FBZ0I7SUFFdkYsTUFBTUksZ0JBQWdCcEgsT0FBeUQ7SUFDL0UsSUFBRyxDQUFDb0gsY0FBY0MsT0FBTyxFQUFFO1FBQ3pCRCxjQUFjQyxPQUFPLEdBQUd4RixhQUFhLGFBQWFHO0lBQ3BEO0lBQ0EsTUFBTXNGLGFBQWFGLGNBQWNDLE9BQU87SUFFeEN2SCxVQUFVO1FBQ1IwQixTQUFTZ0Y7SUFDWCxHQUFHO1FBQUNBO0tBQWE7SUFFakIxRyxVQUFVO1FBQ1IsSUFBSXlILFdBQVc7UUFFZixLQUFLLEFBQUMsQ0FBQTtZQUNKLE1BQU1uRCxRQUFRQyxPQUFPLENBQUNyQyxLQUFLK0IsUUFBUSxDQUFDLGNBQWMwQztZQUNsRCxNQUFNckMsUUFBUUMsT0FBTyxDQUFDckMsS0FBSytCLFFBQVEsQ0FBQyx1QkFBdUI7WUFDM0QsTUFBTXBDLDBCQUEwQks7WUFFaEMsSUFBRyxDQUFDdUYsVUFBVTtnQkFDWjtZQUNGO1lBRUEsTUFBTXhGLE9BQU9DO1lBRWIsSUFBRyxDQUFDdUYsVUFBVTtnQkFDWjtZQUNGO1lBRUEsTUFBTW5ELFFBQVFDLE9BQU8sQ0FBQ3JDLEtBQUsrQixRQUFRLENBQUMsdUJBQXVCO1FBQzdELENBQUE7UUFFQSxPQUFPO1lBQ0x3RCxXQUFXO1FBQ2I7SUFDRixHQUFHO1FBQUN2RjtRQUFNeUU7S0FBZTtJQUV6QjNHLFVBQVU7UUFDUixJQUFHLENBQUMrRyxpQkFBaUI7WUFDbkJTLFdBQVdFLE9BQU87WUFDbEI7UUFDRjtRQUVBLElBQUdaLGNBQWM7WUFDZlUsV0FBV0csTUFBTSxDQUFDYixjQUFjRDtRQUNsQyxPQUFPO1lBQ0xXLFdBQVdFLE9BQU87UUFDcEI7SUFDRixHQUFHO1FBQUNYO1FBQWlCRjtRQUFrQkM7UUFBY1U7S0FBVztJQUVoRXhILFVBQVU7UUFDUixPQUFPO1lBQ0x3SCxXQUFXRSxPQUFPO1FBQ3BCO0lBQ0YsR0FBRztRQUFDRjtLQUFXO0lBRWYsTUFBTUksU0FBUzNILFFBQVEsSUFBTTBHLGVBQWVpQixNQUFNLElBQUssQ0FBQTtZQUNyRCxNQUFNQyxlQUFlM0YsS0FBS0MsUUFBUSxDQUFDLGdCQUFnQixDQUFDO1lBQ3BELE9BQU8sQ0FBQyxDQUFDMEYsYUFBYUMsVUFBVTtRQUNsQyxDQUFBLEdBQUk7UUFBQ25CLGVBQWVpQixNQUFNO1FBQUUxRjtLQUFLO0lBRWpDLHFCQUNFLEtBQUNQLGtCQUFrQm9HLFFBQVE7UUFDekJDLE9BQU87WUFDTHhCLFVBQVVJO1lBQ1ZsQyxRQUFRaUM7WUFDUnpFO1lBQ0EwRjtZQUNBakg7WUFDQUMsZUFBZXFHO1lBQ2Z4QztZQUNBd0QsZUFBZSxLQUFRO1lBQ3ZCQyxvQkFBb0JWLFdBQVdXLGdCQUFnQjtRQUNqRDtrQkFDQSxjQUFBLEtBQUNoSTtZQUFnQkwsTUFBTUE7c0JBQ3BCMkc7OztBQUlULEVBQUU7QUFFRixlQUFlRixXQUFXO0FBRTFCLFNBQVE2QixjQUFjLFFBQU8sZ0JBQWdCO0FBQzdDLGNBQWMsc0JBQXNCO0FBQ3BDLGNBQWMscUNBQXFDO0FBQ25ELGNBQWMsdUJBQXVCO0FBQ3JDLGNBQWMsNEJBQTRCO0FBQzFDLGNBQWMsb0JBQW9CO0FBQ2xDLFNBQ0VyRyxZQUFZLEVBQ1pzRyxhQUFhLEVBQ2JDLGdCQUFnQixRQUNYLDJCQUEyQjtBQUNsQyxjQUFjLGlCQUFpQjtBQUMvQixTQUFRQyxpQkFBaUIsUUFBTywrQkFBK0I7QUFDL0QsY0FBYyx1QkFBdUI7QUFDckMsY0FBYyxrQkFBa0I7QUFDaEMsY0FBYyxzQkFBc0I7QUFDcEMsU0FDRUMsaUJBQWlCLEVBQ2pCQyxTQUFTLEVBQ1RDLGFBQWEsRUFDYkMsZUFBZSxFQUNmQyxlQUFlLEVBQ2ZDLGVBQWUsRUFDZkMsa0JBQWtCLEVBQ2xCQyxpQkFBaUIsRUFBRUMsYUFBYSxFQUNoQ0MsbUJBQW1CLEVBQ25CQyxpQkFBaUIsRUFBRUMsY0FBYyxFQUNqQ0MsaUJBQWlCLEVBQ2pCQyxrQkFBa0IsRUFDbEJDLGNBQWMsRUFDZEMsYUFBYSxFQUNiQyxxQkFBcUIsRUFDckJDLGNBQWMsRUFDZEMsbUJBQW1CLFFBQ2QsMkJBQTJCO0FBQ2xDLFNBQVFDLHFCQUFxQixRQUFPLG1DQUFtQztBQUt2RSxTQUNFQyxzQkFBc0IsRUFDdEJDLHNCQUFzQixRQUNqQiw4QkFBOEI7QUFXckMsY0FBYyxxQ0FBcUM7QUFDbkQsY0FBYywyQ0FBMkM7QUFDekQsY0FBYyxtREFBbUQ7QUFDakUsY0FBYyx1REFBdUQ7QUFDckUsY0FBYyxxQ0FBcUM7QUFDbkQsY0FBYyx1Q0FBdUM7QUFDckQsY0FBYyx5Q0FBeUM7QUFDdkQsY0FBYyw2QkFBNkI7QUFDM0MsY0FBYyxtQkFBbUIifQ==
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3VzZUZsdXgsIHVzZUZsdXhTdGF0ZX0gZnJvbSAnQG5sYWJzL2Fya2hhbWpzLXV0aWxzLXJlYWN0JztcbmltcG9ydCBpMThuIGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IHtEYXRlVGltZX0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtJMThuZXh0UHJvdmlkZXJ9IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuXG5pbXBvcnQge2NyZWF0ZVdlYnNvY2tldEFjdGlvbnN9IGZyb20gJy4vYWN0aW9ucy93ZWJzb2NrZXRBY3Rpb25zL3dlYnNvY2tldEFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge0F3c1J1bUFjdGlvbnMsIEF3c1J1bVRyYWNrSW5wdXR9IGZyb20gJy4vYWN0aW9ucy9hd3NSdW1BY3Rpb25zL2F3c1J1bUFjdGlvbnMuanMnO1xuaW1wb3J0IHtzeW5jUGVyc29uYVRhZ3NUb1Nlc3Npb24sIHN5bmNQZXJzb25hVG9TZXNzaW9ufSBmcm9tICcuL2FjdGlvbnMvcGVyc29uYUFjdGlvbnMvcGVyc29uYUFjdGlvbnMuanMnO1xuaW1wb3J0IHtyZXNvbHZlRW52aXJvbm1lbnRDb25maWd9IGZyb20gJy4vY29uZmlnL2luZGV4LmpzJztcbmltcG9ydCB7XG4gIGFwcCxcbiAgZXZlbnRzLFxuICBpbWFnZXMsXG4gIGxvY2F0aW9ucyxcbiAgbWVzc2FnZXMsXG4gIG5vdGlmaWNhdGlvbnMsXG4gIE5PVElGSUNBVElPTl9DT05TVEFOVFMsXG4gIHBlcm1pc3Npb25zLFxuICBQRVJTT05BX0NPTlNUQU5UUyxcbiAgcG9zdHMsXG4gIHN1YnNjcmlwdGlvbnMsXG4gIFRBR19DT05TVEFOVFMsXG4gIHRhZ3MsXG4gIFVTRVJfQ09OU1RBTlRTLFxuICB1c2VycyxcbiAgdmlkZW8sXG4gIHdlYnNvY2tldFxufSBmcm9tICcuL3N0b3Jlcy9pbmRleC5qcyc7XG5pbXBvcnQge3JlZnJlc2hTZXNzaW9ufSBmcm9tICcuL3V0aWxzL2FwaS5qcyc7XG5pbXBvcnQge2dldENvbmZpZ0Zyb21GbHV4fSBmcm9tICcuL3V0aWxzL2NvbmZpZ1V0aWxzLmpzJztcbmltcG9ydCB7aW5pdEkxOG59IGZyb20gJy4vdXRpbHMvaTE4bi5qcyc7XG5pbXBvcnQge01ldHJvcG9saXNDb250ZXh0fSBmcm9tICcuL3V0aWxzL01ldHJvcG9saXNQcm92aWRlci5qcyc7XG5pbXBvcnQge2dldFJlZnJlc2hXaW5kb3dNaW51dGVzLCBoeWRyYXRlU2Vzc2lvbkZyb21TdG9yYWdlLCBwYXJzZUp3dEV4cGlyeU1zfSBmcm9tICcuL3V0aWxzL3Nlc3Npb24uanMnO1xuaW1wb3J0IHtjcmVhdGVBY3Rpb259IGZyb20gJy4vdXRpbHMvYWN0aW9uRmFjdG9yeS5qcyc7XG5cbmltcG9ydCB0eXBlIHtGbHV4RnJhbWV3b3JrfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuaW1wb3J0IHR5cGUge01ldHJvcG9saXNDb25maWd1cmF0aW9uLCBNZXRyb3BvbGlzRW52aXJvbm1lbnRDb25maWd1cmF0aW9ufSBmcm9tICcuL2NvbmZpZy9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7TWV0cm9wb2xpc0FkYXB0ZXJzfSBmcm9tICcuL3V0aWxzL01ldHJvcG9saXNQcm92aWRlci5qcyc7XG5cbmV4cG9ydCB7TWV0cm9wb2xpc0NvbnRleHQsIE1ldHJvcG9saXNQcm92aWRlcn0gZnJvbSAnLi91dGlscy9NZXRyb3BvbGlzUHJvdmlkZXIuanMnO1xuXG5leHBvcnQgdHlwZSB7TWV0cm9wb2xpc0NvbmZpZ3VyYXRpb259IGZyb20gJy4vY29uZmlnL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHtNZXRyb3BvbGlzQWRhcHRlcnN9IGZyb20gJy4vdXRpbHMvTWV0cm9wb2xpc1Byb3ZpZGVyLmpzJztcblxuZXhwb3J0IGNvbnN0IEdPVEhBTV9BTkFMWVRJQ1NfRVZFTlQgPSAnbmxhYnM6Z290aGFtOmFuYWx5dGljcyc7XG5cbmV4cG9ydCBjb25zdCBvbkluaXQgPSBhc3luYyAoZmx1eDogRmx1eEZyYW1ld29yaykgPT4ge1xuICBpZighZmx1eC5nZXRTdGF0ZSgnYXBwLm1ldHJvcG9saXNJbml0aWFsaXplZCcpKSB7XG4gICAgZmx1eC5hZGRTdG9yZXMoW1xuICAgICAgYXBwLFxuICAgICAgZXZlbnRzLFxuICAgICAgaW1hZ2VzLFxuICAgICAgbG9jYXRpb25zLFxuICAgICAgbWVzc2FnZXMsXG4gICAgICBub3RpZmljYXRpb25zLFxuICAgICAgcGVybWlzc2lvbnMsXG4gICAgICBwb3N0cyxcbiAgICAgIHN1YnNjcmlwdGlvbnMsXG4gICAgICB0YWdzLFxuICAgICAgdXNlcnMsXG4gICAgICB2aWRlbyxcbiAgICAgIHdlYnNvY2tldFxuICAgIF0pO1xuICAgIGZsdXgub24oVVNFUl9DT05TVEFOVFMuU0lHTl9PVVRfU1VDQ0VTUywgKCkgPT4ge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7dHlwZTogTk9USUZJQ0FUSU9OX0NPTlNUQU5UUy5DTEVBUl9JVEVNU30pO1xuICAgIH0pO1xuICAgIGZsdXgub24oUEVSU09OQV9DT05TVEFOVFMuQUREX0lURU1fU1VDQ0VTUywgYXN5bmMgKHtwZXJzb25hID0ge319OiB7cGVyc29uYT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+fSkgPT4ge1xuICAgICAgc3luY1BlcnNvbmFUb1Nlc3Npb24oZmx1eCwgcGVyc29uYSk7XG5cbiAgICAgIGlmKHBlcnNvbmE/LnBlcnNvbmFJZCAmJiAhQXJyYXkuaXNBcnJheShwZXJzb25hPy50YWdzKSkge1xuICAgICAgICBhd2FpdCBzeW5jUGVyc29uYVRhZ3NUb1Nlc3Npb24oZmx1eCwgU3RyaW5nKHBlcnNvbmEucGVyc29uYUlkKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBmbHV4Lm9uKFBFUlNPTkFfQ09OU1RBTlRTLlVQREFURV9JVEVNX1NVQ0NFU1MsIGFzeW5jICh7cGVyc29uYSA9IHt9fToge3BlcnNvbmE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0pID0+IHtcbiAgICAgIHN5bmNQZXJzb25hVG9TZXNzaW9uKGZsdXgsIHBlcnNvbmEpO1xuXG4gICAgICBpZihwZXJzb25hPy5wZXJzb25hSWQgJiYgIUFycmF5LmlzQXJyYXkocGVyc29uYT8udGFncykpIHtcbiAgICAgICAgYXdhaXQgc3luY1BlcnNvbmFUYWdzVG9TZXNzaW9uKGZsdXgsIFN0cmluZyhwZXJzb25hLnBlcnNvbmFJZCkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZmx1eC5vbihUQUdfQ09OU1RBTlRTLkFERF9QRVJTT05BX1NVQ0NFU1MsICh7dGFnfToge3RhZz86IHtuYW1lPzogc3RyaW5nOyB0YWdJZD86IHN0cmluZ319KSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50U2Vzc2lvbiA9IChmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24nLCB7fSkgfHwge30pIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ICYge1xuICAgICAgICB0YWdzPzogQXJyYXk8e25hbWU/OiBzdHJpbmc7IHRhZ0lkPzogc3RyaW5nfT47XG4gICAgICB9O1xuICAgICAgY29uc3QgY3VycmVudFRhZ3MgPSBBcnJheS5pc0FycmF5KGN1cnJlbnRTZXNzaW9uLnRhZ3MpID8gY3VycmVudFNlc3Npb24udGFncyA6IFtdO1xuICAgICAgY29uc3QgbmV4dFRhZ0lkID0gU3RyaW5nKHRhZz8udGFnSWQgfHwgJycpLnRyaW0oKTtcblxuICAgICAgaWYoIW5leHRUYWdJZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1lcmdlZFRhZ3MgPSBbLi4uY3VycmVudFRhZ3MuZmlsdGVyKChpdGVtKSA9PiBTdHJpbmcoaXRlbT8udGFnSWQgfHwgJycpLnRyaW0oKSAhPT0gbmV4dFRhZ0lkKSwgdGFnIGFzIHtuYW1lPzogc3RyaW5nOyB0YWdJZD86IHN0cmluZ31dXG4gICAgICAgIC5zb3J0KChsZWZ0LCByaWdodCkgPT4gU3RyaW5nKGxlZnQ/Lm5hbWUgfHwgJycpLmxvY2FsZUNvbXBhcmUoU3RyaW5nKHJpZ2h0Py5uYW1lIHx8ICcnKSkpO1xuICAgICAgY29uc3QgbmV4dFNlc3Npb24gPSB7Li4uY3VycmVudFNlc3Npb24sIHRhZ3M6IG1lcmdlZFRhZ3N9O1xuXG4gICAgICB2b2lkIGZsdXguc2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicsIG5leHRTZXNzaW9uKTtcbiAgICAgIGZsdXguZGlzcGF0Y2goe3R5cGU6IFVTRVJfQ09OU1RBTlRTLlVQREFURV9TRVNTSU9OX1NVQ0NFU1MsIHVzZXI6IHt0YWdzOiBtZXJnZWRUYWdzfX0pO1xuICAgIH0pO1xuXG4gICAgZmx1eC5vbihUQUdfQ09OU1RBTlRTLlJFTU9WRV9QRVJTT05BX1NVQ0NFU1MsICh7dGFnfToge3RhZz86IHt0YWdJZD86IHN0cmluZ319KSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50U2Vzc2lvbiA9IChmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24nLCB7fSkgfHwge30pIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ICYge1xuICAgICAgICB0YWdzPzogQXJyYXk8e25hbWU/OiBzdHJpbmc7IHRhZ0lkPzogc3RyaW5nfT47XG4gICAgICB9O1xuICAgICAgY29uc3QgY3VycmVudFRhZ3MgPSBBcnJheS5pc0FycmF5KGN1cnJlbnRTZXNzaW9uLnRhZ3MpID8gY3VycmVudFNlc3Npb24udGFncyA6IFtdO1xuICAgICAgY29uc3QgbmV4dFRhZ0lkID0gU3RyaW5nKHRhZz8udGFnSWQgfHwgJycpLnRyaW0oKTtcblxuICAgICAgaWYoIW5leHRUYWdJZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5leHRUYWdzID0gY3VycmVudFRhZ3MuZmlsdGVyKChpdGVtKSA9PiBTdHJpbmcoaXRlbT8udGFnSWQgfHwgJycpLnRyaW0oKSAhPT0gbmV4dFRhZ0lkKTtcbiAgICAgIGNvbnN0IG5leHRTZXNzaW9uID0gey4uLmN1cnJlbnRTZXNzaW9uLCB0YWdzOiBuZXh0VGFnc307XG5cbiAgICAgIHZvaWQgZmx1eC5zZXRTdGF0ZSgndXNlci5zZXNzaW9uJywgbmV4dFNlc3Npb24pO1xuICAgICAgZmx1eC5kaXNwYXRjaCh7dHlwZTogVVNFUl9DT05TVEFOVFMuVVBEQVRFX1NFU1NJT05fU1VDQ0VTUywgdXNlcjoge3RhZ3M6IG5leHRUYWdzfX0pO1xuICAgIH0pO1xuICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZShmbHV4LnNldFN0YXRlKCdhcHAubWV0cm9wb2xpc0luaXRpYWxpemVkJywgdHJ1ZSkpO1xuICB9XG5cbiAgY29uc3QgdG9rZW4gPSBTdHJpbmcoZmx1eC5nZXRTdGF0ZSgndXNlci5zZXNzaW9uLnRva2VuJykgfHwgJycpO1xuXG4gIGlmKHRva2VuKSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IChmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24nLCB7fSkgfHwge30pIGFzIHtleHBpcmVzPzogbnVtYmVyOyBpc3N1ZWQ/OiBudW1iZXI7IHRva2VuPzogc3RyaW5nfTtcbiAgICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgICBjb25zdCB0b2tlbkV4cGlyZXNBdCA9IHBhcnNlSnd0RXhwaXJ5TXModG9rZW4pO1xuICAgIGNvbnN0IHNlc3Npb25MaWZldGltZU1pbnV0ZXMgPSBNYXRoLnJvdW5kKChOdW1iZXIoc2Vzc2lvbi5leHBpcmVzIHx8IDApIC0gTnVtYmVyKHNlc3Npb24uaXNzdWVkIHx8IDApKSAvICgxMDAwICogNjApKTtcbiAgICBjb25zdCByZWZyZXNoV2luZG93TWludXRlcyA9IGdldFJlZnJlc2hXaW5kb3dNaW51dGVzKFxuICAgICAgc2Vzc2lvbkxpZmV0aW1lTWludXRlcyB8fCAxNSxcbiAgICAgIGNvbmZpZy5hcHA/LnNlc3Npb24gfHwge31cbiAgICApO1xuICAgIGNvbnN0IHJlZnJlc2hFeHBpcmVzTWludXRlcyA9IE1hdGgubWF4KDEsIE51bWJlcihjb25maWcuYXBwPy5zZXNzaW9uPy5tYXhNaW51dGVzIHx8IHNlc3Npb25MaWZldGltZU1pbnV0ZXMgfHwgMTUpKTtcbiAgICBjb25zdCBleHBpcmVzQXQgPSBOdW1iZXIoc2Vzc2lvbi5leHBpcmVzIHx8IDApO1xuXG4gICAgaWYodG9rZW5FeHBpcmVzQXQgPiAwICYmIERhdGUubm93KCkgPj0gdG9rZW5FeHBpcmVzQXQpIHtcbiAgICAgIGF3YWl0IHJlZnJlc2hTZXNzaW9uKGZsdXgsIHRva2VuLCByZWZyZXNoRXhwaXJlc01pbnV0ZXMpO1xuICAgIH0gZWxzZSBpZighZXhwaXJlc0F0KSB7XG4gICAgICBhd2FpdCByZWZyZXNoU2Vzc2lvbihmbHV4LCB0b2tlbiwgcmVmcmVzaEV4cGlyZXNNaW51dGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWludXRlc1VudGlsRXhwaXJ5ID0gTWF0aC5yb3VuZChEYXRlVGltZS5mcm9tTWlsbGlzKGV4cGlyZXNBdCkuZGlmZihEYXRlVGltZS5sb2NhbCgpLCAnbWludXRlcycpLnRvT2JqZWN0KCkubWludXRlcyB8fCAwKTtcblxuICAgICAgaWYobWludXRlc1VudGlsRXhwaXJ5IDw9IDAgfHwgbWludXRlc1VudGlsRXhwaXJ5IDw9IHJlZnJlc2hXaW5kb3dNaW51dGVzKSB7XG4gICAgICAgIGF3YWl0IHJlZnJlc2hTZXNzaW9uKGZsdXgsIHRva2VuIGFzIHN0cmluZywgcmVmcmVzaEV4cGlyZXNNaW51dGVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCAqIGZyb20gJy4vc3RvcmVzL2luZGV4LmpzJztcblxuZXhwb3J0IHtcbiAgYXBwTXV0YXRpb24sXG4gIGFwcFF1ZXJ5LFxuICBwdWJsaWNNdXRhdGlvbixcbiAgcHVibGljUXVlcnksXG4gIHJ1bU11dGF0aW9uLFxuICByZWZyZXNoU2Vzc2lvbixcbiAgcmVzb2x2ZVJlc3RFbmRwb2ludCxcbiAgcmVzdFJlcXVlc3QsXG4gIHVwbG9hZEltYWdlLFxuICB0eXBlIEFwaVJlc3VsdHNUeXBlLFxuICB0eXBlIFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHR5cGUgUmVzdEFwaU9wdGlvbnMsXG4gIHR5cGUgUmVzdE1ldGhvZFxufSBmcm9tICcuL3V0aWxzL2FwaS5qcyc7XG5cbmV4cG9ydCB7cmVzb2x2ZUVudmlyb25tZW50Q29uZmlnfSBmcm9tICcuL2NvbmZpZy9pbmRleC5qcyc7XG5leHBvcnQge2dldENvbmZpZ0Zyb21GbHV4fSBmcm9tICcuL3V0aWxzL2NvbmZpZ1V0aWxzLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBNZXRyb3BvbGlzUHJvcHMge1xuICByZWFkb25seSBhZGFwdGVycz86IE1ldHJvcG9saXNBZGFwdGVycztcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBSZWFjdC5SZWFjdEVsZW1lbnRbXTtcbiAgcmVhZG9ubHkgY29uZmlnPzogTWV0cm9wb2xpc0NvbmZpZ3VyYXRpb247XG4gIHJlYWRvbmx5IHRyYW5zbGF0aW9ucz86IFNpbXBsZVRyYW5zbGF0aW9ucyB8IENvbXBsZXhUcmFuc2xhdGlvbnM7XG59XG5cbmV4cG9ydCB0eXBlIFNpbXBsZVRyYW5zbGF0aW9ucyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGxleFRyYW5zbGF0aW9uIHtcbiAgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbG9jYWxlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWVzcGFjZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQ29tcGxleFRyYW5zbGF0aW9ucyA9IFJlY29yZDxzdHJpbmcsIENvbXBsZXhUcmFuc2xhdGlvbj47XG5cbmV4cG9ydCBjb25zdCBNZXRyb3BvbGlzID0gKHthZGFwdGVycywgY2hpbGRyZW4sIGNvbmZpZyA9IHt9LCB0cmFuc2xhdGlvbnMgPSB7fX06IE1ldHJvcG9saXNQcm9wcykgPT4ge1xuICBjb25zdCBmbHV4ID0gdXNlRmx1eCgpO1xuICBjb25zdCByZXNvbHZlZENvbmZpZyA9IHVzZU1lbW88TWV0cm9wb2xpc0Vudmlyb25tZW50Q29uZmlndXJhdGlvbj4oKCkgPT4gcmVzb2x2ZUVudmlyb25tZW50Q29uZmlnKGNvbmZpZyksIFtjb25maWddKTtcbiAgY29uc3QgbWVyZ2VkQWRhcHRlcnMgPSB1c2VNZW1vKCgpID0+ICh7Li4ucmVzb2x2ZWRDb25maWcuYWRhcHRlcnMsIC4uLmFkYXB0ZXJzfSksIFtyZXNvbHZlZENvbmZpZy5hZGFwdGVycywgYWRhcHRlcnNdKTtcbiAgY29uc3QgcnVtT3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICAuLi5yZXNvbHZlZENvbmZpZy5hcHA/LnJ1bSxcbiAgICBhcHBJZDogcmVzb2x2ZWRDb25maWcuYXBwPy5ydW0/LmFwcElkIHx8IHJlc29sdmVkQ29uZmlnLmFwcD8ubmFtZVxuICB9KSwgW3Jlc29sdmVkQ29uZmlnLmFwcD8ubmFtZSwgcmVzb2x2ZWRDb25maWcuYXBwPy5ydW1dKTtcbiAgY29uc3Qgc2Vzc2lvblBlcnNvbmFJZCA9IFN0cmluZyh1c2VGbHV4U3RhdGUoJ3VzZXIuc2Vzc2lvbi5wZXJzb25hSWQnLCAnJykgfHwgJycpO1xuICBjb25zdCBzZXNzaW9uVG9rZW4gPSBTdHJpbmcodXNlRmx1eFN0YXRlKCd1c2VyLnNlc3Npb24udG9rZW4nLCAnJykgfHwgJycpO1xuICBjb25zdCBzZXNzaW9uSHlkcmF0ZWQgPSBCb29sZWFuKHVzZUZsdXhTdGF0ZSgnYXBwLnNlc3Npb25IeWRyYXRlZCcsIGZhbHNlKSk7XG4gIGNvbnN0IHNlc3Npb24gPSB1c2VGbHV4U3RhdGUoJ3VzZXIuc2Vzc2lvbicsIHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3Qgbm90aWZpY2F0aW9uTGlzdCA9IHVzZUZsdXhTdGF0ZSgnbm90aWZpY2F0aW9uLmxpc3QnLCBbXSkgYXMgQXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICBjb25zdCBjb252ZXJzYXRpb25NYXAgPSB1c2VGbHV4U3RhdGUoJ21lc3NhZ2UuY29udmVyc2F0aW9ucycsIHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCBBcnJheTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+O1xuICBjb25zdCBtZXNzYWdlcyA9IHVzZU1lbW8oKCkgPT4gT2JqZWN0LnZhbHVlcyhjb252ZXJzYXRpb25NYXApLmZsYXQoKSwgW2NvbnZlcnNhdGlvbk1hcF0pO1xuXG4gIGNvbnN0IHdlYnNvY2tldHNSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlV2Vic29ja2V0QWN0aW9ucz4gfCBudWxsPihudWxsKTtcbiAgaWYoIXdlYnNvY2tldHNSZWYuY3VycmVudCkge1xuICAgIHdlYnNvY2tldHNSZWYuY3VycmVudCA9IGNyZWF0ZUFjdGlvbignd2Vic29ja2V0JywgZmx1eCkgYXMgUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlV2Vic29ja2V0QWN0aW9ucz47XG4gIH1cbiAgY29uc3Qgd2Vic29ja2V0cyA9IHdlYnNvY2tldHNSZWYuY3VycmVudDtcbiAgY29uc3QgYXdzUnVtID0gdXNlTWVtbyhcbiAgICAoKSA9PiBjcmVhdGVBY3Rpb24oJ2F3c1J1bScsIGZsdXgsIHJ1bU9wdGlvbnMpIGFzIEF3c1J1bUFjdGlvbnMsXG4gICAgW2ZsdXgsIHJ1bU9wdGlvbnNdXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZih0eXBlb2YgZ2xvYmFsVGhpcy53aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb25Hb3RoYW1BbmFseXRpY3MgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBjb25zdCBkZXRhaWwgPSAoZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8QXdzUnVtVHJhY2tJbnB1dD4pLmRldGFpbDtcblxuICAgICAgaWYoZGV0YWlsICYmIHR5cGVvZiBkZXRhaWwgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGF3c1J1bS50cmFjayhkZXRhaWwpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBnbG9iYWxUaGlzLndpbmRvdy5hZGRFdmVudExpc3RlbmVyKEdPVEhBTV9BTkFMWVRJQ1NfRVZFTlQsIG9uR290aGFtQW5hbHl0aWNzKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBnbG9iYWxUaGlzLndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKEdPVEhBTV9BTkFMWVRJQ1NfRVZFTlQsIG9uR290aGFtQW5hbHl0aWNzKTtcbiAgICAgIHZvaWQgYXdzUnVtLmRlc3Ryb3koKTtcbiAgICB9O1xuICB9LCBbYXdzUnVtXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbml0STE4bih0cmFuc2xhdGlvbnMpO1xuICB9LCBbdHJhbnNsYXRpb25zXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgaXNBY3RpdmUgPSB0cnVlO1xuXG4gICAgdm9pZCAoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKGZsdXguc2V0U3RhdGUoJ2FwcC5jb25maWcnLCByZXNvbHZlZENvbmZpZykpO1xuICAgICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKGZsdXguc2V0U3RhdGUoJ2FwcC5zZXNzaW9uSHlkcmF0ZWQnLCBmYWxzZSkpO1xuICAgICAgYXdhaXQgaHlkcmF0ZVNlc3Npb25Gcm9tU3RvcmFnZShmbHV4KTtcblxuICAgICAgaWYoIWlzQWN0aXZlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgb25Jbml0KGZsdXgpO1xuXG4gICAgICBpZighaXNBY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoZmx1eC5zZXRTdGF0ZSgnYXBwLnNlc3Npb25IeWRyYXRlZCcsIHRydWUpKTtcbiAgICB9KSgpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlzQWN0aXZlID0gZmFsc2U7XG4gICAgfTtcbiAgfSwgW2ZsdXgsIHJlc29sdmVkQ29uZmlnXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZighc2Vzc2lvbkh5ZHJhdGVkKSB7XG4gICAgICB3ZWJzb2NrZXRzLndzQ2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZihzZXNzaW9uVG9rZW4pIHtcbiAgICAgIHdlYnNvY2tldHMud3NJbml0KHNlc3Npb25Ub2tlbiwgc2Vzc2lvblBlcnNvbmFJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdlYnNvY2tldHMud3NDbG9zZSgpO1xuICAgIH1cbiAgfSwgW3Nlc3Npb25IeWRyYXRlZCwgc2Vzc2lvblBlcnNvbmFJZCwgc2Vzc2lvblRva2VuLCB3ZWJzb2NrZXRzXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2Vic29ja2V0cy53c0Nsb3NlKCk7XG4gICAgfTtcbiAgfSwgW3dlYnNvY2tldHNdKTtcblxuICBjb25zdCBpc0F1dGggPSB1c2VNZW1vKCgpID0+IHJlc29sdmVkQ29uZmlnLmlzQXV0aCB8fCAoKCkgPT4ge1xuICAgIGNvbnN0IHNlc3Npb25TdGF0ZSA9IGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicsIHt9KTtcbiAgICByZXR1cm4gISFzZXNzaW9uU3RhdGUudXNlckFjdGl2ZTtcbiAgfSksIFtyZXNvbHZlZENvbmZpZy5pc0F1dGgsIGZsdXhdKTtcblxuICByZXR1cm4gKFxuICAgIDxNZXRyb3BvbGlzQ29udGV4dC5Qcm92aWRlclxuICAgICAgdmFsdWU9e3tcbiAgICAgICAgYWRhcHRlcnM6IG1lcmdlZEFkYXB0ZXJzLFxuICAgICAgICBjb25maWc6IHJlc29sdmVkQ29uZmlnLFxuICAgICAgICBmbHV4LFxuICAgICAgICBpc0F1dGgsXG4gICAgICAgIG1lc3NhZ2VzLFxuICAgICAgICBub3RpZmljYXRpb25zOiBub3RpZmljYXRpb25MaXN0LFxuICAgICAgICBzZXNzaW9uLFxuICAgICAgICB1cGRhdGVNZXNzYWdlOiAoKSA9PiB7IH0sXG4gICAgICAgIHVwZGF0ZU5vdGlmaWNhdGlvbjogd2Vic29ja2V0cy5zZW5kTm90aWZpY2F0aW9uXG4gICAgICB9fT5cbiAgICAgIDxJMThuZXh0UHJvdmlkZXIgaTE4bj17aTE4bn0+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvSTE4bmV4dFByb3ZpZGVyPlxuICAgIDwvTWV0cm9wb2xpc0NvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNZXRyb3BvbGlzO1xuXG5leHBvcnQge3VzZVRyYW5zbGF0aW9ufSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmV4cG9ydCAqIGZyb20gJy4vYWRhcHRlcnMvaW5kZXguanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMvTWV0cm9wb2xpc0NvbnN0YW50cy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2dyYXBocWwvbWVzc2FnZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2dyYXBocWwvbm90aWZpY2F0aW9uLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmVzL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIGNyZWF0ZUFjdGlvbixcbiAgY3JlYXRlQWN0aW9ucyxcbiAgY3JlYXRlQWxsQWN0aW9uc1xufSBmcm9tICcuL3V0aWxzL2FjdGlvbkZhY3RvcnkuanMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9hcHAuanMnO1xuZXhwb3J0IHtjcmVhdGVCYXNlQWN0aW9uc30gZnJvbSAnLi91dGlscy9iYXNlQWN0aW9uRmFjdG9yeS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2RhdGVVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2ZpbGUuanMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9sb2NhdGlvbi5qcyc7XG5leHBvcnQge1xuICB1c2VDb250ZW50QWN0aW9ucyxcbiAgdXNlQXdzUnVtLFxuICB1c2VDcm1BY3Rpb25zLFxuICB1c2VFdmVudEFjdGlvbnMsXG4gIHVzZUdyb3VwQWN0aW9ucyxcbiAgdXNlSW1hZ2VBY3Rpb25zLFxuICB1c2VMb2NhdGlvbkFjdGlvbnMsXG4gIHVzZU1lc3NhZ2VBY3Rpb25zLCB1c2VNZXRyb3BvbGlzLFxuICB1c2VNZXRyb3BvbGlzQ29uZmlnLFxuICB1c2VNZXRyb3BvbGlzRmx1eCwgdXNlUG9zdEFjdGlvbnMsXG4gIHVzZVBlcnNvbmFBY3Rpb25zLFxuICB1c2VSZWFjdGlvbkFjdGlvbnMsXG4gIHVzZVJlc3RBY3Rpb25zLFxuICB1c2VUYWdBY3Rpb25zLFxuICB1c2VUcmFuc2xhdGlvbkFjdGlvbnMsXG4gIHVzZVVzZXJBY3Rpb25zLFxuICB1c2VXZWJzb2NrZXRBY3Rpb25zXG59IGZyb20gJy4vdXRpbHMvdXNlTWV0cm9wb2xpcy5qcyc7XG5leHBvcnQge3VzZUNvbnZlcnNhdGlvblR5cGluZ30gZnJvbSAnLi91dGlscy91c2VDb252ZXJzYXRpb25UeXBpbmcuanMnO1xuZXhwb3J0IHR5cGUge1xuICBDb252ZXJzYXRpb25UeXBpbmdPcHRpb25zLFxuICBVc2VDb252ZXJzYXRpb25UeXBpbmdPcHRpb25zXG59IGZyb20gJy4vdXRpbHMvdXNlQ29udmVyc2F0aW9uVHlwaW5nLmpzJztcbmV4cG9ydCB7XG4gIGNyZWF0ZVZhbGlkYXRvckZhY3RvcnksXG4gIGNyZWF0ZVZhbGlkYXRvck1hbmFnZXJcbn0gZnJvbSAnLi91dGlscy92YWxpZGF0b3JGYWN0b3J5LmpzJztcblxuZXhwb3J0IHR5cGUge1xuICBBY3Rpb25PcHRpb25zLFxuICBBY3Rpb25SZXR1cm5UeXBlLFxuICBBY3Rpb25UeXBlLFxuICBBY3Rpb25UeXBlc1xufSBmcm9tICcuL3V0aWxzL2FjdGlvbkZhY3RvcnkuanMnO1xuZXhwb3J0IHR5cGUge0Jhc2VBY3Rpb25PcHRpb25zfSBmcm9tICcuL3V0aWxzL2Jhc2VBY3Rpb25GYWN0b3J5LmpzJztcbmV4cG9ydCB0eXBlIHtCYXNlQWRhcHRlck9wdGlvbnN9IGZyb20gJy4vdXRpbHMvdmFsaWRhdG9yRmFjdG9yeS5qcyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9ucy9hcHBBY3Rpb25zL2FwcEFjdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb25zL2F3c1J1bUFjdGlvbnMvYXdzUnVtQWN0aW9ucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbnMvY29ubmVjdGlvbkFjdGlvbnMvY29ubmVjdGlvbkFjdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb25zL2NvbnZlcnNhdGlvbkFjdGlvbnMvY29udmVyc2F0aW9uQWN0aW9ucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbnMvY3JtQWN0aW9ucy9jcm1BY3Rpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9ucy9yZXN0QWN0aW9ucy9yZXN0QWN0aW9ucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbnMvdmlkZW9BY3Rpb25zL3ZpZGVvQWN0aW9ucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cy9Db2xsZWN0aW9ucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2luZGV4LmpzJztcbiJdLCJuYW1lcyI6WyJ1c2VGbHV4IiwidXNlRmx1eFN0YXRlIiwiaTE4biIsIkRhdGVUaW1lIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsIkkxOG5leHRQcm92aWRlciIsInN5bmNQZXJzb25hVGFnc1RvU2Vzc2lvbiIsInN5bmNQZXJzb25hVG9TZXNzaW9uIiwicmVzb2x2ZUVudmlyb25tZW50Q29uZmlnIiwiYXBwIiwiZXZlbnRzIiwiaW1hZ2VzIiwibG9jYXRpb25zIiwibWVzc2FnZXMiLCJub3RpZmljYXRpb25zIiwiTk9USUZJQ0FUSU9OX0NPTlNUQU5UUyIsInBlcm1pc3Npb25zIiwiUEVSU09OQV9DT05TVEFOVFMiLCJwb3N0cyIsInN1YnNjcmlwdGlvbnMiLCJUQUdfQ09OU1RBTlRTIiwidGFncyIsIlVTRVJfQ09OU1RBTlRTIiwidXNlcnMiLCJ2aWRlbyIsIndlYnNvY2tldCIsInJlZnJlc2hTZXNzaW9uIiwiZ2V0Q29uZmlnRnJvbUZsdXgiLCJpbml0STE4biIsIk1ldHJvcG9saXNDb250ZXh0IiwiZ2V0UmVmcmVzaFdpbmRvd01pbnV0ZXMiLCJoeWRyYXRlU2Vzc2lvbkZyb21TdG9yYWdlIiwicGFyc2VKd3RFeHBpcnlNcyIsImNyZWF0ZUFjdGlvbiIsIk1ldHJvcG9saXNQcm92aWRlciIsIkdPVEhBTV9BTkFMWVRJQ1NfRVZFTlQiLCJvbkluaXQiLCJmbHV4IiwiZ2V0U3RhdGUiLCJhZGRTdG9yZXMiLCJvbiIsIlNJR05fT1VUX1NVQ0NFU1MiLCJkaXNwYXRjaCIsInR5cGUiLCJDTEVBUl9JVEVNUyIsIkFERF9JVEVNX1NVQ0NFU1MiLCJwZXJzb25hIiwicGVyc29uYUlkIiwiQXJyYXkiLCJpc0FycmF5IiwiU3RyaW5nIiwiVVBEQVRFX0lURU1fU1VDQ0VTUyIsIkFERF9QRVJTT05BX1NVQ0NFU1MiLCJ0YWciLCJjdXJyZW50U2Vzc2lvbiIsImN1cnJlbnRUYWdzIiwibmV4dFRhZ0lkIiwidGFnSWQiLCJ0cmltIiwibWVyZ2VkVGFncyIsImZpbHRlciIsIml0ZW0iLCJzb3J0IiwibGVmdCIsInJpZ2h0IiwibmFtZSIsImxvY2FsZUNvbXBhcmUiLCJuZXh0U2Vzc2lvbiIsInNldFN0YXRlIiwiVVBEQVRFX1NFU1NJT05fU1VDQ0VTUyIsInVzZXIiLCJSRU1PVkVfUEVSU09OQV9TVUNDRVNTIiwibmV4dFRhZ3MiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRva2VuIiwic2Vzc2lvbiIsImNvbmZpZyIsInRva2VuRXhwaXJlc0F0Iiwic2Vzc2lvbkxpZmV0aW1lTWludXRlcyIsIk1hdGgiLCJyb3VuZCIsIk51bWJlciIsImV4cGlyZXMiLCJpc3N1ZWQiLCJyZWZyZXNoV2luZG93TWludXRlcyIsInJlZnJlc2hFeHBpcmVzTWludXRlcyIsIm1heCIsIm1heE1pbnV0ZXMiLCJleHBpcmVzQXQiLCJEYXRlIiwibm93IiwibWludXRlc1VudGlsRXhwaXJ5IiwiZnJvbU1pbGxpcyIsImRpZmYiLCJsb2NhbCIsInRvT2JqZWN0IiwibWludXRlcyIsImFwcE11dGF0aW9uIiwiYXBwUXVlcnkiLCJwdWJsaWNNdXRhdGlvbiIsInB1YmxpY1F1ZXJ5IiwicnVtTXV0YXRpb24iLCJyZXNvbHZlUmVzdEVuZHBvaW50IiwicmVzdFJlcXVlc3QiLCJ1cGxvYWRJbWFnZSIsIk1ldHJvcG9saXMiLCJhZGFwdGVycyIsImNoaWxkcmVuIiwidHJhbnNsYXRpb25zIiwicmVzb2x2ZWRDb25maWciLCJtZXJnZWRBZGFwdGVycyIsInJ1bU9wdGlvbnMiLCJydW0iLCJhcHBJZCIsInNlc3Npb25QZXJzb25hSWQiLCJzZXNzaW9uVG9rZW4iLCJzZXNzaW9uSHlkcmF0ZWQiLCJCb29sZWFuIiwibm90aWZpY2F0aW9uTGlzdCIsImNvbnZlcnNhdGlvbk1hcCIsIk9iamVjdCIsInZhbHVlcyIsImZsYXQiLCJ3ZWJzb2NrZXRzUmVmIiwiY3VycmVudCIsIndlYnNvY2tldHMiLCJhd3NSdW0iLCJnbG9iYWxUaGlzIiwid2luZG93Iiwib25Hb3RoYW1BbmFseXRpY3MiLCJldmVudCIsImRldGFpbCIsInRyYWNrIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkZXN0cm95IiwiaXNBY3RpdmUiLCJ3c0Nsb3NlIiwid3NJbml0IiwiaXNBdXRoIiwic2Vzc2lvblN0YXRlIiwidXNlckFjdGl2ZSIsIlByb3ZpZGVyIiwidmFsdWUiLCJ1cGRhdGVNZXNzYWdlIiwidXBkYXRlTm90aWZpY2F0aW9uIiwic2VuZE5vdGlmaWNhdGlvbiIsInVzZVRyYW5zbGF0aW9uIiwiY3JlYXRlQWN0aW9ucyIsImNyZWF0ZUFsbEFjdGlvbnMiLCJjcmVhdGVCYXNlQWN0aW9ucyIsInVzZUNvbnRlbnRBY3Rpb25zIiwidXNlQXdzUnVtIiwidXNlQ3JtQWN0aW9ucyIsInVzZUV2ZW50QWN0aW9ucyIsInVzZUdyb3VwQWN0aW9ucyIsInVzZUltYWdlQWN0aW9ucyIsInVzZUxvY2F0aW9uQWN0aW9ucyIsInVzZU1lc3NhZ2VBY3Rpb25zIiwidXNlTWV0cm9wb2xpcyIsInVzZU1ldHJvcG9saXNDb25maWciLCJ1c2VNZXRyb3BvbGlzRmx1eCIsInVzZVBvc3RBY3Rpb25zIiwidXNlUGVyc29uYUFjdGlvbnMiLCJ1c2VSZWFjdGlvbkFjdGlvbnMiLCJ1c2VSZXN0QWN0aW9ucyIsInVzZVRhZ0FjdGlvbnMiLCJ1c2VUcmFuc2xhdGlvbkFjdGlvbnMiLCJ1c2VVc2VyQWN0aW9ucyIsInVzZVdlYnNvY2tldEFjdGlvbnMiLCJ1c2VDb252ZXJzYXRpb25UeXBpbmciLCJjcmVhdGVWYWxpZGF0b3JGYWN0b3J5IiwiY3JlYXRlVmFsaWRhdG9yTWFuYWdlciJdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLE9BQU8sRUFBRUMsWUFBWSxRQUFPLDhCQUE4QjtBQUNsRSxPQUFPQyxVQUFVLFVBQVU7QUFDM0IsU0FBUUMsUUFBUSxRQUFPLFFBQVE7QUFDL0IsU0FBUUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sUUFBTyxRQUFRO0FBQ2pELFNBQVFDLGVBQWUsUUFBTyxnQkFBZ0I7QUFJOUMsU0FBUUMsd0JBQXdCLEVBQUVDLG9CQUFvQixRQUFPLDZDQUE2QztBQUMxRyxTQUFRQyx3QkFBd0IsUUFBTyxvQkFBb0I7QUFDM0QsU0FDRUMsR0FBRyxFQUNIQyxNQUFNLEVBQ05DLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxRQUFRLEVBQ1JDLGFBQWEsRUFDYkMsc0JBQXNCLEVBQ3RCQyxXQUFXLEVBQ1hDLGlCQUFpQixFQUNqQkMsS0FBSyxFQUNMQyxhQUFhLEVBQ2JDLGFBQWEsRUFDYkMsSUFBSSxFQUNKQyxjQUFj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
@@ -3,18 +3,18 @@
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */
5
5
  export declare const APP_CONSTANTS: {
6
- readonly ADD_ITEM_ERROR: "APP_ADD_ITEM_ERROR";
7
- readonly ADD_ITEM_SUCCESS: "APP_ADD_ITEM_SUCCESS";
8
- readonly API_NETWORK_ERROR: "APP_API_NETWORK_ERROR";
9
- readonly API_NETWORK_SUCCESS: "APP_API_NETWORK_SUCCESS";
10
- readonly GET_ITEM_ERROR: "APP_GET_ITEM_ERROR";
11
- readonly GET_ITEM_SUCCESS: "APP_GET_ITEM_SUCCESS";
12
- readonly GET_LIST_ERROR: "APP_GET_LIST_ERROR";
13
- readonly GET_LIST_SUCCESS: "APP_GET_LIST_SUCCESS";
14
- readonly REMOVE_ITEM_ERROR: "APP_REMOVE_ITEM_ERROR";
15
- readonly REMOVE_ITEM_SUCCESS: "APP_REMOVE_ITEM_SUCCESS";
16
- readonly UPDATE_ITEM_ERROR: "APP_UPDATE_ITEM_ERROR";
17
- readonly UPDATE_ITEM_SUCCESS: "APP_UPDATE_ITEM_SUCCESS";
6
+ readonly ADD_ITEM_ERROR: 'APP_ADD_ITEM_ERROR';
7
+ readonly ADD_ITEM_SUCCESS: 'APP_ADD_ITEM_SUCCESS';
8
+ readonly API_NETWORK_ERROR: 'APP_API_NETWORK_ERROR';
9
+ readonly API_NETWORK_SUCCESS: 'APP_API_NETWORK_SUCCESS';
10
+ readonly GET_ITEM_ERROR: 'APP_GET_ITEM_ERROR';
11
+ readonly GET_ITEM_SUCCESS: 'APP_GET_ITEM_SUCCESS';
12
+ readonly GET_LIST_ERROR: 'APP_GET_LIST_ERROR';
13
+ readonly GET_LIST_SUCCESS: 'APP_GET_LIST_SUCCESS';
14
+ readonly REMOVE_ITEM_ERROR: 'APP_REMOVE_ITEM_ERROR';
15
+ readonly REMOVE_ITEM_SUCCESS: 'APP_REMOVE_ITEM_SUCCESS';
16
+ readonly UPDATE_ITEM_ERROR: 'APP_UPDATE_ITEM_ERROR';
17
+ readonly UPDATE_ITEM_SUCCESS: 'APP_UPDATE_ITEM_SUCCESS';
18
18
  };
19
19
  interface AppState {
20
20
  network?: {
@@ -25,9 +25,8 @@ interface AppState {
25
25
  export declare const defaultValues: AppState;
26
26
  export declare const appStore: (type: string, data: Partial<AppState>, state?: AppState) => AppState;
27
27
  export declare const app: {
28
- action: (type: string, data: Partial<AppState>, state?: AppState) => AppState;
28
+ action: typeof appStore;
29
29
  initialState: AppState;
30
30
  name: string;
31
31
  };
32
32
  export {};
33
- //# sourceMappingURL=appStore.d.ts.map
@@ -4,16 +4,16 @@
4
4
  */
5
5
  import type { ContentType } from '../adapters/contentAdapter/contentAdapter.js';
6
6
  export declare const CONTENT_CONSTANTS: {
7
- readonly ADD_ITEM_ERROR: "CONTENT_ADD_ITEM_ERROR";
8
- readonly ADD_ITEM_SUCCESS: "CONTENT_ADD_ITEM_SUCCESS";
9
- readonly GET_ITEM_ERROR: "CONTENT_GET_ITEM_ERROR";
10
- readonly GET_ITEM_SUCCESS: "CONTENT_GET_ITEM_SUCCESS";
11
- readonly GET_LIST_ERROR: "CONTENT_GET_LIST_ERROR";
12
- readonly GET_LIST_SUCCESS: "CONTENT_GET_LIST_SUCCESS";
13
- readonly REMOVE_ITEM_ERROR: "CONTENT_REMOVE_ITEM_ERROR";
14
- readonly REMOVE_ITEM_SUCCESS: "CONTENT_REMOVE_ITEM_SUCCESS";
15
- readonly UPDATE_ITEM_ERROR: "CONTENT_UPDATE_ITEM_ERROR";
16
- readonly UPDATE_ITEM_SUCCESS: "CONTENT_UPDATE_ITEM_SUCCESS";
7
+ readonly ADD_ITEM_ERROR: 'CONTENT_ADD_ITEM_ERROR';
8
+ readonly ADD_ITEM_SUCCESS: 'CONTENT_ADD_ITEM_SUCCESS';
9
+ readonly GET_ITEM_ERROR: 'CONTENT_GET_ITEM_ERROR';
10
+ readonly GET_ITEM_SUCCESS: 'CONTENT_GET_ITEM_SUCCESS';
11
+ readonly GET_LIST_ERROR: 'CONTENT_GET_LIST_ERROR';
12
+ readonly GET_LIST_SUCCESS: 'CONTENT_GET_LIST_SUCCESS';
13
+ readonly REMOVE_ITEM_ERROR: 'CONTENT_REMOVE_ITEM_ERROR';
14
+ readonly REMOVE_ITEM_SUCCESS: 'CONTENT_REMOVE_ITEM_SUCCESS';
15
+ readonly UPDATE_ITEM_ERROR: 'CONTENT_UPDATE_ITEM_ERROR';
16
+ readonly UPDATE_ITEM_SUCCESS: 'CONTENT_UPDATE_ITEM_SUCCESS';
17
17
  };
18
18
  export type ContentConstantsType = typeof CONTENT_CONSTANTS[keyof typeof CONTENT_CONSTANTS];
19
19
  interface ContentState {
@@ -28,9 +28,8 @@ interface ContentData {
28
28
  }
29
29
  export declare const contentStore: (type: string, data: ContentData, state?: ContentState) => ContentState;
30
30
  export declare const contents: {
31
- action: (type: string, data: ContentData, state?: ContentState) => ContentState;
31
+ action: typeof contentStore;
32
32
  initialState: ContentState;
33
33
  name: string;
34
34
  };
35
35
  export {};
36
- //# sourceMappingURL=contentStore.d.ts.map
@@ -3,16 +3,16 @@
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */
5
5
  export declare const CONVERSATION_CONSTANTS: {
6
- readonly ADD_ITEM_ERROR: "CONVERSATION_ADD_ITEM_ERROR";
7
- readonly ADD_ITEM_SUCCESS: "CONVERSATION_ADD_ITEM_SUCCESS";
8
- readonly GET_ITEM_ERROR: "CONVERSATION_GET_ITEM_ERROR";
9
- readonly GET_ITEM_SUCCESS: "CONVERSATION_GET_ITEM_SUCCESS";
10
- readonly GET_LIST_ERROR: "CONVERSATION_GET_LIST_ERROR";
11
- readonly GET_LIST_SUCCESS: "CONVERSATION_GET_LIST_SUCCESS";
12
- readonly REMOVE_ITEM_ERROR: "CONVERSATION_REMOVE_ITEM_ERROR";
13
- readonly REMOVE_ITEM_SUCCESS: "CONVERSATION_REMOVE_ITEM_SUCCESS";
14
- readonly UPDATE_ITEM_ERROR: "CONVERSATION_UPDATE_ITEM_ERROR";
15
- readonly UPDATE_ITEM_SUCCESS: "CONVERSATION_UPDATE_ITEM_SUCCESS";
6
+ readonly ADD_ITEM_ERROR: 'CONVERSATION_ADD_ITEM_ERROR';
7
+ readonly ADD_ITEM_SUCCESS: 'CONVERSATION_ADD_ITEM_SUCCESS';
8
+ readonly GET_ITEM_ERROR: 'CONVERSATION_GET_ITEM_ERROR';
9
+ readonly GET_ITEM_SUCCESS: 'CONVERSATION_GET_ITEM_SUCCESS';
10
+ readonly GET_LIST_ERROR: 'CONVERSATION_GET_LIST_ERROR';
11
+ readonly GET_LIST_SUCCESS: 'CONVERSATION_GET_LIST_SUCCESS';
12
+ readonly REMOVE_ITEM_ERROR: 'CONVERSATION_REMOVE_ITEM_ERROR';
13
+ readonly REMOVE_ITEM_SUCCESS: 'CONVERSATION_REMOVE_ITEM_SUCCESS';
14
+ readonly UPDATE_ITEM_ERROR: 'CONVERSATION_UPDATE_ITEM_ERROR';
15
+ readonly UPDATE_ITEM_SUCCESS: 'CONVERSATION_UPDATE_ITEM_SUCCESS';
16
16
  };
17
17
  export type ConversationConstantsType = typeof CONVERSATION_CONSTANTS[keyof typeof CONVERSATION_CONSTANTS];
18
18
  interface ConversationState {
@@ -30,9 +30,8 @@ interface ConversationData {
30
30
  }
31
31
  export declare const conversationStore: (type: string, data: ConversationData, state?: ConversationState) => ConversationState;
32
32
  export declare const conversation: {
33
- action: (type: string, data: ConversationData, state?: ConversationState) => ConversationState;
33
+ action: typeof conversationStore;
34
34
  initialState: ConversationState;
35
35
  name: string;
36
36
  };
37
37
  export {};
38
- //# sourceMappingURL=conversationStore.d.ts.map
@@ -4,18 +4,18 @@
4
4
  */
5
5
  import type { EventType } from '../adapters/eventAdapter/eventAdapter.js';
6
6
  export declare const EVENT_CONSTANTS: {
7
- readonly ADD_ITEM_ERROR: "EVENT_ADD_ITEM_ERROR";
8
- readonly ADD_ITEM_SUCCESS: "EVENT_ADD_ITEM_SUCCESS";
9
- readonly GET_ITEM_ERROR: "EVENT_GET_ITEM_ERROR";
10
- readonly GET_ITEM_SUCCESS: "EVENT_GET_ITEM_SUCCESS";
11
- readonly GET_LIST_ERROR: "EVENT_GET_LIST_ERROR";
12
- readonly GET_LIST_SUCCESS: "EVENT_GET_LIST_SUCCESS";
13
- readonly REMOVE_ITEM_ERROR: "EVENT_REMOVE_ITEM_ERROR";
14
- readonly REMOVE_ITEM_SUCCESS: "EVENT_REMOVE_ITEM_SUCCESS";
15
- readonly RSVP_ITEM_ERROR: "EVENT_RSVP_ITEM_ERROR";
16
- readonly RSVP_ITEM_SUCCESS: "EVENT_RSVP_ITEM_SUCCESS";
17
- readonly UPDATE_ITEM_ERROR: "EVENT_UPDATE_ITEM_ERROR";
18
- readonly UPDATE_ITEM_SUCCESS: "EVENT_UPDATE_ITEM_SUCCESS";
7
+ readonly ADD_ITEM_ERROR: 'EVENT_ADD_ITEM_ERROR';
8
+ readonly ADD_ITEM_SUCCESS: 'EVENT_ADD_ITEM_SUCCESS';
9
+ readonly GET_ITEM_ERROR: 'EVENT_GET_ITEM_ERROR';
10
+ readonly GET_ITEM_SUCCESS: 'EVENT_GET_ITEM_SUCCESS';
11
+ readonly GET_LIST_ERROR: 'EVENT_GET_LIST_ERROR';
12
+ readonly GET_LIST_SUCCESS: 'EVENT_GET_LIST_SUCCESS';
13
+ readonly REMOVE_ITEM_ERROR: 'EVENT_REMOVE_ITEM_ERROR';
14
+ readonly REMOVE_ITEM_SUCCESS: 'EVENT_REMOVE_ITEM_SUCCESS';
15
+ readonly RSVP_ITEM_ERROR: 'EVENT_RSVP_ITEM_ERROR';
16
+ readonly RSVP_ITEM_SUCCESS: 'EVENT_RSVP_ITEM_SUCCESS';
17
+ readonly UPDATE_ITEM_ERROR: 'EVENT_UPDATE_ITEM_ERROR';
18
+ readonly UPDATE_ITEM_SUCCESS: 'EVENT_UPDATE_ITEM_SUCCESS';
19
19
  };
20
20
  interface EventState {
21
21
  lists: Record<string, Record<string, unknown>[]>;
@@ -26,12 +26,8 @@ export declare const eventStore: (type: string, data: {
26
26
  type?: string;
27
27
  }, state?: EventState) => EventState;
28
28
  export declare const events: {
29
- action: (type: string, data: {
30
- list?: EventType[];
31
- type?: string;
32
- }, state?: EventState) => EventState;
29
+ action: typeof eventStore;
33
30
  initialState: EventState;
34
31
  name: string;
35
32
  };
36
33
  export {};
37
- //# sourceMappingURL=eventStore.d.ts.map
@@ -4,16 +4,16 @@
4
4
  */
5
5
  import type { GroupType } from '../types/groups.types.js';
6
6
  export declare const GROUP_CONSTANTS: {
7
- readonly ADD_ITEM_ERROR: "GROUP_ADD_ITEM_ERROR";
8
- readonly ADD_ITEM_SUCCESS: "GROUP_ADD_ITEM_SUCCESS";
9
- readonly GET_ITEM_ERROR: "GROUP_GET_ITEM_ERROR";
10
- readonly GET_ITEM_SUCCESS: "GROUP_GET_ITEM_SUCCESS";
11
- readonly GET_LIST_ERROR: "GROUP_GET_LIST_ERROR";
12
- readonly GET_LIST_SUCCESS: "GROUP_GET_LIST_SUCCESS";
13
- readonly REMOVE_ITEM_ERROR: "GROUP_REMOVE_ITEM_ERROR";
14
- readonly REMOVE_ITEM_SUCCESS: "GROUP_REMOVE_ITEM_SUCCESS";
15
- readonly UPDATE_ITEM_ERROR: "GROUP_UPDATE_ITEM_ERROR";
16
- readonly UPDATE_ITEM_SUCCESS: "GROUP_UPDATE_ITEM_SUCCESS";
7
+ readonly ADD_ITEM_ERROR: 'GROUP_ADD_ITEM_ERROR';
8
+ readonly ADD_ITEM_SUCCESS: 'GROUP_ADD_ITEM_SUCCESS';
9
+ readonly GET_ITEM_ERROR: 'GROUP_GET_ITEM_ERROR';
10
+ readonly GET_ITEM_SUCCESS: 'GROUP_GET_ITEM_SUCCESS';
11
+ readonly GET_LIST_ERROR: 'GROUP_GET_LIST_ERROR';
12
+ readonly GET_LIST_SUCCESS: 'GROUP_GET_LIST_SUCCESS';
13
+ readonly REMOVE_ITEM_ERROR: 'GROUP_REMOVE_ITEM_ERROR';
14
+ readonly REMOVE_ITEM_SUCCESS: 'GROUP_REMOVE_ITEM_SUCCESS';
15
+ readonly UPDATE_ITEM_ERROR: 'GROUP_UPDATE_ITEM_ERROR';
16
+ readonly UPDATE_ITEM_SUCCESS: 'GROUP_UPDATE_ITEM_SUCCESS';
17
17
  };
18
18
  export type GroupConstantsType = typeof GROUP_CONSTANTS[keyof typeof GROUP_CONSTANTS];
19
19
  interface GroupState {
@@ -26,12 +26,8 @@ export declare const groupStore: (type: string, data: {
26
26
  list?: GroupType[];
27
27
  }, state?: GroupState) => GroupState;
28
28
  export declare const groups: {
29
- action: (type: string, data: {
30
- group?: GroupType;
31
- list?: GroupType[];
32
- }, state?: GroupState) => GroupState;
29
+ action: typeof groupStore;
33
30
  initialState: GroupState;
34
31
  name: string;
35
32
  };
36
33
  export {};
37
- //# sourceMappingURL=groupStore.d.ts.map
@@ -4,21 +4,21 @@
4
4
  */
5
5
  import type { ImageType } from '../adapters/imageAdapter/imageAdapter.js';
6
6
  export declare const IMAGE_CONSTANTS: {
7
- readonly ADD_ITEM_ERROR: "IMAGE_ADD_ITEM_ERROR";
8
- readonly ADD_ITEM_SUCCESS: "IMAGE_ADD_ITEM_SUCCESS";
9
- readonly GET_COUNT_ERROR: "IMAGE_GET_COUNT_ERROR";
10
- readonly GET_COUNT_SUCCESS: "IMAGE_GET_COUNT_SUCCESS";
11
- readonly GET_ITEM_ERROR: "IMAGE_GET_ITEM_ERROR";
12
- readonly GET_ITEM_SUCCESS: "IMAGE_GET_ITEM_SUCCESS";
13
- readonly GET_LIST_ERROR: "IMAGE_GET_LIST_ERROR";
14
- readonly GET_LIST_SUCCESS: "IMAGE_GET_LIST_SUCCESS";
15
- readonly OPEN: "IMAGE_OPEN";
16
- readonly REMOVE_ITEM_ERROR: "IMAGE_REMOVE_ITEM_ERROR";
17
- readonly REMOVE_ITEM_SUCCESS: "IMAGE_REMOVE_ITEM_SUCCESS";
18
- readonly UPDATE_ITEM_ERROR: "IMAGE_UPDATE_ITEM_ERROR";
19
- readonly UPDATE_ITEM_SUCCESS: "IMAGE_UPDATE_ITEM_SUCCESS";
20
- readonly UPLOAD_ITEM_ERROR: "IMAGE_UPLOAD_ITEM_ERROR";
21
- readonly UPLOAD_ITEM_SUCCESS: "IMAGE_UPLOAD_ITEM_SUCCESS";
7
+ readonly ADD_ITEM_ERROR: 'IMAGE_ADD_ITEM_ERROR';
8
+ readonly ADD_ITEM_SUCCESS: 'IMAGE_ADD_ITEM_SUCCESS';
9
+ readonly GET_COUNT_ERROR: 'IMAGE_GET_COUNT_ERROR';
10
+ readonly GET_COUNT_SUCCESS: 'IMAGE_GET_COUNT_SUCCESS';
11
+ readonly GET_ITEM_ERROR: 'IMAGE_GET_ITEM_ERROR';
12
+ readonly GET_ITEM_SUCCESS: 'IMAGE_GET_ITEM_SUCCESS';
13
+ readonly GET_LIST_ERROR: 'IMAGE_GET_LIST_ERROR';
14
+ readonly GET_LIST_SUCCESS: 'IMAGE_GET_LIST_SUCCESS';
15
+ readonly OPEN: 'IMAGE_OPEN';
16
+ readonly REMOVE_ITEM_ERROR: 'IMAGE_REMOVE_ITEM_ERROR';
17
+ readonly REMOVE_ITEM_SUCCESS: 'IMAGE_REMOVE_ITEM_SUCCESS';
18
+ readonly UPDATE_ITEM_ERROR: 'IMAGE_UPDATE_ITEM_ERROR';
19
+ readonly UPDATE_ITEM_SUCCESS: 'IMAGE_UPDATE_ITEM_SUCCESS';
20
+ readonly UPLOAD_ITEM_ERROR: 'IMAGE_UPLOAD_ITEM_ERROR';
21
+ readonly UPLOAD_ITEM_SUCCESS: 'IMAGE_UPLOAD_ITEM_SUCCESS';
22
22
  };
23
23
  interface ImageState {
24
24
  lists: Record<string, ImageType[]>;
@@ -29,12 +29,8 @@ export declare const imageStore: (type: string, data: {
29
29
  itemId?: string;
30
30
  }, state?: ImageState) => ImageState;
31
31
  export declare const images: {
32
- action: (type: string, data: {
33
- list?: ImageType[];
34
- itemId?: string;
35
- }, state?: ImageState) => ImageState;
32
+ action: typeof imageStore;
36
33
  initialState: ImageState;
37
34
  name: string;
38
35
  };
39
36
  export {};
40
- //# sourceMappingURL=imageStore.d.ts.map
@@ -21,4 +21,3 @@ export { TRANSLATION_CONSTANTS, translations } from './translationStore.js';
21
21
  export { USER_CONSTANTS, users } from './userStore.js';
22
22
  export { video, VIDEO_CONSTANTS } from './videoStore.js';
23
23
  export { websocket, WEBSOCKET_CONSTANTS } from './websocketStore.js';
24
- //# sourceMappingURL=index.d.ts.map
@@ -4,17 +4,17 @@
4
4
  */
5
5
  import type { LocationType } from '../adapters/locationAdapter/locationAdapter.js';
6
6
  export declare const LOCATION_CONSTANTS: {
7
- readonly ADD_ITEM_ERROR: "LOCATION_ADD_ITEM_ERROR";
8
- readonly ADD_ITEM_SUCCESS: "LOCATION_ADD_ITEM_SUCCESS";
9
- readonly GET_ITEM_ERROR: "LOCATION_GET_ITEM_ERROR";
10
- readonly GET_ITEM_SUCCESS: "LOCATION_GET_ITEM_SUCCESS";
11
- readonly GET_LIST_ERROR: "LOCATION_GET_LIST_ERROR";
12
- readonly GET_LIST_SUCCESS: "LOCATION_GET_LIST_SUCCESS";
13
- readonly REMOVE_ITEM_ERROR: "LOCATION_REMOVE_ITEM_ERROR";
14
- readonly REMOVE_ITEM_SUCCESS: "LOCATION_REMOVE_ITEM_SUCCESS";
15
- readonly SET_CURRENT: "LOCATION_SET_CURRENT";
16
- readonly UPDATE_ITEM_ERROR: "LOCATION_UPDATE_ITEM_ERROR";
17
- readonly UPDATE_ITEM_SUCCESS: "LOCATION_UPDATE_ITEM_SUCCESS";
7
+ readonly ADD_ITEM_ERROR: 'LOCATION_ADD_ITEM_ERROR';
8
+ readonly ADD_ITEM_SUCCESS: 'LOCATION_ADD_ITEM_SUCCESS';
9
+ readonly GET_ITEM_ERROR: 'LOCATION_GET_ITEM_ERROR';
10
+ readonly GET_ITEM_SUCCESS: 'LOCATION_GET_ITEM_SUCCESS';
11
+ readonly GET_LIST_ERROR: 'LOCATION_GET_LIST_ERROR';
12
+ readonly GET_LIST_SUCCESS: 'LOCATION_GET_LIST_SUCCESS';
13
+ readonly REMOVE_ITEM_ERROR: 'LOCATION_REMOVE_ITEM_ERROR';
14
+ readonly REMOVE_ITEM_SUCCESS: 'LOCATION_REMOVE_ITEM_SUCCESS';
15
+ readonly SET_CURRENT: 'LOCATION_SET_CURRENT';
16
+ readonly UPDATE_ITEM_ERROR: 'LOCATION_UPDATE_ITEM_ERROR';
17
+ readonly UPDATE_ITEM_SUCCESS: 'LOCATION_UPDATE_ITEM_SUCCESS';
18
18
  };
19
19
  interface LocationState {
20
20
  current: LocationType | null;
@@ -24,11 +24,8 @@ export declare const locationStore: (type: string, data: {
24
24
  current?: LocationType;
25
25
  }, state?: LocationState) => LocationState;
26
26
  export declare const locations: {
27
- action: (type: string, data: {
28
- current?: LocationType;
29
- }, state?: LocationState) => LocationState;
27
+ action: typeof locationStore;
30
28
  initialState: LocationState;
31
29
  name: string;
32
30
  };
33
31
  export {};
34
- //# sourceMappingURL=locationStore.d.ts.map
@@ -4,19 +4,19 @@
4
4
  */
5
5
  import type { MessageType } from '../adapters/messageAdapter/messageAdapter.js';
6
6
  export declare const MESSAGE_CONSTANTS: {
7
- readonly ADD_ITEM_ERROR: "MESSAGE_ADD_ITEM_ERROR";
8
- readonly ADD_ITEM_SUCCESS: "MESSAGE_ADD_ITEM_SUCCESS";
9
- readonly GET_CONVO_LIST_ERROR: "MESSAGE_GET_CONVO_LIST_ERROR";
10
- readonly GET_CONVO_LIST_SUCCESS: "MESSAGE_GET_CONVO_LIST_SUCCESS";
11
- readonly GET_ITEM_ERROR: "MESSAGE_GET_ITEM_ERROR";
12
- readonly GET_ITEM_SUCCESS: "MESSAGE_GET_ITEM_SUCCESS";
13
- readonly GET_LIST_ERROR: "MESSAGE_GET_LIST_ERROR";
14
- readonly GET_LIST_SUCCESS: "MESSAGE_GET_LIST_SUCCESS";
15
- readonly REMOVE_ITEM_ERROR: "MESSAGE_REMOVE_ITEM_ERROR";
16
- readonly REMOVE_ITEM_SUCCESS: "MESSAGE_REMOVE_ITEM_SUCCESS";
17
- readonly TYPING_STATUS_UPDATE: "MESSAGE_TYPING_STATUS_UPDATE";
18
- readonly UPDATE_ITEM_ERROR: "MESSAGE_UPDATE_ITEM_ERROR";
19
- readonly UPDATE_ITEM_SUCCESS: "MESSAGE_UPDATE_ITEM_SUCCESS";
7
+ readonly ADD_ITEM_ERROR: 'MESSAGE_ADD_ITEM_ERROR';
8
+ readonly ADD_ITEM_SUCCESS: 'MESSAGE_ADD_ITEM_SUCCESS';
9
+ readonly GET_CONVO_LIST_ERROR: 'MESSAGE_GET_CONVO_LIST_ERROR';
10
+ readonly GET_CONVO_LIST_SUCCESS: 'MESSAGE_GET_CONVO_LIST_SUCCESS';
11
+ readonly GET_ITEM_ERROR: 'MESSAGE_GET_ITEM_ERROR';
12
+ readonly GET_ITEM_SUCCESS: 'MESSAGE_GET_ITEM_SUCCESS';
13
+ readonly GET_LIST_ERROR: 'MESSAGE_GET_LIST_ERROR';
14
+ readonly GET_LIST_SUCCESS: 'MESSAGE_GET_LIST_SUCCESS';
15
+ readonly REMOVE_ITEM_ERROR: 'MESSAGE_REMOVE_ITEM_ERROR';
16
+ readonly REMOVE_ITEM_SUCCESS: 'MESSAGE_REMOVE_ITEM_SUCCESS';
17
+ readonly TYPING_STATUS_UPDATE: 'MESSAGE_TYPING_STATUS_UPDATE';
18
+ readonly UPDATE_ITEM_ERROR: 'MESSAGE_UPDATE_ITEM_ERROR';
19
+ readonly UPDATE_ITEM_SUCCESS: 'MESSAGE_UPDATE_ITEM_SUCCESS';
20
20
  };
21
21
  export interface MessageTypingStatus {
22
22
  readonly conversationId?: string;
@@ -39,13 +39,7 @@ export declare const messageStore: (type: string, data: {
39
39
  typing?: MessageTypingStatus;
40
40
  }, state?: MessageState) => MessageState;
41
41
  export declare const messages: {
42
- action: (type: string, data: {
43
- message?: MessageType;
44
- list?: MessageType[];
45
- conversationId?: string;
46
- typing?: MessageTypingStatus;
47
- }, state?: MessageState) => MessageState;
42
+ action: typeof messageStore;
48
43
  initialState: MessageState;
49
44
  name: string;
50
45
  };
51
- //# sourceMappingURL=messageStore.d.ts.map
@@ -3,8 +3,8 @@
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */
5
5
  export declare const NOTIFICATION_CONSTANTS: {
6
- readonly ADD_ITEM_SUCCESS: "NOTIFICATION_ADD_ITEM_SUCCESS";
7
- readonly CLEAR_ITEMS: "NOTIFICATION_CLEAR_ITEMS";
6
+ readonly ADD_ITEM_SUCCESS: 'NOTIFICATION_ADD_ITEM_SUCCESS';
7
+ readonly CLEAR_ITEMS: 'NOTIFICATION_CLEAR_ITEMS';
8
8
  };
9
9
  export type NotificationType = Record<string, unknown> & {
10
10
  readonly added?: number;
@@ -24,10 +24,7 @@ export declare const notificationStore: (type: string, data: {
24
24
  notification?: NotificationType;
25
25
  }, state?: NotificationState) => NotificationState;
26
26
  export declare const notifications: {
27
- action: (type: string, data: {
28
- notification?: NotificationType;
29
- }, state?: NotificationState) => NotificationState;
27
+ action: typeof notificationStore;
30
28
  initialState: NotificationState;
31
29
  name: string;
32
30
  };
33
- //# sourceMappingURL=notificationStore.d.ts.map
@@ -1,17 +1,17 @@
1
1
  import type { Permission } from '../adapters/permissionAdapter/permissionAdapter.js';
2
2
  export declare const PERMISSION_CONSTANTS: {
3
- readonly ADD_ITEM_ERROR: "PERMISSION_ADD_ITEM_ERROR";
4
- readonly ADD_ITEM_SUCCESS: "PERMISSION_ADD_ITEM_SUCCESS";
5
- readonly CHECK_PERMISSION_ERROR: "PERMISSION_CHECK_PERMISSION_ERROR";
6
- readonly CHECK_PERMISSION_SUCCESS: "PERMISSION_CHECK_PERMISSION_SUCCESS";
7
- readonly GET_ITEM_ERROR: "PERMISSION_GET_ITEM_ERROR";
8
- readonly GET_ITEM_SUCCESS: "PERMISSION_GET_ITEM_SUCCESS";
9
- readonly GET_LIST_ERROR: "PERMISSION_GET_LIST_ERROR";
10
- readonly GET_LIST_SUCCESS: "PERMISSION_GET_LIST_SUCCESS";
11
- readonly REMOVE_ITEM_ERROR: "PERMISSION_REMOVE_ITEM_ERROR";
12
- readonly REMOVE_ITEM_SUCCESS: "PERMISSION_REMOVE_ITEM_SUCCESS";
13
- readonly UPDATE_ITEM_ERROR: "PERMISSION_UPDATE_ITEM_ERROR";
14
- readonly UPDATE_ITEM_SUCCESS: "PERMISSION_UPDATE_ITEM_SUCCESS";
3
+ readonly ADD_ITEM_ERROR: 'PERMISSION_ADD_ITEM_ERROR';
4
+ readonly ADD_ITEM_SUCCESS: 'PERMISSION_ADD_ITEM_SUCCESS';
5
+ readonly CHECK_PERMISSION_ERROR: 'PERMISSION_CHECK_PERMISSION_ERROR';
6
+ readonly CHECK_PERMISSION_SUCCESS: 'PERMISSION_CHECK_PERMISSION_SUCCESS';
7
+ readonly GET_ITEM_ERROR: 'PERMISSION_GET_ITEM_ERROR';
8
+ readonly GET_ITEM_SUCCESS: 'PERMISSION_GET_ITEM_SUCCESS';
9
+ readonly GET_LIST_ERROR: 'PERMISSION_GET_LIST_ERROR';
10
+ readonly GET_LIST_SUCCESS: 'PERMISSION_GET_LIST_SUCCESS';
11
+ readonly REMOVE_ITEM_ERROR: 'PERMISSION_REMOVE_ITEM_ERROR';
12
+ readonly REMOVE_ITEM_SUCCESS: 'PERMISSION_REMOVE_ITEM_SUCCESS';
13
+ readonly UPDATE_ITEM_ERROR: 'PERMISSION_UPDATE_ITEM_ERROR';
14
+ readonly UPDATE_ITEM_SUCCESS: 'PERMISSION_UPDATE_ITEM_SUCCESS';
15
15
  };
16
16
  export type PermissionConstantsType = typeof PERMISSION_CONSTANTS[keyof typeof PERMISSION_CONSTANTS];
17
17
  interface PermissionState {
@@ -29,9 +29,8 @@ interface PermissionData {
29
29
  }
30
30
  export declare const permissionStore: (type: string, data: PermissionData, state?: PermissionState) => PermissionState;
31
31
  export declare const permissions: {
32
- action: (type: string, data: PermissionData, state?: PermissionState) => PermissionState;
32
+ action: typeof permissionStore;
33
33
  initialState: PermissionState;
34
34
  name: string;
35
35
  };
36
36
  export {};
37
- //# sourceMappingURL=permissionStore.d.ts.map
@@ -19,8 +19,7 @@ export interface PersonaState {
19
19
  export declare const initialPersonaState: PersonaState;
20
20
  export declare const personaStore: (state?: PersonaState, action?: {}, _next?: {}) => PersonaState;
21
21
  export declare const personas: {
22
- action: (state?: PersonaState, action?: {}, _next?: {}) => PersonaState;
22
+ action: typeof personaStore;
23
23
  initialState: PersonaState;
24
24
  name: string;
25
25
  };
26
- //# sourceMappingURL=personaStore.d.ts.map