@vendasta/billing 8.2.0 → 9.2.0

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 (591) hide show
  1. package/esm2020/lib/_generated/host.service.mjs +25 -0
  2. package/esm2020/lib/_generated/index.mjs +2 -0
  3. package/esm2020/lib/_internal/bank-reconciliation.api.service.mjs +46 -0
  4. package/esm2020/lib/_internal/billing.api.service.mjs +216 -0
  5. package/esm2020/lib/_internal/bundle.api.service.mjs +50 -0
  6. package/esm2020/lib/_internal/contract-document.api.service.mjs +45 -0
  7. package/esm2020/lib/_internal/contract.api.service.mjs +55 -0
  8. package/esm2020/lib/_internal/credit.api.service.mjs +45 -0
  9. package/esm2020/lib/_internal/discount.api.service.mjs +53 -0
  10. package/esm2020/lib/_internal/enums/applied-discount.enum.mjs +14 -0
  11. package/esm2020/lib/_internal/enums/card.enum.mjs +17 -0
  12. package/esm2020/lib/_internal/enums/contract.enum.mjs +14 -0
  13. package/esm2020/lib/_internal/enums/currency.enum.mjs +35 -0
  14. package/esm2020/lib/_internal/enums/frequency.enum.mjs +14 -0
  15. package/esm2020/lib/_internal/enums/index.mjs +31 -0
  16. package/esm2020/lib/_internal/enums/invoice.enum.mjs +18 -0
  17. package/esm2020/lib/_internal/enums/merchant-report.enum.mjs +13 -0
  18. package/{esm2015/lib/_internal/enums/merchant.enum.js → esm2020/lib/_internal/enums/merchant.enum.mjs} +1 -1
  19. package/esm2020/lib/_internal/enums/month.enum.mjs +23 -0
  20. package/esm2020/lib/_internal/enums/payment-card.enum.mjs +24 -0
  21. package/esm2020/lib/_internal/enums/payment-processor.enum.mjs +13 -0
  22. package/{esm2015/lib/_internal/enums/payment.enum.js → esm2020/lib/_internal/enums/payment.enum.mjs} +1 -1
  23. package/esm2020/lib/_internal/enums/payout.enum.mjs +22 -0
  24. package/esm2020/lib/_internal/enums/pricing-plan.enum.mjs +22 -0
  25. package/{esm2015/lib/_internal/enums/product-summary.enum.js → esm2020/lib/_internal/enums/product-summary.enum.mjs} +1 -1
  26. package/esm2020/lib/_internal/enums/product.enum.mjs +17 -0
  27. package/esm2020/lib/_internal/enums/purchase.enum.mjs +27 -0
  28. package/esm2020/lib/_internal/enums/recurring-invoice.enum.mjs +29 -0
  29. package/esm2020/lib/_internal/enums/refund.enum.mjs +25 -0
  30. package/esm2020/lib/_internal/enums/sales-credit-note.enum.mjs +14 -0
  31. package/{esm2015/lib/_internal/enums/sales-invoice.enum.js → esm2020/lib/_internal/enums/sales-invoice.enum.mjs} +1 -1
  32. package/esm2020/lib/_internal/enums/sort-direction.enum.mjs +12 -0
  33. package/{esm2015/lib/_internal/enums/subscribe-validation.enum.js → esm2020/lib/_internal/enums/subscribe-validation.enum.mjs} +1 -1
  34. package/esm2020/lib/_internal/enums/subscription.enum.mjs +12 -0
  35. package/esm2020/lib/_internal/index.mjs +33 -0
  36. package/esm2020/lib/_internal/interfaces/api.interface.mjs +2 -0
  37. package/esm2020/lib/_internal/interfaces/applied-bundle.interface.mjs +8 -0
  38. package/esm2020/lib/_internal/interfaces/applied-discount.interface.mjs +8 -0
  39. package/esm2020/lib/_internal/interfaces/applied-tax-rate.interface.mjs +8 -0
  40. package/esm2020/lib/_internal/interfaces/balance.interface.mjs +8 -0
  41. package/esm2020/lib/_internal/interfaces/billable-item.interface.mjs +2 -0
  42. package/esm2020/lib/_internal/interfaces/bundle.interface.mjs +2 -0
  43. package/esm2020/lib/_internal/interfaces/card.interface.mjs +8 -0
  44. package/esm2020/lib/_internal/interfaces/commitment.interface.mjs +8 -0
  45. package/esm2020/lib/_internal/interfaces/common.interface.mjs +8 -0
  46. package/esm2020/lib/_internal/interfaces/contract-document.interface.mjs +2 -0
  47. package/esm2020/lib/_internal/interfaces/contract.interface.mjs +2 -0
  48. package/esm2020/lib/_internal/interfaces/credit.interface.mjs +8 -0
  49. package/esm2020/lib/_internal/interfaces/currency.interface.mjs +8 -0
  50. package/esm2020/lib/_internal/interfaces/customer-summary.interface.mjs +8 -0
  51. package/esm2020/lib/_internal/interfaces/date-range.interface.mjs +8 -0
  52. package/esm2020/lib/_internal/interfaces/discount.interface.mjs +2 -0
  53. package/esm2020/lib/_internal/interfaces/external-account.interface.mjs +8 -0
  54. package/esm2020/lib/_internal/interfaces/field-mask.interface.mjs +8 -0
  55. package/esm2020/lib/_internal/interfaces/frequency.interface.mjs +8 -0
  56. package/esm2020/lib/_internal/interfaces/index.mjs +2 -0
  57. package/esm2020/lib/_internal/interfaces/invoice-template.interface.mjs +2 -0
  58. package/esm2020/lib/_internal/interfaces/invoice.interface.mjs +2 -0
  59. package/esm2020/lib/_internal/interfaces/merchant-report.interface.mjs +2 -0
  60. package/esm2020/lib/_internal/interfaces/merchant.interface.mjs +2 -0
  61. package/esm2020/lib/_internal/interfaces/metered-component.interface.mjs +8 -0
  62. package/esm2020/lib/_internal/interfaces/month.interface.mjs +8 -0
  63. package/esm2020/lib/_internal/interfaces/payment-card.interface.mjs +8 -0
  64. package/esm2020/lib/_internal/interfaces/payment-processor.interface.mjs +8 -0
  65. package/esm2020/lib/_internal/interfaces/payment.interface.mjs +2 -0
  66. package/esm2020/lib/_internal/interfaces/payout.interface.mjs +2 -0
  67. package/esm2020/lib/_internal/interfaces/pricing-plan-product.interface.mjs +2 -0
  68. package/esm2020/lib/_internal/interfaces/pricing-plan.interface.mjs +2 -0
  69. package/esm2020/lib/_internal/interfaces/product-pricing.interface.mjs +2 -0
  70. package/esm2020/lib/_internal/interfaces/product-summary.interface.mjs +2 -0
  71. package/esm2020/lib/_internal/interfaces/product.interface.mjs +2 -0
  72. package/esm2020/lib/_internal/interfaces/purchase.interface.mjs +2 -0
  73. package/esm2020/lib/_internal/interfaces/recurring-invoice.interface.mjs +2 -0
  74. package/esm2020/lib/_internal/interfaces/refund.interface.mjs +8 -0
  75. package/esm2020/lib/_internal/interfaces/retail-customer-configuration.interface.mjs +8 -0
  76. package/esm2020/lib/_internal/interfaces/sales-credit-note.interface.mjs +2 -0
  77. package/esm2020/lib/_internal/interfaces/sales-invoice.interface.mjs +2 -0
  78. package/esm2020/lib/_internal/interfaces/sort-direction.interface.mjs +8 -0
  79. package/esm2020/lib/_internal/interfaces/subscribe-validation.interface.mjs +8 -0
  80. package/esm2020/lib/_internal/interfaces/subscription.interface.mjs +2 -0
  81. package/esm2020/lib/_internal/interfaces/tax-rate.interface.mjs +2 -0
  82. package/esm2020/lib/_internal/invoice-template.api.service.mjs +85 -0
  83. package/esm2020/lib/_internal/invoice.api.service.mjs +116 -0
  84. package/esm2020/lib/_internal/merchant.api.service.mjs +159 -0
  85. package/esm2020/lib/_internal/objects/api.mjs +890 -0
  86. package/esm2020/lib/_internal/objects/applied-bundle.mjs +77 -0
  87. package/esm2020/lib/_internal/objects/applied-discount.mjs +46 -0
  88. package/esm2020/lib/_internal/objects/applied-tax-rate.mjs +39 -0
  89. package/esm2020/lib/_internal/objects/balance.mjs +45 -0
  90. package/esm2020/lib/_internal/objects/billable-item.mjs +562 -0
  91. package/esm2020/lib/_internal/objects/bundle.mjs +390 -0
  92. package/esm2020/lib/_internal/objects/card.mjs +7 -0
  93. package/esm2020/lib/_internal/objects/commitment.mjs +36 -0
  94. package/esm2020/lib/_internal/objects/common.mjs +56 -0
  95. package/esm2020/lib/_internal/objects/contract-document.mjs +141 -0
  96. package/esm2020/lib/_internal/objects/contract.mjs +474 -0
  97. package/esm2020/lib/_internal/objects/credit.mjs +114 -0
  98. package/esm2020/lib/_internal/objects/currency.mjs +7 -0
  99. package/esm2020/lib/_internal/objects/customer-summary.mjs +104 -0
  100. package/esm2020/lib/_internal/objects/date-range.mjs +36 -0
  101. package/esm2020/lib/_internal/objects/discount.mjs +299 -0
  102. package/esm2020/lib/_internal/objects/external-account.mjs +160 -0
  103. package/esm2020/lib/_internal/objects/field-mask.mjs +27 -0
  104. package/esm2020/lib/_internal/objects/frequency.mjs +7 -0
  105. package/esm2020/lib/_internal/objects/index.mjs +46 -0
  106. package/esm2020/lib/_internal/objects/invoice-template.mjs +707 -0
  107. package/esm2020/lib/_internal/objects/invoice.mjs +1117 -0
  108. package/esm2020/lib/_internal/objects/merchant-report.mjs +108 -0
  109. package/esm2020/lib/_internal/objects/merchant.mjs +991 -0
  110. package/esm2020/lib/_internal/objects/metered-component.mjs +97 -0
  111. package/esm2020/lib/_internal/objects/month.mjs +7 -0
  112. package/esm2020/lib/_internal/objects/payment-card.mjs +211 -0
  113. package/esm2020/lib/_internal/objects/payment-processor.mjs +7 -0
  114. package/esm2020/lib/_internal/objects/payment.mjs +1219 -0
  115. package/esm2020/lib/_internal/objects/payout.mjs +258 -0
  116. package/esm2020/lib/_internal/objects/pricing-plan-product.mjs +565 -0
  117. package/esm2020/lib/_internal/objects/pricing-plan.mjs +290 -0
  118. package/esm2020/lib/_internal/objects/product-pricing.mjs +139 -0
  119. package/esm2020/lib/_internal/objects/product-summary.mjs +538 -0
  120. package/esm2020/lib/_internal/objects/product.mjs +302 -0
  121. package/esm2020/lib/_internal/objects/purchase.mjs +524 -0
  122. package/esm2020/lib/_internal/objects/recurring-invoice.mjs +324 -0
  123. package/esm2020/lib/_internal/objects/refund.mjs +181 -0
  124. package/esm2020/lib/_internal/objects/retail-customer-configuration.mjs +159 -0
  125. package/esm2020/lib/_internal/objects/sales-credit-note.mjs +211 -0
  126. package/esm2020/lib/_internal/objects/sales-invoice.mjs +300 -0
  127. package/esm2020/lib/_internal/objects/sort-direction.mjs +7 -0
  128. package/esm2020/lib/_internal/objects/subscribe-validation.mjs +31 -0
  129. package/esm2020/lib/_internal/objects/subscription.mjs +555 -0
  130. package/esm2020/lib/_internal/objects/tax-rate.mjs +342 -0
  131. package/esm2020/lib/_internal/payment-method.api.service.mjs +49 -0
  132. package/esm2020/lib/_internal/payment.api.service.mjs +102 -0
  133. package/esm2020/lib/_internal/pricing.api.service.mjs +81 -0
  134. package/esm2020/lib/_internal/product-summary.api.service.mjs +46 -0
  135. package/esm2020/lib/_internal/product.api.service.mjs +47 -0
  136. package/esm2020/lib/_internal/purchase.api.service.mjs +59 -0
  137. package/esm2020/lib/_internal/recurring-invoice.api.service.mjs +60 -0
  138. package/esm2020/lib/_internal/refund.api.service.mjs +45 -0
  139. package/esm2020/lib/_internal/retail-customer-configuration.api.service.mjs +45 -0
  140. package/esm2020/lib/_internal/sales-credit-note.api.service.mjs +45 -0
  141. package/esm2020/lib/_internal/sales-invoice.api.service.mjs +50 -0
  142. package/esm2020/lib/_internal/tax.api.service.mjs +63 -0
  143. package/esm2020/lib/_internal/vendor.api.service.mjs +46 -0
  144. package/esm2020/lib/index.mjs +3 -0
  145. package/esm2020/public_api.mjs +2 -0
  146. package/esm2020/vendasta-billing.mjs +5 -0
  147. package/fesm2015/{vendasta-billing.js → vendasta-billing.mjs} +717 -5236
  148. package/fesm2015/vendasta-billing.mjs.map +1 -0
  149. package/fesm2020/vendasta-billing.mjs +14454 -0
  150. package/fesm2020/vendasta-billing.mjs.map +1 -0
  151. package/lib/_generated/host.service.d.ts +5 -9
  152. package/lib/_internal/bank-reconciliation.api.service.d.ts +4 -0
  153. package/lib/_internal/billing.api.service.d.ts +4 -0
  154. package/lib/_internal/bundle.api.service.d.ts +4 -0
  155. package/lib/_internal/contract-document.api.service.d.ts +4 -0
  156. package/lib/_internal/contract.api.service.d.ts +4 -0
  157. package/lib/_internal/credit.api.service.d.ts +4 -0
  158. package/lib/_internal/discount.api.service.d.ts +4 -0
  159. package/lib/_internal/interfaces/api.interface.d.ts +8 -1
  160. package/lib/_internal/interfaces/index.d.ts +2 -2
  161. package/lib/_internal/interfaces/product-pricing.interface.d.ts +5 -0
  162. package/lib/_internal/interfaces/recurring-invoice.interface.d.ts +2 -1
  163. package/lib/_internal/invoice-template.api.service.d.ts +4 -0
  164. package/lib/_internal/invoice.api.service.d.ts +4 -0
  165. package/lib/_internal/merchant.api.service.d.ts +4 -0
  166. package/lib/_internal/objects/api.d.ts +14 -1
  167. package/lib/_internal/objects/index.d.ts +2 -2
  168. package/lib/_internal/objects/product-pricing.d.ts +8 -0
  169. package/lib/_internal/objects/recurring-invoice.d.ts +2 -1
  170. package/lib/_internal/payment-method.api.service.d.ts +4 -0
  171. package/lib/_internal/payment.api.service.d.ts +4 -0
  172. package/lib/_internal/pricing.api.service.d.ts +7 -2
  173. package/lib/_internal/product-summary.api.service.d.ts +4 -0
  174. package/lib/_internal/product.api.service.d.ts +4 -0
  175. package/lib/_internal/purchase.api.service.d.ts +4 -0
  176. package/lib/_internal/recurring-invoice.api.service.d.ts +4 -0
  177. package/lib/_internal/refund.api.service.d.ts +4 -0
  178. package/lib/_internal/retail-customer-configuration.api.service.d.ts +4 -0
  179. package/lib/_internal/sales-credit-note.api.service.d.ts +4 -0
  180. package/lib/_internal/sales-invoice.api.service.d.ts +4 -0
  181. package/lib/_internal/tax.api.service.d.ts +4 -0
  182. package/lib/_internal/vendor.api.service.d.ts +4 -0
  183. package/lib/index.d.ts +2 -37
  184. package/package.json +26 -15
  185. package/src/README.md +1 -0
  186. package/vendasta-billing.d.ts +1 -0
  187. package/bundles/vendasta-billing.umd.js +0 -19912
  188. package/bundles/vendasta-billing.umd.js.map +0 -1
  189. package/bundles/vendasta-billing.umd.min.js +0 -16
  190. package/bundles/vendasta-billing.umd.min.js.map +0 -1
  191. package/esm2015/lib/_generated/host.service.js +0 -65
  192. package/esm2015/lib/_generated/index.js +0 -2
  193. package/esm2015/lib/_internal/bank-reconciliation.api.service.js +0 -47
  194. package/esm2015/lib/_internal/billing.api.service.js +0 -217
  195. package/esm2015/lib/_internal/bundle.api.service.js +0 -51
  196. package/esm2015/lib/_internal/contract-document.api.service.js +0 -46
  197. package/esm2015/lib/_internal/contract.api.service.js +0 -56
  198. package/esm2015/lib/_internal/credit.api.service.js +0 -46
  199. package/esm2015/lib/_internal/discount.api.service.js +0 -54
  200. package/esm2015/lib/_internal/enums/applied-discount.enum.js +0 -14
  201. package/esm2015/lib/_internal/enums/card.enum.js +0 -17
  202. package/esm2015/lib/_internal/enums/contract.enum.js +0 -14
  203. package/esm2015/lib/_internal/enums/currency.enum.js +0 -35
  204. package/esm2015/lib/_internal/enums/frequency.enum.js +0 -14
  205. package/esm2015/lib/_internal/enums/index.js +0 -31
  206. package/esm2015/lib/_internal/enums/invoice.enum.js +0 -18
  207. package/esm2015/lib/_internal/enums/merchant-report.enum.js +0 -13
  208. package/esm2015/lib/_internal/enums/month.enum.js +0 -23
  209. package/esm2015/lib/_internal/enums/payment-card.enum.js +0 -24
  210. package/esm2015/lib/_internal/enums/payment-processor.enum.js +0 -13
  211. package/esm2015/lib/_internal/enums/payout.enum.js +0 -22
  212. package/esm2015/lib/_internal/enums/pricing-plan.enum.js +0 -22
  213. package/esm2015/lib/_internal/enums/product.enum.js +0 -17
  214. package/esm2015/lib/_internal/enums/purchase.enum.js +0 -27
  215. package/esm2015/lib/_internal/enums/recurring-invoice.enum.js +0 -29
  216. package/esm2015/lib/_internal/enums/refund.enum.js +0 -25
  217. package/esm2015/lib/_internal/enums/sales-credit-note.enum.js +0 -14
  218. package/esm2015/lib/_internal/enums/sort-direction.enum.js +0 -12
  219. package/esm2015/lib/_internal/enums/subscription.enum.js +0 -12
  220. package/esm2015/lib/_internal/index.js +0 -33
  221. package/esm2015/lib/_internal/interfaces/api.interface.js +0 -2
  222. package/esm2015/lib/_internal/interfaces/applied-bundle.interface.js +0 -8
  223. package/esm2015/lib/_internal/interfaces/applied-discount.interface.js +0 -8
  224. package/esm2015/lib/_internal/interfaces/applied-tax-rate.interface.js +0 -8
  225. package/esm2015/lib/_internal/interfaces/balance.interface.js +0 -8
  226. package/esm2015/lib/_internal/interfaces/billable-item.interface.js +0 -2
  227. package/esm2015/lib/_internal/interfaces/bundle.interface.js +0 -2
  228. package/esm2015/lib/_internal/interfaces/card.interface.js +0 -8
  229. package/esm2015/lib/_internal/interfaces/commitment.interface.js +0 -8
  230. package/esm2015/lib/_internal/interfaces/common.interface.js +0 -8
  231. package/esm2015/lib/_internal/interfaces/contract-document.interface.js +0 -2
  232. package/esm2015/lib/_internal/interfaces/contract.interface.js +0 -2
  233. package/esm2015/lib/_internal/interfaces/credit.interface.js +0 -8
  234. package/esm2015/lib/_internal/interfaces/currency.interface.js +0 -8
  235. package/esm2015/lib/_internal/interfaces/customer-summary.interface.js +0 -8
  236. package/esm2015/lib/_internal/interfaces/date-range.interface.js +0 -8
  237. package/esm2015/lib/_internal/interfaces/discount.interface.js +0 -2
  238. package/esm2015/lib/_internal/interfaces/external-account.interface.js +0 -8
  239. package/esm2015/lib/_internal/interfaces/field-mask.interface.js +0 -8
  240. package/esm2015/lib/_internal/interfaces/frequency.interface.js +0 -8
  241. package/esm2015/lib/_internal/interfaces/index.js +0 -2
  242. package/esm2015/lib/_internal/interfaces/invoice-template.interface.js +0 -2
  243. package/esm2015/lib/_internal/interfaces/invoice.interface.js +0 -2
  244. package/esm2015/lib/_internal/interfaces/merchant-report.interface.js +0 -2
  245. package/esm2015/lib/_internal/interfaces/merchant.interface.js +0 -2
  246. package/esm2015/lib/_internal/interfaces/metered-component.interface.js +0 -8
  247. package/esm2015/lib/_internal/interfaces/month.interface.js +0 -8
  248. package/esm2015/lib/_internal/interfaces/payment-card.interface.js +0 -8
  249. package/esm2015/lib/_internal/interfaces/payment-processor.interface.js +0 -8
  250. package/esm2015/lib/_internal/interfaces/payment.interface.js +0 -2
  251. package/esm2015/lib/_internal/interfaces/payout.interface.js +0 -2
  252. package/esm2015/lib/_internal/interfaces/pricing-plan-product.interface.js +0 -2
  253. package/esm2015/lib/_internal/interfaces/pricing-plan.interface.js +0 -2
  254. package/esm2015/lib/_internal/interfaces/product-pricing.interface.js +0 -2
  255. package/esm2015/lib/_internal/interfaces/product-summary.interface.js +0 -2
  256. package/esm2015/lib/_internal/interfaces/product.interface.js +0 -2
  257. package/esm2015/lib/_internal/interfaces/purchase.interface.js +0 -2
  258. package/esm2015/lib/_internal/interfaces/recurring-invoice.interface.js +0 -2
  259. package/esm2015/lib/_internal/interfaces/refund.interface.js +0 -8
  260. package/esm2015/lib/_internal/interfaces/retail-customer-configuration.interface.js +0 -8
  261. package/esm2015/lib/_internal/interfaces/sales-credit-note.interface.js +0 -2
  262. package/esm2015/lib/_internal/interfaces/sales-invoice.interface.js +0 -2
  263. package/esm2015/lib/_internal/interfaces/sort-direction.interface.js +0 -8
  264. package/esm2015/lib/_internal/interfaces/subscribe-validation.interface.js +0 -8
  265. package/esm2015/lib/_internal/interfaces/subscription.interface.js +0 -2
  266. package/esm2015/lib/_internal/interfaces/tax-rate.interface.js +0 -2
  267. package/esm2015/lib/_internal/invoice-template.api.service.js +0 -86
  268. package/esm2015/lib/_internal/invoice.api.service.js +0 -117
  269. package/esm2015/lib/_internal/merchant.api.service.js +0 -160
  270. package/esm2015/lib/_internal/objects/api.js +0 -841
  271. package/esm2015/lib/_internal/objects/applied-bundle.js +0 -77
  272. package/esm2015/lib/_internal/objects/applied-discount.js +0 -46
  273. package/esm2015/lib/_internal/objects/applied-tax-rate.js +0 -39
  274. package/esm2015/lib/_internal/objects/balance.js +0 -45
  275. package/esm2015/lib/_internal/objects/billable-item.js +0 -562
  276. package/esm2015/lib/_internal/objects/bundle.js +0 -390
  277. package/esm2015/lib/_internal/objects/card.js +0 -7
  278. package/esm2015/lib/_internal/objects/commitment.js +0 -36
  279. package/esm2015/lib/_internal/objects/common.js +0 -56
  280. package/esm2015/lib/_internal/objects/contract-document.js +0 -141
  281. package/esm2015/lib/_internal/objects/contract.js +0 -474
  282. package/esm2015/lib/_internal/objects/credit.js +0 -114
  283. package/esm2015/lib/_internal/objects/currency.js +0 -7
  284. package/esm2015/lib/_internal/objects/customer-summary.js +0 -104
  285. package/esm2015/lib/_internal/objects/date-range.js +0 -36
  286. package/esm2015/lib/_internal/objects/discount.js +0 -299
  287. package/esm2015/lib/_internal/objects/external-account.js +0 -160
  288. package/esm2015/lib/_internal/objects/field-mask.js +0 -27
  289. package/esm2015/lib/_internal/objects/frequency.js +0 -7
  290. package/esm2015/lib/_internal/objects/index.js +0 -46
  291. package/esm2015/lib/_internal/objects/invoice-template.js +0 -707
  292. package/esm2015/lib/_internal/objects/invoice.js +0 -1117
  293. package/esm2015/lib/_internal/objects/merchant-report.js +0 -108
  294. package/esm2015/lib/_internal/objects/merchant.js +0 -991
  295. package/esm2015/lib/_internal/objects/metered-component.js +0 -97
  296. package/esm2015/lib/_internal/objects/month.js +0 -7
  297. package/esm2015/lib/_internal/objects/payment-card.js +0 -211
  298. package/esm2015/lib/_internal/objects/payment-processor.js +0 -7
  299. package/esm2015/lib/_internal/objects/payment.js +0 -1219
  300. package/esm2015/lib/_internal/objects/payout.js +0 -258
  301. package/esm2015/lib/_internal/objects/pricing-plan-product.js +0 -565
  302. package/esm2015/lib/_internal/objects/pricing-plan.js +0 -290
  303. package/esm2015/lib/_internal/objects/product-pricing.js +0 -107
  304. package/esm2015/lib/_internal/objects/product-summary.js +0 -538
  305. package/esm2015/lib/_internal/objects/product.js +0 -302
  306. package/esm2015/lib/_internal/objects/purchase.js +0 -524
  307. package/esm2015/lib/_internal/objects/recurring-invoice.js +0 -324
  308. package/esm2015/lib/_internal/objects/refund.js +0 -181
  309. package/esm2015/lib/_internal/objects/retail-customer-configuration.js +0 -159
  310. package/esm2015/lib/_internal/objects/sales-credit-note.js +0 -211
  311. package/esm2015/lib/_internal/objects/sales-invoice.js +0 -300
  312. package/esm2015/lib/_internal/objects/sort-direction.js +0 -7
  313. package/esm2015/lib/_internal/objects/subscribe-validation.js +0 -31
  314. package/esm2015/lib/_internal/objects/subscription.js +0 -555
  315. package/esm2015/lib/_internal/objects/tax-rate.js +0 -342
  316. package/esm2015/lib/_internal/payment-method.api.service.js +0 -50
  317. package/esm2015/lib/_internal/payment.api.service.js +0 -103
  318. package/esm2015/lib/_internal/pricing.api.service.js +0 -77
  319. package/esm2015/lib/_internal/product-summary.api.service.js +0 -47
  320. package/esm2015/lib/_internal/product.api.service.js +0 -48
  321. package/esm2015/lib/_internal/purchase.api.service.js +0 -60
  322. package/esm2015/lib/_internal/recurring-invoice.api.service.js +0 -61
  323. package/esm2015/lib/_internal/refund.api.service.js +0 -46
  324. package/esm2015/lib/_internal/retail-customer-configuration.api.service.js +0 -46
  325. package/esm2015/lib/_internal/sales-credit-note.api.service.js +0 -46
  326. package/esm2015/lib/_internal/sales-invoice.api.service.js +0 -51
  327. package/esm2015/lib/_internal/tax.api.service.js +0 -64
  328. package/esm2015/lib/_internal/vendor.api.service.js +0 -47
  329. package/esm2015/lib/applied_bundle/applied_bundle.js +0 -12
  330. package/esm2015/lib/applied_bundle/index.js +0 -2
  331. package/esm2015/lib/applied_discount/applied_discount.js +0 -48
  332. package/esm2015/lib/applied_discount/index.js +0 -2
  333. package/esm2015/lib/bank_account/bank-account.service.js +0 -38
  334. package/esm2015/lib/bank_account/bank_account.js +0 -13
  335. package/esm2015/lib/bank_account/index.js +0 -3
  336. package/esm2015/lib/bank_reconciliation/bank-reconciliation.service.js +0 -54
  337. package/esm2015/lib/bank_reconciliation/index.js +0 -3
  338. package/esm2015/lib/bank_reconciliation/payout.js +0 -53
  339. package/esm2015/lib/billable-item/billable-item.js +0 -40
  340. package/esm2015/lib/billable-item/billable-item.service.js +0 -31
  341. package/esm2015/lib/billable-item/index.js +0 -2
  342. package/esm2015/lib/billing-host.service.js +0 -41
  343. package/esm2015/lib/billing.service.js +0 -376
  344. package/esm2015/lib/bundle/bundle.js +0 -37
  345. package/esm2015/lib/bundle/bundle.service.js +0 -56
  346. package/esm2015/lib/bundle/index.js +0 -2
  347. package/esm2015/lib/contract/contract.js +0 -21
  348. package/esm2015/lib/contract/contract.service.js +0 -39
  349. package/esm2015/lib/contract/dimension.js +0 -21
  350. package/esm2015/lib/contract/index.js +0 -5
  351. package/esm2015/lib/contract/mutations.js +0 -11
  352. package/esm2015/lib/contract-document/contract-document.js +0 -9
  353. package/esm2015/lib/contract-document/contract-document.service.js +0 -68
  354. package/esm2015/lib/contract-document/index.js +0 -2
  355. package/esm2015/lib/contract-document/list-contract-document.js +0 -2
  356. package/esm2015/lib/core/index.js +0 -3
  357. package/esm2015/lib/core/paged-response.js +0 -8
  358. package/esm2015/lib/core/sort-direction.js +0 -6
  359. package/esm2015/lib/credit/credit.js +0 -8
  360. package/esm2015/lib/credit/credit.service.js +0 -33
  361. package/esm2015/lib/credit/index.js +0 -2
  362. package/esm2015/lib/customer_summary/customer-summary.js +0 -15
  363. package/esm2015/lib/discount/discount.js +0 -18
  364. package/esm2015/lib/discount/discount.service.js +0 -73
  365. package/esm2015/lib/discount/discount_type.js +0 -32
  366. package/esm2015/lib/discount/index.js +0 -3
  367. package/esm2015/lib/discount/list-discount.js +0 -2
  368. package/esm2015/lib/http-shared/error-handlers.js +0 -20
  369. package/esm2015/lib/index.js +0 -38
  370. package/esm2015/lib/invoice/index.js +0 -3
  371. package/esm2015/lib/invoice/invoice.js +0 -198
  372. package/esm2015/lib/invoice/invoice.service.js +0 -254
  373. package/esm2015/lib/invoice/list-invoice.js +0 -2
  374. package/esm2015/lib/invoice-template/index.js +0 -2
  375. package/esm2015/lib/invoice-template/invoice-template.js +0 -38
  376. package/esm2015/lib/invoice-template/invoice-template.service.js +0 -78
  377. package/esm2015/lib/merchant/balance.js +0 -2
  378. package/esm2015/lib/merchant/index.js +0 -5
  379. package/esm2015/lib/merchant/merchant.interface.js +0 -2
  380. package/esm2015/lib/merchant/merchant.js +0 -20
  381. package/esm2015/lib/merchant/merchant.service.js +0 -212
  382. package/esm2015/lib/merchant/payout-summary.js +0 -32
  383. package/esm2015/lib/merchant/retail-configuration.js +0 -57
  384. package/esm2015/lib/merchant-report/index.js +0 -2
  385. package/esm2015/lib/merchant-report/merchant-report-status.js +0 -2
  386. package/esm2015/lib/merchant-report/merchant-report.interfaces.js +0 -2
  387. package/esm2015/lib/merchant-report/merchant-report.js +0 -2
  388. package/esm2015/lib/merchant-report/merchant-report.service.js +0 -38
  389. package/esm2015/lib/payment/dispute.js +0 -92
  390. package/esm2015/lib/payment/index.js +0 -10
  391. package/esm2015/lib/payment/payment-allocation-type.js +0 -18
  392. package/esm2015/lib/payment/payment-source.js +0 -18
  393. package/esm2015/lib/payment/payment-status.js +0 -17
  394. package/esm2015/lib/payment/payment.js +0 -292
  395. package/esm2015/lib/payment/payment.service.js +0 -138
  396. package/esm2015/lib/payment/retail-payment.js +0 -70
  397. package/esm2015/lib/payment/retail-status.js +0 -50
  398. package/esm2015/lib/payment-card/index.js +0 -3
  399. package/esm2015/lib/payment-card/payment-card.js +0 -60
  400. package/esm2015/lib/payment-card/payment-card.service.js +0 -45
  401. package/esm2015/lib/payment-method/index.js +0 -2
  402. package/esm2015/lib/payment-method/payment-method.service.js +0 -43
  403. package/esm2015/lib/pricing/billing-strategy.js +0 -39
  404. package/esm2015/lib/pricing/commitment.js +0 -7
  405. package/esm2015/lib/pricing/currency.js +0 -86
  406. package/esm2015/lib/pricing/frequency.js +0 -42
  407. package/esm2015/lib/pricing/index.js +0 -12
  408. package/esm2015/lib/pricing/list-pricing-plan-product-filter.js +0 -2
  409. package/esm2015/lib/pricing/pricing-plan-product.js +0 -53
  410. package/esm2015/lib/pricing/pricing-plan.js +0 -14
  411. package/esm2015/lib/pricing/pricing-plan.service.js +0 -287
  412. package/esm2015/lib/pricing/product-pricing-rules.js +0 -10
  413. package/esm2015/lib/pricing/product-pricing-type.js +0 -31
  414. package/esm2015/lib/pricing/product-pricing.js +0 -44
  415. package/esm2015/lib/pricing/wholesale-pricing.service.js +0 -61
  416. package/esm2015/lib/product/index.js +0 -3
  417. package/esm2015/lib/product/list-products.js +0 -30
  418. package/esm2015/lib/product/product.js +0 -10
  419. package/esm2015/lib/product-summary/index.js +0 -3
  420. package/esm2015/lib/product-summary/product-summary.service.js +0 -42
  421. package/esm2015/lib/product-summary/subscription-retention.js +0 -19
  422. package/esm2015/lib/purchase/index.js +0 -4
  423. package/esm2015/lib/purchase/list-purchases.js +0 -17
  424. package/esm2015/lib/purchase/purchase.js +0 -79
  425. package/esm2015/lib/purchase/purchase.service.js +0 -31
  426. package/esm2015/lib/purchase/purchase_status.js +0 -26
  427. package/esm2015/lib/recurring_invoice/collection-method.js +0 -31
  428. package/esm2015/lib/recurring_invoice/index.js +0 -6
  429. package/esm2015/lib/recurring_invoice/interval.js +0 -42
  430. package/esm2015/lib/recurring_invoice/payment-processor.js +0 -32
  431. package/esm2015/lib/recurring_invoice/recurring-invoice.js +0 -123
  432. package/esm2015/lib/recurring_invoice/recurring-invoice.service.js +0 -64
  433. package/esm2015/lib/recurring_invoice/status.js +0 -37
  434. package/esm2015/lib/refund/index.js +0 -3
  435. package/esm2015/lib/refund/refund.js +0 -81
  436. package/esm2015/lib/refund/refund.service.js +0 -53
  437. package/esm2015/lib/retail-customer-configuration/index.js +0 -3
  438. package/esm2015/lib/retail-customer-configuration/retail-customer-configuration.js +0 -44
  439. package/esm2015/lib/retail-customer-configuration/retail-customer-configuration.service.js +0 -39
  440. package/esm2015/lib/revenue/index.js +0 -2
  441. package/esm2015/lib/revenue/revenue.interfaces.js +0 -2
  442. package/esm2015/lib/revenue/revenue.service.js +0 -34
  443. package/esm2015/lib/sales-credit-note/index.js +0 -3
  444. package/esm2015/lib/sales-credit-note/sales-credit-note.js +0 -53
  445. package/esm2015/lib/sales-credit-note/sales-credit-note.service.js +0 -72
  446. package/esm2015/lib/sales-invoice/index.js +0 -3
  447. package/esm2015/lib/sales-invoice/sales-invoice.js +0 -87
  448. package/esm2015/lib/sales-invoice/sales-invoice.service.js +0 -77
  449. package/esm2015/lib/sku.js +0 -4
  450. package/esm2015/lib/stripe-file/file.js +0 -2
  451. package/esm2015/lib/stripe-file/index.js +0 -3
  452. package/esm2015/lib/stripe-file/purpose.js +0 -13
  453. package/esm2015/lib/stripe-file/stripe-file.service.js +0 -35
  454. package/esm2015/lib/subscription/can-create-subscriptions-item.js +0 -2
  455. package/esm2015/lib/subscription/index.js +0 -2
  456. package/esm2015/lib/tax-rate/index.js +0 -2
  457. package/esm2015/lib/tax-rate/tax-rate.js +0 -13
  458. package/esm2015/lib/tax-rate/tax-rate.service.js +0 -86
  459. package/esm2015/public_api.js +0 -2
  460. package/esm2015/vendasta-billing.js +0 -5
  461. package/fesm2015/vendasta-billing.js.map +0 -1
  462. package/lib/applied_bundle/applied_bundle.d.ts +0 -15
  463. package/lib/applied_bundle/index.d.ts +0 -1
  464. package/lib/applied_discount/applied_discount.d.ts +0 -26
  465. package/lib/applied_discount/index.d.ts +0 -1
  466. package/lib/bank_account/bank-account.service.d.ts +0 -11
  467. package/lib/bank_account/bank_account.d.ts +0 -12
  468. package/lib/bank_account/index.d.ts +0 -3
  469. package/lib/bank_reconciliation/bank-reconciliation.service.d.ts +0 -10
  470. package/lib/bank_reconciliation/index.d.ts +0 -2
  471. package/lib/bank_reconciliation/payout.d.ts +0 -37
  472. package/lib/billable-item/billable-item.d.ts +0 -40
  473. package/lib/billable-item/billable-item.service.d.ts +0 -10
  474. package/lib/billable-item/index.d.ts +0 -2
  475. package/lib/billing-host.service.d.ts +0 -11
  476. package/lib/billing.service.d.ts +0 -88
  477. package/lib/bundle/bundle.d.ts +0 -26
  478. package/lib/bundle/bundle.service.d.ts +0 -14
  479. package/lib/bundle/index.d.ts +0 -2
  480. package/lib/contract/contract.d.ts +0 -20
  481. package/lib/contract/contract.service.d.ts +0 -23
  482. package/lib/contract/dimension.d.ts +0 -11
  483. package/lib/contract/index.d.ts +0 -5
  484. package/lib/contract/mutations.d.ts +0 -11
  485. package/lib/contract-document/contract-document.d.ts +0 -8
  486. package/lib/contract-document/contract-document.service.d.ts +0 -17
  487. package/lib/contract-document/index.d.ts +0 -3
  488. package/lib/contract-document/list-contract-document.d.ts +0 -3
  489. package/lib/core/index.d.ts +0 -2
  490. package/lib/core/paged-response.d.ts +0 -6
  491. package/lib/core/sort-direction.d.ts +0 -4
  492. package/lib/credit/credit.d.ts +0 -7
  493. package/lib/credit/credit.service.d.ts +0 -9
  494. package/lib/credit/index.d.ts +0 -2
  495. package/lib/customer_summary/customer-summary.d.ts +0 -9
  496. package/lib/discount/discount.d.ts +0 -17
  497. package/lib/discount/discount.service.d.ts +0 -15
  498. package/lib/discount/discount_type.d.ts +0 -9
  499. package/lib/discount/index.d.ts +0 -4
  500. package/lib/discount/list-discount.d.ts +0 -5
  501. package/lib/http-shared/error-handlers.d.ts +0 -4
  502. package/lib/invoice/index.d.ts +0 -3
  503. package/lib/invoice/invoice.d.ts +0 -86
  504. package/lib/invoice/invoice.service.d.ts +0 -40
  505. package/lib/invoice/list-invoice.d.ts +0 -15
  506. package/lib/invoice-template/index.d.ts +0 -2
  507. package/lib/invoice-template/invoice-template.d.ts +0 -35
  508. package/lib/invoice-template/invoice-template.service.d.ts +0 -14
  509. package/lib/merchant/balance.d.ts +0 -5
  510. package/lib/merchant/index.d.ts +0 -7
  511. package/lib/merchant/merchant.d.ts +0 -19
  512. package/lib/merchant/merchant.interface.d.ts +0 -3
  513. package/lib/merchant/merchant.service.d.ts +0 -59
  514. package/lib/merchant/payout-summary.d.ts +0 -19
  515. package/lib/merchant/retail-configuration.d.ts +0 -24
  516. package/lib/merchant-report/index.d.ts +0 -4
  517. package/lib/merchant-report/merchant-report-status.d.ts +0 -1
  518. package/lib/merchant-report/merchant-report.d.ts +0 -8
  519. package/lib/merchant-report/merchant-report.interfaces.d.ts +0 -5
  520. package/lib/merchant-report/merchant-report.service.d.ts +0 -12
  521. package/lib/payment/dispute.d.ts +0 -61
  522. package/lib/payment/index.d.ts +0 -9
  523. package/lib/payment/payment-allocation-type.d.ts +0 -7
  524. package/lib/payment/payment-source.d.ts +0 -7
  525. package/lib/payment/payment-status.d.ts +0 -7
  526. package/lib/payment/payment.d.ts +0 -42
  527. package/lib/payment/payment.service.d.ts +0 -24
  528. package/lib/payment/retail-payment.d.ts +0 -33
  529. package/lib/payment/retail-status.d.ts +0 -24
  530. package/lib/payment-card/index.d.ts +0 -2
  531. package/lib/payment-card/payment-card.d.ts +0 -41
  532. package/lib/payment-card/payment-card.service.d.ts +0 -13
  533. package/lib/payment-method/index.d.ts +0 -1
  534. package/lib/payment-method/payment-method.service.d.ts +0 -10
  535. package/lib/pricing/billing-strategy.d.ts +0 -11
  536. package/lib/pricing/commitment.d.ts +0 -6
  537. package/lib/pricing/currency.d.ts +0 -29
  538. package/lib/pricing/frequency.d.ts +0 -10
  539. package/lib/pricing/index.d.ts +0 -11
  540. package/lib/pricing/list-pricing-plan-product-filter.d.ts +0 -4
  541. package/lib/pricing/pricing-plan-product.d.ts +0 -34
  542. package/lib/pricing/pricing-plan.d.ts +0 -13
  543. package/lib/pricing/pricing-plan.service.d.ts +0 -17
  544. package/lib/pricing/product-pricing-rules.d.ts +0 -7
  545. package/lib/pricing/product-pricing-type.d.ts +0 -9
  546. package/lib/pricing/product-pricing.d.ts +0 -37
  547. package/lib/pricing/wholesale-pricing.service.d.ts +0 -19
  548. package/lib/product/index.d.ts +0 -2
  549. package/lib/product/list-products.d.ts +0 -16
  550. package/lib/product/product.d.ts +0 -9
  551. package/lib/product-summary/index.d.ts +0 -2
  552. package/lib/product-summary/product-summary.service.d.ts +0 -10
  553. package/lib/product-summary/subscription-retention.d.ts +0 -20
  554. package/lib/purchase/index.d.ts +0 -4
  555. package/lib/purchase/list-purchases.d.ts +0 -27
  556. package/lib/purchase/purchase.d.ts +0 -56
  557. package/lib/purchase/purchase.service.d.ts +0 -10
  558. package/lib/purchase/purchase_status.d.ts +0 -10
  559. package/lib/recurring_invoice/collection-method.d.ts +0 -4
  560. package/lib/recurring_invoice/index.d.ts +0 -5
  561. package/lib/recurring_invoice/interval.d.ts +0 -10
  562. package/lib/recurring_invoice/payment-processor.d.ts +0 -8
  563. package/lib/recurring_invoice/recurring-invoice.d.ts +0 -62
  564. package/lib/recurring_invoice/recurring-invoice.service.d.ts +0 -14
  565. package/lib/recurring_invoice/status.d.ts +0 -9
  566. package/lib/refund/index.d.ts +0 -2
  567. package/lib/refund/refund.d.ts +0 -36
  568. package/lib/refund/refund.service.d.ts +0 -11
  569. package/lib/retail-customer-configuration/index.d.ts +0 -2
  570. package/lib/retail-customer-configuration/retail-customer-configuration.d.ts +0 -20
  571. package/lib/retail-customer-configuration/retail-customer-configuration.service.d.ts +0 -9
  572. package/lib/revenue/index.d.ts +0 -2
  573. package/lib/revenue/revenue.interfaces.d.ts +0 -3
  574. package/lib/revenue/revenue.service.d.ts +0 -11
  575. package/lib/sales-credit-note/index.d.ts +0 -2
  576. package/lib/sales-credit-note/sales-credit-note.d.ts +0 -30
  577. package/lib/sales-credit-note/sales-credit-note.service.d.ts +0 -16
  578. package/lib/sales-invoice/index.d.ts +0 -2
  579. package/lib/sales-invoice/sales-invoice.d.ts +0 -42
  580. package/lib/sales-invoice/sales-invoice.service.d.ts +0 -16
  581. package/lib/sku.d.ts +0 -3
  582. package/lib/stripe-file/file.d.ts +0 -6
  583. package/lib/stripe-file/index.d.ts +0 -3
  584. package/lib/stripe-file/purpose.d.ts +0 -11
  585. package/lib/stripe-file/stripe-file.service.d.ts +0 -12
  586. package/lib/subscription/can-create-subscriptions-item.d.ts +0 -6
  587. package/lib/subscription/index.d.ts +0 -1
  588. package/lib/tax-rate/index.d.ts +0 -2
  589. package/lib/tax-rate/tax-rate.d.ts +0 -20
  590. package/lib/tax-rate/tax-rate.service.d.ts +0 -15
  591. package/vendasta-billing.metadata.json +0 -1
@@ -0,0 +1,524 @@
1
+ import { AppliedDiscount } from './applied-discount';
2
+ import { AppliedTaxRate } from './applied-tax-rate';
3
+ import { PagedRequestOptions, PagedResponseMetadata } from './common';
4
+ import * as e from '../enums';
5
+ export function enumStringToValue(enumRef, value) {
6
+ if (typeof value === 'number') {
7
+ return value;
8
+ }
9
+ return enumRef[value];
10
+ }
11
+ export class AppliedCredit {
12
+ constructor(kwargs) {
13
+ if (!kwargs) {
14
+ return;
15
+ }
16
+ Object.assign(this, kwargs);
17
+ }
18
+ static fromProto(proto) {
19
+ let m = new AppliedCredit();
20
+ m = Object.assign(m, proto);
21
+ if (proto.appliedAmount) {
22
+ m.appliedAmount = parseInt(proto.appliedAmount, 10);
23
+ }
24
+ if (proto.referenceType) {
25
+ m.referenceType = enumStringToValue(e.CreditType, proto.referenceType);
26
+ }
27
+ return m;
28
+ }
29
+ toApiJson() {
30
+ const toReturn = {};
31
+ if (typeof this.appliedAmount !== 'undefined') {
32
+ toReturn['appliedAmount'] = this.appliedAmount;
33
+ }
34
+ if (typeof this.referenceId !== 'undefined') {
35
+ toReturn['referenceId'] = this.referenceId;
36
+ }
37
+ if (typeof this.referenceType !== 'undefined') {
38
+ toReturn['referenceType'] = this.referenceType;
39
+ }
40
+ return toReturn;
41
+ }
42
+ }
43
+ export class ListPurchaseRequestListPurchaseBillingStrategyFilter {
44
+ constructor(kwargs) {
45
+ if (!kwargs) {
46
+ return;
47
+ }
48
+ Object.assign(this, kwargs);
49
+ }
50
+ static fromProto(proto) {
51
+ let m = new ListPurchaseRequestListPurchaseBillingStrategyFilter();
52
+ m = Object.assign(m, proto);
53
+ if (proto.billingStrategy) {
54
+ m.billingStrategy = proto.billingStrategy.map((v) => enumStringToValue(e.BillingStrategy, v));
55
+ }
56
+ return m;
57
+ }
58
+ toApiJson() {
59
+ const toReturn = {};
60
+ if (typeof this.billingStrategy !== 'undefined') {
61
+ toReturn['billingStrategy'] = this.billingStrategy;
62
+ }
63
+ return toReturn;
64
+ }
65
+ }
66
+ export class ListPurchaseRequestListPurchaseFilters {
67
+ constructor(kwargs) {
68
+ if (!kwargs) {
69
+ return;
70
+ }
71
+ Object.assign(this, kwargs);
72
+ }
73
+ static fromProto(proto) {
74
+ let m = new ListPurchaseRequestListPurchaseFilters();
75
+ m = Object.assign(m, proto);
76
+ if (proto.start) {
77
+ m.start = new Date(proto.start);
78
+ }
79
+ if (proto.end) {
80
+ m.end = new Date(proto.end);
81
+ }
82
+ if (proto.billingStrategyFilter) {
83
+ m.billingStrategyFilter = ListPurchaseRequestListPurchaseBillingStrategyFilter.fromProto(proto.billingStrategyFilter);
84
+ }
85
+ if (proto.state) {
86
+ m.state = enumStringToValue(e.ListPurchaseRequestState, proto.state);
87
+ }
88
+ if (proto.minPrice) {
89
+ m.minPrice = parseInt(proto.minPrice, 10);
90
+ }
91
+ if (proto.status) {
92
+ m.status = enumStringToValue(e.PurchaseStatus, proto.status);
93
+ }
94
+ return m;
95
+ }
96
+ toApiJson() {
97
+ const toReturn = {};
98
+ if (typeof this.merchantId !== 'undefined') {
99
+ toReturn['merchantId'] = this.merchantId;
100
+ }
101
+ if (typeof this.purchaseId !== 'undefined') {
102
+ toReturn['purchaseId'] = this.purchaseId;
103
+ }
104
+ if (typeof this.start !== 'undefined' && this.start !== null) {
105
+ toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;
106
+ }
107
+ if (typeof this.end !== 'undefined' && this.end !== null) {
108
+ toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;
109
+ }
110
+ if (typeof this.billingStrategyFilter !== 'undefined' && this.billingStrategyFilter !== null) {
111
+ toReturn['billingStrategyFilter'] = 'toApiJson' in this.billingStrategyFilter ? this.billingStrategyFilter.toApiJson() : this.billingStrategyFilter;
112
+ }
113
+ if (typeof this.state !== 'undefined') {
114
+ toReturn['state'] = this.state;
115
+ }
116
+ if (typeof this.minPrice !== 'undefined') {
117
+ toReturn['minPrice'] = this.minPrice;
118
+ }
119
+ if (typeof this.status !== 'undefined') {
120
+ toReturn['status'] = this.status;
121
+ }
122
+ if (typeof this.includeVoided !== 'undefined') {
123
+ toReturn['includeVoided'] = this.includeVoided;
124
+ }
125
+ return toReturn;
126
+ }
127
+ }
128
+ export class ListPurchaseItemsRequestListPurchaseItemsFilters {
129
+ constructor(kwargs) {
130
+ if (!kwargs) {
131
+ return;
132
+ }
133
+ Object.assign(this, kwargs);
134
+ }
135
+ static fromProto(proto) {
136
+ let m = new ListPurchaseItemsRequestListPurchaseItemsFilters();
137
+ m = Object.assign(m, proto);
138
+ if (proto.start) {
139
+ m.start = new Date(proto.start);
140
+ }
141
+ if (proto.end) {
142
+ m.end = new Date(proto.end);
143
+ }
144
+ return m;
145
+ }
146
+ toApiJson() {
147
+ const toReturn = {};
148
+ if (typeof this.merchantId !== 'undefined') {
149
+ toReturn['merchantId'] = this.merchantId;
150
+ }
151
+ if (typeof this.customerId !== 'undefined') {
152
+ toReturn['customerId'] = this.customerId;
153
+ }
154
+ if (typeof this.start !== 'undefined' && this.start !== null) {
155
+ toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;
156
+ }
157
+ if (typeof this.end !== 'undefined' && this.end !== null) {
158
+ toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;
159
+ }
160
+ return toReturn;
161
+ }
162
+ }
163
+ export class ListPurchaseItemsRequest {
164
+ constructor(kwargs) {
165
+ if (!kwargs) {
166
+ return;
167
+ }
168
+ Object.assign(this, kwargs);
169
+ }
170
+ static fromProto(proto) {
171
+ let m = new ListPurchaseItemsRequest();
172
+ m = Object.assign(m, proto);
173
+ if (proto.filters) {
174
+ m.filters = ListPurchaseItemsRequestListPurchaseItemsFilters.fromProto(proto.filters);
175
+ }
176
+ if (proto.pagingOptions) {
177
+ m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);
178
+ }
179
+ return m;
180
+ }
181
+ toApiJson() {
182
+ const toReturn = {};
183
+ if (typeof this.filters !== 'undefined' && this.filters !== null) {
184
+ toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;
185
+ }
186
+ if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {
187
+ toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;
188
+ }
189
+ return toReturn;
190
+ }
191
+ }
192
+ export class ListPurchaseItemsResponse {
193
+ constructor(kwargs) {
194
+ if (!kwargs) {
195
+ return;
196
+ }
197
+ Object.assign(this, kwargs);
198
+ }
199
+ static fromProto(proto) {
200
+ let m = new ListPurchaseItemsResponse();
201
+ m = Object.assign(m, proto);
202
+ if (proto.purchaseItems) {
203
+ m.purchaseItems = proto.purchaseItems.map(PurchaseItem.fromProto);
204
+ }
205
+ if (proto.pagingMetadata) {
206
+ m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);
207
+ }
208
+ if (proto.currency) {
209
+ m.currency = enumStringToValue(e.Currency, proto.currency);
210
+ }
211
+ return m;
212
+ }
213
+ toApiJson() {
214
+ const toReturn = {};
215
+ if (typeof this.purchaseItems !== 'undefined' && this.purchaseItems !== null) {
216
+ toReturn['purchaseItems'] = 'toApiJson' in this.purchaseItems ? this.purchaseItems.toApiJson() : this.purchaseItems;
217
+ }
218
+ if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {
219
+ toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;
220
+ }
221
+ if (typeof this.currency !== 'undefined') {
222
+ toReturn['currency'] = this.currency;
223
+ }
224
+ return toReturn;
225
+ }
226
+ }
227
+ export class ListPurchaseRequest {
228
+ constructor(kwargs) {
229
+ if (!kwargs) {
230
+ return;
231
+ }
232
+ Object.assign(this, kwargs);
233
+ }
234
+ static fromProto(proto) {
235
+ let m = new ListPurchaseRequest();
236
+ m = Object.assign(m, proto);
237
+ if (proto.filters) {
238
+ m.filters = ListPurchaseRequestListPurchaseFilters.fromProto(proto.filters);
239
+ }
240
+ if (proto.pagingOptions) {
241
+ m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);
242
+ }
243
+ return m;
244
+ }
245
+ toApiJson() {
246
+ const toReturn = {};
247
+ if (typeof this.filters !== 'undefined' && this.filters !== null) {
248
+ toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;
249
+ }
250
+ if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {
251
+ toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;
252
+ }
253
+ return toReturn;
254
+ }
255
+ }
256
+ export class ListPurchaseResponse {
257
+ constructor(kwargs) {
258
+ if (!kwargs) {
259
+ return;
260
+ }
261
+ Object.assign(this, kwargs);
262
+ }
263
+ static fromProto(proto) {
264
+ let m = new ListPurchaseResponse();
265
+ m = Object.assign(m, proto);
266
+ if (proto.purchases) {
267
+ m.purchases = proto.purchases.map(Purchase.fromProto);
268
+ }
269
+ if (proto.pagingMetadata) {
270
+ m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);
271
+ }
272
+ return m;
273
+ }
274
+ toApiJson() {
275
+ const toReturn = {};
276
+ if (typeof this.purchases !== 'undefined' && this.purchases !== null) {
277
+ toReturn['purchases'] = 'toApiJson' in this.purchases ? this.purchases.toApiJson() : this.purchases;
278
+ }
279
+ if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {
280
+ toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;
281
+ }
282
+ return toReturn;
283
+ }
284
+ }
285
+ export class Purchase {
286
+ constructor(kwargs) {
287
+ if (!kwargs) {
288
+ return;
289
+ }
290
+ Object.assign(this, kwargs);
291
+ }
292
+ static fromProto(proto) {
293
+ let m = new Purchase();
294
+ m = Object.assign(m, proto);
295
+ if (proto.timestamp) {
296
+ m.timestamp = new Date(proto.timestamp);
297
+ }
298
+ if (proto.total) {
299
+ m.total = parseInt(proto.total, 10);
300
+ }
301
+ if (proto.currency) {
302
+ m.currency = enumStringToValue(e.Currency, proto.currency);
303
+ }
304
+ if (proto.items) {
305
+ m.items = proto.items.map(PurchaseItem.fromProto);
306
+ }
307
+ if (proto.billingStrategy) {
308
+ m.billingStrategy = enumStringToValue(e.BillingStrategy, proto.billingStrategy);
309
+ }
310
+ if (proto.dunningAttempt) {
311
+ m.dunningAttempt = parseInt(proto.dunningAttempt, 10);
312
+ }
313
+ if (proto.voided) {
314
+ m.voided = new Date(proto.voided);
315
+ }
316
+ if (proto.status) {
317
+ m.status = enumStringToValue(e.PurchaseStatus, proto.status);
318
+ }
319
+ if (proto.creditAmount) {
320
+ m.creditAmount = parseInt(proto.creditAmount, 10);
321
+ }
322
+ if (proto.appliedCredits) {
323
+ m.appliedCredits = proto.appliedCredits.map(AppliedCredit.fromProto);
324
+ }
325
+ if (proto.taxAmount) {
326
+ m.taxAmount = parseInt(proto.taxAmount, 10);
327
+ }
328
+ if (proto.appliedTaxRates) {
329
+ m.appliedTaxRates = proto.appliedTaxRates.map(AppliedTaxRate.fromProto);
330
+ }
331
+ return m;
332
+ }
333
+ toApiJson() {
334
+ const toReturn = {};
335
+ if (typeof this.merchantId !== 'undefined') {
336
+ toReturn['merchantId'] = this.merchantId;
337
+ }
338
+ if (typeof this.timestamp !== 'undefined' && this.timestamp !== null) {
339
+ toReturn['timestamp'] = 'toApiJson' in this.timestamp ? this.timestamp.toApiJson() : this.timestamp;
340
+ }
341
+ if (typeof this.purchaseId !== 'undefined') {
342
+ toReturn['purchaseId'] = this.purchaseId;
343
+ }
344
+ if (typeof this.total !== 'undefined') {
345
+ toReturn['total'] = this.total;
346
+ }
347
+ if (typeof this.currency !== 'undefined') {
348
+ toReturn['currency'] = this.currency;
349
+ }
350
+ if (typeof this.renewal !== 'undefined') {
351
+ toReturn['renewal'] = this.renewal;
352
+ }
353
+ if (typeof this.items !== 'undefined' && this.items !== null) {
354
+ toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;
355
+ }
356
+ if (typeof this.billingStrategy !== 'undefined') {
357
+ toReturn['billingStrategy'] = this.billingStrategy;
358
+ }
359
+ if (typeof this.isDunning !== 'undefined') {
360
+ toReturn['isDunning'] = this.isDunning;
361
+ }
362
+ if (typeof this.dunningAttempt !== 'undefined') {
363
+ toReturn['dunningAttempt'] = this.dunningAttempt;
364
+ }
365
+ if (typeof this.voided !== 'undefined' && this.voided !== null) {
366
+ toReturn['voided'] = 'toApiJson' in this.voided ? this.voided.toApiJson() : this.voided;
367
+ }
368
+ if (typeof this.paid !== 'undefined') {
369
+ toReturn['paid'] = this.paid;
370
+ }
371
+ if (typeof this.status !== 'undefined') {
372
+ toReturn['status'] = this.status;
373
+ }
374
+ if (typeof this.creditAmount !== 'undefined') {
375
+ toReturn['creditAmount'] = this.creditAmount;
376
+ }
377
+ if (typeof this.appliedCredits !== 'undefined' && this.appliedCredits !== null) {
378
+ toReturn['appliedCredits'] = 'toApiJson' in this.appliedCredits ? this.appliedCredits.toApiJson() : this.appliedCredits;
379
+ }
380
+ if (typeof this.taxAmount !== 'undefined') {
381
+ toReturn['taxAmount'] = this.taxAmount;
382
+ }
383
+ if (typeof this.appliedTaxRates !== 'undefined' && this.appliedTaxRates !== null) {
384
+ toReturn['appliedTaxRates'] = 'toApiJson' in this.appliedTaxRates ? this.appliedTaxRates.toApiJson() : this.appliedTaxRates;
385
+ }
386
+ return toReturn;
387
+ }
388
+ }
389
+ export class PurchaseItem {
390
+ constructor(kwargs) {
391
+ if (!kwargs) {
392
+ return;
393
+ }
394
+ Object.assign(this, kwargs);
395
+ }
396
+ static fromProto(proto) {
397
+ let m = new PurchaseItem();
398
+ m = Object.assign(m, proto);
399
+ if (proto.amount) {
400
+ m.amount = parseInt(proto.amount, 10);
401
+ }
402
+ if (proto.discountAmount) {
403
+ m.discountAmount = parseInt(proto.discountAmount, 10);
404
+ }
405
+ if (proto.total) {
406
+ m.total = parseInt(proto.total, 10);
407
+ }
408
+ if (proto.appliedDiscounts) {
409
+ m.appliedDiscounts = proto.appliedDiscounts.map(AppliedDiscount.fromProto);
410
+ }
411
+ if (proto.taxAmount) {
412
+ m.taxAmount = parseInt(proto.taxAmount, 10);
413
+ }
414
+ if (proto.appliedTaxRates) {
415
+ m.appliedTaxRates = proto.appliedTaxRates.map(AppliedTaxRate.fromProto);
416
+ }
417
+ if (proto.setupFee) {
418
+ m.setupFee = parseInt(proto.setupFee, 10);
419
+ }
420
+ return m;
421
+ }
422
+ toApiJson() {
423
+ const toReturn = {};
424
+ if (typeof this.sku !== 'undefined') {
425
+ toReturn['sku'] = this.sku;
426
+ }
427
+ if (typeof this.amount !== 'undefined') {
428
+ toReturn['amount'] = this.amount;
429
+ }
430
+ if (typeof this.orderId !== 'undefined') {
431
+ toReturn['orderId'] = this.orderId;
432
+ }
433
+ if (typeof this.customerId !== 'undefined') {
434
+ toReturn['customerId'] = this.customerId;
435
+ }
436
+ if (typeof this.discountAmount !== 'undefined') {
437
+ toReturn['discountAmount'] = this.discountAmount;
438
+ }
439
+ if (typeof this.total !== 'undefined') {
440
+ toReturn['total'] = this.total;
441
+ }
442
+ if (typeof this.appliedDiscounts !== 'undefined' && this.appliedDiscounts !== null) {
443
+ toReturn['appliedDiscounts'] = 'toApiJson' in this.appliedDiscounts ? this.appliedDiscounts.toApiJson() : this.appliedDiscounts;
444
+ }
445
+ if (typeof this.merchantId !== 'undefined') {
446
+ toReturn['merchantId'] = this.merchantId;
447
+ }
448
+ if (typeof this.day !== 'undefined') {
449
+ toReturn['day'] = this.day;
450
+ }
451
+ if (typeof this.purchaseId !== 'undefined') {
452
+ toReturn['purchaseId'] = this.purchaseId;
453
+ }
454
+ if (typeof this.description !== 'undefined') {
455
+ toReturn['description'] = this.description;
456
+ }
457
+ if (typeof this.taxAmount !== 'undefined') {
458
+ toReturn['taxAmount'] = this.taxAmount;
459
+ }
460
+ if (typeof this.appliedTaxRates !== 'undefined' && this.appliedTaxRates !== null) {
461
+ toReturn['appliedTaxRates'] = 'toApiJson' in this.appliedTaxRates ? this.appliedTaxRates.toApiJson() : this.appliedTaxRates;
462
+ }
463
+ if (typeof this.setupFee !== 'undefined') {
464
+ toReturn['setupFee'] = this.setupFee;
465
+ }
466
+ return toReturn;
467
+ }
468
+ }
469
+ export class RetryPurchaseRequest {
470
+ constructor(kwargs) {
471
+ if (!kwargs) {
472
+ return;
473
+ }
474
+ Object.assign(this, kwargs);
475
+ }
476
+ static fromProto(proto) {
477
+ let m = new RetryPurchaseRequest();
478
+ m = Object.assign(m, proto);
479
+ return m;
480
+ }
481
+ toApiJson() {
482
+ const toReturn = {};
483
+ if (typeof this.purchaseId !== 'undefined') {
484
+ toReturn['purchaseId'] = this.purchaseId;
485
+ }
486
+ if (typeof this.merchantId !== 'undefined') {
487
+ toReturn['merchantId'] = this.merchantId;
488
+ }
489
+ if (typeof this.day !== 'undefined') {
490
+ toReturn['day'] = this.day;
491
+ }
492
+ if (typeof this.shouldEnterDunning !== 'undefined') {
493
+ toReturn['shouldEnterDunning'] = this.shouldEnterDunning;
494
+ }
495
+ return toReturn;
496
+ }
497
+ }
498
+ export class VoidPurchaseRequest {
499
+ constructor(kwargs) {
500
+ if (!kwargs) {
501
+ return;
502
+ }
503
+ Object.assign(this, kwargs);
504
+ }
505
+ static fromProto(proto) {
506
+ let m = new VoidPurchaseRequest();
507
+ m = Object.assign(m, proto);
508
+ return m;
509
+ }
510
+ toApiJson() {
511
+ const toReturn = {};
512
+ if (typeof this.purchaseId !== 'undefined') {
513
+ toReturn['purchaseId'] = this.purchaseId;
514
+ }
515
+ if (typeof this.merchantId !== 'undefined') {
516
+ toReturn['merchantId'] = this.merchantId;
517
+ }
518
+ if (typeof this.day !== 'undefined') {
519
+ toReturn['day'] = this.day;
520
+ }
521
+ return toReturn;
522
+ }
523
+ }
524
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyY2hhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9iaWxsaW5nX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL3B1cmNoYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RFLE9BQU8sS0FBSyxDQUFDLE1BQU0sVUFBVSxDQUFDO0FBRTlCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxPQUFZLEVBQUUsS0FBYTtJQUM5RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVELE1BQU0sT0FBTyxhQUFhO0lBYXRCLFlBQVksTUFBaUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFiRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUM1QixDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFO1lBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUFDO1FBQy9FLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUFDLENBQUMs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RixJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUFDO1FBQ3ZGLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQUM7UUFDbEUsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQgKiBhcyBpIGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQXBwbGllZERpc2NvdW50IH0gZnJvbSAnLi9hcHBsaWVkLWRpc2NvdW50JztcbmltcG9ydCB7IEFwcGxpZWRUYXhSYXRlIH0gZnJvbSAnLi9hcHBsaWVkLXRheC1yYXRlJztcbmltcG9ydCB7IFBhZ2VkUmVxdWVzdE9wdGlvbnMsIFBhZ2VkUmVzcG9uc2VNZXRhZGF0YSB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcGxpZWRDcmVkaXQgaW1wbGVtZW50cyBpLkFwcGxpZWRDcmVkaXRJbnRlcmZhY2Uge1xuICAgIGFwcGxpZWRBbW91bnQ6IG51bWJlcjtcbiAgICByZWZlcmVuY2VJZDogc3RyaW5nO1xuICAgIHJlZmVyZW5jZVR5cGU6IGUuQ3JlZGl0VHlwZTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEFwcGxpZWRDcmVkaXQge1xuICAgICAgICBsZXQgbSA9IG5ldyBBcHBsaWVkQ3JlZGl0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmFwcGxpZWRBbW91bnQpIHttLmFwcGxpZWRBbW91bnQgPSBwYXJzZUludChwcm90by5hcHBsaWVkQW1vdW50LCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8ucmVmZXJlbmNlVHlwZSkge20ucmVmZXJlbmNlVHlwZSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuQ3JlZGl0VHlwZT4oZS5DcmVkaXRUeXBlLCBwcm90by5yZWZlcmVuY2VUeXBlKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQXBwbGllZENyZWRpdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFwcGxpZWRBbW91bnQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FwcGxpZWRBbW91bnQnXSA9IHRoaXMuYXBwbGllZEFtb3VudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZWZlcmVuY2VJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVmZXJlbmNlSWQnXSA9IHRoaXMucmVmZXJlbmNlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVmZXJlbmNlVHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVmZXJlbmNlVHlwZSddID0gdGhpcy5yZWZlcmVuY2VUeXBlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RQdXJjaGFzZVJlcXVlc3RMaXN0UHVyY2hhc2VCaWxsaW5nU3RyYXRlZ3lGaWx0ZXIgaW1wbGVtZW50cyBpLkxpc3RQdXJjaGFzZVJlcXVlc3RMaXN0UHVyY2hhc2VCaWxsaW5nU3RyYXRlZ3lGaWx0ZXJJbnRlcmZhY2Uge1xuICAgIGJpbGxpbmdTdHJhdGVneTogZS5CaWxsaW5nU3RyYXRlZ3lbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RQdXJjaGFzZVJlcXVlc3RMaXN0UHVyY2hhc2VCaWxsaW5nU3RyYXRlZ3lGaWx0ZXIge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0UHVyY2hhc2VSZXF1ZXN0TGlzdFB1cmNoYXNlQmlsbGluZ1N0cmF0ZWd5RmlsdGVyKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmJpbGxpbmdTdHJhdGVneSkge20uYmlsbGluZ1N0cmF0ZWd5ID0gcHJvdG8uYmlsbGluZ1N0cmF0ZWd5Lm1hcCgodjogc3RyaW5nKSA9PiBlbnVtU3RyaW5nVG9WYWx1ZTxlLkJpbGxpbmdTdHJhdGVneT4oZS5CaWxsaW5nU3RyYXRlZ3ksIHYpKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdFB1cmNoYXNlUmVxdWVzdExpc3RQdXJjaGFzZUJpbGxpbmdTdHJhdGVneUZpbHRlckludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJpbGxpbmdTdHJhdGVneSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYmlsbGluZ1N0cmF0ZWd5J10gPSB0aGlzLmJpbGxpbmdTdHJhdGVneTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0UHVyY2hhc2VSZXF1ZXN0TGlzdFB1cmNoYXNlRmlsdGVycyBpbXBsZW1lbnRzIGkuTGlzdFB1cmNoYXNlUmVxdWVzdExpc3RQdXJjaGFzZUZpbHRlcnNJbnRlcmZhY2Uge1xuICAgIG1lcmNoYW50SWQ6IHN0cmluZztcbiAgICBwdXJjaGFzZUlkOiBzdHJpbmc7XG4gICAgc3RhcnQ6IERhdGU7XG4gICAgZW5kOiBEYXRlO1xuICAgIGJpbGxpbmdTdHJhdGVneUZpbHRlcjogTGlzdFB1cmNoYXNlUmVxdWVzdExpc3RQdXJjaGFzZUJpbGxpbmdTdHJhdGVneUZpbHRlcjtcbiAgICBzdGF0ZTogZS5MaXN0UHVyY2hhc2VSZXF1ZXN0U3RhdGU7XG4gICAgbWluUHJpY2U6IG51bWJlcjtcbiAgICBzdGF0dXM6IGUuUHVyY2hhc2VTdGF0dXM7XG4gICAgaW5jbHVkZVZvaWRlZDogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RQdXJjaGFzZVJlcXVlc3RMaXN0UHVyY2hhc2VGaWx0ZXJzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFB1cmNoYXNlUmVxdWVzdExpc3RQdXJjaGFzZUZpbHRlcnMoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3RhcnQpIHttLnN0YXJ0ID0gbmV3IERhdGUocHJvdG8uc3RhcnQpO31cbiAgICAgICAgaWYgKHByb3RvLmVuZCkge20uZW5kID0gbmV3IERhdGUocHJvdG8uZW5kKTt9XG4gICAgICAgIGlmIChwcm90by5iaWxsaW5nU3RyYXRlZ3lGaWx0ZXIpIHttLmJpbGxpbmdTdHJhdGVneUZpbHRlciA9IExpc3RQdXJjaGFzZVJlcXVlc3RMaXN0UHVyY2hhc2VCaWxsaW5nU3RyYXRlZ3lGaWx0ZXIuZnJvbVByb3RvKHByb3RvLmJpbGxpbmdTdHJhdGVneUZpbHRlcik7fVxuICAgICAgICBpZiAocHJvdG8uc3RhdGUpIHttLnN0YXRlID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5MaXN0UHVyY2hhc2VSZXF1ZXN0U3RhdGU+KGUuTGlzdFB1cmNoYXNlUmVxdWVzdFN0YXRlLCBwcm90by5zdGF0ZSk7fVxuICAgICAgICBpZiAocHJvdG8ubWluUHJpY2UpIHttLm1pblByaWNlID0gcGFyc2VJbnQocHJvdG8ubWluUHJpY2UsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5zdGF0dXMpIHttLnN0YXR1cyA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuUHVyY2hhc2VTdGF0dXM+KGUuUHVyY2hhc2VTdGF0dXMsIHByb3RvLnN0YXR1cyk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3RQdXJjaGFzZVJlcXVlc3RMaXN0UHVyY2hhc2VGaWx0ZXJzSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVyY2hhbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVyY2hhbnRJZCddID0gdGhpcy5tZXJjaGFudElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnB1cmNoYXNlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3B1cmNoYXNlSWQnXSA9IHRoaXMucHVyY2hhc2VJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdGFydCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zdGFydCAhPT0gbnVsbCkge3RvUmV0dXJuWydzdGFydCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zdGFydCA/ICh0aGlzLnN0YXJ0IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnN0YXJ0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVuZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5lbmQgIT09IG51bGwpIHt0b1JldHVyblsnZW5kJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmVuZCA/ICh0aGlzLmVuZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5lbmQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYmlsbGluZ1N0cmF0ZWd5RmlsdGVyICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmJpbGxpbmdTdHJhdGVneUZpbHRlciAhPT0gbnVsbCkge3RvUmV0dXJuWydiaWxsaW5nU3RyYXRlZ3lGaWx0ZXInXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYmlsbGluZ1N0cmF0ZWd5RmlsdGVyID8gKHRoaXMuYmlsbGluZ1N0cmF0ZWd5RmlsdGVyIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmJpbGxpbmdTdHJhdGVneUZpbHRlcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdGF0ZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3RhdGUnXSA9IHRoaXMuc3RhdGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWluUHJpY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21pblByaWNlJ10gPSB0aGlzLm1pblByaWNlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXR1cyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3RhdHVzJ10gPSB0aGlzLnN0YXR1czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pbmNsdWRlVm9pZGVkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpbmNsdWRlVm9pZGVkJ10gPSB0aGlzLmluY2x1ZGVWb2lkZWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFB1cmNoYXNlSXRlbXNSZXF1ZXN0TGlzdFB1cmNoYXNlSXRlbXNGaWx0ZXJzIGltcGxlbWVudHMgaS5MaXN0UHVyY2hhc2VJdGVtc1JlcXVlc3RMaXN0UHVyY2hhc2VJdGVtc0ZpbHRlcnNJbnRlcmZhY2Uge1xuICAgIG1lcmNoYW50SWQ6IHN0cmluZztcbiAgICBjdXN0b21lcklkOiBzdHJpbmc7XG4gICAgc3RhcnQ6IERhdGU7XG4gICAgZW5kOiBEYXRlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdFB1cmNoYXNlSXRlbXNSZXF1ZXN0TGlzdFB1cmNoYXNlSXRlbXNGaWx0ZXJzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFB1cmNoYXNlSXRlbXNSZXF1ZXN0TGlzdFB1cmNoYXNlSXRlbXNGaWx0ZXJzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnN0YXJ0KSB7bS5zdGFydCA9IG5ldyBEYXRlKHByb3RvLnN0YXJ0KTt9XG4gICAgICAgIGlmIChwcm90by5lbmQpIHttLmVuZCA9IG5ldyBEYXRlKHByb3RvLmVuZCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3RQdXJjaGFzZUl0ZW1zUmVxdWVzdExpc3RQdXJjaGFzZUl0ZW1zRmlsdGVyc0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lcmNoYW50SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lcmNoYW50SWQnXSA9IHRoaXMubWVyY2hhbnRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXN0b21lcklkJ10gPSB0aGlzLmN1c3RvbWVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhcnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3RhcnQgIT09IG51bGwpIHt0b1JldHVyblsnc3RhcnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3RhcnQgPyAodGhpcy5zdGFydCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdGFydDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbmQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZW5kICE9PSBudWxsKSB7dG9SZXR1cm5bJ2VuZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5lbmQgPyAodGhpcy5lbmQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZW5kO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RQdXJjaGFzZUl0ZW1zUmVxdWVzdCBpbXBsZW1lbnRzIGkuTGlzdFB1cmNoYXNlSXRlbXNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBmaWx0ZXJzOiBMaXN0UHVyY2hhc2VJdGVtc1JlcXVlc3RMaXN0UHVyY2hhc2VJdGVtc0ZpbHRlcnM7XG4gICAgcGFnaW5nT3B0aW9uczogUGFnZWRSZXF1ZXN0T3B0aW9ucztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RQdXJjaGFzZUl0ZW1zUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RQdXJjaGFzZUl0ZW1zUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5maWx0ZXJzKSB7bS5maWx0ZXJzID0gTGlzdFB1cmNoYXNlSXRlbXNSZXF1ZXN0TGlzdFB1cmNoYXNlSXRlbXNGaWx0ZXJzLmZyb21Qcm90byhwcm90by5maWx0ZXJzKTt9XG4gICAgICAgIGlmIChwcm90by5wYWdpbmdPcHRpb25zKSB7bS5wYWdpbmdPcHRpb25zID0gUGFnZWRSZXF1ZXN0T3B0aW9ucy5mcm9tUHJvdG8ocHJvdG8ucGFnaW5nT3B0aW9ucyk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3RQdXJjaGFzZUl0ZW1zUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZpbHRlcnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZmlsdGVycyAhPT0gbnVsbCkge3RvUmV0dXJuWydmaWx0ZXJzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmZpbHRlcnMgPyAodGhpcy5maWx0ZXJzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmZpbHRlcnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnaW5nT3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wYWdpbmdPcHRpb25zICE9PSBudWxsKSB7dG9SZXR1cm5bJ3BhZ2luZ09wdGlvbnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGFnaW5nT3B0aW9ucyA/ICh0aGlzLnBhZ2luZ09wdGlvbnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucGFnaW5nT3B0aW9uczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0UHVyY2hhc2VJdGVtc1Jlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0UHVyY2hhc2VJdGVtc1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBwdXJjaGFzZUl0ZW1zOiBQdXJjaGFzZUl0ZW1bXTtcbiAgICBwYWdpbmdNZXRhZGF0YTogUGFnZWRSZXNwb25zZU1ldGFkYXRhO1xuICAgIGN1cnJlbmN5OiBlLkN1cnJlbmN5O1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdFB1cmNoYXNlSXRlbXNSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RQdXJjaGFzZUl0ZW1zUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ucHVyY2hhc2VJdGVtcykge20ucHVyY2hhc2VJdGVtcyA9IHByb3RvLnB1cmNoYXNlSXRlbXMubWFwKFB1cmNoYXNlSXRlbS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnBhZ2luZ01ldGFkYXRhKSB7bS5wYWdpbmdNZXRhZGF0YSA9IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YS5mcm9tUHJvdG8ocHJvdG8ucGFnaW5nTWV0YWRhdGEpO31cbiAgICAgICAgaWYgKHByb3RvLmN1cnJlbmN5KSB7bS5jdXJyZW5jeSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuQ3VycmVuY3k+KGUuQ3VycmVuY3ksIHByb3RvLmN1cnJlbmN5KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdFB1cmNoYXNlSXRlbXNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnB1cmNoYXNlSXRlbXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucHVyY2hhc2VJdGVtcyAhPT0gbnVsbCkge3RvUmV0dXJuWydwdXJjaGFzZUl0ZW1zJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnB1cmNoYXNlSXRlbXMgPyAodGhpcy5wdXJjaGFzZUl0ZW1zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnB1cmNoYXNlSXRlbXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnaW5nTWV0YWRhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucGFnaW5nTWV0YWRhdGEgIT09IG51bGwpIHt0b1JldHVyblsncGFnaW5nTWV0YWRhdGEnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGFnaW5nTWV0YWRhdGEgPyAodGhpcy5wYWdpbmdNZXRhZGF0YSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wYWdpbmdNZXRhZGF0YTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXJyZW5jeSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY3VycmVuY3knXSA9IHRoaXMuY3VycmVuY3k7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFB1cmNoYXNlUmVxdWVzdCBpbXBsZW1lbnRzIGkuTGlzdFB1cmNoYXNlUmVxdWVzdEludGVyZmFjZSB7XG4gICAgZmlsdGVyczogTGlzdFB1cmNoYXNlUmVxdWVzdExpc3RQdXJjaGFzZUZpbHRlcnM7XG4gICAgcGFnaW5nT3B0aW9uczogUGFnZWRSZXF1ZXN0T3B0aW9ucztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RQdXJjaGFzZVJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0UHVyY2hhc2VSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmZpbHRlcnMpIHttLmZpbHRlcnMgPSBMaXN0UHVyY2hhc2VSZXF1ZXN0TGlzdFB1cmNoYXNlRmlsdGVycy5mcm9tUHJvdG8ocHJvdG8uZmlsdGVycyk7fVxuICAgICAgICBpZiAocHJvdG8ucGFnaW5nT3B0aW9ucykge20ucGFnaW5nT3B0aW9ucyA9IFBhZ2VkUmVxdWVzdE9wdGlvbnMuZnJvbVByb3RvKHByb3RvLnBhZ2luZ09wdGlvbnMpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0UHVyY2hhc2VSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZmlsdGVycyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5maWx0ZXJzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2ZpbHRlcnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZmlsdGVycyA/ICh0aGlzLmZpbHRlcnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZmlsdGVyczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWdpbmdPcHRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnBhZ2luZ09wdGlvbnMgIT09IG51bGwpIHt0b1JldHVyblsncGFnaW5nT3B0aW9ucyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wYWdpbmdPcHRpb25zID8gKHRoaXMucGFnaW5nT3B0aW9ucyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wYWdpbmdPcHRpb25zO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RQdXJjaGFzZVJlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0UHVyY2hhc2VSZXNwb25zZUludGVyZmFjZSB7XG4gICAgcHVyY2hhc2VzOiBQdXJjaGFzZVtdO1xuICAgIHBhZ2luZ01ldGFkYXRhOiBQYWdlZFJlc3BvbnNlTWV0YWRhdGE7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0UHVyY2hhc2VSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RQdXJjaGFzZVJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnB1cmNoYXNlcykge20ucHVyY2hhc2VzID0gcHJvdG8ucHVyY2hhc2VzLm1hcChQdXJjaGFzZS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnBhZ2luZ01ldGFkYXRhKSB7bS5wYWdpbmdNZXRhZGF0YSA9IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YS5mcm9tUHJvdG8ocHJvdG8ucGFnaW5nTWV0YWRhdGEpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0UHVyY2hhc2VSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnB1cmNoYXNlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wdXJjaGFzZXMgIT09IG51bGwpIHt0b1JldHVyblsncHVyY2hhc2VzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnB1cmNoYXNlcyA/ICh0aGlzLnB1cmNoYXNlcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wdXJjaGFzZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnaW5nTWV0YWRhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucGFnaW5nTWV0YWRhdGEgIT09IG51bGwpIHt0b1JldHVyblsncGFnaW5nTWV0YWRhdGEnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGFnaW5nTWV0YWRhdGEgPyAodGhpcy5wYWdpbmdNZXRhZGF0YSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wYWdpbmdNZXRhZGF0YTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQdXJjaGFzZSBpbXBsZW1lbnRzIGkuUHVyY2hhc2VJbnRlcmZhY2Uge1xuICAgIG1lcmNoYW50SWQ6IHN0cmluZztcbiAgICB0aW1lc3RhbXA6IERhdGU7XG4gICAgcHVyY2hhc2VJZDogc3RyaW5nO1xuICAgIHRvdGFsOiBudW1iZXI7XG4gICAgY3VycmVuY3k6IGUuQ3VycmVuY3k7XG4gICAgcmVuZXdhbDogYm9vbGVhbjtcbiAgICBpdGVtczogUHVyY2hhc2VJdGVtW107XG4gICAgYmlsbGluZ1N0cmF0ZWd5OiBlLkJpbGxpbmdTdHJhdGVneTtcbiAgICBpc0R1bm5pbmc6IGJvb2xlYW47XG4gICAgZHVubmluZ0F0dGVtcHQ6IG51bWJlcjtcbiAgICB2b2lkZWQ6IERhdGU7XG4gICAgcGFpZDogYm9vbGVhbjtcbiAgICBzdGF0dXM6IGUuUHVyY2hhc2VTdGF0dXM7XG4gICAgY3JlZGl0QW1vdW50OiBudW1iZXI7XG4gICAgYXBwbGllZENyZWRpdHM6IEFwcGxpZWRDcmVkaXRbXTtcbiAgICB0YXhBbW91bnQ6IG51bWJlcjtcbiAgICBhcHBsaWVkVGF4UmF0ZXM6IEFwcGxpZWRUYXhSYXRlW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQdXJjaGFzZSB7XG4gICAgICAgIGxldCBtID0gbmV3IFB1cmNoYXNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnRpbWVzdGFtcCkge20udGltZXN0YW1wID0gbmV3IERhdGUocHJvdG8udGltZXN0YW1wKTt9XG4gICAgICAgIGlmIChwcm90by50b3RhbCkge20udG90YWwgPSBwYXJzZUludChwcm90by50b3RhbCwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLmN1cnJlbmN5KSB7bS5jdXJyZW5jeSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuQ3VycmVuY3k+KGUuQ3VycmVuY3ksIHByb3RvLmN1cnJlbmN5KTt9XG4gICAgICAgIGlmIChwcm90by5pdGVtcykge20uaXRlbXMgPSBwcm90by5pdGVtcy5tYXAoUHVyY2hhc2VJdGVtLmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8uYmlsbGluZ1N0cmF0ZWd5KSB7bS5iaWxsaW5nU3RyYXRlZ3kgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLkJpbGxpbmdTdHJhdGVneT4oZS5CaWxsaW5nU3RyYXRlZ3ksIHByb3RvLmJpbGxpbmdTdHJhdGVneSk7fVxuICAgICAgICBpZiAocHJvdG8uZHVubmluZ0F0dGVtcHQpIHttLmR1bm5pbmdBdHRlbXB0ID0gcGFyc2VJbnQocHJvdG8uZHVubmluZ0F0dGVtcHQsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by52b2lkZWQpIHttLnZvaWRlZCA9IG5ldyBEYXRlKHByb3RvLnZvaWRlZCk7fVxuICAgICAgICBpZiAocHJvdG8uc3RhdHVzKSB7bS5zdGF0dXMgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLlB1cmNoYXNlU3RhdHVzPihlLlB1cmNoYXNlU3RhdHVzLCBwcm90by5zdGF0dXMpO31cbiAgICAgICAgaWYgKHByb3RvLmNyZWRpdEFtb3VudCkge20uY3JlZGl0QW1vdW50ID0gcGFyc2VJbnQocHJvdG8uY3JlZGl0QW1vdW50LCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uYXBwbGllZENyZWRpdHMpIHttLmFwcGxpZWRDcmVkaXRzID0gcHJvdG8uYXBwbGllZENyZWRpdHMubWFwKEFwcGxpZWRDcmVkaXQuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by50YXhBbW91bnQpIHttLnRheEFtb3VudCA9IHBhcnNlSW50KHByb3RvLnRheEFtb3VudCwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLmFwcGxpZWRUYXhSYXRlcykge20uYXBwbGllZFRheFJhdGVzID0gcHJvdG8uYXBwbGllZFRheFJhdGVzLm1hcChBcHBsaWVkVGF4UmF0ZS5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5QdXJjaGFzZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lcmNoYW50SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lcmNoYW50SWQnXSA9IHRoaXMubWVyY2hhbnRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aW1lc3RhbXAgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudGltZXN0YW1wICE9PSBudWxsKSB7dG9SZXR1cm5bJ3RpbWVzdGFtcCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50aW1lc3RhbXAgPyAodGhpcy50aW1lc3RhbXAgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudGltZXN0YW1wO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnB1cmNoYXNlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3B1cmNoYXNlSWQnXSA9IHRoaXMucHVyY2hhc2VJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50b3RhbCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndG90YWwnXSA9IHRoaXMudG90YWw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3VycmVuY3kgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2N1cnJlbmN5J10gPSB0aGlzLmN1cnJlbmN5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlbmV3YWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlbmV3YWwnXSA9IHRoaXMucmVuZXdhbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pdGVtcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5pdGVtcyAhPT0gbnVsbCkge3RvUmV0dXJuWydpdGVtcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5pdGVtcyA/ICh0aGlzLml0ZW1zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLml0ZW1zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJpbGxpbmdTdHJhdGVneSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYmlsbGluZ1N0cmF0ZWd5J10gPSB0aGlzLmJpbGxpbmdTdHJhdGVneTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pc0R1bm5pbmcgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lzRHVubmluZyddID0gdGhpcy5pc0R1bm5pbmc7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZHVubmluZ0F0dGVtcHQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2R1bm5pbmdBdHRlbXB0J10gPSB0aGlzLmR1bm5pbmdBdHRlbXB0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZvaWRlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy52b2lkZWQgIT09IG51bGwpIHt0b1JldHVyblsndm9pZGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnZvaWRlZCA/ICh0aGlzLnZvaWRlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy52b2lkZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFpZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFpZCddID0gdGhpcy5wYWlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXR1cyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3RhdHVzJ10gPSB0aGlzLnN0YXR1czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jcmVkaXRBbW91bnQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NyZWRpdEFtb3VudCddID0gdGhpcy5jcmVkaXRBbW91bnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXBwbGllZENyZWRpdHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYXBwbGllZENyZWRpdHMgIT09IG51bGwpIHt0b1JldHVyblsnYXBwbGllZENyZWRpdHMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYXBwbGllZENyZWRpdHMgPyAodGhpcy5hcHBsaWVkQ3JlZGl0cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hcHBsaWVkQ3JlZGl0czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50YXhBbW91bnQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RheEFtb3VudCddID0gdGhpcy50YXhBbW91bnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXBwbGllZFRheFJhdGVzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmFwcGxpZWRUYXhSYXRlcyAhPT0gbnVsbCkge3RvUmV0dXJuWydhcHBsaWVkVGF4UmF0ZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYXBwbGllZFRheFJhdGVzID8gKHRoaXMuYXBwbGllZFRheFJhdGVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmFwcGxpZWRUYXhSYXRlczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQdXJjaGFzZUl0ZW0gaW1wbGVtZW50cyBpLlB1cmNoYXNlSXRlbUludGVyZmFjZSB7XG4gICAgc2t1OiBzdHJpbmc7XG4gICAgYW1vdW50OiBudW1iZXI7XG4gICAgb3JkZXJJZDogc3RyaW5nO1xuICAgIGN1c3RvbWVySWQ6IHN0cmluZztcbiAgICBkaXNjb3VudEFtb3VudDogbnVtYmVyO1xuICAgIHRvdGFsOiBudW1iZXI7XG4gICAgYXBwbGllZERpc2NvdW50czogQXBwbGllZERpc2NvdW50W107XG4gICAgbWVyY2hhbnRJZDogc3RyaW5nO1xuICAgIGRheTogc3RyaW5nO1xuICAgIHB1cmNoYXNlSWQ6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIHRheEFtb3VudDogbnVtYmVyO1xuICAgIGFwcGxpZWRUYXhSYXRlczogQXBwbGllZFRheFJhdGVbXTtcbiAgICBzZXR1cEZlZTogbnVtYmVyO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogUHVyY2hhc2VJdGVtIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUHVyY2hhc2VJdGVtKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmFtb3VudCkge20uYW1vdW50ID0gcGFyc2VJbnQocHJvdG8uYW1vdW50LCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uZGlzY291bnRBbW91bnQpIHttLmRpc2NvdW50QW1vdW50ID0gcGFyc2VJbnQocHJvdG8uZGlzY291bnRBbW91bnQsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by50b3RhbCkge20udG90YWwgPSBwYXJzZUludChwcm90by50b3RhbCwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLmFwcGxpZWREaXNjb3VudHMpIHttLmFwcGxpZWREaXNjb3VudHMgPSBwcm90by5hcHBsaWVkRGlzY291bnRzLm1hcChBcHBsaWVkRGlzY291bnQuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by50YXhBbW91bnQpIHttLnRheEFtb3VudCA9IHBhcnNlSW50KHByb3RvLnRheEFtb3VudCwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLmFwcGxpZWRUYXhSYXRlcykge20uYXBwbGllZFRheFJhdGVzID0gcHJvdG8uYXBwbGllZFRheFJhdGVzLm1hcChBcHBsaWVkVGF4UmF0ZS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnNldHVwRmVlKSB7bS5zZXR1cEZlZSA9IHBhcnNlSW50KHByb3RvLnNldHVwRmVlLCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlB1cmNoYXNlSXRlbUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNrdSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2t1J10gPSB0aGlzLnNrdTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hbW91bnQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Ftb3VudCddID0gdGhpcy5hbW91bnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JkZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JkZXJJZCddID0gdGhpcy5vcmRlcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1c3RvbWVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2N1c3RvbWVySWQnXSA9IHRoaXMuY3VzdG9tZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kaXNjb3VudEFtb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGlzY291bnRBbW91bnQnXSA9IHRoaXMuZGlzY291bnRBbW91bnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudG90YWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RvdGFsJ10gPSB0aGlzLnRvdGFsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFwcGxpZWREaXNjb3VudHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYXBwbGllZERpc2NvdW50cyAhPT0gbnVsbCkge3RvUmV0dXJuWydhcHBsaWVkRGlzY291bnRzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmFwcGxpZWREaXNjb3VudHMgPyAodGhpcy5hcHBsaWVkRGlzY291bnRzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmFwcGxpZWREaXNjb3VudHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVyY2hhbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVyY2hhbnRJZCddID0gdGhpcy5tZXJjaGFudElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRheSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGF5J10gPSB0aGlzLmRheTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wdXJjaGFzZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwdXJjaGFzZUlkJ10gPSB0aGlzLnB1cmNoYXNlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGVzY3JpcHRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Rlc2NyaXB0aW9uJ10gPSB0aGlzLmRlc2NyaXB0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRheEFtb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGF4QW1vdW50J10gPSB0aGlzLnRheEFtb3VudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hcHBsaWVkVGF4UmF0ZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYXBwbGllZFRheFJhdGVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2FwcGxpZWRUYXhSYXRlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5hcHBsaWVkVGF4UmF0ZXMgPyAodGhpcy5hcHBsaWVkVGF4UmF0ZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYXBwbGllZFRheFJhdGVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNldHVwRmVlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzZXR1cEZlZSddID0gdGhpcy5zZXR1cEZlZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXRyeVB1cmNoYXNlUmVxdWVzdCBpbXBsZW1lbnRzIGkuUmV0cnlQdXJjaGFzZVJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHB1cmNoYXNlSWQ6IHN0cmluZztcbiAgICBtZXJjaGFudElkOiBzdHJpbmc7XG4gICAgZGF5OiBzdHJpbmc7XG4gICAgc2hvdWxkRW50ZXJEdW5uaW5nOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogUmV0cnlQdXJjaGFzZVJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBSZXRyeVB1cmNoYXNlUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUmV0cnlQdXJjaGFzZVJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wdXJjaGFzZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwdXJjaGFzZUlkJ10gPSB0aGlzLnB1cmNoYXNlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVyY2hhbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVyY2hhbnRJZCddID0gdGhpcy5tZXJjaGFudElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRheSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGF5J10gPSB0aGlzLmRheTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zaG91bGRFbnRlckR1bm5pbmcgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Nob3VsZEVudGVyRHVubmluZyddID0gdGhpcy5zaG91bGRFbnRlckR1bm5pbmc7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVm9pZFB1cmNoYXNlUmVxdWVzdCBpbXBsZW1lbnRzIGkuVm9pZFB1cmNoYXNlUmVxdWVzdEludGVyZmFjZSB7XG4gICAgcHVyY2hhc2VJZDogc3RyaW5nO1xuICAgIG1lcmNoYW50SWQ6IHN0cmluZztcbiAgICBkYXk6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFZvaWRQdXJjaGFzZVJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBWb2lkUHVyY2hhc2VSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Wb2lkUHVyY2hhc2VSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHVyY2hhc2VJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncHVyY2hhc2VJZCddID0gdGhpcy5wdXJjaGFzZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lcmNoYW50SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lcmNoYW50SWQnXSA9IHRoaXMubWVyY2hhbnRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kYXkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2RheSddID0gdGhpcy5kYXk7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iXX0=