@appconda/sdk 1.0.194 → 1.0.409

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 (984) hide show
  1. package/.github/workflows/autoclose.yml +11 -0
  2. package/.github/workflows/publish.yml +42 -0
  3. package/.travis.yml +32 -0
  4. package/CHANGELOG.md +1 -0
  5. package/LICENSE +12 -0
  6. package/README.md +0 -0
  7. package/dist/actions/_authOptions.d.ts +5 -0
  8. package/dist/actions/_authOptions.js +235 -0
  9. package/dist/actions/actionClient.d.ts +10 -0
  10. package/dist/actions/actionClient.js +41 -0
  11. package/dist/actions/auth.d.ts +1 -0
  12. package/dist/actions/auth.js +7 -0
  13. package/dist/actions/authOptions.d.ts +5 -0
  14. package/dist/actions/authOptions.js +133 -0
  15. package/dist/actions/index.d.ts +3 -0
  16. package/dist/actions/index.js +4 -0
  17. package/dist/actions/nextAuthHandler.d.ts +1 -0
  18. package/dist/actions/nextAuthHandler.js +6 -0
  19. package/dist/client.d.ts +141 -0
  20. package/dist/client.js +335 -0
  21. package/dist/decorators/Cache.d.ts +1 -0
  22. package/dist/decorators/Cache.js +79 -0
  23. package/dist/decorators/CacheKey.d.ts +1 -0
  24. package/dist/decorators/CacheKey.js +9 -0
  25. package/dist/decorators/Invalidate.d.ts +1 -0
  26. package/dist/decorators/Invalidate.js +47 -0
  27. package/dist/enums/api-service.d.ts +13 -0
  28. package/dist/enums/api-service.js +15 -0
  29. package/dist/enums/api.d.ts +5 -0
  30. package/dist/enums/api.js +7 -0
  31. package/dist/enums/auth-method.d.ts +9 -0
  32. package/dist/enums/auth-method.js +11 -0
  33. package/dist/enums/browser.d.ts +16 -0
  34. package/dist/enums/browser.js +18 -0
  35. package/dist/enums/compression.d.ts +5 -0
  36. package/dist/enums/compression.js +7 -0
  37. package/dist/enums/credit-card.d.ts +18 -0
  38. package/dist/enums/credit-card.js +20 -0
  39. package/dist/enums/database-usage-range.d.ts +5 -0
  40. package/dist/enums/database-usage-range.js +7 -0
  41. package/dist/enums/email-template-locale.d.ts +133 -0
  42. package/dist/enums/email-template-locale.js +135 -0
  43. package/dist/enums/email-template-type.d.ts +9 -0
  44. package/dist/enums/email-template-type.js +11 -0
  45. package/dist/enums/entities/EntityLimitType.d.ts +4 -0
  46. package/dist/enums/entities/EntityLimitType.js +6 -0
  47. package/dist/enums/entities/PropertyAttributeName.d.ts +27 -0
  48. package/dist/enums/entities/PropertyAttributeName.js +29 -0
  49. package/dist/enums/entities/PropertyCondition.d.ts +7 -0
  50. package/dist/enums/entities/PropertyCondition.js +10 -0
  51. package/dist/enums/entities/PropertyType.d.ts +12 -0
  52. package/dist/enums/entities/PropertyType.js +18 -0
  53. package/dist/enums/entities/PropertyValueType.d.ts +6 -0
  54. package/dist/enums/entities/PropertyValueType.js +8 -0
  55. package/dist/enums/entities/RowAccess.d.ts +2 -0
  56. package/dist/enums/entities/RowAccess.js +2 -0
  57. package/dist/enums/entities/ViewFilterCondition.d.ts +12 -0
  58. package/dist/enums/entities/ViewFilterCondition.js +14 -0
  59. package/dist/enums/execution-method.d.ts +8 -0
  60. package/dist/enums/execution-method.js +10 -0
  61. package/dist/enums/flag.d.ts +197 -0
  62. package/dist/enums/flag.js +199 -0
  63. package/dist/enums/function-usage-range.d.ts +5 -0
  64. package/dist/enums/function-usage-range.js +7 -0
  65. package/dist/enums/image-format.d.ts +7 -0
  66. package/dist/enums/image-format.js +9 -0
  67. package/dist/enums/image-gravity.d.ts +11 -0
  68. package/dist/enums/image-gravity.js +13 -0
  69. package/dist/enums/index-type.d.ts +5 -0
  70. package/dist/enums/index-type.js +7 -0
  71. package/dist/enums/messaging-provider-type.d.ts +5 -0
  72. package/dist/enums/messaging-provider-type.js +7 -0
  73. package/dist/enums/name.d.ts +14 -0
  74. package/dist/enums/name.js +16 -0
  75. package/dist/enums/o-auth-provider copy.d.ts +41 -0
  76. package/dist/enums/o-auth-provider copy.js +43 -0
  77. package/dist/enums/password-hash.d.ts +13 -0
  78. package/dist/enums/password-hash.js +15 -0
  79. package/dist/enums/platform-type.d.ts +17 -0
  80. package/dist/enums/platform-type.js +19 -0
  81. package/dist/enums/project-usage-range.d.ts +4 -0
  82. package/dist/enums/project-usage-range.js +6 -0
  83. package/dist/enums/region.d.ts +4 -0
  84. package/dist/enums/region.js +6 -0
  85. package/dist/enums/relation-mutate.d.ts +5 -0
  86. package/dist/enums/relation-mutate.js +7 -0
  87. package/dist/enums/relationship-type.d.ts +6 -0
  88. package/dist/enums/relationship-type.js +8 -0
  89. package/dist/enums/resource-type.d.ts +4 -0
  90. package/dist/enums/resource-type.js +6 -0
  91. package/dist/enums/runtime.d.ts +48 -0
  92. package/dist/enums/runtime.js +50 -0
  93. package/dist/enums/s-m-t-p-secure.d.ts +3 -0
  94. package/dist/enums/s-m-t-p-secure.js +5 -0
  95. package/dist/enums/shared/ApplicationLayout.d.ts +4 -0
  96. package/dist/enums/shared/ApplicationLayout.js +6 -0
  97. package/dist/enums/shared/Colors.d.ts +24 -0
  98. package/dist/enums/shared/Colors.js +26 -0
  99. package/dist/enums/shared/InputType.d.ts +6 -0
  100. package/dist/enums/shared/InputType.js +8 -0
  101. package/dist/enums/shared/Periodicity.d.ts +7 -0
  102. package/dist/enums/shared/Periodicity.js +9 -0
  103. package/dist/enums/shared/SvgIcon.d.ts +37 -0
  104. package/dist/enums/shared/SvgIcon.js +39 -0
  105. package/dist/enums/shared/Theme.d.ts +4 -0
  106. package/dist/enums/shared/Theme.js +6 -0
  107. package/dist/enums/sms-template-locale.d.ts +133 -0
  108. package/dist/enums/sms-template-locale.js +135 -0
  109. package/dist/enums/sms-template-type.d.ts +6 -0
  110. package/dist/enums/sms-template-type.js +8 -0
  111. package/dist/enums/smtp-encryption.d.ts +5 -0
  112. package/dist/enums/smtp-encryption.js +7 -0
  113. package/dist/enums/storage-usage-range.d.ts +5 -0
  114. package/dist/enums/storage-usage-range.js +7 -0
  115. package/dist/enums/subscriptions/PricingModel.d.ts +11 -0
  116. package/dist/enums/subscriptions/PricingModel.js +12 -0
  117. package/dist/enums/subscriptions/SubscriptionBillingPeriod.d.ts +10 -0
  118. package/dist/enums/subscriptions/SubscriptionBillingPeriod.js +11 -0
  119. package/dist/enums/subscriptions/SubscriptionFeatureLimitType.d.ts +10 -0
  120. package/dist/enums/subscriptions/SubscriptionFeatureLimitType.js +13 -0
  121. package/dist/enums/subscriptions/SubscriptionPriceType.d.ts +7 -0
  122. package/dist/enums/subscriptions/SubscriptionPriceType.js +8 -0
  123. package/dist/enums/tenants/LinkedAccountStatus.d.ts +5 -0
  124. package/dist/enums/tenants/LinkedAccountStatus.js +7 -0
  125. package/dist/enums/tenants/TenantUserJoined.d.ts +6 -0
  126. package/dist/enums/tenants/TenantUserJoined.js +8 -0
  127. package/dist/enums/tenants/TenantUserStatus.d.ts +6 -0
  128. package/dist/enums/tenants/TenantUserStatus.js +8 -0
  129. package/dist/enums/tenants/TenantUserType.d.ts +5 -0
  130. package/dist/enums/tenants/TenantUserType.js +7 -0
  131. package/dist/enums/user-usage-range.d.ts +5 -0
  132. package/dist/enums/user-usage-range.js +7 -0
  133. package/dist/getAppcondaClient.d.ts +3 -0
  134. package/dist/getAppcondaClient.js +71 -0
  135. package/dist/getSDKForCurrentUser.d.ts +59 -0
  136. package/dist/getSDKForCurrentUser.js +100 -0
  137. package/dist/getSDKForService.d.ts +18 -0
  138. package/dist/getSDKForService.js +67 -0
  139. package/dist/getSDKForTenant.d.ts +20 -0
  140. package/dist/getSDKForTenant.js +44 -0
  141. package/dist/id.d.ts +20 -0
  142. package/dist/id.js +45 -0
  143. package/dist/index.d.ts +1 -0
  144. package/dist/index.js +2 -0
  145. package/dist/inputFile.d.ts +6 -0
  146. package/dist/inputFile.js +17 -0
  147. package/dist/lib/Cache/Adapter.d.ts +10 -0
  148. package/dist/lib/Cache/Adapter.js +2 -0
  149. package/dist/lib/Cache/Adapters/Filesystem.d.ts +16 -0
  150. package/dist/lib/Cache/Adapters/Filesystem.js +103 -0
  151. package/dist/lib/Cache/Adapters/Memory.d.ts +18 -0
  152. package/dist/lib/Cache/Adapters/Memory.js +47 -0
  153. package/dist/lib/Cache/Adapters/None.d.ts +12 -0
  154. package/dist/lib/Cache/Adapters/None.js +28 -0
  155. package/dist/lib/Cache/Adapters/Sharding.d.ts +17 -0
  156. package/dist/lib/Cache/Adapters/Sharding.js +73 -0
  157. package/dist/lib/Cache/Cache.d.ts +16 -0
  158. package/dist/lib/Cache/Cache.js +52 -0
  159. package/dist/lib/Cache/index.d.ts +4 -0
  160. package/dist/lib/Cache/index.js +5 -0
  161. package/dist/lib/Cache/test.d.ts +0 -0
  162. package/dist/lib/Cache/test.js +1 -0
  163. package/dist/lib/Registry/Registry.d.ts +38 -0
  164. package/dist/lib/Registry/Registry.js +56 -0
  165. package/dist/lib/Registry/index.d.ts +1 -0
  166. package/dist/lib/Registry/index.js +2 -0
  167. package/dist/lib/Services.d.ts +6 -0
  168. package/dist/lib/Services.js +14 -0
  169. package/dist/lib/crypto.d.ts +23 -0
  170. package/dist/lib/crypto.js +78 -0
  171. package/dist/lib/env.d.ts +1 -0
  172. package/dist/lib/env.js +137 -0
  173. package/dist/lib/errors.d.ts +70 -0
  174. package/dist/lib/errors.js +79 -0
  175. package/dist/lib/index.d.ts +0 -0
  176. package/dist/lib/index.js +1 -0
  177. package/dist/lib/jwt.d.ts +12 -0
  178. package/dist/lib/jwt.js +103 -0
  179. package/dist/lib/types.d.ts +5 -0
  180. package/dist/lib/types.js +2 -0
  181. package/dist/models.d.ts +3272 -0
  182. package/dist/models.js +2 -0
  183. package/dist/modules/account/actions.d.ts +11 -0
  184. package/dist/modules/account/actions.js +49 -0
  185. package/dist/modules/account/enums/authentication-factor.d.ts +6 -0
  186. package/dist/modules/account/enums/authentication-factor.js +8 -0
  187. package/dist/modules/account/enums/authenticator-type.d.ts +3 -0
  188. package/dist/modules/account/enums/authenticator-type.js +5 -0
  189. package/dist/modules/account/enums/o-auth-provider.d.ts +41 -0
  190. package/dist/modules/account/enums/o-auth-provider.js +43 -0
  191. package/dist/modules/account/index.d.ts +2 -0
  192. package/dist/modules/account/index.js +3 -0
  193. package/dist/modules/account/schema.d.ts +7 -0
  194. package/dist/modules/account/schema.js +8 -0
  195. package/dist/modules/account/service.d.ts +530 -0
  196. package/dist/modules/account/service.js +1263 -0
  197. package/dist/modules/account/types.d.ts +411 -0
  198. package/dist/modules/account/types.js +2 -0
  199. package/dist/modules/accounv1/action.d.ts +9 -0
  200. package/dist/modules/accounv1/action.js +88 -0
  201. package/dist/modules/accounv1/index.d.ts +3 -0
  202. package/dist/modules/accounv1/index.js +4 -0
  203. package/dist/modules/accounv1/schema.d.ts +43 -0
  204. package/dist/modules/accounv1/schema.js +44 -0
  205. package/dist/modules/accounv1/service.d.ts +14 -0
  206. package/dist/modules/accounv1/service.js +28 -0
  207. package/dist/modules/accounv1/types.d.ts +14 -0
  208. package/dist/modules/accounv1/types.js +2 -0
  209. package/dist/modules/acl/service.d.ts +26 -0
  210. package/dist/modules/acl/service.js +27 -0
  211. package/dist/modules/agent/action.d.ts +29 -0
  212. package/dist/modules/agent/action.js +53 -0
  213. package/dist/modules/agent/index.d.ts +4 -0
  214. package/dist/modules/agent/index.js +5 -0
  215. package/dist/modules/agent/schema.d.ts +20 -0
  216. package/dist/modules/agent/schema.js +21 -0
  217. package/dist/modules/agent/service.d.ts +12 -0
  218. package/dist/modules/agent/service.js +22 -0
  219. package/dist/modules/agent/types.d.ts +11 -0
  220. package/dist/modules/agent/types.js +2 -0
  221. package/dist/modules/ai/index.d.ts +1 -0
  222. package/dist/modules/ai/index.js +2 -0
  223. package/dist/modules/ai/node/actions.d.ts +4 -0
  224. package/dist/modules/ai/node/actions.js +14 -0
  225. package/dist/modules/ai/node/index.d.ts +2 -0
  226. package/dist/modules/ai/node/index.js +3 -0
  227. package/dist/modules/ai/node/service.d.ts +5 -0
  228. package/dist/modules/ai/node/service.js +12 -0
  229. package/dist/modules/bpm/action.d.ts +7 -0
  230. package/dist/modules/bpm/action.js +60 -0
  231. package/dist/modules/bpm/index.d.ts +3 -0
  232. package/dist/modules/bpm/index.js +4 -0
  233. package/dist/modules/bpm/schema.d.ts +18 -0
  234. package/dist/modules/bpm/schema.js +19 -0
  235. package/dist/modules/bpm/service.d.ts +11 -0
  236. package/dist/modules/bpm/service.js +19 -0
  237. package/dist/modules/bpm/types.d.ts +9 -0
  238. package/dist/modules/bpm/types.js +2 -0
  239. package/dist/modules/builder/action.d.ts +18 -0
  240. package/dist/modules/builder/action.js +214 -0
  241. package/dist/modules/builder/index.d.ts +4 -0
  242. package/dist/modules/builder/index.js +5 -0
  243. package/dist/modules/builder/schema.d.ts +80 -0
  244. package/dist/modules/builder/schema.js +81 -0
  245. package/dist/modules/builder/service.d.ts +22 -0
  246. package/dist/modules/builder/service.js +52 -0
  247. package/dist/modules/builder/types.d.ts +62 -0
  248. package/dist/modules/builder/types.js +2 -0
  249. package/dist/modules/datasource/action.d.ts +14 -0
  250. package/dist/modules/datasource/action.js +172 -0
  251. package/dist/modules/datasource/index.d.ts +4 -0
  252. package/dist/modules/datasource/index.js +5 -0
  253. package/dist/modules/datasource/schema.d.ts +55 -0
  254. package/dist/modules/datasource/schema.js +56 -0
  255. package/dist/modules/datasource/service.d.ts +19 -0
  256. package/dist/modules/datasource/service.js +43 -0
  257. package/dist/modules/datasource/types.d.ts +28 -0
  258. package/dist/modules/datasource/types.js +2 -0
  259. package/dist/modules/emploid/action.d.ts +73 -0
  260. package/dist/modules/emploid/action.js +984 -0
  261. package/dist/modules/emploid/index.d.ts +4 -0
  262. package/dist/modules/emploid/index.js +5 -0
  263. package/dist/modules/emploid/schema.d.ts +386 -0
  264. package/dist/modules/emploid/schema.js +331 -0
  265. package/dist/modules/emploid/service.d.ts +77 -0
  266. package/dist/modules/emploid/service.js +217 -0
  267. package/dist/modules/emploid/types.d.ts +114 -0
  268. package/dist/modules/emploid/types.js +2 -0
  269. package/dist/modules/google/action.d.ts +5 -0
  270. package/dist/modules/google/action.js +46 -0
  271. package/dist/modules/google/index.d.ts +4 -0
  272. package/dist/modules/google/index.js +5 -0
  273. package/dist/modules/google/schema.d.ts +13 -0
  274. package/dist/modules/google/schema.js +14 -0
  275. package/dist/modules/google/service.d.ts +10 -0
  276. package/dist/modules/google/service.js +16 -0
  277. package/dist/modules/google/types.d.ts +12 -0
  278. package/dist/modules/google/types.js +2 -0
  279. package/dist/modules/hooks/index.d.ts +3 -0
  280. package/dist/modules/hooks/index.js +4 -0
  281. package/dist/modules/hooks/lib/Hooks.d.ts +32 -0
  282. package/dist/modules/hooks/lib/Hooks.js +64 -0
  283. package/dist/modules/hooks/lib/handler.d.ts +12 -0
  284. package/dist/modules/hooks/lib/handler.js +23 -0
  285. package/dist/modules/hooks/lib/jobs/index.d.ts +2 -0
  286. package/dist/modules/hooks/lib/jobs/index.js +3 -0
  287. package/dist/modules/hooks/lib/jobs/job1.d.ts +1 -0
  288. package/dist/modules/hooks/lib/jobs/job1.js +16 -0
  289. package/dist/modules/hooks/lib/jobs/log-job.d.ts +1 -0
  290. package/dist/modules/hooks/lib/jobs/log-job.js +9 -0
  291. package/dist/modules/hooks/lib/wait.d.ts +8 -0
  292. package/dist/modules/hooks/lib/wait.js +13 -0
  293. package/dist/modules/index.d.ts +17 -0
  294. package/dist/modules/index.js +18 -0
  295. package/dist/modules/mail/action.d.ts +3 -0
  296. package/dist/modules/mail/action.js +18 -0
  297. package/dist/modules/mail/index.d.ts +4 -0
  298. package/dist/modules/mail/index.js +5 -0
  299. package/dist/modules/mail/schema.d.ts +6 -0
  300. package/dist/modules/mail/schema.js +7 -0
  301. package/dist/modules/mail/service.d.ts +8 -0
  302. package/dist/modules/mail/service.js +10 -0
  303. package/dist/modules/mail/types.d.ts +6 -0
  304. package/dist/modules/mail/types.js +2 -0
  305. package/dist/modules/notion/action.d.ts +5 -0
  306. package/dist/modules/notion/action.js +46 -0
  307. package/dist/modules/notion/index.d.ts +4 -0
  308. package/dist/modules/notion/index.js +5 -0
  309. package/dist/modules/notion/schema.d.ts +13 -0
  310. package/dist/modules/notion/schema.js +14 -0
  311. package/dist/modules/notion/service.d.ts +10 -0
  312. package/dist/modules/notion/service.js +19 -0
  313. package/dist/modules/notion/types.d.ts +11 -0
  314. package/dist/modules/notion/types.js +2 -0
  315. package/dist/modules/organization/action.d.ts +7 -0
  316. package/dist/modules/organization/action.js +60 -0
  317. package/dist/modules/organization/index.d.ts +4 -0
  318. package/dist/modules/organization/index.js +5 -0
  319. package/dist/modules/organization/schema.d.ts +24 -0
  320. package/dist/modules/organization/schema.js +20 -0
  321. package/dist/modules/organization/service.d.ts +11 -0
  322. package/dist/modules/organization/service.js +19 -0
  323. package/dist/modules/organization/types.d.ts +11 -0
  324. package/dist/modules/organization/types.js +2 -0
  325. package/dist/modules/scheduled-job/action.d.ts +70 -0
  326. package/dist/modules/scheduled-job/action.js +173 -0
  327. package/dist/modules/scheduled-job/index.d.ts +7 -0
  328. package/dist/modules/scheduled-job/index.js +8 -0
  329. package/dist/modules/scheduled-job/lib/Schedules.d.ts +34 -0
  330. package/dist/modules/scheduled-job/lib/Schedules.js +65 -0
  331. package/dist/modules/scheduled-job/lib/handler.d.ts +13 -0
  332. package/dist/modules/scheduled-job/lib/handler.js +23 -0
  333. package/dist/modules/scheduled-job/lib/jobs/index.d.ts +1 -0
  334. package/dist/modules/scheduled-job/lib/jobs/index.js +2 -0
  335. package/dist/modules/scheduled-job/lib/jobs/job1.d.ts +1 -0
  336. package/dist/modules/scheduled-job/lib/jobs/job1.js +10 -0
  337. package/dist/modules/scheduled-job/lib/wait.d.ts +8 -0
  338. package/dist/modules/scheduled-job/lib/wait.js +13 -0
  339. package/dist/modules/scheduled-job/schema.d.ts +39 -0
  340. package/dist/modules/scheduled-job/schema.js +40 -0
  341. package/dist/modules/scheduled-job/service.d.ts +20 -0
  342. package/dist/modules/scheduled-job/service.js +46 -0
  343. package/dist/modules/scheduled-job/types.d.ts +66 -0
  344. package/dist/modules/scheduled-job/types.js +2 -0
  345. package/dist/modules/task/action.d.ts +64 -0
  346. package/dist/modules/task/action.js +758 -0
  347. package/dist/modules/task/index.d.ts +4 -0
  348. package/dist/modules/task/index.js +5 -0
  349. package/dist/modules/task/schema.d.ts +355 -0
  350. package/dist/modules/task/schema.js +371 -0
  351. package/dist/modules/task/service.d.ts +69 -0
  352. package/dist/modules/task/service.js +193 -0
  353. package/dist/modules/task/types.d.ts +293 -0
  354. package/dist/modules/task/types.js +37 -0
  355. package/dist/modules/tenant/actions.d.ts +10 -0
  356. package/dist/modules/tenant/actions.js +160 -0
  357. package/dist/modules/tenant/index.d.ts +3 -0
  358. package/dist/modules/tenant/index.js +4 -0
  359. package/dist/modules/tenant/schema.d.ts +26 -0
  360. package/dist/modules/tenant/schema.js +28 -0
  361. package/dist/modules/tenant/service.d.ts +14 -0
  362. package/dist/modules/tenant/service.js +28 -0
  363. package/dist/modules/tenant/tenant.d.ts +32 -0
  364. package/dist/modules/tenant/tenant.js +125 -0
  365. package/dist/modules/tenant/types.d.ts +20 -0
  366. package/dist/modules/tenant/types.js +2 -0
  367. package/dist/modules/waitlist/action.d.ts +6 -0
  368. package/dist/modules/waitlist/action.js +78 -0
  369. package/dist/modules/waitlist/index.d.ts +4 -0
  370. package/dist/modules/waitlist/index.js +5 -0
  371. package/dist/modules/waitlist/schema.d.ts +17 -0
  372. package/dist/modules/waitlist/schema.js +18 -0
  373. package/dist/modules/waitlist/service.d.ts +13 -0
  374. package/dist/modules/waitlist/service.js +28 -0
  375. package/dist/modules/waitlist/types.d.ts +14 -0
  376. package/dist/modules/waitlist/types.js +2 -0
  377. package/dist/permission.d.ts +43 -0
  378. package/dist/permission.js +54 -0
  379. package/dist/query.d.ts +194 -0
  380. package/dist/query.js +204 -0
  381. package/dist/role.d.ts +70 -0
  382. package/dist/role.js +94 -0
  383. package/dist/schemas/nodes.d.ts +0 -0
  384. package/dist/schemas/nodes.js +1 -0
  385. package/dist/service-client.d.ts +8 -0
  386. package/dist/service-client.js +22 -0
  387. package/dist/service.d.ts +11 -0
  388. package/dist/service.js +23 -0
  389. package/dist/services/applets.d.ts +9 -0
  390. package/dist/services/applets.js +40 -0
  391. package/dist/services/avatars.d.ts +115 -0
  392. package/dist/services/avatars.js +251 -0
  393. package/dist/services/chat-flow.d.ts +7 -0
  394. package/dist/services/chat-flow.js +26 -0
  395. package/dist/services/community.d.ts +19 -0
  396. package/dist/services/community.js +69 -0
  397. package/dist/services/configuration.d.ts +5 -0
  398. package/dist/services/configuration.js +11 -0
  399. package/dist/services/databases.d.ts +613 -0
  400. package/dist/services/databases.js +1736 -0
  401. package/dist/services/functions.d.ts +319 -0
  402. package/dist/services/functions.js +810 -0
  403. package/dist/services/graphql.d.ts +25 -0
  404. package/dist/services/graphql.js +57 -0
  405. package/dist/services/health.d.ts +231 -0
  406. package/dist/services/health.js +463 -0
  407. package/dist/services/locale.d.ts +80 -0
  408. package/dist/services/locale.js +144 -0
  409. package/dist/services/messaging.d.ts +685 -0
  410. package/dist/services/messaging.js +1920 -0
  411. package/dist/services/permissions.d.ts +20 -0
  412. package/dist/services/permissions.js +90 -0
  413. package/dist/services/pricing.d.ts +15 -0
  414. package/dist/services/pricing.js +21 -0
  415. package/dist/services/projects.d.ts +542 -0
  416. package/dist/services/projects.js +1526 -0
  417. package/dist/services/roles.d.ts +19 -0
  418. package/dist/services/roles.js +72 -0
  419. package/dist/services/schema.d.ts +17 -0
  420. package/dist/services/schema.js +48 -0
  421. package/dist/services/storage.d.ts +189 -0
  422. package/dist/services/storage.js +474 -0
  423. package/dist/services/subscription.d.ts +15 -0
  424. package/dist/services/subscription.js +30 -0
  425. package/dist/services/teams.d.ts +167 -0
  426. package/dist/services/teams.js +395 -0
  427. package/dist/services/tenant-subscription.d.ts +12 -0
  428. package/dist/services/tenant-subscription.js +52 -0
  429. package/dist/services/users.d.ts +499 -0
  430. package/dist/services/users.js +1283 -0
  431. package/docs/examples/account/create-anonymous-session.md +11 -0
  432. package/docs/examples/account/create-email-password-session.md +14 -0
  433. package/docs/examples/account/create-email-token.md +15 -0
  434. package/docs/examples/account/create-j-w-t.md +11 -0
  435. package/docs/examples/account/create-magic-u-r-l-token.md +16 -0
  436. package/docs/examples/account/create-mfa-authenticator.md +13 -0
  437. package/docs/examples/account/create-mfa-challenge.md +13 -0
  438. package/docs/examples/account/create-mfa-recovery-codes.md +11 -0
  439. package/docs/examples/account/create-o-auth2session.md +15 -0
  440. package/docs/examples/account/create-o-auth2token.md +15 -0
  441. package/docs/examples/account/create-phone-token.md +14 -0
  442. package/docs/examples/account/create-phone-verification.md +11 -0
  443. package/docs/examples/account/create-push-target.md +15 -0
  444. package/docs/examples/account/create-recovery.md +14 -0
  445. package/docs/examples/account/create-session.md +14 -0
  446. package/docs/examples/account/create-verification.md +13 -0
  447. package/docs/examples/account/create.md +16 -0
  448. package/docs/examples/account/delete-identity.md +13 -0
  449. package/docs/examples/account/delete-mfa-authenticator.md +13 -0
  450. package/docs/examples/account/delete-push-target.md +13 -0
  451. package/docs/examples/account/delete-session.md +13 -0
  452. package/docs/examples/account/delete-sessions.md +11 -0
  453. package/docs/examples/account/delete.md +11 -0
  454. package/docs/examples/account/get-mfa-recovery-codes.md +11 -0
  455. package/docs/examples/account/get-prefs.md +11 -0
  456. package/docs/examples/account/get-session.md +13 -0
  457. package/docs/examples/account/get.md +11 -0
  458. package/docs/examples/account/list-identities.md +13 -0
  459. package/docs/examples/account/list-logs.md +13 -0
  460. package/docs/examples/account/list-mfa-factors.md +11 -0
  461. package/docs/examples/account/list-sessions.md +11 -0
  462. package/docs/examples/account/update-email.md +14 -0
  463. package/docs/examples/account/update-m-f-a.md +13 -0
  464. package/docs/examples/account/update-magic-u-r-l-session.md +14 -0
  465. package/docs/examples/account/update-mfa-authenticator.md +14 -0
  466. package/docs/examples/account/update-mfa-challenge.md +14 -0
  467. package/docs/examples/account/update-mfa-recovery-codes.md +11 -0
  468. package/docs/examples/account/update-name.md +13 -0
  469. package/docs/examples/account/update-password.md +14 -0
  470. package/docs/examples/account/update-phone-session.md +14 -0
  471. package/docs/examples/account/update-phone-verification.md +14 -0
  472. package/docs/examples/account/update-phone.md +14 -0
  473. package/docs/examples/account/update-prefs.md +13 -0
  474. package/docs/examples/account/update-push-target.md +14 -0
  475. package/docs/examples/account/update-recovery.md +15 -0
  476. package/docs/examples/account/update-session.md +13 -0
  477. package/docs/examples/account/update-status.md +11 -0
  478. package/docs/examples/account/update-verification.md +14 -0
  479. package/docs/examples/assistant/chat.md +13 -0
  480. package/docs/examples/avatars/get-browser.md +16 -0
  481. package/docs/examples/avatars/get-credit-card.md +16 -0
  482. package/docs/examples/avatars/get-favicon.md +13 -0
  483. package/docs/examples/avatars/get-flag.md +16 -0
  484. package/docs/examples/avatars/get-image.md +15 -0
  485. package/docs/examples/avatars/get-initials.md +16 -0
  486. package/docs/examples/avatars/get-q-r.md +16 -0
  487. package/docs/examples/console/variables.md +11 -0
  488. package/docs/examples/databases/create-boolean-attribute.md +18 -0
  489. package/docs/examples/databases/create-collection.md +18 -0
  490. package/docs/examples/databases/create-datetime-attribute.md +18 -0
  491. package/docs/examples/databases/create-document.md +17 -0
  492. package/docs/examples/databases/create-email-attribute.md +18 -0
  493. package/docs/examples/databases/create-enum-attribute.md +19 -0
  494. package/docs/examples/databases/create-float-attribute.md +20 -0
  495. package/docs/examples/databases/create-index.md +18 -0
  496. package/docs/examples/databases/create-integer-attribute.md +20 -0
  497. package/docs/examples/databases/create-ip-attribute.md +18 -0
  498. package/docs/examples/databases/create-relationship-attribute.md +20 -0
  499. package/docs/examples/databases/create-string-attribute.md +20 -0
  500. package/docs/examples/databases/create-url-attribute.md +18 -0
  501. package/docs/examples/databases/create.md +15 -0
  502. package/docs/examples/databases/delete-attribute.md +15 -0
  503. package/docs/examples/databases/delete-collection.md +14 -0
  504. package/docs/examples/databases/delete-document.md +15 -0
  505. package/docs/examples/databases/delete-index.md +15 -0
  506. package/docs/examples/databases/delete.md +13 -0
  507. package/docs/examples/databases/get-attribute.md +15 -0
  508. package/docs/examples/databases/get-collection-usage.md +15 -0
  509. package/docs/examples/databases/get-collection.md +14 -0
  510. package/docs/examples/databases/get-database-usage.md +14 -0
  511. package/docs/examples/databases/get-document.md +16 -0
  512. package/docs/examples/databases/get-index.md +15 -0
  513. package/docs/examples/databases/get-usage.md +13 -0
  514. package/docs/examples/databases/get.md +13 -0
  515. package/docs/examples/databases/list-attributes.md +15 -0
  516. package/docs/examples/databases/list-collection-logs.md +15 -0
  517. package/docs/examples/databases/list-collections.md +15 -0
  518. package/docs/examples/databases/list-document-logs.md +16 -0
  519. package/docs/examples/databases/list-documents.md +15 -0
  520. package/docs/examples/databases/list-indexes.md +15 -0
  521. package/docs/examples/databases/list-logs.md +14 -0
  522. package/docs/examples/databases/list.md +14 -0
  523. package/docs/examples/databases/update-boolean-attribute.md +17 -0
  524. package/docs/examples/databases/update-collection.md +18 -0
  525. package/docs/examples/databases/update-datetime-attribute.md +17 -0
  526. package/docs/examples/databases/update-document.md +17 -0
  527. package/docs/examples/databases/update-email-attribute.md +17 -0
  528. package/docs/examples/databases/update-enum-attribute.md +18 -0
  529. package/docs/examples/databases/update-float-attribute.md +19 -0
  530. package/docs/examples/databases/update-integer-attribute.md +19 -0
  531. package/docs/examples/databases/update-ip-attribute.md +17 -0
  532. package/docs/examples/databases/update-relationship-attribute.md +16 -0
  533. package/docs/examples/databases/update-string-attribute.md +17 -0
  534. package/docs/examples/databases/update-url-attribute.md +17 -0
  535. package/docs/examples/databases/update.md +15 -0
  536. package/docs/examples/functions/create-build.md +15 -0
  537. package/docs/examples/functions/create-deployment.md +17 -0
  538. package/docs/examples/functions/create-execution.md +19 -0
  539. package/docs/examples/functions/create-variable.md +15 -0
  540. package/docs/examples/functions/create.md +34 -0
  541. package/docs/examples/functions/delete-deployment.md +14 -0
  542. package/docs/examples/functions/delete-execution.md +14 -0
  543. package/docs/examples/functions/delete-variable.md +14 -0
  544. package/docs/examples/functions/delete.md +13 -0
  545. package/docs/examples/functions/get-deployment-download.md +14 -0
  546. package/docs/examples/functions/get-deployment.md +14 -0
  547. package/docs/examples/functions/get-execution.md +14 -0
  548. package/docs/examples/functions/get-function-usage.md +14 -0
  549. package/docs/examples/functions/get-template.md +13 -0
  550. package/docs/examples/functions/get-usage.md +13 -0
  551. package/docs/examples/functions/get-variable.md +14 -0
  552. package/docs/examples/functions/get.md +13 -0
  553. package/docs/examples/functions/list-deployments.md +15 -0
  554. package/docs/examples/functions/list-executions.md +15 -0
  555. package/docs/examples/functions/list-runtimes.md +11 -0
  556. package/docs/examples/functions/list-specifications.md +11 -0
  557. package/docs/examples/functions/list-templates.md +16 -0
  558. package/docs/examples/functions/list-variables.md +13 -0
  559. package/docs/examples/functions/list.md +14 -0
  560. package/docs/examples/functions/update-deployment-build.md +14 -0
  561. package/docs/examples/functions/update-deployment.md +14 -0
  562. package/docs/examples/functions/update-variable.md +16 -0
  563. package/docs/examples/functions/update.md +30 -0
  564. package/docs/examples/graphql/mutation.md +13 -0
  565. package/docs/examples/graphql/query.md +13 -0
  566. package/docs/examples/health/get-antivirus.md +11 -0
  567. package/docs/examples/health/get-cache.md +11 -0
  568. package/docs/examples/health/get-certificate.md +13 -0
  569. package/docs/examples/health/get-d-b.md +11 -0
  570. package/docs/examples/health/get-failed-jobs.md +14 -0
  571. package/docs/examples/health/get-pub-sub.md +11 -0
  572. package/docs/examples/health/get-queue-builds.md +13 -0
  573. package/docs/examples/health/get-queue-certificates.md +13 -0
  574. package/docs/examples/health/get-queue-databases.md +14 -0
  575. package/docs/examples/health/get-queue-deletes.md +13 -0
  576. package/docs/examples/health/get-queue-functions.md +13 -0
  577. package/docs/examples/health/get-queue-logs.md +13 -0
  578. package/docs/examples/health/get-queue-mails.md +13 -0
  579. package/docs/examples/health/get-queue-messaging.md +13 -0
  580. package/docs/examples/health/get-queue-migrations.md +13 -0
  581. package/docs/examples/health/get-queue-usage-dump.md +13 -0
  582. package/docs/examples/health/get-queue-usage.md +13 -0
  583. package/docs/examples/health/get-queue-webhooks.md +13 -0
  584. package/docs/examples/health/get-queue.md +11 -0
  585. package/docs/examples/health/get-storage-local.md +11 -0
  586. package/docs/examples/health/get-storage.md +11 -0
  587. package/docs/examples/health/get-time.md +11 -0
  588. package/docs/examples/health/get.md +11 -0
  589. package/docs/examples/locale/get.md +11 -0
  590. package/docs/examples/locale/list-codes.md +11 -0
  591. package/docs/examples/locale/list-continents.md +11 -0
  592. package/docs/examples/locale/list-countries-e-u.md +11 -0
  593. package/docs/examples/locale/list-countries-phones.md +11 -0
  594. package/docs/examples/locale/list-countries.md +11 -0
  595. package/docs/examples/locale/list-currencies.md +11 -0
  596. package/docs/examples/locale/list-languages.md +11 -0
  597. package/docs/examples/messaging/create-apns-provider.md +20 -0
  598. package/docs/examples/messaging/create-email.md +24 -0
  599. package/docs/examples/messaging/create-fcm-provider.md +16 -0
  600. package/docs/examples/messaging/create-mailgun-provider.md +22 -0
  601. package/docs/examples/messaging/create-msg91provider.md +18 -0
  602. package/docs/examples/messaging/create-push.md +28 -0
  603. package/docs/examples/messaging/create-sendgrid-provider.md +20 -0
  604. package/docs/examples/messaging/create-sms.md +19 -0
  605. package/docs/examples/messaging/create-smtp-provider.md +26 -0
  606. package/docs/examples/messaging/create-subscriber.md +15 -0
  607. package/docs/examples/messaging/create-telesign-provider.md +18 -0
  608. package/docs/examples/messaging/create-textmagic-provider.md +18 -0
  609. package/docs/examples/messaging/create-topic.md +15 -0
  610. package/docs/examples/messaging/create-twilio-provider.md +18 -0
  611. package/docs/examples/messaging/create-vonage-provider.md +18 -0
  612. package/docs/examples/messaging/delete-provider.md +13 -0
  613. package/docs/examples/messaging/delete-subscriber.md +14 -0
  614. package/docs/examples/messaging/delete-topic.md +13 -0
  615. package/docs/examples/messaging/delete.md +13 -0
  616. package/docs/examples/messaging/get-message.md +13 -0
  617. package/docs/examples/messaging/get-provider.md +13 -0
  618. package/docs/examples/messaging/get-subscriber.md +14 -0
  619. package/docs/examples/messaging/get-topic.md +13 -0
  620. package/docs/examples/messaging/list-message-logs.md +14 -0
  621. package/docs/examples/messaging/list-messages.md +14 -0
  622. package/docs/examples/messaging/list-provider-logs.md +14 -0
  623. package/docs/examples/messaging/list-providers.md +14 -0
  624. package/docs/examples/messaging/list-subscriber-logs.md +14 -0
  625. package/docs/examples/messaging/list-subscribers.md +15 -0
  626. package/docs/examples/messaging/list-targets.md +14 -0
  627. package/docs/examples/messaging/list-topic-logs.md +14 -0
  628. package/docs/examples/messaging/list-topics.md +14 -0
  629. package/docs/examples/messaging/update-apns-provider.md +20 -0
  630. package/docs/examples/messaging/update-email.md +24 -0
  631. package/docs/examples/messaging/update-fcm-provider.md +16 -0
  632. package/docs/examples/messaging/update-mailgun-provider.md +22 -0
  633. package/docs/examples/messaging/update-msg91provider.md +18 -0
  634. package/docs/examples/messaging/update-push.md +28 -0
  635. package/docs/examples/messaging/update-sendgrid-provider.md +20 -0
  636. package/docs/examples/messaging/update-sms.md +19 -0
  637. package/docs/examples/messaging/update-smtp-provider.md +26 -0
  638. package/docs/examples/messaging/update-telesign-provider.md +18 -0
  639. package/docs/examples/messaging/update-textmagic-provider.md +18 -0
  640. package/docs/examples/messaging/update-topic.md +15 -0
  641. package/docs/examples/messaging/update-twilio-provider.md +18 -0
  642. package/docs/examples/messaging/update-vonage-provider.md +18 -0
  643. package/docs/examples/migrations/create-appwrite-migration.md +16 -0
  644. package/docs/examples/migrations/create-firebase-migration.md +14 -0
  645. package/docs/examples/migrations/create-firebase-o-auth-migration.md +14 -0
  646. package/docs/examples/migrations/create-n-host-migration.md +20 -0
  647. package/docs/examples/migrations/create-supabase-migration.md +19 -0
  648. package/docs/examples/migrations/delete-firebase-auth.md +11 -0
  649. package/docs/examples/migrations/delete.md +13 -0
  650. package/docs/examples/migrations/get-appwrite-report.md +16 -0
  651. package/docs/examples/migrations/get-firebase-report-o-auth.md +14 -0
  652. package/docs/examples/migrations/get-firebase-report.md +14 -0
  653. package/docs/examples/migrations/get-n-host-report.md +20 -0
  654. package/docs/examples/migrations/get-supabase-report.md +19 -0
  655. package/docs/examples/migrations/get.md +13 -0
  656. package/docs/examples/migrations/list-firebase-projects.md +11 -0
  657. package/docs/examples/migrations/list.md +14 -0
  658. package/docs/examples/migrations/retry.md +13 -0
  659. package/docs/examples/project/create-variable.md +14 -0
  660. package/docs/examples/project/delete-variable.md +13 -0
  661. package/docs/examples/project/get-usage.md +15 -0
  662. package/docs/examples/project/get-variable.md +13 -0
  663. package/docs/examples/project/list-variables.md +11 -0
  664. package/docs/examples/project/update-variable.md +15 -0
  665. package/docs/examples/projects/create-j-w-t.md +15 -0
  666. package/docs/examples/projects/create-key.md +16 -0
  667. package/docs/examples/projects/create-platform.md +18 -0
  668. package/docs/examples/projects/create-smtp-test.md +22 -0
  669. package/docs/examples/projects/create-webhook.md +20 -0
  670. package/docs/examples/projects/create.md +25 -0
  671. package/docs/examples/projects/delete-email-template.md +15 -0
  672. package/docs/examples/projects/delete-key.md +14 -0
  673. package/docs/examples/projects/delete-platform.md +14 -0
  674. package/docs/examples/projects/delete-sms-template.md +15 -0
  675. package/docs/examples/projects/delete-webhook.md +14 -0
  676. package/docs/examples/projects/delete.md +13 -0
  677. package/docs/examples/projects/get-email-template.md +15 -0
  678. package/docs/examples/projects/get-key.md +14 -0
  679. package/docs/examples/projects/get-platform.md +14 -0
  680. package/docs/examples/projects/get-sms-template.md +15 -0
  681. package/docs/examples/projects/get-webhook.md +14 -0
  682. package/docs/examples/projects/get.md +13 -0
  683. package/docs/examples/projects/list-keys.md +13 -0
  684. package/docs/examples/projects/list-platforms.md +13 -0
  685. package/docs/examples/projects/list-webhooks.md +13 -0
  686. package/docs/examples/projects/list.md +14 -0
  687. package/docs/examples/projects/update-api-status-all.md +14 -0
  688. package/docs/examples/projects/update-api-status.md +15 -0
  689. package/docs/examples/projects/update-auth-duration.md +14 -0
  690. package/docs/examples/projects/update-auth-limit.md +14 -0
  691. package/docs/examples/projects/update-auth-password-dictionary.md +14 -0
  692. package/docs/examples/projects/update-auth-password-history.md +14 -0
  693. package/docs/examples/projects/update-auth-sessions-limit.md +14 -0
  694. package/docs/examples/projects/update-auth-status.md +15 -0
  695. package/docs/examples/projects/update-email-template.md +20 -0
  696. package/docs/examples/projects/update-key.md +17 -0
  697. package/docs/examples/projects/update-mock-numbers.md +14 -0
  698. package/docs/examples/projects/update-o-auth2.md +17 -0
  699. package/docs/examples/projects/update-personal-data-check.md +14 -0
  700. package/docs/examples/projects/update-platform.md +18 -0
  701. package/docs/examples/projects/update-service-status-all.md +14 -0
  702. package/docs/examples/projects/update-service-status.md +15 -0
  703. package/docs/examples/projects/update-session-alerts.md +14 -0
  704. package/docs/examples/projects/update-sms-template.md +16 -0
  705. package/docs/examples/projects/update-smtp.md +22 -0
  706. package/docs/examples/projects/update-team.md +14 -0
  707. package/docs/examples/projects/update-webhook-signature.md +14 -0
  708. package/docs/examples/projects/update-webhook.md +21 -0
  709. package/docs/examples/projects/update.md +23 -0
  710. package/docs/examples/proxy/create-rule.md +15 -0
  711. package/docs/examples/proxy/delete-rule.md +13 -0
  712. package/docs/examples/proxy/get-rule.md +13 -0
  713. package/docs/examples/proxy/list-rules.md +14 -0
  714. package/docs/examples/proxy/update-rule-verification.md +13 -0
  715. package/docs/examples/storage/create-bucket.md +22 -0
  716. package/docs/examples/storage/create-file.md +16 -0
  717. package/docs/examples/storage/delete-bucket.md +13 -0
  718. package/docs/examples/storage/delete-file.md +14 -0
  719. package/docs/examples/storage/get-bucket-usage.md +14 -0
  720. package/docs/examples/storage/get-bucket.md +13 -0
  721. package/docs/examples/storage/get-file-download.md +14 -0
  722. package/docs/examples/storage/get-file-preview.md +25 -0
  723. package/docs/examples/storage/get-file-view.md +14 -0
  724. package/docs/examples/storage/get-file.md +14 -0
  725. package/docs/examples/storage/get-usage.md +13 -0
  726. package/docs/examples/storage/list-buckets.md +14 -0
  727. package/docs/examples/storage/list-files.md +15 -0
  728. package/docs/examples/storage/update-bucket.md +22 -0
  729. package/docs/examples/storage/update-file.md +16 -0
  730. package/docs/examples/teams/create-membership.md +19 -0
  731. package/docs/examples/teams/create.md +15 -0
  732. package/docs/examples/teams/delete-membership.md +14 -0
  733. package/docs/examples/teams/delete.md +13 -0
  734. package/docs/examples/teams/get-membership.md +14 -0
  735. package/docs/examples/teams/get-prefs.md +13 -0
  736. package/docs/examples/teams/get.md +13 -0
  737. package/docs/examples/teams/list-logs.md +14 -0
  738. package/docs/examples/teams/list-memberships.md +15 -0
  739. package/docs/examples/teams/list.md +14 -0
  740. package/docs/examples/teams/update-membership-status.md +16 -0
  741. package/docs/examples/teams/update-membership.md +15 -0
  742. package/docs/examples/teams/update-name.md +14 -0
  743. package/docs/examples/teams/update-prefs.md +14 -0
  744. package/docs/examples/users/create-argon2user.md +16 -0
  745. package/docs/examples/users/create-bcrypt-user.md +16 -0
  746. package/docs/examples/users/create-j-w-t.md +15 -0
  747. package/docs/examples/users/create-m-d5user.md +16 -0
  748. package/docs/examples/users/create-mfa-recovery-codes.md +13 -0
  749. package/docs/examples/users/create-p-h-pass-user.md +16 -0
  750. package/docs/examples/users/create-s-h-a-user.md +17 -0
  751. package/docs/examples/users/create-scrypt-modified-user.md +19 -0
  752. package/docs/examples/users/create-scrypt-user.md +21 -0
  753. package/docs/examples/users/create-session.md +13 -0
  754. package/docs/examples/users/create-target.md +18 -0
  755. package/docs/examples/users/create-token.md +15 -0
  756. package/docs/examples/users/create.md +17 -0
  757. package/docs/examples/users/delete-identity.md +13 -0
  758. package/docs/examples/users/delete-mfa-authenticator.md +14 -0
  759. package/docs/examples/users/delete-session.md +14 -0
  760. package/docs/examples/users/delete-sessions.md +13 -0
  761. package/docs/examples/users/delete-target.md +14 -0
  762. package/docs/examples/users/delete.md +13 -0
  763. package/docs/examples/users/get-mfa-recovery-codes.md +13 -0
  764. package/docs/examples/users/get-prefs.md +13 -0
  765. package/docs/examples/users/get-target.md +14 -0
  766. package/docs/examples/users/get-usage.md +13 -0
  767. package/docs/examples/users/get.md +13 -0
  768. package/docs/examples/users/list-identities.md +14 -0
  769. package/docs/examples/users/list-logs.md +14 -0
  770. package/docs/examples/users/list-memberships.md +13 -0
  771. package/docs/examples/users/list-mfa-factors.md +13 -0
  772. package/docs/examples/users/list-sessions.md +13 -0
  773. package/docs/examples/users/list-targets.md +14 -0
  774. package/docs/examples/users/list.md +14 -0
  775. package/docs/examples/users/update-email-verification.md +14 -0
  776. package/docs/examples/users/update-email.md +14 -0
  777. package/docs/examples/users/update-labels.md +14 -0
  778. package/docs/examples/users/update-mfa-recovery-codes.md +13 -0
  779. package/docs/examples/users/update-mfa.md +14 -0
  780. package/docs/examples/users/update-name.md +14 -0
  781. package/docs/examples/users/update-password.md +14 -0
  782. package/docs/examples/users/update-phone-verification.md +14 -0
  783. package/docs/examples/users/update-phone.md +14 -0
  784. package/docs/examples/users/update-prefs.md +14 -0
  785. package/docs/examples/users/update-status.md +14 -0
  786. package/docs/examples/users/update-target.md +17 -0
  787. package/docs/examples/vcs/create-repository-detection.md +15 -0
  788. package/docs/examples/vcs/create-repository.md +15 -0
  789. package/docs/examples/vcs/delete-installation.md +13 -0
  790. package/docs/examples/vcs/get-installation.md +13 -0
  791. package/docs/examples/vcs/get-repository-contents.md +15 -0
  792. package/docs/examples/vcs/get-repository.md +14 -0
  793. package/docs/examples/vcs/list-installations.md +14 -0
  794. package/docs/examples/vcs/list-repositories.md +14 -0
  795. package/docs/examples/vcs/list-repository-branches.md +14 -0
  796. package/docs/examples/vcs/update-external-deployments.md +15 -0
  797. package/package.json +38 -141
  798. package/publish.sh +4 -0
  799. package/src/client.ts +397 -0
  800. package/src/enums/api-service.ts +13 -0
  801. package/src/enums/api.ts +5 -0
  802. package/src/enums/auth-method.ts +9 -0
  803. package/src/enums/browser.ts +16 -0
  804. package/src/enums/compression.ts +5 -0
  805. package/src/enums/credit-card.ts +18 -0
  806. package/src/enums/database-usage-range.ts +5 -0
  807. package/src/enums/email-template-locale.ts +133 -0
  808. package/src/enums/email-template-type.ts +9 -0
  809. package/src/enums/entities/EntityLimitType.ts +4 -0
  810. package/src/enums/entities/PropertyAttributeName.ts +27 -0
  811. package/src/enums/entities/PropertyCondition.ts +8 -0
  812. package/src/enums/entities/PropertyType.ts +16 -0
  813. package/src/enums/entities/PropertyValueType.ts +6 -0
  814. package/src/enums/entities/RowAccess.ts +2 -0
  815. package/src/enums/entities/ViewFilterCondition.ts +12 -0
  816. package/src/enums/execution-method.ts +8 -0
  817. package/src/enums/flag.ts +197 -0
  818. package/src/enums/function-usage-range.ts +5 -0
  819. package/src/enums/image-format.ts +7 -0
  820. package/src/enums/image-gravity.ts +11 -0
  821. package/src/enums/index-type.ts +5 -0
  822. package/src/enums/messaging-provider-type.ts +5 -0
  823. package/src/enums/name.ts +14 -0
  824. package/src/enums/o-auth-provider copy.ts +41 -0
  825. package/src/enums/password-hash.ts +13 -0
  826. package/src/enums/platform-type.ts +17 -0
  827. package/src/enums/project-usage-range.ts +4 -0
  828. package/src/enums/region.ts +4 -0
  829. package/src/enums/relation-mutate.ts +5 -0
  830. package/src/enums/relationship-type.ts +6 -0
  831. package/src/enums/resource-type.ts +4 -0
  832. package/src/enums/runtime.ts +48 -0
  833. package/src/enums/s-m-t-p-secure.ts +3 -0
  834. package/src/enums/shared/ApplicationLayout.ts +4 -0
  835. package/src/enums/shared/Colors.ts +24 -0
  836. package/src/enums/shared/InputType.ts +6 -0
  837. package/src/enums/shared/Periodicity.ts +7 -0
  838. package/src/enums/shared/SvgIcon.ts +37 -0
  839. package/src/enums/shared/Theme.ts +4 -0
  840. package/src/enums/sms-template-locale.ts +133 -0
  841. package/src/enums/sms-template-type.ts +6 -0
  842. package/src/enums/smtp-encryption.ts +5 -0
  843. package/src/enums/storage-usage-range.ts +5 -0
  844. package/src/enums/subscriptions/PricingModel.ts +14 -0
  845. package/src/enums/subscriptions/SubscriptionBillingPeriod.ts +15 -0
  846. package/src/enums/subscriptions/SubscriptionFeatureLimitType.ts +16 -0
  847. package/src/enums/subscriptions/SubscriptionPriceType.ts +10 -0
  848. package/src/enums/tenants/LinkedAccountStatus.ts +5 -0
  849. package/src/enums/tenants/TenantUserJoined.ts +6 -0
  850. package/src/enums/tenants/TenantUserStatus.ts +6 -0
  851. package/src/enums/tenants/TenantUserType.ts +5 -0
  852. package/src/enums/user-usage-range.ts +5 -0
  853. package/src/getAppcondaClient.ts +75 -0
  854. package/src/getSDKForService.ts +71 -0
  855. package/src/id.ts +47 -0
  856. package/src/index.ts +3 -0
  857. package/src/inputFile.ts +23 -0
  858. package/src/lib/errors.ts +141 -0
  859. package/src/lib/index.ts +0 -0
  860. package/src/lib/types.ts +7 -0
  861. package/src/models.ts +3339 -0
  862. package/src/modules/account/enums/authentication-factor.ts +6 -0
  863. package/src/modules/account/enums/authenticator-type.ts +3 -0
  864. package/src/modules/account/enums/o-auth-provider.ts +41 -0
  865. package/src/modules/account/index.ts +3 -0
  866. package/src/modules/account/schema.ts +8 -0
  867. package/src/modules/account/service.ts +1648 -0
  868. package/src/modules/account/types.ts +426 -0
  869. package/src/modules/accounv1/index.ts +4 -0
  870. package/src/modules/accounv1/schema.ts +50 -0
  871. package/src/modules/accounv1/service.ts +43 -0
  872. package/src/modules/accounv1/types.ts +16 -0
  873. package/src/modules/acl/service.ts +55 -0
  874. package/src/modules/agent/action.ts +66 -0
  875. package/src/modules/agent/index.ts +4 -0
  876. package/src/modules/agent/schema.ts +25 -0
  877. package/src/modules/agent/service.ts +34 -0
  878. package/src/modules/agent/types.ts +15 -0
  879. package/src/modules/ai/index.ts +1 -0
  880. package/src/modules/ai/node/actions.ts +14 -0
  881. package/src/modules/ai/node/index.ts +2 -0
  882. package/src/modules/ai/node/service.ts +18 -0
  883. package/src/modules/bpm/index.ts +3 -0
  884. package/src/modules/bpm/schema.ts +23 -0
  885. package/src/modules/bpm/service.ts +28 -0
  886. package/src/modules/bpm/types.ts +11 -0
  887. package/src/modules/builder/action.ts +234 -0
  888. package/src/modules/builder/index.ts +4 -0
  889. package/src/modules/builder/schema.ts +95 -0
  890. package/src/modules/builder/service.ts +74 -0
  891. package/src/modules/builder/types.ts +68 -0
  892. package/src/modules/datasource/action.ts +189 -0
  893. package/src/modules/datasource/index.ts +4 -0
  894. package/src/modules/datasource/schema.ts +69 -0
  895. package/src/modules/datasource/service.ts +58 -0
  896. package/src/modules/datasource/types.ts +31 -0
  897. package/src/modules/emploid/action.ts +1063 -0
  898. package/src/modules/emploid/index.ts +4 -0
  899. package/src/modules/emploid/schema.ts +405 -0
  900. package/src/modules/emploid/service.ts +295 -0
  901. package/src/modules/emploid/types.ts +132 -0
  902. package/src/modules/google/action.ts +54 -0
  903. package/src/modules/google/index.ts +4 -0
  904. package/src/modules/google/schema.ts +19 -0
  905. package/src/modules/google/service.ts +23 -0
  906. package/src/modules/google/types.ts +15 -0
  907. package/src/modules/hooks/index.ts +5 -0
  908. package/src/modules/hooks/lib/Hooks.ts +103 -0
  909. package/src/modules/hooks/lib/handler.ts +27 -0
  910. package/src/modules/hooks/lib/jobs/index.ts +2 -0
  911. package/src/modules/hooks/lib/jobs/job1.ts +20 -0
  912. package/src/modules/hooks/lib/jobs/log-job.ts +10 -0
  913. package/src/modules/hooks/lib/wait.ts +17 -0
  914. package/src/modules/index.ts +17 -0
  915. package/src/modules/mail/action.ts +22 -0
  916. package/src/modules/mail/index.ts +4 -0
  917. package/src/modules/mail/schema.ts +9 -0
  918. package/src/modules/mail/service.ts +15 -0
  919. package/src/modules/mail/types.ts +11 -0
  920. package/src/modules/notion/action.ts +53 -0
  921. package/src/modules/notion/index.ts +4 -0
  922. package/src/modules/notion/schema.ts +21 -0
  923. package/src/modules/notion/service.ts +26 -0
  924. package/src/modules/notion/types.ts +14 -0
  925. package/src/modules/organization/action.ts +71 -0
  926. package/src/modules/organization/index.ts +4 -0
  927. package/src/modules/organization/schema.ts +23 -0
  928. package/src/modules/organization/service.ts +32 -0
  929. package/src/modules/organization/types.ts +15 -0
  930. package/src/modules/scheduled-job/action.ts +212 -0
  931. package/src/modules/scheduled-job/index.ts +8 -0
  932. package/src/modules/scheduled-job/lib/Schedules.ts +105 -0
  933. package/src/modules/scheduled-job/lib/handler.ts +27 -0
  934. package/src/modules/scheduled-job/lib/jobs/index.ts +2 -0
  935. package/src/modules/scheduled-job/lib/jobs/job1.ts +12 -0
  936. package/src/modules/scheduled-job/lib/wait.ts +17 -0
  937. package/src/modules/scheduled-job/schema.ts +62 -0
  938. package/src/modules/scheduled-job/service.ts +63 -0
  939. package/src/modules/scheduled-job/types.ts +79 -0
  940. package/src/modules/task/action.ts +819 -0
  941. package/src/modules/task/index.ts +4 -0
  942. package/src/modules/task/schema.ts +455 -0
  943. package/src/modules/task/service.ts +268 -0
  944. package/src/modules/task/types.ts +325 -0
  945. package/src/modules/tenant/actions.ts +173 -0
  946. package/src/modules/tenant/index.ts +3 -0
  947. package/src/modules/tenant/schema.ts +32 -0
  948. package/src/modules/tenant/service.ts +43 -0
  949. package/src/modules/tenant/tenant.ts +193 -0
  950. package/src/modules/tenant/types.ts +22 -0
  951. package/src/modules/waitlist/action.ts +93 -0
  952. package/src/modules/waitlist/index.ts +4 -0
  953. package/src/modules/waitlist/schema.ts +24 -0
  954. package/src/modules/waitlist/service.ts +41 -0
  955. package/src/modules/waitlist/types.ts +18 -0
  956. package/src/permission.ts +57 -0
  957. package/src/query.ts +261 -0
  958. package/src/role.ts +100 -0
  959. package/src/service-client.ts +40 -0
  960. package/src/service.ts +30 -0
  961. package/src/services/applets.ts +75 -0
  962. package/src/services/avatars.ts +314 -0
  963. package/src/services/chat-flow.ts +32 -0
  964. package/src/services/community.ts +102 -0
  965. package/src/services/configuration.ts +15 -0
  966. package/src/services/databases.ts +2037 -0
  967. package/src/services/functions.ts +986 -0
  968. package/src/services/graphql.ts +75 -0
  969. package/src/services/health.ts +629 -0
  970. package/src/services/locale.ts +205 -0
  971. package/src/services/messaging.ts +2247 -0
  972. package/src/services/permissions.ts +131 -0
  973. package/src/services/pricing.ts +30 -0
  974. package/src/services/projects.ts +1901 -0
  975. package/src/services/roles.ts +101 -0
  976. package/src/services/schema.ts +65 -0
  977. package/src/services/storage.ts +576 -0
  978. package/src/services/subscription.ts +39 -0
  979. package/src/services/teams.ts +490 -0
  980. package/src/services/tenant-subscription.ts +93 -0
  981. package/src/services/users.ts +1584 -0
  982. package/tsconfig.json +32 -0
  983. package/index.d.ts +0 -3367
  984. package/index.js +0 -407
@@ -0,0 +1,984 @@
1
+ 'use server';
2
+ import { AppcondaException } from '../../client';
3
+ import { getSDKForService } from '../../getSDKForService';
4
+ export async function CreateEmploid(parsedInput) {
5
+ try {
6
+ const { emploid } = await getSDKForService();
7
+ //@ts-ignore
8
+ const app = await emploid.CreateEmploid(parsedInput);
9
+ return app;
10
+ }
11
+ catch (error) {
12
+ if (error instanceof AppcondaException) {
13
+ throw new Error(error.message);
14
+ }
15
+ throw error;
16
+ }
17
+ }
18
+ export const UpdateEmploid = async (parsedInput) => {
19
+ try {
20
+ const { emploid } = await getSDKForService();
21
+ //@ts-ignore
22
+ const app = await emploid.UpdateEmploid(parsedInput);
23
+ return app;
24
+ }
25
+ catch (error) {
26
+ if (error instanceof AppcondaException) {
27
+ throw new Error(error.message);
28
+ }
29
+ throw error;
30
+ }
31
+ };
32
+ export const DeleteEmploid = async (parsedInput) => {
33
+ try {
34
+ const { emploid } = await getSDKForService();
35
+ //@ts-ignore
36
+ const app = await emploid.DeleteEmploid(parsedInput);
37
+ return app;
38
+ }
39
+ catch (error) {
40
+ if (error instanceof AppcondaException) {
41
+ throw new Error(error.message);
42
+ }
43
+ throw error;
44
+ }
45
+ };
46
+ export const CreateInstruction = async (parsedInput) => {
47
+ try {
48
+ const { emploid } = await getSDKForService();
49
+ //@ts-ignore
50
+ const app = await emploid.CreateInstruction(parsedInput);
51
+ return app;
52
+ }
53
+ catch (error) {
54
+ if (error instanceof AppcondaException) {
55
+ throw new Error(error.message);
56
+ }
57
+ throw error;
58
+ }
59
+ };
60
+ export const UpdateInstruction = async (parsedInput) => {
61
+ try {
62
+ const { emploid } = await getSDKForService();
63
+ //@ts-ignore
64
+ const app = await emploid.UpdateInstruction(parsedInput);
65
+ return app;
66
+ }
67
+ catch (error) {
68
+ if (error instanceof AppcondaException) {
69
+ throw new Error(error.message);
70
+ }
71
+ throw error;
72
+ }
73
+ };
74
+ export const ListInstructions = async (parsedInput) => {
75
+ try {
76
+ const { emploid } = await getSDKForService();
77
+ //@ts-ignore
78
+ const app = await emploid.ListInstructions(parsedInput);
79
+ return app;
80
+ }
81
+ catch (error) {
82
+ if (error instanceof AppcondaException) {
83
+ throw new Error(error.message);
84
+ }
85
+ throw error;
86
+ }
87
+ };
88
+ export const DeleteInstruction = async (parsedInput) => {
89
+ try {
90
+ const { emploid } = await getSDKForService();
91
+ //@ts-ignore
92
+ const app = await emploid.DeleteInstruction(parsedInput);
93
+ return app;
94
+ }
95
+ catch (error) {
96
+ if (error instanceof AppcondaException) {
97
+ throw new Error(error.message);
98
+ }
99
+ throw error;
100
+ }
101
+ };
102
+ export const ListEmploids = async (parsedInput) => {
103
+ try {
104
+ const { emploid } = await getSDKForService();
105
+ //@ts-ignore
106
+ const app = await emploid.ListEmploids(parsedInput);
107
+ return app;
108
+ }
109
+ catch (error) {
110
+ if (error instanceof AppcondaException) {
111
+ throw new Error(error.message);
112
+ }
113
+ throw error;
114
+ }
115
+ };
116
+ export const ListEmploidsPaginated = async (parsedInput) => {
117
+ try {
118
+ const { emploid } = await getSDKForService();
119
+ //@ts-ignore
120
+ const app = await emploid.ListEmploidsPaginated(parsedInput);
121
+ return app;
122
+ }
123
+ catch (error) {
124
+ if (error instanceof AppcondaException) {
125
+ throw new Error(error.message);
126
+ }
127
+ throw error;
128
+ }
129
+ };
130
+ export const ListScopes = async (parsedInput) => {
131
+ try {
132
+ const { emploid } = await getSDKForService();
133
+ //@ts-ignore
134
+ const app = await emploid.ListScopes(parsedInput);
135
+ return app;
136
+ }
137
+ catch (error) {
138
+ if (error instanceof AppcondaException) {
139
+ throw new Error(error.message);
140
+ }
141
+ throw error;
142
+ }
143
+ };
144
+ export const CreateOccupation = async (parsedInput) => {
145
+ try {
146
+ const { emploid } = await getSDKForService();
147
+ //@ts-ignore
148
+ const app = await emploid.CreateOccupation(parsedInput);
149
+ return app;
150
+ }
151
+ catch (error) {
152
+ if (error instanceof AppcondaException) {
153
+ throw new Error(error.message);
154
+ }
155
+ throw error;
156
+ }
157
+ };
158
+ export const UpdateOccupation = async (parsedInput) => {
159
+ try {
160
+ const { emploid } = await getSDKForService();
161
+ //@ts-ignore
162
+ const app = await emploid.UpdateOccupation(parsedInput);
163
+ return app;
164
+ }
165
+ catch (error) {
166
+ if (error instanceof AppcondaException) {
167
+ throw new Error(error.message);
168
+ }
169
+ throw error;
170
+ }
171
+ };
172
+ export const DeleteOccupation = async (parsedInput) => {
173
+ try {
174
+ const { emploid } = await getSDKForService();
175
+ //@ts-ignore
176
+ const app = await emploid.DeleteOccupation(parsedInput);
177
+ return app;
178
+ }
179
+ catch (error) {
180
+ if (error instanceof AppcondaException) {
181
+ throw new Error(error.message);
182
+ }
183
+ throw error;
184
+ }
185
+ };
186
+ export const CreateScope = async (parsedInput) => {
187
+ try {
188
+ const { emploid } = await getSDKForService();
189
+ //@ts-ignore
190
+ const app = await emploid.CreateScope(parsedInput);
191
+ return app;
192
+ }
193
+ catch (error) {
194
+ if (error instanceof AppcondaException) {
195
+ throw new Error(error.message);
196
+ }
197
+ throw error;
198
+ }
199
+ };
200
+ export const UpdateScope = async (parsedInput) => {
201
+ try {
202
+ const { emploid } = await getSDKForService();
203
+ //@ts-ignore
204
+ const app = await emploid.UpdateScope(parsedInput);
205
+ return app;
206
+ }
207
+ catch (error) {
208
+ if (error instanceof AppcondaException) {
209
+ throw new Error(error.message);
210
+ }
211
+ throw error;
212
+ }
213
+ };
214
+ export const DeleteScope = async (parsedInput) => {
215
+ try {
216
+ const { emploid } = await getSDKForService();
217
+ //@ts-ignore
218
+ const app = await emploid.DeleteScope(parsedInput);
219
+ return app;
220
+ }
221
+ catch (error) {
222
+ if (error instanceof AppcondaException) {
223
+ throw new Error(error.message);
224
+ }
225
+ throw error;
226
+ }
227
+ };
228
+ export const ListOccupations = async (parsedInput) => {
229
+ try {
230
+ const { emploid } = await getSDKForService();
231
+ //@ts-ignore
232
+ const app = await emploid.ListOccupations(parsedInput);
233
+ return app;
234
+ }
235
+ catch (error) {
236
+ if (error instanceof AppcondaException) {
237
+ throw new Error(error.message);
238
+ }
239
+ throw error;
240
+ }
241
+ };
242
+ export const CreateJobDefinition = async (parsedInput) => {
243
+ try {
244
+ const { emploid } = await getSDKForService();
245
+ //@ts-ignore
246
+ const app = await emploid.CreateJobDefinition(parsedInput);
247
+ return app;
248
+ }
249
+ catch (error) {
250
+ if (error instanceof AppcondaException) {
251
+ throw new Error(error.message);
252
+ }
253
+ throw error;
254
+ }
255
+ };
256
+ export const UpdateJobDefinition = async (parsedInput) => {
257
+ try {
258
+ const { emploid } = await getSDKForService();
259
+ //@ts-ignore
260
+ const app = await emploid.UpdateJobDefinition(parsedInput);
261
+ return app;
262
+ }
263
+ catch (error) {
264
+ if (error instanceof AppcondaException) {
265
+ throw new Error(error.message);
266
+ }
267
+ throw error;
268
+ }
269
+ };
270
+ export const DeleteJobDefinition = async (parsedInput) => {
271
+ try {
272
+ const { emploid } = await getSDKForService();
273
+ //@ts-ignore
274
+ const app = await emploid.DeleteJobDefinition(parsedInput);
275
+ return app;
276
+ }
277
+ catch (error) {
278
+ if (error instanceof AppcondaException) {
279
+ throw new Error(error.message);
280
+ }
281
+ throw error;
282
+ }
283
+ };
284
+ export const ListJobDefinitions = async (parsedInput) => {
285
+ try {
286
+ const { emploid } = await getSDKForService();
287
+ //@ts-ignore
288
+ const app = await emploid.ListJobDefinitions(parsedInput);
289
+ return app;
290
+ }
291
+ catch (error) {
292
+ if (error instanceof AppcondaException) {
293
+ throw new Error(error.message);
294
+ }
295
+ throw error;
296
+ }
297
+ };
298
+ export const CreateCompetency = async (parsedInput) => {
299
+ try {
300
+ const { emploid } = await getSDKForService();
301
+ //@ts-ignore
302
+ const app = await emploid.CreateCompetency(parsedInput);
303
+ return app;
304
+ }
305
+ catch (error) {
306
+ if (error instanceof AppcondaException) {
307
+ throw new Error(error.message);
308
+ }
309
+ throw error;
310
+ }
311
+ };
312
+ export const UpdateCompetency = async (parsedInput) => {
313
+ try {
314
+ const { emploid } = await getSDKForService();
315
+ //@ts-ignore
316
+ const app = await emploid.UpdateCompetency(parsedInput);
317
+ return app;
318
+ }
319
+ catch (error) {
320
+ if (error instanceof AppcondaException) {
321
+ throw new Error(error.message);
322
+ }
323
+ throw error;
324
+ }
325
+ };
326
+ export const DeleteCompetency = async (parsedInput) => {
327
+ try {
328
+ const { emploid } = await getSDKForService();
329
+ //@ts-ignore
330
+ const app = await emploid.DeleteCompetency(parsedInput);
331
+ return app;
332
+ }
333
+ catch (error) {
334
+ if (error instanceof AppcondaException) {
335
+ throw new Error(error.message);
336
+ }
337
+ throw error;
338
+ }
339
+ };
340
+ export const ListCompetencies = async (parsedInput) => {
341
+ try {
342
+ const { emploid } = await getSDKForService();
343
+ //@ts-ignore
344
+ const app = await emploid.ListCompetencies(parsedInput);
345
+ return app;
346
+ }
347
+ catch (error) {
348
+ if (error instanceof AppcondaException) {
349
+ throw new Error(error.message);
350
+ }
351
+ throw error;
352
+ }
353
+ };
354
+ export const CreateAgentFlow = async (parsedInput) => {
355
+ try {
356
+ const { emploid } = await getSDKForService();
357
+ //@ts-ignore
358
+ const app = await emploid.CreateAgentFlow(parsedInput);
359
+ return app;
360
+ }
361
+ catch (error) {
362
+ if (error instanceof AppcondaException) {
363
+ throw new Error(error.message);
364
+ }
365
+ throw error;
366
+ }
367
+ };
368
+ export const ListAgentFlows = async (parsedInput) => {
369
+ try {
370
+ const { emploid } = await getSDKForService();
371
+ //@ts-ignore
372
+ const app = await emploid.ListAgentFlows(parsedInput);
373
+ return app;
374
+ }
375
+ catch (error) {
376
+ if (error instanceof AppcondaException) {
377
+ throw new Error(error.message);
378
+ }
379
+ throw error;
380
+ }
381
+ };
382
+ export const CreateExtension = async (parsedInput) => {
383
+ try {
384
+ const { emploid } = await getSDKForService();
385
+ //@ts-ignore
386
+ const app = await emploid.CreateExtension(parsedInput);
387
+ return app;
388
+ }
389
+ catch (error) {
390
+ if (error instanceof AppcondaException) {
391
+ throw new Error(error.message);
392
+ }
393
+ throw error;
394
+ }
395
+ };
396
+ export const ListExtensions = async (parsedInput) => {
397
+ try {
398
+ const { emploid } = await getSDKForService();
399
+ //@ts-ignore
400
+ const app = await emploid.ListExtensions(parsedInput);
401
+ return app;
402
+ }
403
+ catch (error) {
404
+ if (error instanceof AppcondaException) {
405
+ throw new Error(error.message);
406
+ }
407
+ throw error;
408
+ }
409
+ };
410
+ export const CreateAssistant = async (parsedInput) => {
411
+ try {
412
+ const { emploid } = await getSDKForService();
413
+ //@ts-ignore
414
+ const app = await emploid.CreateAssistant(parsedInput);
415
+ return app;
416
+ }
417
+ catch (error) {
418
+ if (error instanceof AppcondaException) {
419
+ throw new Error(error.message);
420
+ }
421
+ throw error;
422
+ }
423
+ };
424
+ export const UpdateAssistant = async (parsedInput) => {
425
+ try {
426
+ const { emploid } = await getSDKForService();
427
+ //@ts-ignore
428
+ const app = await emploid.UpdateAssistant(parsedInput);
429
+ return app;
430
+ }
431
+ catch (error) {
432
+ if (error instanceof AppcondaException) {
433
+ throw new Error(error.message);
434
+ }
435
+ throw error;
436
+ }
437
+ };
438
+ export const DeleteAssistant = async (parsedInput) => {
439
+ try {
440
+ const { emploid } = await getSDKForService();
441
+ //@ts-ignore
442
+ const app = await emploid.DeleteAssistant(parsedInput);
443
+ return app;
444
+ }
445
+ catch (error) {
446
+ if (error instanceof AppcondaException) {
447
+ throw new Error(error.message);
448
+ }
449
+ throw error;
450
+ }
451
+ };
452
+ export const ListAssistants = async (parsedInput) => {
453
+ try {
454
+ const { emploid } = await getSDKForService();
455
+ //@ts-ignore
456
+ const app = await emploid.ListAssistants(parsedInput);
457
+ return app;
458
+ }
459
+ catch (error) {
460
+ if (error instanceof AppcondaException) {
461
+ throw new Error(error.message);
462
+ }
463
+ throw error;
464
+ }
465
+ };
466
+ export const CreateWorker = async (parsedInput) => {
467
+ try {
468
+ const { emploid } = await getSDKForService();
469
+ //@ts-ignore
470
+ const app = await emploid.CreateWorker(parsedInput);
471
+ return app;
472
+ }
473
+ catch (error) {
474
+ if (error instanceof AppcondaException) {
475
+ throw new Error(error.message);
476
+ }
477
+ throw error;
478
+ }
479
+ };
480
+ export const UpdateWorker = async (parsedInput) => {
481
+ try {
482
+ const { emploid } = await getSDKForService();
483
+ //@ts-ignore
484
+ const app = await emploid.UpdateWorker(parsedInput);
485
+ return app;
486
+ }
487
+ catch (error) {
488
+ if (error instanceof AppcondaException) {
489
+ throw new Error(error.message);
490
+ }
491
+ throw error;
492
+ }
493
+ };
494
+ export const DeleteWorker = async (parsedInput) => {
495
+ try {
496
+ const { emploid } = await getSDKForService();
497
+ //@ts-ignore
498
+ const app = await emploid.DeleteWorker(parsedInput);
499
+ return app;
500
+ }
501
+ catch (error) {
502
+ if (error instanceof AppcondaException) {
503
+ throw new Error(error.message);
504
+ }
505
+ throw error;
506
+ }
507
+ };
508
+ export const ListWorkers = async (parsedInput) => {
509
+ try {
510
+ const { emploid } = await getSDKForService();
511
+ //@ts-ignore
512
+ const app = await emploid.ListWorkers(parsedInput);
513
+ return app;
514
+ }
515
+ catch (error) {
516
+ if (error instanceof AppcondaException) {
517
+ throw new Error(error.message);
518
+ }
519
+ throw error;
520
+ }
521
+ };
522
+ export const CreateInput = async (parsedInput) => {
523
+ try {
524
+ const { emploid } = await getSDKForService();
525
+ //@ts-ignore
526
+ const app = await emploid.CreateInput(parsedInput);
527
+ return app;
528
+ }
529
+ catch (error) {
530
+ if (error instanceof AppcondaException) {
531
+ throw new Error(error.message);
532
+ }
533
+ throw error;
534
+ }
535
+ };
536
+ export const UpdateInput = async (parsedInput) => {
537
+ try {
538
+ const { emploid } = await getSDKForService();
539
+ //@ts-ignore
540
+ const app = await emploid.UpdateInput(parsedInput);
541
+ return app;
542
+ }
543
+ catch (error) {
544
+ if (error instanceof AppcondaException) {
545
+ throw new Error(error.message);
546
+ }
547
+ throw error;
548
+ }
549
+ };
550
+ export const DeleteInput = async (parsedInput) => {
551
+ try {
552
+ const { emploid } = await getSDKForService();
553
+ //@ts-ignore
554
+ const app = await emploid.DeleteInput(parsedInput);
555
+ return app;
556
+ }
557
+ catch (error) {
558
+ if (error instanceof AppcondaException) {
559
+ throw new Error(error.message);
560
+ }
561
+ throw error;
562
+ }
563
+ };
564
+ export const ListInputs = async (parsedInput) => {
565
+ try {
566
+ const { emploid } = await getSDKForService();
567
+ //@ts-ignore
568
+ const app = await emploid.ListInputs(parsedInput);
569
+ return app;
570
+ }
571
+ catch (error) {
572
+ if (error instanceof AppcondaException) {
573
+ throw new Error(error.message);
574
+ }
575
+ throw error;
576
+ }
577
+ };
578
+ export const CreateTeam = async (parsedInput) => {
579
+ try {
580
+ const { emploid } = await getSDKForService();
581
+ //@ts-ignore
582
+ const app = await emploid.CreateTeam(parsedInput);
583
+ return app;
584
+ }
585
+ catch (error) {
586
+ if (error instanceof AppcondaException) {
587
+ throw new Error(error.message);
588
+ }
589
+ throw error;
590
+ }
591
+ };
592
+ export const UpdateTeam = async (parsedInput) => {
593
+ try {
594
+ const { emploid } = await getSDKForService();
595
+ //@ts-ignore
596
+ const app = await emploid.UpdateTeam(parsedInput);
597
+ return app;
598
+ }
599
+ catch (error) {
600
+ if (error instanceof AppcondaException) {
601
+ throw new Error(error.message);
602
+ }
603
+ throw error;
604
+ }
605
+ };
606
+ export const DeleteTeam = async (parsedInput) => {
607
+ try {
608
+ const { emploid } = await getSDKForService();
609
+ //@ts-ignore
610
+ const app = await emploid.DeleteTeam(parsedInput);
611
+ return app;
612
+ }
613
+ catch (error) {
614
+ if (error instanceof AppcondaException) {
615
+ throw new Error(error.message);
616
+ }
617
+ throw error;
618
+ }
619
+ };
620
+ export const ListTeams = async (parsedInput) => {
621
+ try {
622
+ const { emploid } = await getSDKForService();
623
+ //@ts-ignore
624
+ const app = await emploid.ListTeams(parsedInput);
625
+ return app;
626
+ }
627
+ catch (error) {
628
+ if (error instanceof AppcondaException) {
629
+ throw new Error(error.message);
630
+ }
631
+ throw error;
632
+ }
633
+ };
634
+ export const SaveChat = async (parsedInput) => {
635
+ try {
636
+ const { emploid } = await getSDKForService();
637
+ //@ts-ignore
638
+ const app = await emploid.SaveChat(parsedInput);
639
+ return app;
640
+ }
641
+ catch (error) {
642
+ if (error instanceof AppcondaException) {
643
+ throw new Error(error.message);
644
+ }
645
+ throw error;
646
+ }
647
+ };
648
+ export const DeleteChatById = async (parsedInput) => {
649
+ try {
650
+ const { emploid } = await getSDKForService();
651
+ //@ts-ignore
652
+ const app = await emploid.DeleteChatById(parsedInput);
653
+ return app;
654
+ }
655
+ catch (error) {
656
+ if (error instanceof AppcondaException) {
657
+ throw new Error(error.message);
658
+ }
659
+ throw error;
660
+ }
661
+ };
662
+ export const GetChatById = async (parsedInput) => {
663
+ try {
664
+ const { emploid } = await getSDKForService();
665
+ //@ts-ignore
666
+ const app = await emploid.GetChatById(parsedInput);
667
+ return app;
668
+ }
669
+ catch (error) {
670
+ if (error instanceof AppcondaException) {
671
+ throw new Error(error.message);
672
+ }
673
+ throw error;
674
+ }
675
+ };
676
+ export const GetChatsByUserId = async (parsedInput) => {
677
+ try {
678
+ const { emploid } = await getSDKForService();
679
+ //@ts-ignore
680
+ const app = await emploid.GetChatsByUserId(parsedInput);
681
+ return app;
682
+ }
683
+ catch (error) {
684
+ if (error instanceof AppcondaException) {
685
+ throw new Error(error.message);
686
+ }
687
+ throw error;
688
+ }
689
+ };
690
+ export const SaveMessages = async (parsedInput) => {
691
+ try {
692
+ const { emploid } = await getSDKForService();
693
+ //@ts-ignore
694
+ const app = await emploid.SaveMessages(parsedInput);
695
+ return app;
696
+ }
697
+ catch (error) {
698
+ if (error instanceof AppcondaException) {
699
+ throw new Error(error.message);
700
+ }
701
+ throw error;
702
+ }
703
+ };
704
+ export const GetMessagesByChatId = async (parsedInput) => {
705
+ try {
706
+ const { emploid } = await getSDKForService();
707
+ //@ts-ignore
708
+ const app = await emploid.GetMessagesByChatId(parsedInput);
709
+ return app;
710
+ }
711
+ catch (error) {
712
+ if (error instanceof AppcondaException) {
713
+ throw new Error(error.message);
714
+ }
715
+ throw error;
716
+ }
717
+ };
718
+ export const GetMessageById = async (parsedInput) => {
719
+ try {
720
+ const { emploid } = await getSDKForService();
721
+ //@ts-ignore
722
+ const app = await emploid.GetMessageById(parsedInput);
723
+ return app;
724
+ }
725
+ catch (error) {
726
+ if (error instanceof AppcondaException) {
727
+ throw new Error(error.message);
728
+ }
729
+ throw error;
730
+ }
731
+ };
732
+ export const VoteMessage = async (parsedInput) => {
733
+ try {
734
+ const { emploid } = await getSDKForService();
735
+ //@ts-ignore
736
+ const app = await emploid.VoteMessage(parsedInput);
737
+ return app;
738
+ }
739
+ catch (error) {
740
+ if (error instanceof AppcondaException) {
741
+ throw new Error(error.message);
742
+ }
743
+ throw error;
744
+ }
745
+ };
746
+ export const GetVotesByChatId = async (parsedInput) => {
747
+ try {
748
+ const { emploid } = await getSDKForService();
749
+ //@ts-ignore
750
+ const app = await emploid.GetVotesByChatId(parsedInput);
751
+ return app;
752
+ }
753
+ catch (error) {
754
+ if (error instanceof AppcondaException) {
755
+ throw new Error(error.message);
756
+ }
757
+ throw error;
758
+ }
759
+ };
760
+ export const DeleteDocumentsByIdAfterTimestamp = async (parsedInput) => {
761
+ try {
762
+ const { emploid } = await getSDKForService();
763
+ //@ts-ignore
764
+ const app = await emploid.DeleteDocumentsByIdAfterTimestamp(parsedInput);
765
+ return app;
766
+ }
767
+ catch (error) {
768
+ if (error instanceof AppcondaException) {
769
+ throw new Error(error.message);
770
+ }
771
+ throw error;
772
+ }
773
+ };
774
+ export const SaveSuggestions = async (parsedInput) => {
775
+ try {
776
+ const { emploid } = await getSDKForService();
777
+ //@ts-ignore
778
+ const app = await emploid.SaveSuggestions(parsedInput);
779
+ return app;
780
+ }
781
+ catch (error) {
782
+ if (error instanceof AppcondaException) {
783
+ throw new Error(error.message);
784
+ }
785
+ throw error;
786
+ }
787
+ };
788
+ export const GetSuggestionsByDocumentId = async (parsedInput) => {
789
+ try {
790
+ const { emploid } = await getSDKForService();
791
+ //@ts-ignore
792
+ const app = await emploid.GetSuggestionsByDocumentId(parsedInput);
793
+ return app;
794
+ }
795
+ catch (error) {
796
+ if (error instanceof AppcondaException) {
797
+ throw new Error(error.message);
798
+ }
799
+ throw error;
800
+ }
801
+ };
802
+ export const DeleteMessagesByChatIdAfterTimestamp = async (parsedInput) => {
803
+ try {
804
+ const { emploid } = await getSDKForService();
805
+ //@ts-ignore
806
+ const app = await emploid.DeleteMessagesByChatIdAfterTimestamp(parsedInput);
807
+ return app;
808
+ }
809
+ catch (error) {
810
+ if (error instanceof AppcondaException) {
811
+ throw new Error(error.message);
812
+ }
813
+ throw error;
814
+ }
815
+ };
816
+ export const UpdateChatVisiblityById = async (parsedInput) => {
817
+ try {
818
+ const { emploid } = await getSDKForService();
819
+ //@ts-ignore
820
+ const app = await emploid.UpdateChatVisiblityById(parsedInput);
821
+ return app;
822
+ }
823
+ catch (error) {
824
+ if (error instanceof AppcondaException) {
825
+ throw new Error(error.message);
826
+ }
827
+ throw error;
828
+ }
829
+ };
830
+ export const UpdateChatLastContextById = async (parsedInput) => {
831
+ try {
832
+ const { emploid } = await getSDKForService();
833
+ //@ts-ignore
834
+ const app = await emploid.UpdateChatLastContextById(parsedInput);
835
+ return app;
836
+ }
837
+ catch (error) {
838
+ if (error instanceof AppcondaException) {
839
+ throw new Error(error.message);
840
+ }
841
+ throw error;
842
+ }
843
+ };
844
+ export const GetMessageCountByUserId = async (parsedInput) => {
845
+ try {
846
+ const { emploid } = await getSDKForService();
847
+ //@ts-ignore
848
+ const app = await emploid.GetMessageCountByUserId(parsedInput);
849
+ return app;
850
+ }
851
+ catch (error) {
852
+ if (error instanceof AppcondaException) {
853
+ throw new Error(error.message);
854
+ }
855
+ throw error;
856
+ }
857
+ };
858
+ export const CreateStreamId = async (parsedInput) => {
859
+ try {
860
+ const { emploid } = await getSDKForService();
861
+ //@ts-ignore
862
+ const app = await emploid.CreateStreamId(parsedInput);
863
+ return app;
864
+ }
865
+ catch (error) {
866
+ if (error instanceof AppcondaException) {
867
+ throw new Error(error.message);
868
+ }
869
+ throw error;
870
+ }
871
+ };
872
+ export const GetStreamIdsByChatId = async (parsedInput) => {
873
+ try {
874
+ const { emploid } = await getSDKForService();
875
+ //@ts-ignore
876
+ const app = await emploid.GetStreamIdsByChatId(parsedInput);
877
+ return app;
878
+ }
879
+ catch (error) {
880
+ if (error instanceof AppcondaException) {
881
+ throw new Error(error.message);
882
+ }
883
+ throw error;
884
+ }
885
+ };
886
+ export const SaveDocument = async (parsedInput) => {
887
+ try {
888
+ const { emploid } = await getSDKForService();
889
+ //@ts-ignore
890
+ const app = await emploid.SaveDocument(parsedInput);
891
+ return app;
892
+ }
893
+ catch (error) {
894
+ if (error instanceof AppcondaException) {
895
+ throw new Error(error.message);
896
+ }
897
+ throw error;
898
+ }
899
+ };
900
+ export const GetDocumentById = async (parsedInput) => {
901
+ try {
902
+ const { emploid } = await getSDKForService();
903
+ //@ts-ignore
904
+ const app = await emploid.GetDocumentById(parsedInput);
905
+ return app;
906
+ }
907
+ catch (error) {
908
+ if (error instanceof AppcondaException) {
909
+ throw new Error(error.message);
910
+ }
911
+ throw error;
912
+ }
913
+ };
914
+ export const GetDocumentsById = async (parsedInput) => {
915
+ try {
916
+ const { emploid } = await getSDKForService();
917
+ //@ts-ignore
918
+ const app = await emploid.GetDocumentsById(parsedInput);
919
+ return app;
920
+ }
921
+ catch (error) {
922
+ if (error instanceof AppcondaException) {
923
+ throw new Error(error.message);
924
+ }
925
+ throw error;
926
+ }
927
+ };
928
+ export const CreateSkill = async (parsedInput) => {
929
+ try {
930
+ const { emploid } = await getSDKForService();
931
+ //@ts-ignore
932
+ const app = await emploid.CreateSkill(parsedInput);
933
+ return app;
934
+ }
935
+ catch (error) {
936
+ if (error instanceof AppcondaException) {
937
+ throw new Error(error.message);
938
+ }
939
+ throw error;
940
+ }
941
+ };
942
+ export const UpdateSkill = async (parsedInput) => {
943
+ try {
944
+ const { emploid } = await getSDKForService();
945
+ //@ts-ignore
946
+ const app = await emploid.UpdateSkill(parsedInput);
947
+ return app;
948
+ }
949
+ catch (error) {
950
+ if (error instanceof AppcondaException) {
951
+ throw new Error(error.message);
952
+ }
953
+ throw error;
954
+ }
955
+ };
956
+ export const DeleteSkill = async (parsedInput) => {
957
+ try {
958
+ const { emploid } = await getSDKForService();
959
+ //@ts-ignore
960
+ const app = await emploid.DeleteSkill(parsedInput);
961
+ return app;
962
+ }
963
+ catch (error) {
964
+ if (error instanceof AppcondaException) {
965
+ throw new Error(error.message);
966
+ }
967
+ throw error;
968
+ }
969
+ };
970
+ export const ListSkills = async (parsedInput) => {
971
+ try {
972
+ const { emploid } = await getSDKForService();
973
+ //@ts-ignore
974
+ const app = await emploid.ListSkills(parsedInput);
975
+ return app;
976
+ }
977
+ catch (error) {
978
+ if (error instanceof AppcondaException) {
979
+ throw new Error(error.message);
980
+ }
981
+ throw error;
982
+ }
983
+ };
984
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZHVsZXMvZW1wbG9pZC9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDO0FBR2IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFELE1BQU0sQ0FBQyxLQUFLLFVBQVUsYUFBYSxDQUFDLFdBQWdEO0lBQ2hGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUVMLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUFFLFdBQWdELEVBQXFCLEVBQUU7SUFDdkcsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEtBQUssRUFBRSxXQUFnRCxFQUFxQixFQUFFO0lBQ3ZHLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEtBQUssRUFBRSxXQUFvRCxFQUF5QixFQUFFO0lBQ25ILElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxFQUFFLFdBQW9ELEVBQXlCLEVBQUU7SUFDbkgsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsV0FBbUQsRUFBMkIsRUFBRTtJQUNuSCxJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLFlBQVk7UUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEtBQUssRUFBRSxXQUFvRCxFQUF5QixFQUFFO0lBQ25ILElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFBO0FBR0QsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFBRSxXQUErQyxFQUFFLEVBQUU7SUFDbEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsS0FBSyxFQUFFLFdBQXdELEVBQUUsRUFBRTtJQUNwRyxJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLFlBQVk7UUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3RCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsV0FBNkMsRUFBRSxFQUFFO0lBQzlFLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFBRSxXQUFtRCxFQUFFLEVBQUU7SUFDMUYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsV0FBbUQsRUFBRSxFQUFFO0lBQzFGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLFdBQW1ELEVBQUUsRUFBRTtJQUMxRixJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLFlBQVk7UUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQTtBQUdELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsV0FBOEMsRUFBRSxFQUFFO0lBQ2hGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsV0FBOEMsRUFBRSxFQUFFO0lBQ2hGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsV0FBOEMsRUFBRSxFQUFFO0lBQ2hGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUdGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQUUsV0FBa0QsRUFBRSxFQUFFO0lBQ3hGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2RCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEtBQUssRUFBRSxXQUFzRCxFQUFFLEVBQUU7SUFDaEcsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLEVBQUUsV0FBc0QsRUFBRSxFQUFFO0lBQ2hHLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxFQUFFLFdBQXNELEVBQUUsRUFBRTtJQUNoRyxJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLFlBQVk7UUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEtBQUssRUFBRSxXQUFvRCxFQUFFLEVBQUU7SUFDN0YsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFHRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsV0FBbUQsRUFBRSxFQUFFO0lBQzFGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLFdBQW1ELEVBQUUsRUFBRTtJQUMxRixJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLFlBQVk7UUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFBRSxXQUFtRCxFQUFFLEVBQUU7SUFDMUYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsV0FBbUQsRUFBRSxFQUFFO0lBQzFGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxXQUFrRCxFQUFFLEVBQUU7SUFDeEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFBRSxXQUFpRCxFQUFFLEVBQUU7SUFDdEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxXQUFrRCxFQUFFLEVBQUU7SUFDeEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFBRSxXQUFpRCxFQUFFLEVBQUU7SUFDdEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxXQUFrRCxFQUFFLEVBQUU7SUFDeEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxXQUFrRCxFQUFFLEVBQUU7SUFDeEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxXQUFrRCxFQUFFLEVBQUU7SUFDeEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFBRSxXQUFpRCxFQUFFLEVBQUU7SUFDdEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFBRSxXQUErQyxFQUFFLEVBQUU7SUFDbEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFBRSxXQUErQyxFQUFFLEVBQUU7SUFDbEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFBRSxXQUErQyxFQUFFLEVBQUU7SUFDbEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxXQUE4QyxFQUFFLEVBQUU7SUFDaEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxXQUE4QyxFQUFFLEVBQUU7SUFDaEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxXQUE4QyxFQUFFLEVBQUU7SUFDaEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxXQUE4QyxFQUFFLEVBQUU7SUFDaEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxXQUE0QyxFQUFFLEVBQUU7SUFDN0UsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxXQUE2QyxFQUFFLEVBQUU7SUFDOUUsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxXQUE2QyxFQUFFLEVBQUU7SUFDOUUsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxXQUE2QyxFQUFFLEVBQUU7SUFDOUUsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEtBQUssRUFBRSxXQUE0QyxFQUFFLEVBQUU7SUFDNUUsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEtBQUssRUFBRSxXQUEyQyxFQUFFLEVBQUU7SUFDMUUsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFBRSxXQUFpRCxFQUFFLEVBQUU7SUFDdEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxXQUE4QyxFQUFFLEVBQUU7SUFDaEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLFdBQW1ELEVBQUUsRUFBRTtJQUMxRixJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLFlBQVk7UUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsV0FBK0MsRUFBRSxFQUFFO0lBQ2xGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEtBQUssRUFBRSxXQUFzRCxFQUFFLEVBQUU7SUFDaEcsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUFFLFdBQWlELEVBQUUsRUFBRTtJQUN0RixJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLFlBQVk7UUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLFdBQThDLEVBQUUsRUFBRTtJQUNoRixJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLFlBQVk7UUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsV0FBbUQsRUFBRSxFQUFFO0lBQzFGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsS0FBSyxFQUFFLFdBQW9FLEVBQUUsRUFBRTtJQUM1SCxJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLFlBQVk7UUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6RSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQUUsV0FBa0QsRUFBRSxFQUFFO0lBQ3hGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2RCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLEtBQUssRUFBRSxXQUE2RCxFQUFFLEVBQUU7SUFDOUcsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsMEJBQTBCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEUsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxLQUFLLEVBQUUsV0FBdUUsRUFBRSxFQUFFO0lBQ2xJLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLG9DQUFvQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVFLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsS0FBSyxFQUFFLFdBQTBELEVBQUUsRUFBRTtJQUN4RyxJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLFlBQVk7UUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEtBQUssRUFBRSxXQUE0RCxFQUFFLEVBQUU7SUFDNUcsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMseUJBQXlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakUsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLEVBQUUsV0FBMEQsRUFBRSxFQUFFO0lBQ3hHLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFBRSxXQUFpRCxFQUFFLEVBQUU7SUFDdEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxFQUFFLFdBQXVELEVBQUUsRUFBRTtJQUNsRyxJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLFlBQVk7UUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1RCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsV0FBK0MsRUFBRSxFQUFFO0lBQ2xGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQUUsV0FBa0QsRUFBRSxFQUFFO0lBQ3hGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2RCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFBRSxXQUFtRCxFQUFFLEVBQUU7SUFDMUYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLFdBQThDLEVBQUUsRUFBRTtJQUNoRixJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLFlBQVk7UUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLFdBQThDLEVBQUUsRUFBRTtJQUNoRixJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLFlBQVk7UUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLFdBQThDLEVBQUUsRUFBRTtJQUNoRixJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLFlBQVk7UUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFFLFdBQTZDLEVBQUUsRUFBRTtJQUM5RSxJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLFlBQVk7UUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcic7XG5cbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgQXBwY29uZGFFeGNlcHRpb24gfSBmcm9tICcuLi8uLi9jbGllbnQnO1xuaW1wb3J0IHsgQ3JlYXRlQWdlbnRGbG93U2NoZW1hLCBDcmVhdGVBc3Npc3RhbnRTY2hlbWEsIENyZWF0ZUNvbXBldGVuY3lTY2hlbWEsIENyZWF0ZUVtcGxvaWRTY2hlbWEsIENyZWF0ZUV4dGVuc2lvblNjaGVtYSwgQ3JlYXRlSW5wdXRTY2hlbWEsIENyZWF0ZUluc3RydWN0aW9uU2NoZW1hLCBDcmVhdGVKb2JEZWZpbml0aW9uU2NoZW1hLCBDcmVhdGVPY2N1cGF0aW9uU2NoZW1hLCBDcmVhdGVTY29wZVNjaGVtYSwgQ3JlYXRlU2tpbGxTY2hlbWEsIENyZWF0ZVN0cmVhbUlkU2NoZW1hLCBDcmVhdGVUZWFtU2NoZW1hLCBDcmVhdGVXb3JrZXJTY2hlbWEsIERlbGV0ZUFzc2lzdGFudFNjaGVtYSwgRGVsZXRlQ2hhdEJ5SWRTY2hlbWEsIERlbGV0ZUNvbXBldGVuY3lTY2hlbWEsIERlbGV0ZURvY3VtZW50c0J5SWRBZnRlclRpbWVzdGFtcFNjaGVtYSwgRGVsZXRlRW1wbG9pZFNjaGVtYSwgRGVsZXRlSW5wdXRTY2hlbWEsIERlbGV0ZUluc3RydWN0aW9uU2NoZW1hLCBEZWxldGVKb2JEZWZpbml0aW9uU2NoZW1hLCBEZWxldGVNZXNzYWdlc0J5Q2hhdElkQWZ0ZXJUaW1lc3RhbXBTY2hlbWEsIERlbGV0ZU9jY3VwYXRpb25TY2hlbWEsIERlbGV0ZVNjb3BlU2NoZW1hLCBEZWxldGVTa2lsbFNjaGVtYSwgRGVsZXRlVGVhbVNjaGVtYSwgRGVsZXRlV29ya2VyU2NoZW1hLCBHZXRDaGF0QnlJZFNjaGVtYSwgR2V0Q2hhdHNCeVVzZXJJZFNjaGVtYSwgR2V0RG9jdW1lbnRCeUlkU2NoZW1hLCBHZXREb2N1bWVudHNCeUlkU2NoZW1hLCBHZXRNZXNzYWdlQnlJZFNjaGVtYSwgR2V0TWVzc2FnZUNvdW50QnlVc2VySWRTY2hlbWEsIEdldE1lc3NhZ2VzQnlDaGF0SWRTY2hlbWEsIEdldFN0cmVhbUlkc0J5Q2hhdElkU2NoZW1hLCBHZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZFNjaGVtYSwgR2V0Vm90ZXNCeUNoYXRJZFNjaGVtYSwgTGlzdEFnZW50Rmxvd3NTY2hlbWEsIExpc3RBc3Npc3RhbnRzU2NoZW1hLCBMaXN0Q29tcGV0ZW5jaWVzU2NoZW1hLCBMaXN0RW1wbG9pZHNQYWdpbmF0ZWRTY2hlbWEsIExpc3RFbXBsb2lkc1NjaGVtYSwgTGlzdEV4dGVuc2lvbnNTY2hlbWEsIExpc3RJbnB1dFNjaGVtYSwgTGlzdEluc3RydWN0aW9uc1NjaGVtYSwgTGlzdEpvYkRlZmluaXRpb25TY2hlbWEsIExpc3RPY2N1cGF0aW9uc1NjaGVtYSwgTGlzdFNjb3Blc1NjaGVtYSwgTGlzdFNraWxsc1NjaGVtYSwgTGlzdFRlYW1zU2NoZW1hLCBMaXN0V29ya2Vyc1NjaGVtYSwgU2F2ZUNoYXRTY2hlbWEsIFNhdmVEb2N1bWVudFNjaGVtYSwgU2F2ZU1lc3NhZ2VzU2NoZW1hLCBTYXZlU3VnZ2VzdGlvbnNTY2hlbWEsIFVwZGF0ZUFzc2lzdGFudFNjaGVtYSwgVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZFNjaGVtYSwgVXBkYXRlQ2hhdFZpc2libGl0eUJ5SWRTY2hlbWEsIFVwZGF0ZUNvbXBldGVuY3lTY2hlbWEsIFVwZGF0ZUVtcGxvaWRTY2hlbWEsIFVwZGF0ZUlucHV0U2NoZW1hLCBVcGRhdGVJbnN0cnVjdGlvblNjaGVtYSwgVXBkYXRlSm9iRGVmaW5pdGlvblNjaGVtYSwgVXBkYXRlT2NjdXBhdGlvblNjaGVtYSwgVXBkYXRlU2NvcGVTY2hlbWEsIFVwZGF0ZVNraWxsU2NoZW1hLCBVcGRhdGVUZWFtU2NoZW1hLCBVcGRhdGVXb3JrZXJTY2hlbWEsIFZvdGVNZXNzYWdlU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IHsgVEVtcGxvaWQsIFRJbnN0cnVjdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0U0RLRm9yU2VydmljZSB9IGZyb20gJy4uLy4uL2dldFNES0ZvclNlcnZpY2UnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gQ3JlYXRlRW1wbG9pZChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRW1wbG9pZFNjaGVtYT4pOiBQcm9taXNlPFRFbXBsb2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkNyZWF0ZUVtcGxvaWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbn1cblxuZXhwb3J0IGNvbnN0IFVwZGF0ZUVtcGxvaWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUVtcGxvaWRTY2hlbWE+KTogUHJvbWlzZTxURW1wbG9pZD4gPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5VcGRhdGVFbXBsb2lkKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgRGVsZXRlRW1wbG9pZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRW1wbG9pZFNjaGVtYT4pOiBQcm9taXNlPFRFbXBsb2lkPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkRlbGV0ZUVtcGxvaWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVJbnN0cnVjdGlvbiA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlSW5zdHJ1Y3Rpb25TY2hlbWE+KTogUHJvbWlzZTxUSW5zdHJ1Y3Rpb24+ID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlSW5zdHJ1Y3Rpb24ocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVJbnN0cnVjdGlvbiA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgVXBkYXRlSW5zdHJ1Y3Rpb25TY2hlbWE+KTogUHJvbWlzZTxUSW5zdHJ1Y3Rpb24+ID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlSW5zdHJ1Y3Rpb24ocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBMaXN0SW5zdHJ1Y3Rpb25zID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0SW5zdHJ1Y3Rpb25zU2NoZW1hPik6IFByb21pc2U8VEluc3RydWN0aW9uW10+ID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuTGlzdEluc3RydWN0aW9ucyhwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IERlbGV0ZUluc3RydWN0aW9uID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBEZWxldGVJbnN0cnVjdGlvblNjaGVtYT4pOiBQcm9taXNlPFRJbnN0cnVjdGlvbj4gPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5EZWxldGVJbnN0cnVjdGlvbihwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn1cblxuXG5leHBvcnQgY29uc3QgTGlzdEVtcGxvaWRzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0RW1wbG9pZHNTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RFbXBsb2lkcyhwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaXN0RW1wbG9pZHNQYWdpbmF0ZWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIExpc3RFbXBsb2lkc1BhZ2luYXRlZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuTGlzdEVtcGxvaWRzUGFnaW5hdGVkKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExpc3RTY29wZXMgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIExpc3RTY29wZXNTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RTY29wZXMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlT2NjdXBhdGlvbiA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlT2NjdXBhdGlvblNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlT2NjdXBhdGlvbihwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVPY2N1cGF0aW9uID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVPY2N1cGF0aW9uU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5VcGRhdGVPY2N1cGF0aW9uKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgRGVsZXRlT2NjdXBhdGlvbiA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgRGVsZXRlT2NjdXBhdGlvblNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuRGVsZXRlT2NjdXBhdGlvbihwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn1cblxuXG5leHBvcnQgY29uc3QgQ3JlYXRlU2NvcGUgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVNjb3BlU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5DcmVhdGVTY29wZShwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IFVwZGF0ZVNjb3BlID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVTY29wZVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlU2NvcGUocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgRGVsZXRlU2NvcGUgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVNjb3BlU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5EZWxldGVTY29wZShwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cblxuZXhwb3J0IGNvbnN0IExpc3RPY2N1cGF0aW9ucyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgTGlzdE9jY3VwYXRpb25zU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5MaXN0T2NjdXBhdGlvbnMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlSm9iRGVmaW5pdGlvbiA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlSm9iRGVmaW5pdGlvblNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlSm9iRGVmaW5pdGlvbihwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVKb2JEZWZpbml0aW9uID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVKb2JEZWZpbml0aW9uU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5VcGRhdGVKb2JEZWZpbml0aW9uKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUpvYkRlZmluaXRpb24gPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUpvYkRlZmluaXRpb25TY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkRlbGV0ZUpvYkRlZmluaXRpb24ocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdEpvYkRlZmluaXRpb25zID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0Sm9iRGVmaW5pdGlvblNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuTGlzdEpvYkRlZmluaXRpb25zKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuXG5leHBvcnQgY29uc3QgQ3JlYXRlQ29tcGV0ZW5jeSA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29tcGV0ZW5jeVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlQ29tcGV0ZW5jeShwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVDb21wZXRlbmN5ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb21wZXRlbmN5U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5VcGRhdGVDb21wZXRlbmN5KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUNvbXBldGVuY3kgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbXBldGVuY3lTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkRlbGV0ZUNvbXBldGVuY3kocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdENvbXBldGVuY2llcyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgTGlzdENvbXBldGVuY2llc1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuTGlzdENvbXBldGVuY2llcyhwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVBZ2VudEZsb3cgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFnZW50Rmxvd1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlQWdlbnRGbG93KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExpc3RBZ2VudEZsb3dzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0QWdlbnRGbG93c1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuTGlzdEFnZW50Rmxvd3MocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlRXh0ZW5zaW9uID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBDcmVhdGVFeHRlbnNpb25TY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkNyZWF0ZUV4dGVuc2lvbihwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaXN0RXh0ZW5zaW9ucyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgTGlzdEV4dGVuc2lvbnNTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RFeHRlbnNpb25zKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZUFzc2lzdGFudCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5DcmVhdGVBc3Npc3RhbnQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgVXBkYXRlQXNzaXN0YW50ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBc3Npc3RhbnRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLlVwZGF0ZUFzc2lzdGFudChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBEZWxldGVBc3Npc3RhbnQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUFzc2lzdGFudFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuRGVsZXRlQXNzaXN0YW50KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExpc3RBc3Npc3RhbnRzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50c1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuTGlzdEFzc2lzdGFudHMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlV29ya2VyID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBDcmVhdGVXb3JrZXJTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkNyZWF0ZVdvcmtlcihwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVXb3JrZXIgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVdvcmtlclNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlV29ya2VyKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZVdvcmtlciA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgRGVsZXRlV29ya2VyU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5EZWxldGVXb3JrZXIocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdFdvcmtlcnMgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIExpc3RXb3JrZXJzU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5MaXN0V29ya2VycyhwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVJbnB1dCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlSW5wdXRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkNyZWF0ZUlucHV0KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFVwZGF0ZUlucHV0ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVJbnB1dFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlSW5wdXQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgRGVsZXRlSW5wdXQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUlucHV0U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5EZWxldGVJbnB1dChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaXN0SW5wdXRzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0SW5wdXRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RJbnB1dHMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlVGVhbSA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlVGVhbVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlVGVhbShwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVUZWFtID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVUZWFtU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5VcGRhdGVUZWFtKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZVRlYW0gPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVRlYW1TY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkRlbGV0ZVRlYW0ocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdFRlYW1zID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0VGVhbXNTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RUZWFtcyhwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBTYXZlQ2hhdCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgU2F2ZUNoYXRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLlNhdmVDaGF0KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUNoYXRCeUlkID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBEZWxldGVDaGF0QnlJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuRGVsZXRlQ2hhdEJ5SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0Q2hhdEJ5SWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIEdldENoYXRCeUlkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5HZXRDaGF0QnlJZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBHZXRDaGF0c0J5VXNlcklkID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBHZXRDaGF0c0J5VXNlcklkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5HZXRDaGF0c0J5VXNlcklkKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFNhdmVNZXNzYWdlcyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgU2F2ZU1lc3NhZ2VzU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5TYXZlTWVzc2FnZXMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0TWVzc2FnZXNCeUNoYXRJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0TWVzc2FnZXNCeUNoYXRJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuR2V0TWVzc2FnZXNCeUNoYXRJZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBHZXRNZXNzYWdlQnlJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0TWVzc2FnZUJ5SWRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkdldE1lc3NhZ2VCeUlkKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFZvdGVNZXNzYWdlID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBWb3RlTWVzc2FnZVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVm90ZU1lc3NhZ2UocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0Vm90ZXNCeUNoYXRJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0Vm90ZXNCeUNoYXRJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuR2V0Vm90ZXNCeUNoYXRJZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBEZWxldGVEb2N1bWVudHNCeUlkQWZ0ZXJUaW1lc3RhbXAgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURvY3VtZW50c0J5SWRBZnRlclRpbWVzdGFtcFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuRGVsZXRlRG9jdW1lbnRzQnlJZEFmdGVyVGltZXN0YW1wKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFNhdmVTdWdnZXN0aW9ucyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgU2F2ZVN1Z2dlc3Rpb25zU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5TYXZlU3VnZ2VzdGlvbnMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0U3VnZ2VzdGlvbnNCeURvY3VtZW50SWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIEdldFN1Z2dlc3Rpb25zQnlEb2N1bWVudElkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5HZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBEZWxldGVNZXNzYWdlc0J5Q2hhdElkQWZ0ZXJUaW1lc3RhbXAgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZU1lc3NhZ2VzQnlDaGF0SWRBZnRlclRpbWVzdGFtcFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuRGVsZXRlTWVzc2FnZXNCeUNoYXRJZEFmdGVyVGltZXN0YW1wKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFVwZGF0ZUNoYXRWaXNpYmxpdHlCeUlkID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDaGF0VmlzaWJsaXR5QnlJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlQ2hhdFZpc2libGl0eUJ5SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBHZXRNZXNzYWdlQ291bnRCeVVzZXJJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0TWVzc2FnZUNvdW50QnlVc2VySWRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkdldE1lc3NhZ2VDb3VudEJ5VXNlcklkKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZVN0cmVhbUlkID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBDcmVhdGVTdHJlYW1JZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlU3RyZWFtSWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0U3RyZWFtSWRzQnlDaGF0SWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIEdldFN0cmVhbUlkc0J5Q2hhdElkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5HZXRTdHJlYW1JZHNCeUNoYXRJZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBTYXZlRG9jdW1lbnQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIFNhdmVEb2N1bWVudFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuU2F2ZURvY3VtZW50KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEdldERvY3VtZW50QnlJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0RG9jdW1lbnRCeUlkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5HZXREb2N1bWVudEJ5SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0RG9jdW1lbnRzQnlJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0RG9jdW1lbnRzQnlJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuR2V0RG9jdW1lbnRzQnlJZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVTa2lsbCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlU2tpbGxTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkNyZWF0ZVNraWxsKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFVwZGF0ZVNraWxsID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVTa2lsbFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlU2tpbGwocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgRGVsZXRlU2tpbGwgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVNraWxsU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5EZWxldGVTa2lsbChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaXN0U2tpbGxzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0U2tpbGxzU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5MaXN0U2tpbGxzKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuIl19