bx-rest 1.5.1 → 1.7.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 (301) hide show
  1. package/CHANGELOG.md +163 -0
  2. package/README.en.md +206 -3
  3. package/README.md +207 -3
  4. package/consts/part-name-methods.d.ts +1 -0
  5. package/esm2022/consts/part-name-methods.mjs +2 -1
  6. package/esm2022/functions/errors.mjs +17 -5
  7. package/esm2022/functions/uniqueElementCode.mjs +24 -0
  8. package/esm2022/map/pull/application/config.mjs +25 -29
  9. package/esm2022/map/pull.mjs +8 -13
  10. package/esm2022/public-api.mjs +3 -2
  11. package/esm2022/request-navvy/bizproc.mjs +18 -9
  12. package/esm2022/request-navvy/booking/v1/resource.mjs +2 -2
  13. package/esm2022/request-navvy/booking/v1/resourcetype.mjs +2 -2
  14. package/esm2022/request-navvy/calendar/event.mjs +1 -9
  15. package/esm2022/request-navvy/catalog/catalog.mjs +2 -2
  16. package/esm2022/request-navvy/catalog/document/element.mjs +2 -2
  17. package/esm2022/request-navvy/catalog/document.mjs +2 -2
  18. package/esm2022/request-navvy/catalog/documentcontractor.mjs +2 -2
  19. package/esm2022/request-navvy/catalog/extra.mjs +2 -2
  20. package/esm2022/request-navvy/catalog/measure.mjs +2 -2
  21. package/esm2022/request-navvy/catalog/price.mjs +2 -2
  22. package/esm2022/request-navvy/catalog/pricetype.mjs +2 -2
  23. package/esm2022/request-navvy/catalog/pricetypegroup.mjs +2 -2
  24. package/esm2022/request-navvy/catalog/pricetypelang.mjs +2 -2
  25. package/esm2022/request-navvy/catalog/product/offer.mjs +2 -2
  26. package/esm2022/request-navvy/catalog/product/service.mjs +2 -2
  27. package/esm2022/request-navvy/catalog/product/sku.mjs +2 -2
  28. package/esm2022/request-navvy/catalog/product.mjs +2 -2
  29. package/esm2022/request-navvy/catalog/productproperty.mjs +2 -2
  30. package/esm2022/request-navvy/catalog/productpropertyenum.mjs +2 -2
  31. package/esm2022/request-navvy/catalog/productpropertyfeature.mjs +2 -2
  32. package/esm2022/request-navvy/catalog/productpropertysection.mjs +2 -2
  33. package/esm2022/request-navvy/catalog/ratio.mjs +2 -2
  34. package/esm2022/request-navvy/catalog/roundingrule.mjs +2 -2
  35. package/esm2022/request-navvy/catalog/section.mjs +2 -2
  36. package/esm2022/request-navvy/catalog/store.mjs +2 -2
  37. package/esm2022/request-navvy/catalog/storeproduct.mjs +2 -2
  38. package/esm2022/request-navvy/catalog/userfield/document.mjs +2 -2
  39. package/esm2022/request-navvy/catalog/vat.mjs +2 -2
  40. package/esm2022/request-navvy/crm/activity.mjs +2 -2
  41. package/esm2022/request-navvy/crm/deal/recurring.mjs +2 -2
  42. package/esm2022/request-navvy/crm/item/product/row.mjs +2 -2
  43. package/esm2022/request-navvy/crm/orderentity.mjs +2 -2
  44. package/esm2022/request-navvy/crm/requisite/link.mjs +2 -2
  45. package/esm2022/request-navvy/crm/stagehistory.mjs +2 -2
  46. package/esm2022/request-navvy/crm/timeline/bindings.mjs +2 -2
  47. package/esm2022/request-navvy/disk/operation.mjs +3 -10
  48. package/esm2022/request-navvy/documentgenerator/document.mjs +2 -2
  49. package/esm2022/request-navvy/documentgenerator/numerator.mjs +2 -2
  50. package/esm2022/request-navvy/documentgenerator/role.mjs +2 -2
  51. package/esm2022/request-navvy/documentgenerator/template.mjs +2 -2
  52. package/esm2022/request-navvy/pull/application/config.mjs +10 -4
  53. package/esm2022/request-navvy/pull/application/event.mjs +23 -0
  54. package/esm2022/request-navvy/pull/application/push.mjs +23 -0
  55. package/esm2022/request-navvy/pull/channel/public.mjs +4 -4
  56. package/esm2022/request-navvy/pull/config.mjs +8 -4
  57. package/esm2022/request-navvy/pull.mjs +12 -1
  58. package/esm2022/request-navvy/sale/basketitem.mjs +2 -2
  59. package/esm2022/request-navvy/sale/basketproperties.mjs +2 -2
  60. package/esm2022/request-navvy/sale/businessvaluepersondomain.mjs +2 -2
  61. package/esm2022/request-navvy/sale/order.mjs +2 -2
  62. package/esm2022/request-navvy/sale/payment.mjs +2 -2
  63. package/esm2022/request-navvy/sale/paymentitembasket.mjs +2 -2
  64. package/esm2022/request-navvy/sale/paymentitemshipment.mjs +2 -2
  65. package/esm2022/request-navvy/sale/persontype.mjs +2 -2
  66. package/esm2022/request-navvy/sale/property.mjs +2 -2
  67. package/esm2022/request-navvy/sale/propertyrelation.mjs +2 -2
  68. package/esm2022/request-navvy/sale/propertyvalue.mjs +2 -2
  69. package/esm2022/request-navvy/sale/propertyvariant.mjs +2 -2
  70. package/esm2022/request-navvy/sale/shipment.mjs +2 -2
  71. package/esm2022/request-navvy/sale/shipmentitem.mjs +2 -2
  72. package/esm2022/request-navvy/sale/shipmentproperty.mjs +2 -2
  73. package/esm2022/request-navvy/sale/shipmentpropertyvalue.mjs +2 -2
  74. package/esm2022/request-navvy/sale/status.mjs +2 -2
  75. package/esm2022/request-navvy/sale/statuslang.mjs +2 -2
  76. package/esm2022/request-navvy/sale/tradebinding.mjs +2 -2
  77. package/esm2022/request-navvy/sale/tradeplatform.mjs +2 -2
  78. package/esm2022/request-navvy/socialnetwork/api/livefeed.mjs +1 -5
  79. package/esm2022/request-navvy/task/operation/elapseditem.mjs +51 -28
  80. package/esm2022/request-navvy/tasks/task.mjs +1 -119
  81. package/esm2022/request-navvy/userfieldtype.mjs +2 -2
  82. package/esm2022/rest/navvy.mjs +66 -64
  83. package/esm2022/services/base.mjs +1 -4
  84. package/esm2022/services/context.mjs +59 -0
  85. package/esm2022/services/http/HttpBX.mjs +52 -19
  86. package/esm2022/services/http/authRefresh.mjs +25 -23
  87. package/esm2022/services/http/fetch.mjs +45 -0
  88. package/esm2022/services/http/http.mjs +25 -71
  89. package/esm2022/services/http/middleware.mjs +203 -0
  90. package/esm2022/services/http/sessionKey.mjs +16 -5
  91. package/esm2022/services/http/transport.mjs +5 -0
  92. package/esm2022/services/navvy/navvy-pag-nav-keyed.mjs +31 -0
  93. package/esm2022/services/navvy/navvy-support.mjs +2 -15
  94. package/esm2022/services/navvy.mjs +32 -31
  95. package/esm2022/typification/rest/calendar/event/get.mjs +1 -1
  96. package/esm2022/typification/rest/crm/requisite.mjs +1 -1
  97. package/esm2022/typification/rest/crm/timeline/bindings.mjs +1 -1
  98. package/esm2022/typification/rest/pull/application/config/get.mjs +1 -1
  99. package/esm2022/typification/rest/pull/application/event/add.mjs +2 -0
  100. package/esm2022/typification/rest/pull/application/push/add.mjs +2 -0
  101. package/esm2022/typification/rest/pull/config/get.mjs +1 -1
  102. package/esm2022/typification/rest/pull.mjs +3 -1
  103. package/esm2022/typification/rest/tasks/task/get.mjs +1 -1
  104. package/esm2022/typification/settings.mjs +1 -1
  105. package/fesm2022/bx-rest.mjs +800 -588
  106. package/fesm2022/bx-rest.mjs.map +1 -1
  107. package/functions/errors.d.ts +9 -0
  108. package/functions/uniqueElementCode.d.ts +12 -0
  109. package/map/pull/application/config.d.ts +3 -0
  110. package/package.json +1 -1
  111. package/public-api.d.ts +4 -2
  112. package/request-navvy/booking/v1/resource.d.ts +1 -1
  113. package/request-navvy/booking/v1/resourcetype.d.ts +1 -1
  114. package/request-navvy/catalog/catalog.d.ts +1 -1
  115. package/request-navvy/catalog/document/element.d.ts +1 -1
  116. package/request-navvy/catalog/document.d.ts +1 -1
  117. package/request-navvy/catalog/documentcontractor.d.ts +1 -1
  118. package/request-navvy/catalog/extra.d.ts +1 -1
  119. package/request-navvy/catalog/measure.d.ts +1 -1
  120. package/request-navvy/catalog/price.d.ts +1 -1
  121. package/request-navvy/catalog/pricetype.d.ts +1 -1
  122. package/request-navvy/catalog/pricetypegroup.d.ts +1 -1
  123. package/request-navvy/catalog/pricetypelang.d.ts +1 -1
  124. package/request-navvy/catalog/product/offer.d.ts +1 -1
  125. package/request-navvy/catalog/product/service.d.ts +1 -1
  126. package/request-navvy/catalog/product/sku.d.ts +1 -1
  127. package/request-navvy/catalog/product.d.ts +1 -1
  128. package/request-navvy/catalog/productproperty.d.ts +1 -1
  129. package/request-navvy/catalog/productpropertyenum.d.ts +1 -1
  130. package/request-navvy/catalog/productpropertyfeature.d.ts +1 -1
  131. package/request-navvy/catalog/productpropertysection.d.ts +1 -1
  132. package/request-navvy/catalog/ratio.d.ts +1 -1
  133. package/request-navvy/catalog/roundingrule.d.ts +1 -1
  134. package/request-navvy/catalog/section.d.ts +1 -1
  135. package/request-navvy/catalog/store.d.ts +1 -1
  136. package/request-navvy/catalog/storeproduct.d.ts +1 -1
  137. package/request-navvy/catalog/userfield/document.d.ts +1 -1
  138. package/request-navvy/catalog/vat.d.ts +1 -1
  139. package/request-navvy/crm/activity.d.ts +1 -1
  140. package/request-navvy/crm/deal/recurring.d.ts +1 -1
  141. package/request-navvy/crm/item/product/row.d.ts +5 -1
  142. package/request-navvy/crm/orderentity.d.ts +5 -1
  143. package/request-navvy/crm/requisite/link.d.ts +1 -1
  144. package/request-navvy/crm/stagehistory.d.ts +5 -1
  145. package/request-navvy/crm/timeline/bindings.d.ts +1 -1
  146. package/request-navvy/documentgenerator/document.d.ts +1 -1
  147. package/request-navvy/documentgenerator/numerator.d.ts +1 -1
  148. package/request-navvy/documentgenerator/role.d.ts +1 -1
  149. package/request-navvy/documentgenerator/template.d.ts +1 -1
  150. package/request-navvy/pull/application/config.d.ts +9 -3
  151. package/request-navvy/pull/application/event.d.ts +17 -0
  152. package/request-navvy/pull/application/push.d.ts +17 -0
  153. package/request-navvy/pull/config.d.ts +7 -3
  154. package/request-navvy/pull.d.ts +11 -0
  155. package/request-navvy/sale/basketitem.d.ts +1 -1
  156. package/request-navvy/sale/basketproperties.d.ts +1 -1
  157. package/request-navvy/sale/businessvaluepersondomain.d.ts +1 -1
  158. package/request-navvy/sale/order.d.ts +1 -1
  159. package/request-navvy/sale/payment.d.ts +1 -1
  160. package/request-navvy/sale/paymentitembasket.d.ts +1 -1
  161. package/request-navvy/sale/paymentitemshipment.d.ts +1 -1
  162. package/request-navvy/sale/persontype.d.ts +1 -1
  163. package/request-navvy/sale/property.d.ts +1 -1
  164. package/request-navvy/sale/propertyrelation.d.ts +1 -1
  165. package/request-navvy/sale/propertyvalue.d.ts +1 -1
  166. package/request-navvy/sale/propertyvariant.d.ts +1 -1
  167. package/request-navvy/sale/shipment.d.ts +1 -1
  168. package/request-navvy/sale/shipmentitem.d.ts +1 -1
  169. package/request-navvy/sale/shipmentproperty.d.ts +1 -1
  170. package/request-navvy/sale/shipmentpropertyvalue.d.ts +1 -1
  171. package/request-navvy/sale/status.d.ts +1 -1
  172. package/request-navvy/sale/statuslang.d.ts +1 -1
  173. package/request-navvy/sale/tradebinding.d.ts +1 -1
  174. package/request-navvy/sale/tradeplatform.d.ts +1 -1
  175. package/request-navvy/task/operation/elapseditem.d.ts +15 -10
  176. package/request-navvy/userfieldtype.d.ts +1 -1
  177. package/rest/navvy.d.ts +9 -0
  178. package/services/context.d.ts +43 -0
  179. package/services/http/HttpBX.d.ts +11 -0
  180. package/services/http/authRefresh.d.ts +5 -1
  181. package/services/http/fetch.d.ts +22 -0
  182. package/services/http/http.d.ts +20 -9
  183. package/services/http/middleware.d.ts +32 -0
  184. package/services/http/sessionKey.d.ts +10 -0
  185. package/services/http/transport.d.ts +28 -0
  186. package/services/navvy/navvy-pag-nav-keyed.d.ts +18 -0
  187. package/services/navvy/navvy-support.d.ts +0 -10
  188. package/services/navvy.d.ts +17 -0
  189. package/typification/rest/calendar/event/get.d.ts +1 -1
  190. package/typification/rest/crm/requisite.d.ts +1 -1
  191. package/typification/rest/crm/timeline/bindings.d.ts +2 -1
  192. package/typification/rest/pull/application/config/get.d.ts +1 -1
  193. package/typification/rest/pull/application/event/add.d.ts +24 -0
  194. package/typification/rest/pull/application/push/add.d.ts +16 -0
  195. package/typification/rest/pull/config/get.d.ts +28 -3
  196. package/typification/rest/pull.d.ts +2 -0
  197. package/typification/settings.d.ts +68 -0
  198. package/esm2022/functions/errorHandler.mjs +0 -34
  199. package/esm2022/request/app.mjs +0 -13
  200. package/esm2022/request/bizproc/activity.mjs +0 -3
  201. package/esm2022/request/bizproc/event.mjs +0 -3
  202. package/esm2022/request/bizproc/robot.mjs +0 -3
  203. package/esm2022/request/bizproc/task.mjs +0 -3
  204. package/esm2022/request/bizproc/workflow/instance.mjs +0 -3
  205. package/esm2022/request/bizproc/workflow/template.mjs +0 -3
  206. package/esm2022/request/bizproc/workflow.mjs +0 -18
  207. package/esm2022/request/bizproc.mjs +0 -15
  208. package/esm2022/request/department.mjs +0 -26
  209. package/esm2022/request/disk/attachedObject.mjs +0 -14
  210. package/esm2022/request/disk/file.mjs +0 -18
  211. package/esm2022/request/disk/folder.mjs +0 -117
  212. package/esm2022/request/disk.mjs +0 -11
  213. package/esm2022/request/lists/element.mjs +0 -18
  214. package/esm2022/request/lists/field.mjs +0 -35
  215. package/esm2022/request/lists.mjs +0 -86
  216. package/esm2022/request/log/blogcomment.mjs +0 -3
  217. package/esm2022/request/log/blogpost.mjs +0 -18
  218. package/esm2022/request/log.mjs +0 -9
  219. package/esm2022/request/pull/application/config.mjs +0 -11
  220. package/esm2022/request/pull/channel/public.mjs +0 -18
  221. package/esm2022/request/pull/config.mjs +0 -13
  222. package/esm2022/request/pull.mjs +0 -11
  223. package/esm2022/request/server.mjs +0 -14
  224. package/esm2022/request/socialnetwork/api/contentview.mjs +0 -14
  225. package/esm2022/request/socialnetwork/api/livefeed/blogpost/important.mjs +0 -14
  226. package/esm2022/request/socialnetwork/api/livefeed/blogpost.mjs +0 -7
  227. package/esm2022/request/socialnetwork/api/livefeed.mjs +0 -7
  228. package/esm2022/request/socialnetwork/api.mjs +0 -9
  229. package/esm2022/request/socialnetwork.mjs +0 -8
  230. package/esm2022/request/sonet_group.mjs +0 -24
  231. package/esm2022/request/task/commentitem.mjs +0 -32
  232. package/esm2022/request/task/elapseditem.mjs +0 -40
  233. package/esm2022/request/task/item/userfield.mjs +0 -14
  234. package/esm2022/request/task/item.mjs +0 -7
  235. package/esm2022/request/task/planner.mjs +0 -11
  236. package/esm2022/request/task.mjs +0 -13
  237. package/esm2022/request/tasks/task/result.mjs +0 -22
  238. package/esm2022/request/tasks/task.mjs +0 -110
  239. package/esm2022/request/tasks.mjs +0 -7
  240. package/esm2022/request/user/userfield.mjs +0 -14
  241. package/esm2022/request/user.mjs +0 -40
  242. package/esm2022/rest/base.mjs +0 -39
  243. package/esm2022/services/http/HttpData.mjs +0 -77
  244. package/esm2022/services/http/base/base.mjs +0 -4
  245. package/esm2022/services/http/httpNavvy.mjs +0 -14
  246. package/esm2022/typification/base/answers.mjs +0 -438
  247. package/esm2022/typification/base/params.mjs +0 -525
  248. package/esm2022/typification/base/workpiece/methods-list.mjs +0 -2
  249. package/esm2022/typification/base/workpiece/methods.mjs +0 -2
  250. package/functions/errorHandler.d.ts +0 -10
  251. package/request/app.d.ts +0 -8
  252. package/request/bizproc/activity.d.ts +0 -2
  253. package/request/bizproc/event.d.ts +0 -2
  254. package/request/bizproc/robot.d.ts +0 -2
  255. package/request/bizproc/task.d.ts +0 -2
  256. package/request/bizproc/workflow/instance.d.ts +0 -2
  257. package/request/bizproc/workflow/template.d.ts +0 -2
  258. package/request/bizproc/workflow.d.ts +0 -13
  259. package/request/bizproc.d.ts +0 -12
  260. package/request/department.d.ts +0 -18
  261. package/request/disk/attachedObject.d.ts +0 -8
  262. package/request/disk/file.d.ts +0 -10
  263. package/request/disk/folder.d.ts +0 -96
  264. package/request/disk.d.ts +0 -8
  265. package/request/lists/element.d.ts +0 -11
  266. package/request/lists/field.d.ts +0 -11
  267. package/request/lists.d.ts +0 -31
  268. package/request/log/blogcomment.d.ts +0 -2
  269. package/request/log/blogpost.d.ts +0 -11
  270. package/request/log.d.ts +0 -6
  271. package/request/pull/application/config.d.ts +0 -5
  272. package/request/pull/channel/public.d.ts +0 -5
  273. package/request/pull/config.d.ts +0 -7
  274. package/request/pull.d.ts +0 -8
  275. package/request/server.d.ts +0 -7
  276. package/request/socialnetwork/api/contentview.d.ts +0 -6
  277. package/request/socialnetwork/api/livefeed/blogpost/important.d.ts +0 -6
  278. package/request/socialnetwork/api/livefeed/blogpost.d.ts +0 -4
  279. package/request/socialnetwork/api/livefeed.d.ts +0 -4
  280. package/request/socialnetwork/api.d.ts +0 -6
  281. package/request/socialnetwork.d.ts +0 -4
  282. package/request/sonet_group.d.ts +0 -8
  283. package/request/task/commentitem.d.ts +0 -23
  284. package/request/task/elapseditem.d.ts +0 -26
  285. package/request/task/item/userfield.d.ts +0 -6
  286. package/request/task/item.d.ts +0 -4
  287. package/request/task/planner.d.ts +0 -4
  288. package/request/task.d.ts +0 -10
  289. package/request/tasks/task/result.d.ts +0 -13
  290. package/request/tasks/task.d.ts +0 -37
  291. package/request/tasks.d.ts +0 -4
  292. package/request/user/userfield.d.ts +0 -8
  293. package/request/user.d.ts +0 -24
  294. package/rest/base.d.ts +0 -33
  295. package/services/http/HttpData.d.ts +0 -7
  296. package/services/http/base/base.d.ts +0 -7
  297. package/services/http/httpNavvy.d.ts +0 -10
  298. package/typification/base/answers.d.ts +0 -12
  299. package/typification/base/params.d.ts +0 -16
  300. package/typification/base/workpiece/methods-list.d.ts +0 -247
  301. package/typification/base/workpiece/methods.d.ts +0 -20
@@ -44,70 +44,72 @@ import { BXRestNavvySign } from '../request-navvy/sign/index';
44
44
  import { BXRestNavvyEventLog } from '../request-navvy/eventlog/index';
45
45
  import { BXRestNavvyPlacement } from '../request-navvy/placement';
46
46
  import { BXRestNavvyUserFieldType } from '../request-navvy/userfieldtype';
47
+ import { BXRestContext, enterContext, globalContext, restoreContext } from '../services/context';
47
48
  export class BXRestNavvy {
48
- constructor() {
49
- this.ai = new BXRestNavvyAi();
50
- this.mailService = new BXRestNavvyMailService();
51
- this.messageService = new BXRestNavvyMessageService();
52
- this.userConsent = new BXRestNavvyUserConsent();
53
- this.telephony = new BXRestNavvyTelephony();
54
- this.vote = new BXRestNavvyVote();
55
- this.imConnector = new BXRestNavvyImConnector();
56
- this.entity = new BXRestNavvyEntity();
57
- this.biConnector = new BXRestNavvyBiConnector();
58
- this.voxImplant = new BXRestNavvyVoxImplant();
59
- this.mail = new BXRestNavvyMail();
60
- this.note = new BXRestNavvyNote();
61
- this.documentGenerator = new BXRestNavvyDocumentGenerator();
62
- this.imBot = new BXRestNavvyImBot();
63
- this.booking = new BXRestNavvyBooking();
64
- this.imOpenLines = new BXRestNavvyImOpenLines();
65
- this.landing = new BXRestNavvyLanding();
66
- this.catalog = new BXRestNavvyCatalog();
67
- this.sale = new BXRestNavvySale();
68
- this.sign = new BXRestNavvySign();
69
- this.eventLog = new BXRestNavvyEventLog();
70
- this.placement = new BXRestNavvyPlacement();
71
- this.userFieldType = new BXRestNavvyUserFieldType();
72
- this.user = new BXRestNavvyUser();
73
- this.lists = new BXRestNavvyLists();
74
- this.task = new BXRestNavvyTask();
75
- this.tasks = new BXRestNavvyTasks();
76
- this.disk = new BXRestNavvyDisk();
77
- this.bizProc = new BXRestNavvyBizProc();
78
- this.log = new BXRestNavvyLog();
79
- this.calendar = new BXRestNavvyCalendar();
80
- this.sonet_group = new BXRestNavvySonetGroup();
81
- this.server = new BXRestNavvyServer();
82
- this.department = new BXRestNavvyDepartment();
83
- this.im = new BXRestNavvyIm();
84
- this.app = new BXRestNavvyApp();
85
- this.timeMan = new BXRestNavvyTimeMan();
86
- this.socialNetWork = new BXRestNavvySocialNetWork();
87
- this.pull = new BXRestNavvyPull();
88
- this.crm = new BXRestNavvyCrm();
89
- /** Регистрация обработчиков и работа с онлайн- и офлайн-событиями. */
90
- this.event = new BXRestNavvyEvent();
91
- /** Проверка существования и доступности REST-методов. */
92
- this.method = new BXRestNavvyMethod();
93
- /** Получение описаний кодов доступа. */
94
- this.access = new BXRestNavvyAccess();
95
- /** Проверка доступности возможностей портала. */
96
- this.feature = new BXRestNavvyFeature();
97
- this.Navvy = new Navvy();
98
- // public batch<T, C, M>(param: iBXRestNavvyParamBatch<T, C, M>) {
99
- // const modifiedObject = Object.fromEntries(
100
- // Object.entries(param.cmd).map(([key, value]) => {
101
- // let modifiedValue = value.resultVanilla.arguments
102
- // return [key, modifiedValue]
103
- // })
104
- // )
105
- //
106
- // return this.BXRest.batch({
107
- // halt: param.halt,
108
- // cmd: modifiedObject
109
- // })
110
- // }
49
+ /**
50
+ * @param settings Свои настройки клиента: адрес портала, способ авторизации,
51
+ * заголовки. Все запросы этого клиента идут с ними, даже если глобальные
52
+ * `BXRestSettings` позже изменятся. Так в одном процессе можно работать
53
+ * с несколькими порталами. Без аргумента клиент работает с глобальными
54
+ * `BXRestSettings`, как раньше.
55
+ */
56
+ constructor(settings) {
57
+ // Каждый HTTP-объект запоминает контекст в момент создания, поэтому все
58
+ // разделы создаются, пока включён контекст клиента. Создание идёт в теле
59
+ // конструктора, а не в инициализаторах полей: только так finally вернёт
60
+ // прежний контекст, даже если какой-то раздел бросит исключение. Иначе
61
+ // объекты, созданные приложением позже, ушли бы на портал этого клиента.
62
+ const previous = enterContext(settings ? new BXRestContext(settings) : globalContext);
63
+ try {
64
+ this.ai = new BXRestNavvyAi();
65
+ this.mailService = new BXRestNavvyMailService();
66
+ this.messageService = new BXRestNavvyMessageService();
67
+ this.userConsent = new BXRestNavvyUserConsent();
68
+ this.telephony = new BXRestNavvyTelephony();
69
+ this.vote = new BXRestNavvyVote();
70
+ this.imConnector = new BXRestNavvyImConnector();
71
+ this.entity = new BXRestNavvyEntity();
72
+ this.biConnector = new BXRestNavvyBiConnector();
73
+ this.voxImplant = new BXRestNavvyVoxImplant();
74
+ this.mail = new BXRestNavvyMail();
75
+ this.note = new BXRestNavvyNote();
76
+ this.documentGenerator = new BXRestNavvyDocumentGenerator();
77
+ this.imBot = new BXRestNavvyImBot();
78
+ this.booking = new BXRestNavvyBooking();
79
+ this.imOpenLines = new BXRestNavvyImOpenLines();
80
+ this.landing = new BXRestNavvyLanding();
81
+ this.catalog = new BXRestNavvyCatalog();
82
+ this.sale = new BXRestNavvySale();
83
+ this.sign = new BXRestNavvySign();
84
+ this.eventLog = new BXRestNavvyEventLog();
85
+ this.placement = new BXRestNavvyPlacement();
86
+ this.userFieldType = new BXRestNavvyUserFieldType();
87
+ this.user = new BXRestNavvyUser();
88
+ this.lists = new BXRestNavvyLists();
89
+ this.task = new BXRestNavvyTask();
90
+ this.tasks = new BXRestNavvyTasks();
91
+ this.disk = new BXRestNavvyDisk();
92
+ this.bizProc = new BXRestNavvyBizProc();
93
+ this.log = new BXRestNavvyLog();
94
+ this.calendar = new BXRestNavvyCalendar();
95
+ this.sonet_group = new BXRestNavvySonetGroup();
96
+ this.server = new BXRestNavvyServer();
97
+ this.department = new BXRestNavvyDepartment();
98
+ this.im = new BXRestNavvyIm();
99
+ this.app = new BXRestNavvyApp();
100
+ this.timeMan = new BXRestNavvyTimeMan();
101
+ this.socialNetWork = new BXRestNavvySocialNetWork();
102
+ this.pull = new BXRestNavvyPull();
103
+ this.crm = new BXRestNavvyCrm();
104
+ this.event = new BXRestNavvyEvent();
105
+ this.method = new BXRestNavvyMethod();
106
+ this.access = new BXRestNavvyAccess();
107
+ this.feature = new BXRestNavvyFeature();
108
+ this.Navvy = new Navvy();
109
+ }
110
+ finally {
111
+ restoreContext(previous);
112
+ }
111
113
  }
112
114
  /**
113
115
  * Возвращает базовую информацию о текущем пользователе без scope `user`.
@@ -132,4 +134,4 @@ export class BXRestNavvy {
132
134
  return this.Navvy.simple(['methods']);
133
135
  }
134
136
  }
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2dnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9yZXN0L25hdnZ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXpDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzdELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVB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TWFwIH0gZnJvbSAnLi4vbWFwL3Jlc3QnXHJcbmltcG9ydCB7IE5hdnZ5IH0gZnJvbSAnLi4vc2VydmljZXMvbmF2dnknXHJcblxyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVVzZXIgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3VzZXInXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5TGlzdHMgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2xpc3RzJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2sgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3Rhc2snXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3MgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3Rhc2tzJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eURpc2sgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2Rpc2snXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5Qml6UHJvYyB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvYml6cHJvYydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlMb2cgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2xvZydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlDYWxlbmRhciB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvY2FsZW5kYXInXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5U29uZXRHcm91cCB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvc29uZXRfZ3JvdXAnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5U2VydmVyIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9zZXJ2ZXInXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5RGVwYXJ0bWVudCB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvZGVwYXJ0bWVudCdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlJbSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvaW0nXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5QXBwIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9hcHAnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGltZU1hbiB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvdGltZW1hbidcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlTb2NpYWxOZXRXb3JrIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9zb2NpYWxuZXR3b3JrJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVB1bGwgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3B1bGwnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUNybSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvY3JtJ1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlFdmVudCB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvZXZlbnQnXG5pbXBvcnQgeyBpQlhSZXN0UHJvZmlsZSwgaUJYUmVzdFByb2ZpbGVIdHRwIH0gZnJvbSAnLi4vdHlwaWZpY2F0aW9uL3Jlc3QvcHJvZmlsZSdcbmltcG9ydCB7IEJYUmVzdE5hdnZ5TWV0aG9kIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9tZXRob2QnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUFjY2VzcyB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvYWNjZXNzJ1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlGZWF0dXJlIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9mZWF0dXJlJ1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlBaSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvYWkvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eU1haWxTZXJ2aWNlIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9tYWlsc2VydmljZSdcbmltcG9ydCB7IEJYUmVzdE5hdnZ5TWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L21lc3NhZ2VzZXJ2aWNlL2luZGV4J1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlVc2VyQ29uc2VudCB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvdXNlcmNvbnNlbnQvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRlbGVwaG9ueSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvdGVsZXBob255L2luZGV4J1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlWb3RlIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS92b3RlL2luZGV4J1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlJbUNvbm5lY3RvciB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvaW1jb25uZWN0b3IvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUVudGl0eSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvZW50aXR5L2luZGV4J1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlCaUNvbm5lY3RvciB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvYmljb25uZWN0b3IvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVZveEltcGxhbnQgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3ZveGltcGxhbnQvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eU1haWwgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L21haWwvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eU5vdGUgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L25vdGUvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eURvY3VtZW50R2VuZXJhdG9yIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9kb2N1bWVudGdlbmVyYXRvci9pbmRleCdcbmltcG9ydCB7IEJYUmVzdE5hdnZ5SW1Cb3QgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2ltYm90L2luZGV4J1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlCb29raW5nIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9ib29raW5nL2luZGV4J1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlJbU9wZW5MaW5lcyB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvaW1vcGVubGluZXMvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUxhbmRpbmcgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2xhbmRpbmcvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUNhdGFsb2cgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2NhdGFsb2cvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVNhbGUgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3NhbGUvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVNpZ24gfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3NpZ24vaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUV2ZW50TG9nIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9ldmVudGxvZy9pbmRleCdcbmltcG9ydCB7IEJYUmVzdE5hdnZ5UGxhY2VtZW50IH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9wbGFjZW1lbnQnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVVzZXJGaWVsZFR5cGUgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3VzZXJmaWVsZHR5cGUnXG5pbXBvcnQgeyBpQlhSZXN0UGFyYW1TY29wZSB9IGZyb20gJy4uL3R5cGlmaWNhdGlvbi9yZXN0L2NvbW1vbidcblxyXG5leHBvcnQgY2xhc3MgQlhSZXN0TmF2dnkge1xuICBwdWJsaWMgcmVhZG9ubHkgYWkgPSBuZXcgQlhSZXN0TmF2dnlBaSgpXG4gIHB1YmxpYyByZWFkb25seSBtYWlsU2VydmljZSA9IG5ldyBCWFJlc3ROYXZ2eU1haWxTZXJ2aWNlKClcbiAgcHVibGljIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlID0gbmV3IEJYUmVzdE5hdnZ5TWVzc2FnZVNlcnZpY2UoKVxuICBwdWJsaWMgcmVhZG9ubHkgdXNlckNvbnNlbnQgPSBuZXcgQlhSZXN0TmF2dnlVc2VyQ29uc2VudCgpXG4gIHB1YmxpYyByZWFkb25seSB0ZWxlcGhvbnkgPSBuZXcgQlhSZXN0TmF2dnlUZWxlcGhvbnkoKVxuICBwdWJsaWMgcmVhZG9ubHkgdm90ZSA9IG5ldyBCWFJlc3ROYXZ2eVZvdGUoKVxuICBwdWJsaWMgcmVhZG9ubHkgaW1Db25uZWN0b3IgPSBuZXcgQlhSZXN0TmF2dnlJbUNvbm5lY3RvcigpXG4gIHB1YmxpYyByZWFkb25seSBlbnRpdHkgPSBuZXcgQlhSZXN0TmF2dnlFbnRpdHkoKVxuICBwdWJsaWMgcmVhZG9ubHkgYmlDb25uZWN0b3IgPSBuZXcgQlhSZXN0TmF2dnlCaUNvbm5lY3RvcigpXG4gIHB1YmxpYyByZWFkb25seSB2b3hJbXBsYW50ID0gbmV3IEJYUmVzdE5hdnZ5Vm94SW1wbGFudCgpXG4gIHB1YmxpYyByZWFkb25seSBtYWlsID0gbmV3IEJYUmVzdE5hdnZ5TWFpbCgpXG4gIHB1YmxpYyByZWFkb25seSBub3RlID0gbmV3IEJYUmVzdE5hdnZ5Tm90ZSgpXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudEdlbmVyYXRvciA9IG5ldyBCWFJlc3ROYXZ2eURvY3VtZW50R2VuZXJhdG9yKClcbiAgcHVibGljIHJlYWRvbmx5IGltQm90ID0gbmV3IEJYUmVzdE5hdnZ5SW1Cb3QoKVxuICBwdWJsaWMgcmVhZG9ubHkgYm9va2luZyA9IG5ldyBCWFJlc3ROYXZ2eUJvb2tpbmcoKVxuICBwdWJsaWMgcmVhZG9ubHkgaW1PcGVuTGluZXMgPSBuZXcgQlhSZXN0TmF2dnlJbU9wZW5MaW5lcygpXG4gIHB1YmxpYyByZWFkb25seSBsYW5kaW5nID0gbmV3IEJYUmVzdE5hdnZ5TGFuZGluZygpXG4gIHB1YmxpYyByZWFkb25seSBjYXRhbG9nID0gbmV3IEJYUmVzdE5hdnZ5Q2F0YWxvZygpXG4gIHB1YmxpYyByZWFkb25seSBzYWxlID0gbmV3IEJYUmVzdE5hdnZ5U2FsZSgpXG4gIHB1YmxpYyByZWFkb25seSBzaWduID0gbmV3IEJYUmVzdE5hdnZ5U2lnbigpXG4gIHB1YmxpYyByZWFkb25seSBldmVudExvZyA9IG5ldyBCWFJlc3ROYXZ2eUV2ZW50TG9nKClcbiAgcHVibGljIHJlYWRvbmx5IHBsYWNlbWVudCA9IG5ldyBCWFJlc3ROYXZ2eVBsYWNlbWVudCgpXG4gIHB1YmxpYyByZWFkb25seSB1c2VyRmllbGRUeXBlID0gbmV3IEJYUmVzdE5hdnZ5VXNlckZpZWxkVHlwZSgpXG4gIHB1YmxpYyByZWFkb25seSB1c2VyID0gbmV3IEJYUmVzdE5hdnZ5VXNlcigpXHJcbiAgcHVibGljIHJlYWRvbmx5IGxpc3RzID0gbmV3IEJYUmVzdE5hdnZ5TGlzdHMoKVxyXG4gIHB1YmxpYyByZWFkb25seSB0YXNrID0gbmV3IEJYUmVzdE5hdnZ5VGFzaygpXHJcbiAgcHVibGljIHJlYWRvbmx5IHRhc2tzID0gbmV3IEJYUmVzdE5hdnZ5VGFza3MoKVxyXG4gIHB1YmxpYyByZWFkb25seSBkaXNrID0gbmV3IEJYUmVzdE5hdnZ5RGlzaygpXHJcbiAgcHVibGljIHJlYWRvbmx5IGJpelByb2MgPSBuZXcgQlhSZXN0TmF2dnlCaXpQcm9jKClcclxuICBwdWJsaWMgcmVhZG9ubHkgbG9nID0gbmV3IEJYUmVzdE5hdnZ5TG9nKClcclxuICBwdWJsaWMgcmVhZG9ubHkgY2FsZW5kYXIgPSBuZXcgQlhSZXN0TmF2dnlDYWxlbmRhcigpXHJcbiAgcHVibGljIHJlYWRvbmx5IHNvbmV0X2dyb3VwID0gbmV3IEJYUmVzdE5hdnZ5U29uZXRHcm91cCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IHNlcnZlciA9IG5ldyBCWFJlc3ROYXZ2eVNlcnZlcigpXHJcbiAgcHVibGljIHJlYWRvbmx5IGRlcGFydG1lbnQgPSBuZXcgQlhSZXN0TmF2dnlEZXBhcnRtZW50KClcclxuICBwdWJsaWMgcmVhZG9ubHkgaW0gPSBuZXcgQlhSZXN0TmF2dnlJbSgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGFwcCA9IG5ldyBCWFJlc3ROYXZ2eUFwcCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IHRpbWVNYW4gPSBuZXcgQlhSZXN0TmF2dnlUaW1lTWFuKClcclxuICBwdWJsaWMgcmVhZG9ubHkgc29jaWFsTmV0V29yayA9IG5ldyBCWFJlc3ROYXZ2eVNvY2lhbE5ldFdvcmsoKVxyXG4gIHB1YmxpYyByZWFkb25seSBwdWxsID0gbmV3IEJYUmVzdE5hdnZ5UHVsbCgpXG4gIHB1YmxpYyByZWFkb25seSBjcm0gPSBuZXcgQlhSZXN0TmF2dnlDcm0oKVxuICAvKiog0KDQtdCz0LjRgdGC0YDQsNGG0LjRjyDQvtCx0YDQsNCx0L7RgtGH0LjQutC+0LIg0Lgg0YDQsNCx0L7RgtCwINGBINC+0L3Qu9Cw0LnQvS0g0Lgg0L7RhNC70LDQudC9LdGB0L7QsdGL0YLQuNGP0LzQuC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50ID0gbmV3IEJYUmVzdE5hdnZ5RXZlbnQoKVxuICAvKiog0J/RgNC+0LLQtdGA0LrQsCDRgdGD0YnQtdGB0YLQstC+0LLQsNC90LjRjyDQuCDQtNC+0YHRgtGD0L/QvdC+0YHRgtC4IFJFU1Qt0LzQtdGC0L7QtNC+0LIuICovXG4gIHB1YmxpYyByZWFkb25seSBtZXRob2QgPSBuZXcgQlhSZXN0TmF2dnlNZXRob2QoKVxuICAvKiog0J/QvtC70YPRh9C10L3QuNC1INC+0L/QuNGB0LDQvdC40Lkg0LrQvtC00L7QsiDQtNC+0YHRgtGD0L/QsC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjY2VzcyA9IG5ldyBCWFJlc3ROYXZ2eUFjY2VzcygpXG4gIC8qKiDQn9GA0L7QstC10YDQutCwINC00L7RgdGC0YPQv9C90L7RgdGC0Lgg0LLQvtC30LzQvtC20L3QvtGB0YLQtdC5INC/0L7RgNGC0LDQu9CwLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmVhdHVyZSA9IG5ldyBCWFJlc3ROYXZ2eUZlYXR1cmUoKVxuICBwdWJsaWMgcmVhZG9ubHkgTmF2dnkgPSBuZXcgTmF2dnkoKVxuXG4gIC8qKlxuICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQsdCw0LfQvtCy0YPRjiDQuNC90YTQvtGA0LzQsNGG0LjRjiDQviDRgtC10LrRg9GJ0LXQvCDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUg0LHQtdC3IHNjb3BlIGB1c2VyYC5cbiAgICpcbiAgICog0KDQtdC30YPQu9GM0YLQsNGCINGB0L7QtNC10YDQttC40YIg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAsINC40LzRjywg0YTQsNC80LjQu9C40Y4sINC/0YDQuNC30L3QsNC6INCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0LAsXG4gICAqINC/0L7Quywg0YfQsNGB0L7QstC+0Lkg0L/QvtGP0YEg0Lgg0YHQstGP0LfQsNC90L3Ri9C1INC/0L7Qu9GPINC/0YDQvtGE0LjQu9GPLlxuICAgKi9cbiAgcHVibGljIHByb2ZpbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPGlCWFJlc3RQcm9maWxlSHR0cCwgaUJYUmVzdFByb2ZpbGU+KFxuICAgICAgWydwcm9maWxlJ10sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBCWFJlc3RNYXAucHJvZmlsZVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgNCw0LfRgNC10YjQtdC90LjRjyDRgtC10LrRg9GJ0LXQs9C+INC/0YDQuNC70L7QttC10L3QuNGPLlxuICAgKlxuICAgKiDQn9C10YDQtdC00LDQudGC0LUgYHsgZnVsbDogdHJ1ZSB9YCwg0YfRgtC+0LHRiyDQt9Cw0L/RgNC+0YHQuNGC0Ywg0L/QvtC70L3Ri9C5INGB0L/QuNGB0L7QuiDRgNCw0LfRgNC10YjQtdC90LjQuVxuICAgKiDQv9C+0YDRgtCw0LvQsC4g0JHQtdC3INC/0LDRgNCw0LzQtdGC0YDQvtCyINCy0L7Qt9Cy0YDQsNGJ0LDRjtGC0YHRjyDRgNCw0LfRgNC10YjQtdC90LjRjywg0LTQvtGB0YLRg9C/0L3Ri9C1INC/0YDQuNC70L7QttC10L3QuNGOLlxuICAgKi9cbiAgcHVibGljIHNjb3BlKHBhcmFtOiBpQlhSZXN0UGFyYW1TY29wZSA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPHN0cmluZ1tdLCBzdHJpbmdbXSwgaUJYUmVzdFBhcmFtU2NvcGU+KFxuICAgICAgWydzY29wZSddLFxuICAgICAgcGFyYW1cbiAgICApXG4gIH1cblxuICAvKiog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6IFJFU1Qt0LzQtdGC0L7QtNC+0LIsINC00L7RgdGC0YPQv9C90YvRhSDRgtC10LrRg9GJ0LXQvNGDINC/0YDQuNC70L7QttC10L3QuNGOLiAqL1xuICBwdWJsaWMgbWV0aG9kcygpIHtcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8c3RyaW5nW10+KFsnbWV0aG9kcyddKVxuICB9XG5cbiAgLy8gcHVibGljIGJhdGNoPFQsIEMsIE0+KHBhcmFtOiBpQlhSZXN0TmF2dnlQYXJhbUJhdGNoPFQsIEMsIE0+KSB7XG4gIC8vICAgY29uc3QgbW9kaWZpZWRPYmplY3QgPSBPYmplY3QuZnJvbUVudHJpZXMoXHJcbiAgLy8gICAgIE9iamVjdC5lbnRyaWVzKHBhcmFtLmNtZCkubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAvLyAgICAgICBsZXQgbW9kaWZpZWRWYWx1ZSA9IHZhbHVlLnJlc3VsdFZhbmlsbGEuYXJndW1lbnRzXHJcbiAgLy8gICAgICAgcmV0dXJuIFtrZXksIG1vZGlmaWVkVmFsdWVdXHJcbiAgLy8gICAgIH0pXHJcbiAgLy8gICApXHJcbiAgLy9cclxuICAvLyAgIHJldHVybiB0aGlzLkJYUmVzdC5iYXRjaCh7XHJcbiAgLy8gICAgIGhhbHQ6IHBhcmFtLmhhbHQsXHJcbiAgLy8gICAgIGNtZDogbW9kaWZpZWRPYmplY3RcclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG59XG4iXX0=
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2dnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9yZXN0L25hdnZ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXpDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzdELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVB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aUJBQWlCLEVBQUUsQ0FBQTtZQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQTtZQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7UUFDMUIsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDdEIsQ0FBQyxTQUFTLENBQUMsRUFDWCxTQUFTLEVBQ1QsU0FBUyxDQUFDLE9BQU8sQ0FDbEIsQ0FBQTtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxRQUEyQixFQUFFO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3RCLENBQUMsT0FBTyxDQUFDLEVBQ1QsS0FBSyxDQUNOLENBQUE7SUFDSCxDQUFDO0lBRUQscUVBQXFFO0lBQzlELE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtJQUNqRCxDQUFDO0NBZUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCWFJlc3RNYXAgfSBmcm9tICcuLi9tYXAvcmVzdCdcclxuaW1wb3J0IHsgTmF2dnkgfSBmcm9tICcuLi9zZXJ2aWNlcy9uYXZ2eSdcclxuXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VXNlciB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvdXNlcidcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlMaXN0cyB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvbGlzdHMnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFzayB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvdGFzaydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlUYXNrcyB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvdGFza3MnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5RGlzayB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvZGlzaydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlCaXpQcm9jIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9iaXpwcm9jJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUxvZyB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvbG9nJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUNhbGVuZGFyIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9jYWxlbmRhcidcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlTb25ldEdyb3VwIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9zb25ldF9ncm91cCdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlTZXJ2ZXIgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3NlcnZlcidcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlEZXBhcnRtZW50IH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9kZXBhcnRtZW50J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUltIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9pbSdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlBcHAgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2FwcCdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlUaW1lTWFuIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS90aW1lbWFuJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVNvY2lhbE5ldFdvcmsgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3NvY2lhbG5ldHdvcmsnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5UHVsbCB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvcHVsbCdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlDcm0gfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2NybSdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlFdmVudCB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvZXZlbnQnXHJcbmltcG9ydCB7IGlCWFJlc3RQcm9maWxlLCBpQlhSZXN0UHJvZmlsZUh0dHAgfSBmcm9tICcuLi90eXBpZmljYXRpb24vcmVzdC9wcm9maWxlJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eU1ldGhvZCB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvbWV0aG9kJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUFjY2VzcyB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvYWNjZXNzJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUZlYXR1cmUgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2ZlYXR1cmUnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5QWkgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2FpL2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eU1haWxTZXJ2aWNlIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9tYWlsc2VydmljZSdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvbWVzc2FnZXNlcnZpY2UvaW5kZXgnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VXNlckNvbnNlbnQgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3VzZXJjb25zZW50L2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRlbGVwaG9ueSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvdGVsZXBob255L2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVZvdGUgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3ZvdGUvaW5kZXgnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5SW1Db25uZWN0b3IgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2ltY29ubmVjdG9yL2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUVudGl0eSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvZW50aXR5L2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUJpQ29ubmVjdG9yIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9iaWNvbm5lY3Rvci9pbmRleCdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlWb3hJbXBsYW50IH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS92b3hpbXBsYW50L2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eU1haWwgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L21haWwvaW5kZXgnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5Tm90ZSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvbm90ZS9pbmRleCdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlEb2N1bWVudEdlbmVyYXRvciB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvZG9jdW1lbnRnZW5lcmF0b3IvaW5kZXgnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5SW1Cb3QgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2ltYm90L2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUJvb2tpbmcgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2Jvb2tpbmcvaW5kZXgnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5SW1PcGVuTGluZXMgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2ltb3BlbmxpbmVzL2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUxhbmRpbmcgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2xhbmRpbmcvaW5kZXgnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5Q2F0YWxvZyB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvY2F0YWxvZy9pbmRleCdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlTYWxlIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9zYWxlL2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVNpZ24gfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3NpZ24vaW5kZXgnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5RXZlbnRMb2cgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2V2ZW50bG9nL2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVBsYWNlbWVudCB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvcGxhY2VtZW50J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVVzZXJGaWVsZFR5cGUgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3VzZXJmaWVsZHR5cGUnXHJcbmltcG9ydCB7IGlCWFJlc3RQYXJhbVNjb3BlIH0gZnJvbSAnLi4vdHlwaWZpY2F0aW9uL3Jlc3QvY29tbW9uJ1xyXG5pbXBvcnQgeyBpQlhSZXN0U2V0dGluZ3MgfSBmcm9tICcuLi90eXBpZmljYXRpb24vc2V0dGluZ3MnXHJcbmltcG9ydCB7IEJYUmVzdENvbnRleHQsIGVudGVyQ29udGV4dCwgZ2xvYmFsQ29udGV4dCwgcmVzdG9yZUNvbnRleHQgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb250ZXh0J1xyXG5cclxuZXhwb3J0IGNsYXNzIEJYUmVzdE5hdnZ5IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgYWk6IEJYUmVzdE5hdnZ5QWlcclxuICBwdWJsaWMgcmVhZG9ubHkgbWFpbFNlcnZpY2U6IEJYUmVzdE5hdnZ5TWFpbFNlcnZpY2VcclxuICBwdWJsaWMgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IEJYUmVzdE5hdnZ5TWVzc2FnZVNlcnZpY2VcclxuICBwdWJsaWMgcmVhZG9ubHkgdXNlckNvbnNlbnQ6IEJYUmVzdE5hdnZ5VXNlckNvbnNlbnRcclxuICBwdWJsaWMgcmVhZG9ubHkgdGVsZXBob255OiBCWFJlc3ROYXZ2eVRlbGVwaG9ueVxyXG4gIHB1YmxpYyByZWFkb25seSB2b3RlOiBCWFJlc3ROYXZ2eVZvdGVcclxuICBwdWJsaWMgcmVhZG9ubHkgaW1Db25uZWN0b3I6IEJYUmVzdE5hdnZ5SW1Db25uZWN0b3JcclxuICBwdWJsaWMgcmVhZG9ubHkgZW50aXR5OiBCWFJlc3ROYXZ2eUVudGl0eVxyXG4gIHB1YmxpYyByZWFkb25seSBiaUNvbm5lY3RvcjogQlhSZXN0TmF2dnlCaUNvbm5lY3RvclxyXG4gIHB1YmxpYyByZWFkb25seSB2b3hJbXBsYW50OiBCWFJlc3ROYXZ2eVZveEltcGxhbnRcclxuICBwdWJsaWMgcmVhZG9ubHkgbWFpbDogQlhSZXN0TmF2dnlNYWlsXHJcbiAgcHVibGljIHJlYWRvbmx5IG5vdGU6IEJYUmVzdE5hdnZ5Tm90ZVxyXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudEdlbmVyYXRvcjogQlhSZXN0TmF2dnlEb2N1bWVudEdlbmVyYXRvclxyXG4gIHB1YmxpYyByZWFkb25seSBpbUJvdDogQlhSZXN0TmF2dnlJbUJvdFxyXG4gIHB1YmxpYyByZWFkb25seSBib29raW5nOiBCWFJlc3ROYXZ2eUJvb2tpbmdcclxuICBwdWJsaWMgcmVhZG9ubHkgaW1PcGVuTGluZXM6IEJYUmVzdE5hdnZ5SW1PcGVuTGluZXNcclxuICBwdWJsaWMgcmVhZG9ubHkgbGFuZGluZzogQlhSZXN0TmF2dnlMYW5kaW5nXHJcbiAgcHVibGljIHJlYWRvbmx5IGNhdGFsb2c6IEJYUmVzdE5hdnZ5Q2F0YWxvZ1xyXG4gIHB1YmxpYyByZWFkb25seSBzYWxlOiBCWFJlc3ROYXZ2eVNhbGVcclxuICBwdWJsaWMgcmVhZG9ubHkgc2lnbjogQlhSZXN0TmF2dnlTaWduXHJcbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50TG9nOiBCWFJlc3ROYXZ2eUV2ZW50TG9nXHJcbiAgcHVibGljIHJlYWRvbmx5IHBsYWNlbWVudDogQlhSZXN0TmF2dnlQbGFjZW1lbnRcclxuICBwdWJsaWMgcmVhZG9ubHkgdXNlckZpZWxkVHlwZTogQlhSZXN0TmF2dnlVc2VyRmllbGRUeXBlXHJcbiAgcHVibGljIHJlYWRvbmx5IHVzZXI6IEJYUmVzdE5hdnZ5VXNlclxyXG4gIHB1YmxpYyByZWFkb25seSBsaXN0czogQlhSZXN0TmF2dnlMaXN0c1xyXG4gIHB1YmxpYyByZWFkb25seSB0YXNrOiBCWFJlc3ROYXZ2eVRhc2tcclxuICBwdWJsaWMgcmVhZG9ubHkgdGFza3M6IEJYUmVzdE5hdnZ5VGFza3NcclxuICBwdWJsaWMgcmVhZG9ubHkgZGlzazogQlhSZXN0TmF2dnlEaXNrXHJcbiAgcHVibGljIHJlYWRvbmx5IGJpelByb2M6IEJYUmVzdE5hdnZ5Qml6UHJvY1xyXG4gIHB1YmxpYyByZWFkb25seSBsb2c6IEJYUmVzdE5hdnZ5TG9nXHJcbiAgcHVibGljIHJlYWRvbmx5IGNhbGVuZGFyOiBCWFJlc3ROYXZ2eUNhbGVuZGFyXHJcbiAgcHVibGljIHJlYWRvbmx5IHNvbmV0X2dyb3VwOiBCWFJlc3ROYXZ2eVNvbmV0R3JvdXBcclxuICBwdWJsaWMgcmVhZG9ubHkgc2VydmVyOiBCWFJlc3ROYXZ2eVNlcnZlclxyXG4gIHB1YmxpYyByZWFkb25seSBkZXBhcnRtZW50OiBCWFJlc3ROYXZ2eURlcGFydG1lbnRcclxuICBwdWJsaWMgcmVhZG9ubHkgaW06IEJYUmVzdE5hdnZ5SW1cclxuICBwdWJsaWMgcmVhZG9ubHkgYXBwOiBCWFJlc3ROYXZ2eUFwcFxyXG4gIHB1YmxpYyByZWFkb25seSB0aW1lTWFuOiBCWFJlc3ROYXZ2eVRpbWVNYW5cclxuICBwdWJsaWMgcmVhZG9ubHkgc29jaWFsTmV0V29yazogQlhSZXN0TmF2dnlTb2NpYWxOZXRXb3JrXHJcbiAgcHVibGljIHJlYWRvbmx5IHB1bGw6IEJYUmVzdE5hdnZ5UHVsbFxyXG4gIHB1YmxpYyByZWFkb25seSBjcm06IEJYUmVzdE5hdnZ5Q3JtXHJcbiAgLyoqINCg0LXQs9C40YHRgtGA0LDRhtC40Y8g0L7QsdGA0LDQsdC+0YLRh9C40LrQvtCyINC4INGA0LDQsdC+0YLQsCDRgSDQvtC90LvQsNC50L0tINC4INC+0YTQu9Cw0LnQvS3RgdC+0LHRi9GC0LjRj9C80LguICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50OiBCWFJlc3ROYXZ2eUV2ZW50XHJcbiAgLyoqINCf0YDQvtCy0LXRgNC60LAg0YHRg9GJ0LXRgdGC0LLQvtCy0LDQvdC40Y8g0Lgg0LTQvtGB0YLRg9C/0L3QvtGB0YLQuCBSRVNULdC80LXRgtC+0LTQvtCyLiAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBtZXRob2Q6IEJYUmVzdE5hdnZ5TWV0aG9kXHJcbiAgLyoqINCf0L7Qu9GD0YfQtdC90LjQtSDQvtC/0LjRgdCw0L3QuNC5INC60L7QtNC+0LIg0LTQvtGB0YLRg9C/0LAuICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGFjY2VzczogQlhSZXN0TmF2dnlBY2Nlc3NcclxuICAvKiog0J/RgNC+0LLQtdGA0LrQsCDQtNC+0YHRgtGD0L/QvdC+0YHRgtC4INCy0L7Qt9C80L7QttC90L7RgdGC0LXQuSDQv9C+0YDRgtCw0LvQsC4gKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgZmVhdHVyZTogQlhSZXN0TmF2dnlGZWF0dXJlXHJcbiAgcHVibGljIHJlYWRvbmx5IE5hdnZ5OiBOYXZ2eVxyXG5cclxuICAvKipcclxuICAgKiBAcGFyYW0gc2V0dGluZ3Mg0KHQstC+0Lgg0L3QsNGB0YLRgNC+0LnQutC4INC60LvQuNC10L3RgtCwOiDQsNC00YDQtdGBINC/0L7RgNGC0LDQu9CwLCDRgdC/0L7RgdC+0LEg0LDQstGC0L7RgNC40LfQsNGG0LjQuCxcclxuICAgKiAgINC30LDQs9C+0LvQvtCy0LrQuC4g0JLRgdC1INC30LDQv9GA0L7RgdGLINGN0YLQvtCz0L4g0LrQu9C40LXQvdGC0LAg0LjQtNGD0YIg0YEg0L3QuNC80LgsINC00LDQttC1INC10YHQu9C4INCz0LvQvtCx0LDQu9GM0L3Ri9C1XHJcbiAgICogICBgQlhSZXN0U2V0dGluZ3NgINC/0L7Qt9C20LUg0LjQt9C80LXQvdGP0YLRgdGPLiDQotCw0Log0LIg0L7QtNC90L7QvCDQv9GA0L7RhtC10YHRgdC1INC80L7QttC90L4g0YDQsNCx0L7RgtCw0YLRjFxyXG4gICAqICAg0YEg0L3QtdGB0LrQvtC70YzQutC40LzQuCDQv9C+0YDRgtCw0LvQsNC80LguINCR0LXQtyDQsNGA0LPRg9C80LXQvdGC0LAg0LrQu9C40LXQvdGCINGA0LDQsdC+0YLQsNC10YIg0YEg0LPQu9C+0LHQsNC70YzQvdGL0LzQuFxyXG4gICAqICAgYEJYUmVzdFNldHRpbmdzYCwg0LrQsNC6INGA0LDQvdGM0YjQtS5cclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihzZXR0aW5ncz86IGlCWFJlc3RTZXR0aW5ncykge1xyXG4gICAgLy8g0JrQsNC20LTRi9C5IEhUVFAt0L7QsdGK0LXQutGCINC30LDQv9C+0LzQuNC90LDQtdGCINC60L7QvdGC0LXQutGB0YIg0LIg0LzQvtC80LXQvdGCINGB0L7Qt9C00LDQvdC40Y8sINC/0L7RjdGC0L7QvNGDINCy0YHQtVxyXG4gICAgLy8g0YDQsNC30LTQtdC70Ysg0YHQvtC30LTQsNGO0YLRgdGPLCDQv9C+0LrQsCDQstC60LvRjtGH0ZHQvSDQutC+0L3RgtC10LrRgdGCINC60LvQuNC10L3RgtCwLiDQodC+0LfQtNCw0L3QuNC1INC40LTRkdGCINCyINGC0LXQu9C1XHJcbiAgICAvLyDQutC+0L3RgdGC0YDRg9C60YLQvtGA0LAsINCwINC90LUg0LIg0LjQvdC40YbQuNCw0LvQuNC30LDRgtC+0YDQsNGFINC/0L7Qu9C10Lk6INGC0L7Qu9GM0LrQviDRgtCw0LogZmluYWxseSDQstC10YDQvdGR0YJcclxuICAgIC8vINC/0YDQtdC20L3QuNC5INC60L7QvdGC0LXQutGB0YIsINC00LDQttC1INC10YHQu9C4INC60LDQutC+0Lkt0YLQviDRgNCw0LfQtNC10Lsg0LHRgNC+0YHQuNGCINC40YHQutC70Y7Rh9C10L3QuNC1LiDQmNC90LDRh9C1XHJcbiAgICAvLyDQvtCx0YrQtdC60YLRiywg0YHQvtC30LTQsNC90L3Ri9C1INC/0YDQuNC70L7QttC10L3QuNC10Lwg0L/QvtC30LbQtSwg0YPRiNC70Lgg0LHRiyDQvdCwINC/0L7RgNGC0LDQuyDRjdGC0L7Qs9C+INC60LvQuNC10L3RgtCwLlxyXG4gICAgY29uc3QgcHJldmlvdXMgPSBlbnRlckNvbnRleHQoc2V0dGluZ3MgPyBuZXcgQlhSZXN0Q29udGV4dChzZXR0aW5ncykgOiBnbG9iYWxDb250ZXh0KVxyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5haSA9IG5ldyBCWFJlc3ROYXZ2eUFpKClcclxuICAgICAgdGhpcy5tYWlsU2VydmljZSA9IG5ldyBCWFJlc3ROYXZ2eU1haWxTZXJ2aWNlKClcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZSA9IG5ldyBCWFJlc3ROYXZ2eU1lc3NhZ2VTZXJ2aWNlKClcclxuICAgICAgdGhpcy51c2VyQ29uc2VudCA9IG5ldyBCWFJlc3ROYXZ2eVVzZXJDb25zZW50KClcclxuICAgICAgdGhpcy50ZWxlcGhvbnkgPSBuZXcgQlhSZXN0TmF2dnlUZWxlcGhvbnkoKVxyXG4gICAgICB0aGlzLnZvdGUgPSBuZXcgQlhSZXN0TmF2dnlWb3RlKClcclxuICAgICAgdGhpcy5pbUNvbm5lY3RvciA9IG5ldyBCWFJlc3ROYXZ2eUltQ29ubmVjdG9yKClcclxuICAgICAgdGhpcy5lbnRpdHkgPSBuZXcgQlhSZXN0TmF2dnlFbnRpdHkoKVxyXG4gICAgICB0aGlzLmJpQ29ubmVjdG9yID0gbmV3IEJYUmVzdE5hdnZ5QmlDb25uZWN0b3IoKVxyXG4gICAgICB0aGlzLnZveEltcGxhbnQgPSBuZXcgQlhSZXN0TmF2dnlWb3hJbXBsYW50KClcclxuICAgICAgdGhpcy5tYWlsID0gbmV3IEJYUmVzdE5hdnZ5TWFpbCgpXHJcbiAgICAgIHRoaXMubm90ZSA9IG5ldyBCWFJlc3ROYXZ2eU5vdGUoKVxyXG4gICAgICB0aGlzLmRvY3VtZW50R2VuZXJhdG9yID0gbmV3IEJYUmVzdE5hdnZ5RG9jdW1lbnRHZW5lcmF0b3IoKVxyXG4gICAgICB0aGlzLmltQm90ID0gbmV3IEJYUmVzdE5hdnZ5SW1Cb3QoKVxyXG4gICAgICB0aGlzLmJvb2tpbmcgPSBuZXcgQlhSZXN0TmF2dnlCb29raW5nKClcclxuICAgICAgdGhpcy5pbU9wZW5MaW5lcyA9IG5ldyBCWFJlc3ROYXZ2eUltT3BlbkxpbmVzKClcclxuICAgICAgdGhpcy5sYW5kaW5nID0gbmV3IEJYUmVzdE5hdnZ5TGFuZGluZygpXHJcbiAgICAgIHRoaXMuY2F0YWxvZyA9IG5ldyBCWFJlc3ROYXZ2eUNhdGFsb2coKVxyXG4gICAgICB0aGlzLnNhbGUgPSBuZXcgQlhSZXN0TmF2dnlTYWxlKClcclxuICAgICAgdGhpcy5zaWduID0gbmV3IEJYUmVzdE5hdnZ5U2lnbigpXHJcbiAgICAgIHRoaXMuZXZlbnRMb2cgPSBuZXcgQlhSZXN0TmF2dnlFdmVudExvZygpXHJcbiAgICAgIHRoaXMucGxhY2VtZW50ID0gbmV3IEJYUmVzdE5hdnZ5UGxhY2VtZW50KClcclxuICAgICAgdGhpcy51c2VyRmllbGRUeXBlID0gbmV3IEJYUmVzdE5hdnZ5VXNlckZpZWxkVHlwZSgpXHJcbiAgICAgIHRoaXMudXNlciA9IG5ldyBCWFJlc3ROYXZ2eVVzZXIoKVxyXG4gICAgICB0aGlzLmxpc3RzID0gbmV3IEJYUmVzdE5hdnZ5TGlzdHMoKVxyXG4gICAgICB0aGlzLnRhc2sgPSBuZXcgQlhSZXN0TmF2dnlUYXNrKClcclxuICAgICAgdGhpcy50YXNrcyA9IG5ldyBCWFJlc3ROYXZ2eVRhc2tzKClcclxuICAgICAgdGhpcy5kaXNrID0gbmV3IEJYUmVzdE5hdnZ5RGlzaygpXHJcbiAgICAgIHRoaXMuYml6UHJvYyA9IG5ldyBCWFJlc3ROYXZ2eUJpelByb2MoKVxyXG4gICAgICB0aGlzLmxvZyA9IG5ldyBCWFJlc3ROYXZ2eUxvZygpXHJcbiAgICAgIHRoaXMuY2FsZW5kYXIgPSBuZXcgQlhSZXN0TmF2dnlDYWxlbmRhcigpXHJcbiAgICAgIHRoaXMuc29uZXRfZ3JvdXAgPSBuZXcgQlhSZXN0TmF2dnlTb25ldEdyb3VwKClcclxuICAgICAgdGhpcy5zZXJ2ZXIgPSBuZXcgQlhSZXN0TmF2dnlTZXJ2ZXIoKVxyXG4gICAgICB0aGlzLmRlcGFydG1lbnQgPSBuZXcgQlhSZXN0TmF2dnlEZXBhcnRtZW50KClcclxuICAgICAgdGhpcy5pbSA9IG5ldyBCWFJlc3ROYXZ2eUltKClcclxuICAgICAgdGhpcy5hcHAgPSBuZXcgQlhSZXN0TmF2dnlBcHAoKVxyXG4gICAgICB0aGlzLnRpbWVNYW4gPSBuZXcgQlhSZXN0TmF2dnlUaW1lTWFuKClcclxuICAgICAgdGhpcy5zb2NpYWxOZXRXb3JrID0gbmV3IEJYUmVzdE5hdnZ5U29jaWFsTmV0V29yaygpXHJcbiAgICAgIHRoaXMucHVsbCA9IG5ldyBCWFJlc3ROYXZ2eVB1bGwoKVxyXG4gICAgICB0aGlzLmNybSA9IG5ldyBCWFJlc3ROYXZ2eUNybSgpXHJcbiAgICAgIHRoaXMuZXZlbnQgPSBuZXcgQlhSZXN0TmF2dnlFdmVudCgpXHJcbiAgICAgIHRoaXMubWV0aG9kID0gbmV3IEJYUmVzdE5hdnZ5TWV0aG9kKClcclxuICAgICAgdGhpcy5hY2Nlc3MgPSBuZXcgQlhSZXN0TmF2dnlBY2Nlc3MoKVxyXG4gICAgICB0aGlzLmZlYXR1cmUgPSBuZXcgQlhSZXN0TmF2dnlGZWF0dXJlKClcclxuICAgICAgdGhpcy5OYXZ2eSA9IG5ldyBOYXZ2eSgpXHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICByZXN0b3JlQ29udGV4dChwcmV2aW91cylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINCx0LDQt9C+0LLRg9GOINC40L3RhNC+0YDQvNCw0YbQuNGOINC+INGC0LXQutGD0YnQtdC8INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtSDQsdC10Lcgc2NvcGUgYHVzZXJgLlxyXG4gICAqXHJcbiAgICog0KDQtdC30YPQu9GM0YLQsNGCINGB0L7QtNC10YDQttC40YIg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAsINC40LzRjywg0YTQsNC80LjQu9C40Y4sINC/0YDQuNC30L3QsNC6INCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0LAsXHJcbiAgICog0L/QvtC7LCDRh9Cw0YHQvtCy0L7QuSDQv9C+0Y/RgSDQuCDRgdCy0Y/Qt9Cw0L3QvdGL0LUg0L/QvtC70Y8g0L/RgNC+0YTQuNC70Y8uXHJcbiAgICovXHJcbiAgcHVibGljIHByb2ZpbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8aUJYUmVzdFByb2ZpbGVIdHRwLCBpQlhSZXN0UHJvZmlsZT4oXHJcbiAgICAgIFsncHJvZmlsZSddLFxyXG4gICAgICB1bmRlZmluZWQsXHJcbiAgICAgIEJYUmVzdE1hcC5wcm9maWxlXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgNCw0LfRgNC10YjQtdC90LjRjyDRgtC10LrRg9GJ0LXQs9C+INC/0YDQuNC70L7QttC10L3QuNGPLlxyXG4gICAqXHJcbiAgICog0J/QtdGA0LXQtNCw0LnRgtC1IGB7IGZ1bGw6IHRydWUgfWAsINGH0YLQvtCx0Ysg0LfQsNC/0YDQvtGB0LjRgtGMINC/0L7Qu9C90YvQuSDRgdC/0LjRgdC+0Log0YDQsNC30YDQtdGI0LXQvdC40LlcclxuICAgKiDQv9C+0YDRgtCw0LvQsC4g0JHQtdC3INC/0LDRgNCw0LzQtdGC0YDQvtCyINCy0L7Qt9Cy0YDQsNGJ0LDRjtGC0YHRjyDRgNCw0LfRgNC10YjQtdC90LjRjywg0LTQvtGB0YLRg9C/0L3Ri9C1INC/0YDQuNC70L7QttC10L3QuNGOLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzY29wZShwYXJhbTogaUJYUmVzdFBhcmFtU2NvcGUgPSB7fSkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPHN0cmluZ1tdLCBzdHJpbmdbXSwgaUJYUmVzdFBhcmFtU2NvcGU+KFxyXG4gICAgICBbJ3Njb3BlJ10sXHJcbiAgICAgIHBhcmFtXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKiog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6IFJFU1Qt0LzQtdGC0L7QtNC+0LIsINC00L7RgdGC0YPQv9C90YvRhSDRgtC10LrRg9GJ0LXQvNGDINC/0YDQuNC70L7QttC10L3QuNGOLiAqL1xyXG4gIHB1YmxpYyBtZXRob2RzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPHN0cmluZ1tdPihbJ21ldGhvZHMnXSlcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBiYXRjaDxULCBDLCBNPihwYXJhbTogaUJYUmVzdE5hdnZ5UGFyYW1CYXRjaDxULCBDLCBNPikge1xyXG4gIC8vICAgY29uc3QgbW9kaWZpZWRPYmplY3QgPSBPYmplY3QuZnJvbUVudHJpZXMoXHJcbiAgLy8gICAgIE9iamVjdC5lbnRyaWVzKHBhcmFtLmNtZCkubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAvLyAgICAgICBsZXQgbW9kaWZpZWRWYWx1ZSA9IHZhbHVlLnJlc3VsdFZhbmlsbGEuYXJndW1lbnRzXHJcbiAgLy8gICAgICAgcmV0dXJuIFtrZXksIG1vZGlmaWVkVmFsdWVdXHJcbiAgLy8gICAgIH0pXHJcbiAgLy8gICApXHJcbiAgLy9cclxuICAvLyAgIHJldHVybiB0aGlzLkJYUmVzdC5iYXRjaCh7XHJcbiAgLy8gICAgIGhhbHQ6IHBhcmFtLmhhbHQsXHJcbiAgLy8gICAgIGNtZDogbW9kaWZpZWRPYmplY3RcclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG59XHJcbiJdfQ==
@@ -343,9 +343,6 @@ export async function getBase64FileLikeStr(file) {
343
343
  return undefined;
344
344
  }
345
345
  export function prepareBaseAddress(url, add = '') {
346
- // if (url.search('https://') !== 0 && url.search('http://')) {
347
- // url = 'https://' + url
348
- // }
349
346
  if (add && add.length > 0) {
350
347
  if (url.lastIndexOf('/') !== (url.length - 1)) {
351
348
  url = url + '/';
@@ -357,4 +354,4 @@ export function prepareBaseAddress(url, add = '') {
357
354
  }
358
355
  return url;
359
356
  }
360
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRXREOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBQyxHQUFRLEVBQUUsVUFBVSxHQUFHLEtBQUs7SUFDaEQsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN0QyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxnQ0FBZ0MsQ0FBQyxDQUFBO1FBQ3hFLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNwQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFDLEdBQVEsRUFBRSxVQUFVLEdBQUcsSUFBSSxFQUFFLFFBQVEsR0FBRyxDQUFDO0lBQzdELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUUxQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRWpDLElBQUksVUFBVTtZQUFFLE1BQU0sS0FBSyxDQUFBO1FBRTNCLGtEQUFrRDtRQUNsRCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQy9CLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFXLFNBQVEsS0FBSztJQUNuQyxZQUE0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QTtJQUN4QyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0IsT0FBTztZQUNMLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2QsQ0FBQTtJQUNILENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQTtBQUNsQixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEdBQVcsRUFBRSxNQUEwQixFQUFFO0lBQzFFLCtEQUErRDtJQUMvRCwyQkFBMkI7SUFDM0IsSUFBSTtJQUVKLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUIsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFBO1FBQ2pCLENBQUM7UUFFRCxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQTtJQUNqQixDQUFDO0lBRUQsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b0xvY2FsQXRvbSB9IGZyb20gJy4uL2Z1bmN0aW9ucy90b0xvY2FsQXRvbSdcclxuXHJcbi8qKlxyXG4gKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC30L3QsNGH0LXQvdC40LUg0LIg0YHRgtGA0L7QutGDXHJcbiAqXHJcbiAqIEBwYXJhbSB2YWxcclxuICogQHBhcmFtIHRocm93RXJyb3JcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB0b1N0cih2YWw6IGFueSwgdGhyb3dFcnJvciA9IGZhbHNlKTogc3RyaW5nIHtcclxuICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhyb3dFcnJvcikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdmFsdWU6ICR7dmFsfSBjYW5ub3QgYmUgY29udmVydGVkIHRvIHN0cmluZ2ApXHJcbiAgICB9XHJcbiAgICByZXR1cm4gJydcclxuICB9XHJcbiAgcmV0dXJuIFN0cmluZyh2YWwpXHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC30L3QsNGH0LXQvdC40LUg0LIg0YfQuNGB0LvQvlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvTnVtKHZhbDogYW55LCB0aHJvd0Vycm9yID0gdHJ1ZSwgZGVmVmFsdWUgPSAwKTogbnVtYmVyIHtcclxuICBjb25zdCByZXN1bHQgPSBOdW1iZXIodmFsKVxyXG5cclxuICBpZiAoaXNOYU4ocmVzdWx0KSkge1xyXG4gICAgY29uc3QgZXJyb3IgPSBuZXcgVG9OdW1FcnJvcih2YWwpXHJcblxyXG4gICAgaWYgKHRocm93RXJyb3IpIHRocm93IGVycm9yXHJcblxyXG4gICAgLy8g0JXRgdC70Lgg0L7RiNC40LHQutCwINC90LUg0L/RgNC+0LHRgNCw0YHRi9Cy0LDQtdGC0YHRjyDigJQg0L/RgNC+0YHRgtC+INC70L7Qs9C40YDRg9C10LxcclxuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IudG9TdHJpbmcoKSlcclxuICAgIHJldHVybiBkZWZWYWx1ZVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlc3VsdFxyXG59XHJcblxyXG4vKipcclxuICog0JrQsNGB0YLQvtC80L3Ri9C5INGC0LjQvyDQvtGI0LjQsdC60Lgg0LTQu9GPINGH0LjRgdC70L7QstGL0YUg0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjQuVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFRvTnVtRXJyb3IgZXh0ZW5kcyBFcnJvciB7XHJcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHZhbHVlOiBhbnkpIHtcclxuICAgIGNvbnN0IHZhbHVlVHlwZSA9IHR5cGVvZiB2YWx1ZVxyXG4gICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPVxyXG4gICAgICB2YWx1ZVR5cGUgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogU3RyaW5nKHZhbHVlKVxyXG4gICAgY29uc3QgbWVzc2FnZSA9IGBJbnZhbGlkIHZhbHVlIHBhc3NlZCB0byB0b051bSgpOiAke2Zvcm1hdHRlZFZhbHVlfSAodHlwZTogJHt2YWx1ZVR5cGV9KWBcclxuICAgIHN1cGVyKG1lc3NhZ2UpXHJcbiAgICB0aGlzLm5hbWUgPSAnVG9OdW1FcnJvcidcclxuXHJcbiAgICAvLyDRgdC+0YXRgNCw0L3Rj9C10Lwg0YHRgtC10Log0LLRi9C30L7QstCwICjQvtGC0YTQuNC70YzRgtGA0L7QstCw0LIg0YHQsNC8INC60L7QvdGB0YLRgNGD0LrRgtC+0YApXHJcbiAgICBpZiAodGhpcy5zdGFjaykge1xyXG4gICAgICBjb25zdCBzdGFja0xpbmVzID0gdGhpcy5zdGFjay5zcGxpdCgnXFxuJylcclxuICAgICAgLy8g0KPQtNCw0LvRj9C10Lwg0YHRgtGA0L7QutGDINC60L7QvdGB0YLRgNGD0LrRgtC+0YDQsCAo0YfRgtC+0LHRiyDRgdGC0LXQuiDQvdCw0YfQuNC90LDQu9GB0Y8g0YEg0LzQtdGB0YLQsCDQstGL0LfQvtCy0LAgdG9OdW0pXHJcbiAgICAgIHRoaXMuc3RhY2sgPSBbc3RhY2tMaW5lc1swXSwgLi4uc3RhY2tMaW5lcy5zbGljZSgyKV0uam9pbignXFxuJylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBg4p2MIFske3RoaXMubmFtZX1dICR7dGhpcy5tZXNzYWdlfWAsXHJcbiAgICAgIHRoaXMuc3RhY2sgPyBgICAgU3RhY2sgdHJhY2U6XFxuJHt0aGlzLnN0YWNrfWAgOiAnJyxcclxuICAgIF0uam9pbignXFxuJylcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQntC/0YbQuNC4INC00LvRjyB0b0RhdGUoKS4g0J7RgdGC0LDQstC70LXQvdGLINC00LvRjyDQvtCx0YDQsNGC0L3QvtC5INGB0L7QstC80LXRgdGC0LjQvNC+0YHRgtC4INGB0LjQs9C90LDRgtGD0YDRiyDigJQg0YDQsNC90LXQtSDQv9GA0L7QsdGA0LDRgdGL0LLQsNC70LjRgdGMXHJcbiAqINCyIGx1eG9uICjQt9C+0L3QsC/Qu9C+0LrQsNC70YwpLiDQoNCw0LfQsdC+0YAg0LTQsNGC0Ysg0YLQtdC/0LXRgNGMINC90LUg0LfQsNCy0LjRgdC40YIg0L7RgiDQstC90LXRiNC90LjRhSDQsdC40LHQu9C40L7RgtC10Log0Lgg0L/QvtC00LTQtdGA0LbQuNCy0LDQtdGCXHJcbiAqINGC0L7Qu9GM0LrQviDRhNC40LrRgdC40YDQvtCy0LDQvdC90YvQtSDRh9C40YHQu9C+0LLRi9C1INGC0L7QutC10L3RiyAo0YHQvC4gcGFyc2VEYXRlV2l0aEZvcm1hdCksINC/0L7RjdGC0L7QvNGDINC+0L/RhtC40Lgg0YHQtdC50YfQsNGBINC90LUg0LjRgdC/0L7Qu9GM0LfRg9GO0YLRgdGPLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBUb0RhdGVPcHRpb25zIHtcclxuICB6b25lPzogc3RyaW5nXHJcbiAgbG9jYWxlPzogc3RyaW5nXHJcbn1cclxuXHJcbi8qKiDQodC+0L7RgtCy0LXRgtGB0YLQstC40LUg0YLQvtC60LXQvdC+0LIg0YTQvtGA0LzQsNGC0LAg0YDQtdCz0YPQu9GP0YDQvdGL0Lwg0LPRgNGD0L/Qv9Cw0Lwg0LfQsNGF0LLQsNGC0LAuINCf0L7RgNGP0LTQvtC6INCy0LDQttC10L06INC00LvQuNC90L3Ri9C1INGC0L7QutC10L3RiyDQv9GA0L7QstC10YDRj9GO0YLRgdGPINGA0LDQvdGM0YjQtSDQutC+0YDQvtGC0LrQuNGFICovXHJcbmNvbnN0IERBVEVfRk9STUFUX1RPS0VOUzogW3N0cmluZywgc3RyaW5nXVtdID0gW1xyXG4gIFsneXl5eScsICcoPzx5eXl5PlxcXFxkezR9KSddLFxyXG4gIFsneXknLCAnKD88eXk+XFxcXGR7Mn0pJ10sXHJcbiAgWydNTScsICcoPzxNTT5cXFxcZHsyfSknXSxcclxuICBbJ00nLCAnKD88TT5cXFxcZHsxLDJ9KSddLFxyXG4gIFsnZGQnLCAnKD88ZGQ+XFxcXGR7Mn0pJ10sXHJcbiAgWydkJywgJyg/PGQ+XFxcXGR7MSwyfSknXSxcclxuICBbJ0hIJywgJyg/PEhIPlxcXFxkezJ9KSddLFxyXG4gIFsnSCcsICcoPzxIPlxcXFxkezEsMn0pJ10sXHJcbiAgWydtbScsICcoPzxtbT5cXFxcZHsyfSknXSxcclxuICBbJ20nLCAnKD88bT5cXFxcZHsxLDJ9KSddLFxyXG4gIFsnc3MnLCAnKD88c3M+XFxcXGR7Mn0pJ10sXHJcbiAgWydzJywgJyg/PHM+XFxcXGR7MSwyfSknXSxcclxuXVxyXG5cclxuY29uc3QgREFURV9GT1JNQVRfVE9LRU5fUkVHRVggPSBuZXcgUmVnRXhwKERBVEVfRk9STUFUX1RPS0VOUy5tYXAoKFt0b2tlbl0pID0+IHRva2VuKS5qb2luKCd8JyksICdnJylcclxuXHJcbmNvbnN0IFRJTUVfT05MWV9UT0tFTlMgPSBuZXcgU2V0KFsnSEgnLCAnSCcsICdtbScsICdtJywgJ3NzJywgJ3MnXSlcclxuXHJcbi8qKlxyXG4gKiDQktGL0LLQvtC00LjRgiDRhNC+0YDQvNCw0YIgXCLRgtC+0LvRjNC60L4g0LTQsNGC0LBcIiDQuNC3INGE0L7RgNC80LDRgtCwINC00LDRgtGLLdC4LdCy0YDQtdC80LXQvdC4IOKAlCDQvtGC0YDQtdC30LDQtdGCINCy0YDQtdC80Y8g0Lgg0YDQsNC30LTQtdC70LjRgtC10LvRjCDQv9C10YDQtdC0XHJcbiAqINC90LjQvCAo0L3QsNC/0YDQuNC80LXRgCwgYCdkZC5NTS55eXl5IEhIOm1tOnNzJ2Ag4oaSIGAnZGQuTU0ueXl5eSdgKS4g0J/QvtGA0Y/QtNC+0Log0LTQtdC90Ywv0LzQtdGB0Y/Rhi/Qs9C+0LQg0YMg0L/QvtC70LXQuVxyXG4gKiBcItC00LDRgtCwXCIg0LggXCLQtNCw0YLQsC3QstGA0LXQvNGPXCIg0L3QsCDQvtC00L3QvtC8INC/0L7RgNGC0LDQu9C1IEJpdHJpeDI0INCy0YHQtdCz0LTQsCDRgdC+0LPQu9Cw0YHQvtCy0LDQvSDigJQg0YDQsNC30LvQuNGH0LDQtdGC0YHRjyDRgtC+0LvRjNC60L5cclxuICog0L3QsNC70LjRh9C40LUgYEhIOm1tOnNzYCwg0L/QvtGN0YLQvtC80YMg0L3QtdGCINGB0LzRi9GB0LvQsCDQt9Cw0YHRgtCw0LLQu9GP0YLRjCDQstGL0LfRi9Cy0LDRjtGJ0LXQs9C+INC/0LXRgNC10LTQsNCy0LDRgtGMINC+0LHQsCDRhNC+0YDQvNCw0YLQsCDQuFxyXG4gKiDQtNC10YDQttCw0YLRjCDQuNGFINCyINGB0LjQvdGF0YDQvtC90LUg0LLRgNGD0YfQvdGD0Y4uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlRGF0ZU9ubHlGb3JtYXQoZGF0ZVRpbWVGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgREFURV9GT1JNQVRfVE9LRU5fUkVHRVgubGFzdEluZGV4ID0gMFxyXG4gIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbFxyXG5cclxuICB3aGlsZSAoKG1hdGNoID0gREFURV9GT1JNQVRfVE9LRU5fUkVHRVguZXhlYyhkYXRlVGltZUZvcm1hdCkpICE9PSBudWxsKSB7XHJcbiAgICBpZiAoVElNRV9PTkxZX1RPS0VOUy5oYXMobWF0Y2hbMF0pKSB7XHJcbiAgICAgIC8vINCe0YLRgNC10LfQsNC10Lwg0LvRjtCx0L7QuSDRgNCw0LfQtNC10LvQuNGC0LXQu9GMINC/0LXRgNC10LQg0LLRgNC10LzQtdC90LXQvCwg0LLQutC70Y7Rh9Cw0Y8g0LHRg9C60LLQtdC90L3Ri9C5ICjQvdCw0L/RgNC40LzQtdGAICdUJyDQsiBJU08t0YHRgtC40LvQtVxyXG4gICAgICAvLyAnZGQuTU0ueXl5eVRISDptbTpzcycpLCDQsCDQvdC1INGC0L7Qu9GM0LrQviDQv9GD0L3QutGC0YPQsNGG0LjRjiDigJQg0L7RgdGC0LDQvdCw0LLQu9C40LLQsNC10LzRgdGPINC90LAg0L/QvtGB0LvQtdC00L3QtdC8INGB0LjQvNCy0L7Qu9C1LFxyXG4gICAgICAvLyDQutC+0YLQvtGA0YvQuSDRgNC10LDQu9GM0L3QviDQvtGC0L3QvtGB0LjRgtGB0Y8g0Log0YLQvtC60LXQvdCw0Lwg0LTQsNGC0YsgKHkvTS9kKS5cclxuICAgICAgY29uc3QgZGF0ZVBhcnQgPSBkYXRlVGltZUZvcm1hdC5zbGljZSgwLCBtYXRjaC5pbmRleCkucmVwbGFjZSgvW155TWRdKyQvLCAnJylcclxuICAgICAgcmV0dXJuIGRhdGVQYXJ0IHx8IGRhdGVUaW1lRm9ybWF0XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZGF0ZVRpbWVGb3JtYXRcclxufVxyXG5cclxuZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gc3RyLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJylcclxufVxyXG5cclxuLyoqXHJcbiAqINCk0L7RgNC80LDRgtGLINC00LDRgiwg0LrQvtGC0L7RgNGL0LUgQml0cml4MjQg0YDQtdCw0LvRjNC90L4g0L/RgNC40YHRi9C70LDQtdGCINCyINGA0LDQt9C90YvRhSDQvNC10YLQvtC00LDRhSBSRVNUINC4INC90LAg0YDQsNC30L3Ri9GFXHJcbiAqINC/0L7RgNGC0LDQu9Cw0YUg4oCUINGE0L7RgNC80LDRgiDQtNCw0YLRiy/QstGA0LXQvNC10L3QuCDQsiDQvtGC0LLQtdGC0LUg0LfQsNCy0LjRgdC40YIg0L7RgiDQvdCw0YHRgtGA0L7QtdC6INC/0L7RgNGC0LDQu9CwICjQndCw0YHRgtGA0L7QudC60Lgg4oaSINGE0L7RgNC80LDRglxyXG4gKiDQtNCw0YLRiyDQuCDQstGA0LXQvNC10L3QuCksINC/0L7RjdGC0L7QvNGDINC+0LTQuNC9INC30LDRhdCw0YDQtNC60L7QttC10L3QvdGL0Lkg0YjQsNCx0LvQvtC9INC90LUg0YPQvdC40LLQtdGA0YHQsNC70LXQvS4g0JXRgdC70Lgg0Y/QstC90YvQuSBgZm9ybWF0YCxcclxuICog0L/QtdGA0LXQtNCw0L3QvdGL0Lkg0LIgdG9EYXRlKCksINC90LUg0YHQvtCy0L/QsNC7INGB0L4g0LfQvdCw0YfQtdC90LjQtdC8LCDQv9C10YDQtdC0INGC0LXQvCDQutCw0Log0YHRh9C40YLQsNGC0Ywg0YHRgtGA0L7QutGDINC90LXQstCw0LvQuNC00L3QvtC5LFxyXG4gKiDQv9GA0L7QsdGD0LXQvCDRjdGC0Lgg0LLQsNGA0LjQsNC90YLRiyDQv9C+INC+0YfQtdGA0LXQtNC4IOKAlCDQvtC90Lgg0L3QtSDQv9C10YDQtdGB0LXQutCw0Y7RgtGB0Y8g0L/QviDRgNCw0LfQtNC10LvQuNGC0LXQu9GP0Lwv0L/QvtGA0Y/QtNC60YMg0YLQvtC60LXQvdC+0LIsXHJcbiAqINGC0LDQuiDRh9GC0L4g0LvQvtC20L3Ri9GFINGB0L7QstC/0LDQtNC10L3QuNC5INC90LUg0LHRg9C00LXRgi5cclxuICovXHJcbmNvbnN0IEZBTExCQUNLX0RBVEVfRk9STUFUUyA9IFtcclxuICAnZGQuTU0ueXl5eSBISDptbTpzcycsXHJcbiAgJ3l5eXktTU0tZGQgSEg6bW06c3MnLFxyXG4gICdkZC5NTS55eXl5JyxcclxuICAneXl5eS1NTS1kZCcsXHJcbl1cclxuXHJcbi8qKlxyXG4gKiDQoNCw0LfQsdC40YDQsNC10YIg0YHRgtGA0L7QutGDINC00LDRgtGLINC/0L4g0L/RgNC+0YHRgtC+0LzRgyDRiNCw0LHQu9C+0L3RgyAoeXl5eSwgTU0sIGRkLCBISCwgbW0sIHNzINC4INC40YUg0L7QtNC90L7QsdGD0LrQstC10L3QvdGL0LVcclxuICog0LLQsNGA0LjQsNC90YLRiywg0L3QsNC/0YDQuNC80LXRgCAnZGQuTU0ueXl5eSBISDptbTpzcycpLiDQoNCw0LfQtNC10LvQuNGC0LXQu9C4INC80LXQttC00YMg0YLQvtC60LXQvdCw0LzQuCDQsdC10YDRg9GC0YHRjyDQuNC3INGI0LDQsdC70L7QvdCwXHJcbiAqINC60LDQuiDQtdGB0YLRjC4g0J3QtSDQv9C+0LTQtNC10YDQttC40LLQsNC10YIg0LvQvtC60LDQu9C4LCDQvdCw0LfQstCw0L3QuNGPINC80LXRgdGP0YbQtdCyINC4INGH0LDRgdC+0LLRi9C1INC/0L7Rj9GB0LAg4oCUINC00LvRjyBSRVNULdC+0YLQstC10YLQvtCyXHJcbiAqIEJpdHJpeDI0INC+0L3QuCDQvdC1INGC0YDQtdCx0YPRjtGC0YHRjywg0LfQvdCw0YfQtdC90LjRjyDQstGB0LXQs9C00LAg0L/RgNC40YXQvtC00Y/RgiDQsiDRhNC40LrRgdC40YDQvtCy0LDQvdC90L7QvCDRh9C40YHQu9C+0LLQvtC8INCy0LjQtNC1LlxyXG4gKi9cclxuZnVuY3Rpb24gcGFyc2VEYXRlV2l0aEZvcm1hdCh2YWw6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XHJcbiAgY29uc3QgdG9rZW5NYXAgPSBuZXcgTWFwKERBVEVfRk9STUFUX1RPS0VOUylcclxuICBsZXQgcGF0dGVybiA9ICcnXHJcbiAgbGV0IGxhc3RJbmRleCA9IDBcclxuICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGxcclxuXHJcbiAgREFURV9GT1JNQVRfVE9LRU5fUkVHRVgubGFzdEluZGV4ID0gMFxyXG4gIHdoaWxlICgobWF0Y2ggPSBEQVRFX0ZPUk1BVF9UT0tFTl9SRUdFWC5leGVjKGZvcm1hdCkpICE9PSBudWxsKSB7XHJcbiAgICBwYXR0ZXJuICs9IGVzY2FwZVJlZ0V4cChmb3JtYXQuc2xpY2UobGFzdEluZGV4LCBtYXRjaC5pbmRleCkpXHJcbiAgICBwYXR0ZXJuICs9IHRva2VuTWFwLmdldChtYXRjaFswXSlcclxuICAgIGxhc3RJbmRleCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoXHJcbiAgfVxyXG4gIHBhdHRlcm4gKz0gZXNjYXBlUmVnRXhwKGZvcm1hdC5zbGljZShsYXN0SW5kZXgpKVxyXG5cclxuICBjb25zdCByZXN1bHQgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJufSRgKS5leGVjKHZhbClcclxuICBpZiAoIXJlc3VsdD8uZ3JvdXBzKSB7XHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxuXHJcbiAgY29uc3QgZyA9IHJlc3VsdC5ncm91cHNcclxuICBjb25zdCB5ZWFyID0gZ1sneXl5eSddID8gTnVtYmVyKGdbJ3l5eXknXSkgOiBnWyd5eSddID8gMjAwMCArIE51bWJlcihnWyd5eSddKSA6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKVxyXG4gIGNvbnN0IG1vbnRoID0gTnVtYmVyKGdbJ01NJ10gPz8gZ1snTSddID8/IDEpXHJcbiAgY29uc3QgZGF5ID0gTnVtYmVyKGdbJ2RkJ10gPz8gZ1snZCddID8/IDEpXHJcbiAgY29uc3QgaG91ciA9IE51bWJlcihnWydISCddID8/IGdbJ0gnXSA/PyAwKVxyXG4gIGNvbnN0IG1pbnV0ZSA9IE51bWJlcihnWydtbSddID8/IGdbJ20nXSA/PyAwKVxyXG4gIGNvbnN0IHNlY29uZCA9IE51bWJlcihnWydzcyddID8/IGdbJ3MnXSA/PyAwKVxyXG5cclxuICAvLyDQotC+0LrQtdC90Ysg4oCUINGN0YLQviDQv9GA0L7RgdGC0L4gXCJOINGG0LjRhNGAXCIsINCx0LXQtyDQv9GA0L7QstC10YDQutC4INC00LjQsNC/0LDQt9C+0L3QsCAocmVnZXgg0L3QtSDQvtGC0LvQuNGH0LjRgiBcIjEzXCIg0LzQtdGB0Y/RhtCwINC+0YJcclxuICAvLyBcIjEzXCIg0LTQvdGPKS4g0JHQtdC3INGN0YLQvtC5INC/0YDQvtCy0LXRgNC60LggbmV3IERhdGUoKSDQvNC+0LvRh9CwIFwi0L/QtdGA0LXQutCw0YLRi9Cy0LDQtdGCXCIg0L/QtdGA0LXQv9C+0LvQvdC10L3QuNC1INC90LAg0YHQvtGB0LXQtNC90LjQuVxyXG4gIC8vINC80LXRgdGP0YYv0LPQvtC0ICjQvdCw0L/RgNC40LzQtdGALCDQvNC10YHRj9GGPTEzIOKGkiDRj9C90LLQsNGA0Ywg0YHQu9C10LTRg9GO0YnQtdCz0L4g0LPQvtC00LApINCy0LzQtdGB0YLQviDRgtC+0LPQviwg0YfRgtC+0LHRiyDRgdGH0LjRgtCw0YLRjFxyXG4gIC8vINGB0YLRgNC+0LrRgyDQvdC10LLQsNC70LjQtNC90L7QuS5cclxuICBpZiAobW9udGggPCAxIHx8IG1vbnRoID4gMTIgfHwgZGF5IDwgMSB8fCBkYXkgPiAzMSB8fCBob3VyID4gMjMgfHwgbWludXRlID4gNTkgfHwgc2Vjb25kID4gNTkpIHtcclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG5cclxuICByZXR1cm4gYnVpbGREYXRlKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKVxyXG59XHJcblxyXG4vKiog0KHQvtCx0LjRgNCw0LXRgiDQtNCw0YLRgywg0L7RgtCx0YDQsNGB0YvQstCw0Y8g0L3QtdGB0YPRidC10YHRgtCy0YPRjtGJ0LjQtSDQtNC90Lgg0LzQtdGB0Y/RhtCwOiBuZXcgRGF0ZSgpINC/0YDQtdCy0YDQsNGC0LjQuyDQsdGLIDMxINGE0LXQstGA0LDQu9GPINCyIDMg0LzQsNGA0YLQsC4gKi9cclxuZnVuY3Rpb24gYnVpbGREYXRlKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5OiBudW1iZXIsIGhvdXI6IG51bWJlciwgbWludXRlOiBudW1iZXIsIHNlY29uZDogbnVtYmVyKTogRGF0ZSB8IG51bGwge1xyXG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQpXHJcbiAgcmV0dXJuIChpc05hTihkYXRlLmdldFRpbWUoKSkgfHwgZGF0ZS5nZXRNb250aCgpICE9PSBtb250aCAtIDEgfHwgZGF0ZS5nZXREYXRlKCkgIT09IGRheSkgPyBudWxsIDogZGF0ZVxyXG59XHJcblxyXG4vKipcclxuICog0J/QvtGB0LvQtdC00L3QuNC5INGA0LXQt9C10YDQstC90YvQuSDRgNCw0LfQsdC+0YAg4oCUINCx0LXQtyDQt9C90LDQvdC40Y8g0LrQvtC90LrRgNC10YLQvdC+0LPQviDRhNC+0YDQvNCw0YLQsC4g0KDQsNCx0L7RgtCw0LXRgiDRgtC+0LvRjNC60L4g0LTQu9GPINGH0LjRgdGC0L5cclxuICog0YfQuNGB0LvQvtCy0YvRhSDQtNCw0YIgKNC90LjQutCw0LrQuNGFINC90LDQt9Cy0LDQvdC40Lkg0LzQtdGB0Y/RhtC10LIv0LTQvdC10Lkg4oCUINC00LvRjyDRjdGC0L7Qs9C+INC90YPQttC90YsgbG9jYWxlLdGC0LDQsdC70LjRhtGLLCDQsCDRjdGC0L4g0LrQsNC6XHJcbiAqINGA0LDQtyDRgtC+0YIg0LLQtdGBLCDRgNCw0LTQuCDRg9GF0L7QtNCwINC+0YIg0LrQvtGC0L7RgNC+0LPQviBsdXhvbiDQsdGL0Lsg0YPQsdGA0LDQvSDQuNC3INC30LDQstC40YHQuNC80L7RgdGC0LXQuSkuXHJcbiAqXHJcbiAqINCY0LTQtdGPOiDQs9C+0LQg4oCUINC10LTQuNC90YHRgtCy0LXQvdC90YvQuSDRgdC10LPQvNC10L3RgiDQtNC70LjQvdC+0Lkg0YDQvtCy0L3QviA0INGG0LjRhNGA0YssINC/0L7RjdGC0L7QvNGDINC10LPQviDQv9C+0LfQuNGG0LjRjyAo0L/QtdGA0LLRi9C5INC40LvQuFxyXG4gKiDQv9C+0YHQu9C10LTQvdC40Lkg0LjQtyDRgtGA0ZHRhSDRgdC10LPQvNC10L3RgtC+0LIg0LTQsNGC0YspINC+0LTQvdC+0LfQvdCw0YfQvdC+INC+0L/QvtC30L3QsNGR0YLRgdGPINC/0YDQuCDQu9GO0LHQvtC8INGA0LDQt9C00LXQu9C40YLQtdC70LUgKGAuYCwgYC1gLFxyXG4gKiBgL2AsINC/0YDQvtCx0LXQuy4uLikuINCc0LXRgdGP0YYg0L/QviDQstGB0LXQvCDRgNCw0YHQv9GA0L7RgdGC0YDQsNC90ZHQvdC90YvQvCDQsiDQvNC40YDQtSDRgdC+0LPQu9Cw0YjQtdC90LjRj9C8IChJU08gYHl5eXktTU0tZGRgINC4XHJcbiAqINC10LLRgNC+0L/QtdC50YHQutC+0LUgYGRkLk1NLnl5eXlgKSDRgdGC0L7QuNGCINC80LXQttC00YMg0LPQvtC00L7QvCDQuCDQtNC90ZHQvCwg0L/QvtGN0YLQvtC80YMg0LHQtdGA0ZHRgtGB0Y8g0LrQsNC6INGB0YDQtdC00L3QuNC5INGB0LXQs9C80LXQvdGCLlxyXG4gKiDQktGA0LXQvNGPLCDQtdGB0LvQuCDQtdGB0YLRjCwg0LLRgdC10LPQtNCwINC40LTRkdGCINC60LDQuiBgSEg6bW06c3NgIOKAlCDRjdGC0L7RgiDQv9C+0YDRj9C00L7QuiDRg9C90LjQstC10YDRgdCw0LvQtdC9LlxyXG4gKlxyXG4gKiDQndC1INGA0LXRiNCw0LXRgiDQuCDQvdC1INC/0YvRgtCw0LXRgtGB0Y8g0YDQtdGI0LjRgtGMINC90LXQvtC00L3QvtC30L3QsNGH0L3QvtGB0YLRjCDQtNC10L3RjC/QvNC10YHRj9GGINCyINGH0LjRgdGC0L4g0YfQuNGB0LvQvtCy0YvRhSDRhNC+0YDQvNCw0YLQsNGFINCy0LjQtNCwXHJcbiAqIGBNTS9kZC95eXl5YCAo0KHQqNCQKSwg0LPQtNC1INC+0LHQsCDRgdC10LPQvNC10L3RgtCwINC80L7Qs9GD0YIg0LHRi9GC0Ywg4omkMTIg4oCUINGD0LPQsNC00YvQstCw0YLRjCDRjdGC0L4g0LHQtdC3INC30L3QsNC90LjRjyDQu9C+0LrQsNC70LhcclxuICog0LfQvdCw0YfQuNC70L4g0LHRiyDQuNC90L7Qs9C00LAg0LzQvtC70YfQsCDQv9GD0YLQsNGC0Ywg0LTQtdC90Ywg0YEg0LzQtdGB0Y/RhtC10LwsINGH0YLQviDRhdGD0LbQtSDRj9Cy0L3QvtC5INC+0YjQuNCx0LrQuC5cclxuICovXHJcbmZ1bmN0aW9uIHBhcnNlRGF0ZUhldXJpc3RpY2FsbHkodmFsOiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XHJcbiAgY29uc3QgcGFydHMgPSB2YWwubWF0Y2goL1xcZCsvZylcclxuICBpZiAoIXBhcnRzIHx8IHBhcnRzLmxlbmd0aCA8IDMgfHwgcGFydHMubGVuZ3RoID4gNikge1xyXG4gICAgcmV0dXJuIG51bGxcclxuICB9XHJcblxyXG4gIGNvbnN0IFtkMCwgZDEsIGQyLCAuLi50aW1lUGFydHNdID0gcGFydHNcclxuICBjb25zdCBkYXRlUGFydHMgPSBbZDAsIGQxLCBkMl1cclxuICBjb25zdCB5ZWFySWR4ID0gZGF0ZVBhcnRzLmZpbmRJbmRleChwID0+IHAubGVuZ3RoID09PSA0KVxyXG4gIC8vINCT0L7QtCDQtNC+0LvQttC10L0g0LHRi9GC0Ywg0L7QtNC90L7Qt9C90LDRh9C90L4g0L3QsNC50LTQtdC9ICjRgNC+0LLQvdC+IDQg0YbQuNGE0YDRiykg0Lgg0YHRgtC+0Y/RgtGMINGBINC60YDQsNGPLCDQsCDQvdC1INCyINGB0LXRgNC10LTQuNC90LUg4oCUXHJcbiAgLy8g0LjQvdCw0YfQtSDQv9C+0LfQuNGG0LjRjyDQvNC10YHRj9GG0LAv0LTQvdGPINC90LUg0L7Qv9GA0LXQtNC10LvQuNGC0Ywg0LHQtdC30L7Qv9Cw0YHQvdC+LlxyXG4gIGlmICh5ZWFySWR4ICE9PSAwICYmIHllYXJJZHggIT09IDIpIHtcclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG5cclxuICBjb25zdCB5ZWFyID0gTnVtYmVyKGRhdGVQYXJ0c1t5ZWFySWR4XSlcclxuICBjb25zdCBtb250aCA9IE51bWJlcihkYXRlUGFydHNbMV0pXHJcbiAgY29uc3QgZGF5ID0gTnVtYmVyKGRhdGVQYXJ0c1t5ZWFySWR4ID09PSAwID8gMiA6IDBdKVxyXG4gIGlmIChtb250aCA8IDEgfHwgbW9udGggPiAxMiB8fCBkYXkgPCAxIHx8IGRheSA+IDMxKSB7XHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxuXHJcbiAgY29uc3QgW2hoLCBtbSwgc3NdID0gdGltZVBhcnRzXHJcbiAgY29uc3QgaG91ciA9IGhoICE9PSB1bmRlZmluZWQgPyBOdW1iZXIoaGgpIDogMFxyXG4gIGNvbnN0IG1pbnV0ZSA9IG1tICE9PSB1bmRlZmluZWQgPyBOdW1iZXIobW0pIDogMFxyXG4gIGNvbnN0IHNlY29uZCA9IHNzICE9PSB1bmRlZmluZWQgPyBOdW1iZXIoc3MpIDogMFxyXG4gIGlmIChob3VyID4gMjMgfHwgbWludXRlID4gNTkgfHwgc2Vjb25kID4gNTkpIHtcclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG5cclxuICByZXR1cm4gYnVpbGREYXRlKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKVxyXG59XHJcblxyXG4vKipcclxuICog0J/RgNC10L7QsdGA0LDQt9GD0LXRgiDQt9C90LDRh9C10L3QuNC1INCyINC00LDRgtGDLlxyXG4gKlxyXG4gKiDQldGB0LvQuCDQv9C10YDQtdC00LDQvSBgZm9ybWF0YCwg0L3QviDQt9C90LDRh9C10L3QuNC1INC10LzRgyDQvdC1INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPQtdGCICjRgdC8LiBGQUxMQkFDS19EQVRFX0ZPUk1BVFMg4oCUXHJcbiAqINCw0LrRgtGD0LDQu9GM0L3QviDQtNC70Y8g0L/QvtC70LXQuSwg0LPQtNC1IEJpdHJpeDI0INC+0YLQtNCw0ZHRgiDQtNCw0YLRgyDQsiDRhNC+0YDQvNCw0YLQtSwg0L3QsNGB0YLRgNC+0LXQvdC90L7QvCDQvdCwINC/0L7RgNGC0LDQu9C1LCDQsCDQvdC1INCyXHJcbiAqINGC0L7QvCwg0YfRgtC+INC30LDRhdCw0YDQtNC60L7QttC10L0g0LIg0LzQsNC/0L/QtdGA0LUpLCDQv9C10YDQtdC0INGC0LXQvCDQutCw0Log0YHRh9C40YLQsNGC0Ywg0LfQvdCw0YfQtdC90LjQtSDQvdC10LLQsNC70LjQtNC90YvQvCwg0LTQtdC70LDRjtGC0YHRjyDQtdGJ0ZFcclxuICog0LTQstC1INC/0L7Qv9GL0YLQutC4OiDQtNGA0YPQs9C40LUg0YDQsNGB0L/RgNC+0YHRgtGA0LDQvdGR0L3QvdGL0LUg0YTQvtGA0LzQsNGC0YsgQml0cml4MjQsINCwINC30LDRgtC10Lwg4oCUINC/0L7Qt9C40YbQuNC+0L3QvdCw0Y8g0Y3QstGA0LjRgdGC0LjQutCwXHJcbiAqICjRgdC8LiBwYXJzZURhdGVIZXVyaXN0aWNhbGx5KSwg0LrQvtGC0L7RgNCw0Y8g0YDQsNGB0L/QvtC30L3QsNGR0YIg0L/RgNCw0LrRgtC40YfQtdGB0LrQuCDQu9GO0LHQvtC5INGH0LjRgdGC0L4g0YfQuNGB0LvQvtCy0L7QuSDRhNC+0YDQvNCw0YJcclxuICog0LTQsNGC0Ysg0L3QtdC30LDQstC40YHQuNC80L4g0L7RgiDRgNCw0LfQtNC10LvQuNGC0LXQu9GPLiDQldGB0LvQuCDQv9GA0LjQu9C+0LbQtdC90LjRjiDRgtC+0YfQvdC+INC40LfQstC10YHRgtC10L0g0YTQvtGA0LzQsNGCINC60L7QvdC60YDQtdGC0L3QvtCz0L4g0L/QvtGA0YLQsNC70LAsXHJcbiAqINC10LPQviDRgdGC0L7QuNGCINC/0LXRgNC10LTQsNCy0LDRgtGMINGP0LLQvdGL0LwgYGZvcm1hdGAg4oCUINGN0YLQviDQstGB0LXQs9C00LAg0L/RgNC40L7RgNC40YLQtdGC0L3QtdC1INGD0LPQsNC00YvQstCw0L3QuNGPLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZSh2YWw6IG51bWJlciB8IHN0cmluZyB8IERhdGUsIGZvcm1hdD86IHN0cmluZywgb3B0PzogVG9EYXRlT3B0aW9ucywgdGhyb3dFcnJvciA9IHRydWUpOiBEYXRlIHtcclxuICBpZiAodmFsIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgcmV0dXJuIHZhbFxyXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcclxuICAgIGlmIChmb3JtYXQpIHtcclxuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VEYXRlV2l0aEZvcm1hdCh2YWwsIGZvcm1hdClcclxuICAgICAgaWYgKHBhcnNlZCkge1xyXG4gICAgICAgIHJldHVybiBwYXJzZWRcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChjb25zdCBmYWxsYmFja0Zvcm1hdCBvZiBGQUxMQkFDS19EQVRFX0ZPUk1BVFMpIHtcclxuICAgICAgICBpZiAoZmFsbGJhY2tGb3JtYXQgPT09IGZvcm1hdCkgY29udGludWVcclxuICAgICAgICBjb25zdCBmYWxsYmFja1BhcnNlZCA9IHBhcnNlRGF0ZVdpdGhGb3JtYXQodmFsLCBmYWxsYmFja0Zvcm1hdClcclxuICAgICAgICBpZiAoZmFsbGJhY2tQYXJzZWQpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxsYmFja1BhcnNlZFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgaGV1cmlzdGljUGFyc2VkID0gcGFyc2VEYXRlSGV1cmlzdGljYWxseSh2YWwpXHJcbiAgICAgIGlmIChoZXVyaXN0aWNQYXJzZWQpIHtcclxuICAgICAgICByZXR1cm4gaGV1cmlzdGljUGFyc2VkXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWwpXHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbClcclxuICB9XHJcblxyXG4gIGlmICh0aHJvd0Vycm9yKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKCdXcm9uZyBkYXRlIGZvcm1hdCcsIHZhbCwgZm9ybWF0KVxyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyBkYXRlIGZvcm1hdCcpXHJcbiAgfVxyXG5cclxuICByZXR1cm4gbmV3IERhdGUoKVxyXG59XHJcblxyXG4vKipcclxuICog0J/RgNC10L7QsdGA0LDQt9GD0LXRgiDQtNCw0YLRgyDQsiDRgdGC0YDQvtC60YMg0YEg0YPRh9C10YLQvtC8INCy0YDQtdC80LXQvdC90L7QuSDQt9C+0L3Ri1xyXG4gKlxyXG4gKiDQpNC+0YDQvNCw0YLQuNGA0L7QstCw0L3QuNC1INC00LXQu9C10LPQuNGA0L7QstCw0L3QviB0b0xvY2FsQXRvbSgpIOKAlCDRgNCw0L3RjNGI0LUg0LfQtNC10YHRjCDQsdGL0LvQsCDQstGC0L7RgNCw0Y8sXHJcbiAqINC90LXQt9Cw0LLQuNGB0LjQvNCw0Y8g0LrQvtC/0LjRjyDRgtC+0Lkg0LbQtSDRhNC+0YDQvNGD0LvRiyAocGFkZGluZCArINGB0LzQtdGJ0LXQvdC40LUg0YLQsNC50LzQt9C+0L3RiyksINC60L7RgtC+0YDQsNGPXHJcbiAqINC80L7Qs9C70LAg0YDQsNC30L7QudGC0LjRgdGMINGBIHRvTG9jYWxBdG9tKCkg0L/RgNC4INC/0YDQsNCy0LrQtSDQvtC00L3QvtC5INC40Lcg0L3QuNGFINC4INC90LUg0LTRgNGD0LPQvtC5LlxyXG4gKlxyXG4gKiBAcGFyYW0gZGF0ZVxyXG4gKiBAcGFyYW0gdGhyb3dFcnJvclxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvSVNPU3RyaW5nV2l0aFRpbWV6b25lKGRhdGU6IERhdGUsIHRocm93RXJyb3IgPSB0cnVlKTogc3RyaW5nIHtcclxuICBpZiAoIShkYXRlIGluc3RhbmNlb2YgRGF0ZSkpIHtcclxuICAgIGlmICh0aHJvd0Vycm9yKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWU6IG5vdCBhIHZhbGlkIERhdGUgb2JqZWN0JylcclxuICAgIHJldHVybiAnJ1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRvTG9jYWxBdG9tKGRhdGUpXHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC30L3QsNGH0LXQvdC40LUg0LIg0LHRg9C70LXQstC+INC30L3QsNGH0LXQvdC40LVcclxuICpcclxuICogQHBhcmFtIHZhbFxyXG4gKiBAcGFyYW0gdGhyb3dFcnJvclxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvQm9vbCh2YWw6IGFueSwgdGhyb3dFcnJvciA9IHRydWUpOiBib29sZWFuIHtcclxuICBzd2l0Y2ggKHR5cGVvZiB2YWwpIHtcclxuICAgIGNhc2UgJ3N0cmluZyc6XHJcbiAgICAgIHZhbCA9IHZhbC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgIGlmICh2YWwgPT09ICduJyB8fCB2YWwgPT09ICd5JykgeyAvLyDQsdC40YLRgNC40LrRgdC+0LLRi9C1INC/0L7QvdGP0YLQuNGPINC+IGJvb2xcclxuICAgICAgICByZXR1cm4gdmFsID09PSAneSdcclxuICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICd0cnVlJyB8fCB2YWwgPT09ICdmYWxzZScpIHsgLy8g0LHQuNGC0YDQuNC60YHQvtCy0YvQtSDQv9C+0L3Rj9GC0LjRjyDQviBib29sXHJcbiAgICAgICAgcmV0dXJuIHZhbCA9PT0gJ3RydWUnXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRocm93RXJyb3IpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZTogY2Fubm90IGJlIGNvbnZlcnRlZCB0byBib29sZWFuJylcclxuICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgfVxyXG4gICAgZGVmYXVsdDpcclxuICAgICAgcmV0dXJuIEJvb2xlYW4odmFsKVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqINCf0YDQtdC+0LHRgNCw0LfRg9C10YIg0LHRg9C70LXQstC+INC30L3QsNGH0LXQvdC40LUg0LIgJ1knINC40LvQuCAnTidcclxuICpcclxuICogQHBhcmFtIHZhbFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvQlhZb3JOKHZhbDogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHZhbCA/ICdZJyA6ICdOJ1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZVVybEh0dHBzKHVybDogc3RyaW5nLCBjb21wb25lbnQgPSBmYWxzZSk6IHN0cmluZyB7XHJcbiAgaWYgKGNvbXBvbmVudCkge1xyXG4gICAgcmV0dXJuIGVuY29kZVVSSShjcm9wVXJsKHVybCkgKyAnLycpXHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBlbmNvZGVVUkkoJ2h0dHBzOi8vJyArIGNyb3BVcmwodXJsKSArICcvJylcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQntCx0YDQtdC30LDQtdGCIFVSTCAo0YPQtNCw0LvRj9C10YIg0L/RgNC+0YLQvtC60L7QuylcclxuICpcclxuICogQHBhcmFtIHVybFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyb3BVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHVybCA9IHVybCA/IHVybC5yZXBsYWNlKCdodHRwczovLycsICcnKSA6ICcnXHJcbiAgdXJsID0gdXJsID8gdXJsLnJlcGxhY2UoJ2h0dHA6Ly8nLCAnJykgOiAnJ1xyXG4gIHVybCA9IHVybCA/IHVybC5yZXBsYWNlKCdodHRwczonLCAnJykgOiAnJ1xyXG4gIHVybCA9IHVybCA/IHVybC5yZXBsYWNlKCdodHRwOicsICcnKSA6ICcnXHJcbiAgcmV0dXJuIHVybFxyXG59XHJcblxyXG4vKipcclxuICog0J/RgNC10L7QsdGA0LDQt9GD0LXRgiDRhNCw0LnQuyDQsiBiYXNlNjRcclxuICpcclxuICogQHBhcmFtIGZpbGVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlNjRGaWxlKGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXHJcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKVxyXG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpXHJcbiAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcilcclxuICB9KVxyXG59XHJcblxyXG4vKipcclxuICog0J/QvtC70YPRh9C40YLRjCDRhNCw0LnQuyDQsiDRhNC+0YDQvNCw0YLQtSBiYXNlNjQg0YEg0YDQsNC30LHQuNCy0LrQvtC5INC90LAg0LfQsNCz0L7Qu9C+0LLQvtC6INC4INC00LDQvdC90YvQtVxyXG4gKlxyXG4gKiBAcGFyYW0gZmlsZVxyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJhc2U2NEZpbGVMaWtlU3RyKGZpbGU6IEZpbGUpOiBQcm9taXNlPHtcclxuICBoZWFkZXI6IHN0cmluZyxcclxuICB2YWw6IHN0cmluZ1xyXG59IHwgdW5kZWZpbmVkPiB7XHJcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0QmFzZTY0RmlsZShmaWxlKVxyXG4gIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJykge1xyXG4gICAgY29uc3Qgc3BsaXQgPSByZXN1bHQuc3BsaXQoJywnKVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaGVhZGVyOiBzcGxpdFswXSxcclxuICAgICAgdmFsOiBzcGxpdFsxXVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gdW5kZWZpbmVkXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlQmFzZUFkZHJlc3ModXJsOiBzdHJpbmcsIGFkZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gJycpIHtcclxuICAvLyBpZiAodXJsLnNlYXJjaCgnaHR0cHM6Ly8nKSAhPT0gMCAmJiB1cmwuc2VhcmNoKCdodHRwOi8vJykpIHtcclxuICAvLyAgIHVybCA9ICdodHRwczovLycgKyB1cmxcclxuICAvLyB9XHJcblxyXG4gIGlmIChhZGQgJiYgYWRkLmxlbmd0aCA+IDApIHtcclxuICAgIGlmICh1cmwubGFzdEluZGV4T2YoJy8nKSAhPT0gKHVybC5sZW5ndGggLSAxKSkge1xyXG4gICAgICB1cmwgPSB1cmwgKyAnLydcclxuICAgIH1cclxuXHJcbiAgICB1cmwgPSB1cmwgKyBhZGRcclxuICB9XHJcblxyXG4gIGlmICh1cmwubGFzdEluZGV4T2YoJy8nKSAhPT0gKHVybC5sZW5ndGggLSAxKSkge1xyXG4gICAgdXJsID0gdXJsICsgJy8nXHJcbiAgfVxyXG5cclxuICByZXR1cm4gdXJsXHJcbn0iXX0=
357
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRXREOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBQyxHQUFRLEVBQUUsVUFBVSxHQUFHLEtBQUs7SUFDaEQsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN0QyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxnQ0FBZ0MsQ0FBQyxDQUFBO1FBQ3hFLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNwQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFDLEdBQVEsRUFBRSxVQUFVLEdBQUcsSUFBSSxFQUFFLFFBQVEsR0FBRyxDQUFDO0lBQzdELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUUxQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRWpDLElBQUksVUFBVTtZQUFFLE1BQU0sS0FBSyxDQUFBO1FBRTNCLGtEQUFrRDtRQUNsRCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQy9CLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFXLFNBQVEsS0FBSztJQUNuQyxZQUE0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QTtJQUN4QyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0IsT0FBTztZQUNMLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2QsQ0FBQTtJQUNILENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQTtBQUNsQixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEdBQVcsRUFBRSxNQUEwQixFQUFFO0lBQzFFLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUIsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFBO1FBQ2pCLENBQUM7UUFFRCxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQTtJQUNqQixDQUFDO0lBRUQsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b0xvY2FsQXRvbSB9IGZyb20gJy4uL2Z1bmN0aW9ucy90b0xvY2FsQXRvbSdcclxuXHJcbi8qKlxyXG4gKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC30L3QsNGH0LXQvdC40LUg0LIg0YHRgtGA0L7QutGDXHJcbiAqXHJcbiAqIEBwYXJhbSB2YWxcclxuICogQHBhcmFtIHRocm93RXJyb3JcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB0b1N0cih2YWw6IGFueSwgdGhyb3dFcnJvciA9IGZhbHNlKTogc3RyaW5nIHtcclxuICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhyb3dFcnJvcikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdmFsdWU6ICR7dmFsfSBjYW5ub3QgYmUgY29udmVydGVkIHRvIHN0cmluZ2ApXHJcbiAgICB9XHJcbiAgICByZXR1cm4gJydcclxuICB9XHJcbiAgcmV0dXJuIFN0cmluZyh2YWwpXHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC30L3QsNGH0LXQvdC40LUg0LIg0YfQuNGB0LvQvlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvTnVtKHZhbDogYW55LCB0aHJvd0Vycm9yID0gdHJ1ZSwgZGVmVmFsdWUgPSAwKTogbnVtYmVyIHtcclxuICBjb25zdCByZXN1bHQgPSBOdW1iZXIodmFsKVxyXG5cclxuICBpZiAoaXNOYU4ocmVzdWx0KSkge1xyXG4gICAgY29uc3QgZXJyb3IgPSBuZXcgVG9OdW1FcnJvcih2YWwpXHJcblxyXG4gICAgaWYgKHRocm93RXJyb3IpIHRocm93IGVycm9yXHJcblxyXG4gICAgLy8g0JXRgdC70Lgg0L7RiNC40LHQutCwINC90LUg0L/RgNC+0LHRgNCw0YHRi9Cy0LDQtdGC0YHRjyDigJQg0L/RgNC+0YHRgtC+INC70L7Qs9C40YDRg9C10LxcclxuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IudG9TdHJpbmcoKSlcclxuICAgIHJldHVybiBkZWZWYWx1ZVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlc3VsdFxyXG59XHJcblxyXG4vKipcclxuICog0JrQsNGB0YLQvtC80L3Ri9C5INGC0LjQvyDQvtGI0LjQsdC60Lgg0LTQu9GPINGH0LjRgdC70L7QstGL0YUg0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjQuVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFRvTnVtRXJyb3IgZXh0ZW5kcyBFcnJvciB7XHJcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHZhbHVlOiBhbnkpIHtcclxuICAgIGNvbnN0IHZhbHVlVHlwZSA9IHR5cGVvZiB2YWx1ZVxyXG4gICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPVxyXG4gICAgICB2YWx1ZVR5cGUgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogU3RyaW5nKHZhbHVlKVxyXG4gICAgY29uc3QgbWVzc2FnZSA9IGBJbnZhbGlkIHZhbHVlIHBhc3NlZCB0byB0b051bSgpOiAke2Zvcm1hdHRlZFZhbHVlfSAodHlwZTogJHt2YWx1ZVR5cGV9KWBcclxuICAgIHN1cGVyKG1lc3NhZ2UpXHJcbiAgICB0aGlzLm5hbWUgPSAnVG9OdW1FcnJvcidcclxuXHJcbiAgICAvLyDRgdC+0YXRgNCw0L3Rj9C10Lwg0YHRgtC10Log0LLRi9C30L7QstCwICjQvtGC0YTQuNC70YzRgtGA0L7QstCw0LIg0YHQsNC8INC60L7QvdGB0YLRgNGD0LrRgtC+0YApXHJcbiAgICBpZiAodGhpcy5zdGFjaykge1xyXG4gICAgICBjb25zdCBzdGFja0xpbmVzID0gdGhpcy5zdGFjay5zcGxpdCgnXFxuJylcclxuICAgICAgLy8g0KPQtNCw0LvRj9C10Lwg0YHRgtGA0L7QutGDINC60L7QvdGB0YLRgNGD0LrRgtC+0YDQsCAo0YfRgtC+0LHRiyDRgdGC0LXQuiDQvdCw0YfQuNC90LDQu9GB0Y8g0YEg0LzQtdGB0YLQsCDQstGL0LfQvtCy0LAgdG9OdW0pXHJcbiAgICAgIHRoaXMuc3RhY2sgPSBbc3RhY2tMaW5lc1swXSwgLi4uc3RhY2tMaW5lcy5zbGljZSgyKV0uam9pbignXFxuJylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBg4p2MIFske3RoaXMubmFtZX1dICR7dGhpcy5tZXNzYWdlfWAsXHJcbiAgICAgIHRoaXMuc3RhY2sgPyBgICAgU3RhY2sgdHJhY2U6XFxuJHt0aGlzLnN0YWNrfWAgOiAnJyxcclxuICAgIF0uam9pbignXFxuJylcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQntC/0YbQuNC4INC00LvRjyB0b0RhdGUoKS4g0J7RgdGC0LDQstC70LXQvdGLINC00LvRjyDQvtCx0YDQsNGC0L3QvtC5INGB0L7QstC80LXRgdGC0LjQvNC+0YHRgtC4INGB0LjQs9C90LDRgtGD0YDRiyDigJQg0YDQsNC90LXQtSDQv9GA0L7QsdGA0LDRgdGL0LLQsNC70LjRgdGMXHJcbiAqINCyIGx1eG9uICjQt9C+0L3QsC/Qu9C+0LrQsNC70YwpLiDQoNCw0LfQsdC+0YAg0LTQsNGC0Ysg0YLQtdC/0LXRgNGMINC90LUg0LfQsNCy0LjRgdC40YIg0L7RgiDQstC90LXRiNC90LjRhSDQsdC40LHQu9C40L7RgtC10Log0Lgg0L/QvtC00LTQtdGA0LbQuNCy0LDQtdGCXHJcbiAqINGC0L7Qu9GM0LrQviDRhNC40LrRgdC40YDQvtCy0LDQvdC90YvQtSDRh9C40YHQu9C+0LLRi9C1INGC0L7QutC10L3RiyAo0YHQvC4gcGFyc2VEYXRlV2l0aEZvcm1hdCksINC/0L7RjdGC0L7QvNGDINC+0L/RhtC40Lgg0YHQtdC50YfQsNGBINC90LUg0LjRgdC/0L7Qu9GM0LfRg9GO0YLRgdGPLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBUb0RhdGVPcHRpb25zIHtcclxuICB6b25lPzogc3RyaW5nXHJcbiAgbG9jYWxlPzogc3RyaW5nXHJcbn1cclxuXHJcbi8qKiDQodC+0L7RgtCy0LXRgtGB0YLQstC40LUg0YLQvtC60LXQvdC+0LIg0YTQvtGA0LzQsNGC0LAg0YDQtdCz0YPQu9GP0YDQvdGL0Lwg0LPRgNGD0L/Qv9Cw0Lwg0LfQsNGF0LLQsNGC0LAuINCf0L7RgNGP0LTQvtC6INCy0LDQttC10L06INC00LvQuNC90L3Ri9C1INGC0L7QutC10L3RiyDQv9GA0L7QstC10YDRj9GO0YLRgdGPINGA0LDQvdGM0YjQtSDQutC+0YDQvtGC0LrQuNGFICovXHJcbmNvbnN0IERBVEVfRk9STUFUX1RPS0VOUzogW3N0cmluZywgc3RyaW5nXVtdID0gW1xyXG4gIFsneXl5eScsICcoPzx5eXl5PlxcXFxkezR9KSddLFxyXG4gIFsneXknLCAnKD88eXk+XFxcXGR7Mn0pJ10sXHJcbiAgWydNTScsICcoPzxNTT5cXFxcZHsyfSknXSxcclxuICBbJ00nLCAnKD88TT5cXFxcZHsxLDJ9KSddLFxyXG4gIFsnZGQnLCAnKD88ZGQ+XFxcXGR7Mn0pJ10sXHJcbiAgWydkJywgJyg/PGQ+XFxcXGR7MSwyfSknXSxcclxuICBbJ0hIJywgJyg/PEhIPlxcXFxkezJ9KSddLFxyXG4gIFsnSCcsICcoPzxIPlxcXFxkezEsMn0pJ10sXHJcbiAgWydtbScsICcoPzxtbT5cXFxcZHsyfSknXSxcclxuICBbJ20nLCAnKD88bT5cXFxcZHsxLDJ9KSddLFxyXG4gIFsnc3MnLCAnKD88c3M+XFxcXGR7Mn0pJ10sXHJcbiAgWydzJywgJyg/PHM+XFxcXGR7MSwyfSknXSxcclxuXVxyXG5cclxuY29uc3QgREFURV9GT1JNQVRfVE9LRU5fUkVHRVggPSBuZXcgUmVnRXhwKERBVEVfRk9STUFUX1RPS0VOUy5tYXAoKFt0b2tlbl0pID0+IHRva2VuKS5qb2luKCd8JyksICdnJylcclxuXHJcbmNvbnN0IFRJTUVfT05MWV9UT0tFTlMgPSBuZXcgU2V0KFsnSEgnLCAnSCcsICdtbScsICdtJywgJ3NzJywgJ3MnXSlcclxuXHJcbi8qKlxyXG4gKiDQktGL0LLQvtC00LjRgiDRhNC+0YDQvNCw0YIgXCLRgtC+0LvRjNC60L4g0LTQsNGC0LBcIiDQuNC3INGE0L7RgNC80LDRgtCwINC00LDRgtGLLdC4LdCy0YDQtdC80LXQvdC4IOKAlCDQvtGC0YDQtdC30LDQtdGCINCy0YDQtdC80Y8g0Lgg0YDQsNC30LTQtdC70LjRgtC10LvRjCDQv9C10YDQtdC0XHJcbiAqINC90LjQvCAo0L3QsNC/0YDQuNC80LXRgCwgYCdkZC5NTS55eXl5IEhIOm1tOnNzJ2Ag4oaSIGAnZGQuTU0ueXl5eSdgKS4g0J/QvtGA0Y/QtNC+0Log0LTQtdC90Ywv0LzQtdGB0Y/Rhi/Qs9C+0LQg0YMg0L/QvtC70LXQuVxyXG4gKiBcItC00LDRgtCwXCIg0LggXCLQtNCw0YLQsC3QstGA0LXQvNGPXCIg0L3QsCDQvtC00L3QvtC8INC/0L7RgNGC0LDQu9C1IEJpdHJpeDI0INCy0YHQtdCz0LTQsCDRgdC+0LPQu9Cw0YHQvtCy0LDQvSDigJQg0YDQsNC30LvQuNGH0LDQtdGC0YHRjyDRgtC+0LvRjNC60L5cclxuICog0L3QsNC70LjRh9C40LUgYEhIOm1tOnNzYCwg0L/QvtGN0YLQvtC80YMg0L3QtdGCINGB0LzRi9GB0LvQsCDQt9Cw0YHRgtCw0LLQu9GP0YLRjCDQstGL0LfRi9Cy0LDRjtGJ0LXQs9C+INC/0LXRgNC10LTQsNCy0LDRgtGMINC+0LHQsCDRhNC+0YDQvNCw0YLQsCDQuFxyXG4gKiDQtNC10YDQttCw0YLRjCDQuNGFINCyINGB0LjQvdGF0YDQvtC90LUg0LLRgNGD0YfQvdGD0Y4uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlRGF0ZU9ubHlGb3JtYXQoZGF0ZVRpbWVGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgREFURV9GT1JNQVRfVE9LRU5fUkVHRVgubGFzdEluZGV4ID0gMFxyXG4gIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbFxyXG5cclxuICB3aGlsZSAoKG1hdGNoID0gREFURV9GT1JNQVRfVE9LRU5fUkVHRVguZXhlYyhkYXRlVGltZUZvcm1hdCkpICE9PSBudWxsKSB7XHJcbiAgICBpZiAoVElNRV9PTkxZX1RPS0VOUy5oYXMobWF0Y2hbMF0pKSB7XHJcbiAgICAgIC8vINCe0YLRgNC10LfQsNC10Lwg0LvRjtCx0L7QuSDRgNCw0LfQtNC10LvQuNGC0LXQu9GMINC/0LXRgNC10LQg0LLRgNC10LzQtdC90LXQvCwg0LLQutC70Y7Rh9Cw0Y8g0LHRg9C60LLQtdC90L3Ri9C5ICjQvdCw0L/RgNC40LzQtdGAICdUJyDQsiBJU08t0YHRgtC40LvQtVxyXG4gICAgICAvLyAnZGQuTU0ueXl5eVRISDptbTpzcycpLCDQsCDQvdC1INGC0L7Qu9GM0LrQviDQv9GD0L3QutGC0YPQsNGG0LjRjiDigJQg0L7RgdGC0LDQvdCw0LLQu9C40LLQsNC10LzRgdGPINC90LAg0L/QvtGB0LvQtdC00L3QtdC8INGB0LjQvNCy0L7Qu9C1LFxyXG4gICAgICAvLyDQutC+0YLQvtGA0YvQuSDRgNC10LDQu9GM0L3QviDQvtGC0L3QvtGB0LjRgtGB0Y8g0Log0YLQvtC60LXQvdCw0Lwg0LTQsNGC0YsgKHkvTS9kKS5cclxuICAgICAgY29uc3QgZGF0ZVBhcnQgPSBkYXRlVGltZUZvcm1hdC5zbGljZSgwLCBtYXRjaC5pbmRleCkucmVwbGFjZSgvW155TWRdKyQvLCAnJylcclxuICAgICAgcmV0dXJuIGRhdGVQYXJ0IHx8IGRhdGVUaW1lRm9ybWF0XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZGF0ZVRpbWVGb3JtYXRcclxufVxyXG5cclxuZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gc3RyLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJylcclxufVxyXG5cclxuLyoqXHJcbiAqINCk0L7RgNC80LDRgtGLINC00LDRgiwg0LrQvtGC0L7RgNGL0LUgQml0cml4MjQg0YDQtdCw0LvRjNC90L4g0L/RgNC40YHRi9C70LDQtdGCINCyINGA0LDQt9C90YvRhSDQvNC10YLQvtC00LDRhSBSRVNUINC4INC90LAg0YDQsNC30L3Ri9GFXHJcbiAqINC/0L7RgNGC0LDQu9Cw0YUg4oCUINGE0L7RgNC80LDRgiDQtNCw0YLRiy/QstGA0LXQvNC10L3QuCDQsiDQvtGC0LLQtdGC0LUg0LfQsNCy0LjRgdC40YIg0L7RgiDQvdCw0YHRgtGA0L7QtdC6INC/0L7RgNGC0LDQu9CwICjQndCw0YHRgtGA0L7QudC60Lgg4oaSINGE0L7RgNC80LDRglxyXG4gKiDQtNCw0YLRiyDQuCDQstGA0LXQvNC10L3QuCksINC/0L7RjdGC0L7QvNGDINC+0LTQuNC9INC30LDRhdCw0YDQtNC60L7QttC10L3QvdGL0Lkg0YjQsNCx0LvQvtC9INC90LUg0YPQvdC40LLQtdGA0YHQsNC70LXQvS4g0JXRgdC70Lgg0Y/QstC90YvQuSBgZm9ybWF0YCxcclxuICog0L/QtdGA0LXQtNCw0L3QvdGL0Lkg0LIgdG9EYXRlKCksINC90LUg0YHQvtCy0L/QsNC7INGB0L4g0LfQvdCw0YfQtdC90LjQtdC8LCDQv9C10YDQtdC0INGC0LXQvCDQutCw0Log0YHRh9C40YLQsNGC0Ywg0YHRgtGA0L7QutGDINC90LXQstCw0LvQuNC00L3QvtC5LFxyXG4gKiDQv9GA0L7QsdGD0LXQvCDRjdGC0Lgg0LLQsNGA0LjQsNC90YLRiyDQv9C+INC+0YfQtdGA0LXQtNC4IOKAlCDQvtC90Lgg0L3QtSDQv9C10YDQtdGB0LXQutCw0Y7RgtGB0Y8g0L/QviDRgNCw0LfQtNC10LvQuNGC0LXQu9GP0Lwv0L/QvtGA0Y/QtNC60YMg0YLQvtC60LXQvdC+0LIsXHJcbiAqINGC0LDQuiDRh9GC0L4g0LvQvtC20L3Ri9GFINGB0L7QstC/0LDQtNC10L3QuNC5INC90LUg0LHRg9C00LXRgi5cclxuICovXHJcbmNvbnN0IEZBTExCQUNLX0RBVEVfRk9STUFUUyA9IFtcclxuICAnZGQuTU0ueXl5eSBISDptbTpzcycsXHJcbiAgJ3l5eXktTU0tZGQgSEg6bW06c3MnLFxyXG4gICdkZC5NTS55eXl5JyxcclxuICAneXl5eS1NTS1kZCcsXHJcbl1cclxuXHJcbi8qKlxyXG4gKiDQoNCw0LfQsdC40YDQsNC10YIg0YHRgtGA0L7QutGDINC00LDRgtGLINC/0L4g0L/RgNC+0YHRgtC+0LzRgyDRiNCw0LHQu9C+0L3RgyAoeXl5eSwgTU0sIGRkLCBISCwgbW0sIHNzINC4INC40YUg0L7QtNC90L7QsdGD0LrQstC10L3QvdGL0LVcclxuICog0LLQsNGA0LjQsNC90YLRiywg0L3QsNC/0YDQuNC80LXRgCAnZGQuTU0ueXl5eSBISDptbTpzcycpLiDQoNCw0LfQtNC10LvQuNGC0LXQu9C4INC80LXQttC00YMg0YLQvtC60LXQvdCw0LzQuCDQsdC10YDRg9GC0YHRjyDQuNC3INGI0LDQsdC70L7QvdCwXHJcbiAqINC60LDQuiDQtdGB0YLRjC4g0J3QtSDQv9C+0LTQtNC10YDQttC40LLQsNC10YIg0LvQvtC60LDQu9C4LCDQvdCw0LfQstCw0L3QuNGPINC80LXRgdGP0YbQtdCyINC4INGH0LDRgdC+0LLRi9C1INC/0L7Rj9GB0LAg4oCUINC00LvRjyBSRVNULdC+0YLQstC10YLQvtCyXHJcbiAqIEJpdHJpeDI0INC+0L3QuCDQvdC1INGC0YDQtdCx0YPRjtGC0YHRjywg0LfQvdCw0YfQtdC90LjRjyDQstGB0LXQs9C00LAg0L/RgNC40YXQvtC00Y/RgiDQsiDRhNC40LrRgdC40YDQvtCy0LDQvdC90L7QvCDRh9C40YHQu9C+0LLQvtC8INCy0LjQtNC1LlxyXG4gKi9cclxuZnVuY3Rpb24gcGFyc2VEYXRlV2l0aEZvcm1hdCh2YWw6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XHJcbiAgY29uc3QgdG9rZW5NYXAgPSBuZXcgTWFwKERBVEVfRk9STUFUX1RPS0VOUylcclxuICBsZXQgcGF0dGVybiA9ICcnXHJcbiAgbGV0IGxhc3RJbmRleCA9IDBcclxuICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGxcclxuXHJcbiAgREFURV9GT1JNQVRfVE9LRU5fUkVHRVgubGFzdEluZGV4ID0gMFxyXG4gIHdoaWxlICgobWF0Y2ggPSBEQVRFX0ZPUk1BVF9UT0tFTl9SRUdFWC5leGVjKGZvcm1hdCkpICE9PSBudWxsKSB7XHJcbiAgICBwYXR0ZXJuICs9IGVzY2FwZVJlZ0V4cChmb3JtYXQuc2xpY2UobGFzdEluZGV4LCBtYXRjaC5pbmRleCkpXHJcbiAgICBwYXR0ZXJuICs9IHRva2VuTWFwLmdldChtYXRjaFswXSlcclxuICAgIGxhc3RJbmRleCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoXHJcbiAgfVxyXG4gIHBhdHRlcm4gKz0gZXNjYXBlUmVnRXhwKGZvcm1hdC5zbGljZShsYXN0SW5kZXgpKVxyXG5cclxuICBjb25zdCByZXN1bHQgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJufSRgKS5leGVjKHZhbClcclxuICBpZiAoIXJlc3VsdD8uZ3JvdXBzKSB7XHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxuXHJcbiAgY29uc3QgZyA9IHJlc3VsdC5ncm91cHNcclxuICBjb25zdCB5ZWFyID0gZ1sneXl5eSddID8gTnVtYmVyKGdbJ3l5eXknXSkgOiBnWyd5eSddID8gMjAwMCArIE51bWJlcihnWyd5eSddKSA6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKVxyXG4gIGNvbnN0IG1vbnRoID0gTnVtYmVyKGdbJ01NJ10gPz8gZ1snTSddID8/IDEpXHJcbiAgY29uc3QgZGF5ID0gTnVtYmVyKGdbJ2RkJ10gPz8gZ1snZCddID8/IDEpXHJcbiAgY29uc3QgaG91ciA9IE51bWJlcihnWydISCddID8/IGdbJ0gnXSA/PyAwKVxyXG4gIGNvbnN0IG1pbnV0ZSA9IE51bWJlcihnWydtbSddID8/IGdbJ20nXSA/PyAwKVxyXG4gIGNvbnN0IHNlY29uZCA9IE51bWJlcihnWydzcyddID8/IGdbJ3MnXSA/PyAwKVxyXG5cclxuICAvLyDQotC+0LrQtdC90Ysg4oCUINGN0YLQviDQv9GA0L7RgdGC0L4gXCJOINGG0LjRhNGAXCIsINCx0LXQtyDQv9GA0L7QstC10YDQutC4INC00LjQsNC/0LDQt9C+0L3QsCAocmVnZXgg0L3QtSDQvtGC0LvQuNGH0LjRgiBcIjEzXCIg0LzQtdGB0Y/RhtCwINC+0YJcclxuICAvLyBcIjEzXCIg0LTQvdGPKS4g0JHQtdC3INGN0YLQvtC5INC/0YDQvtCy0LXRgNC60LggbmV3IERhdGUoKSDQvNC+0LvRh9CwIFwi0L/QtdGA0LXQutCw0YLRi9Cy0LDQtdGCXCIg0L/QtdGA0LXQv9C+0LvQvdC10L3QuNC1INC90LAg0YHQvtGB0LXQtNC90LjQuVxyXG4gIC8vINC80LXRgdGP0YYv0LPQvtC0ICjQvdCw0L/RgNC40LzQtdGALCDQvNC10YHRj9GGPTEzIOKGkiDRj9C90LLQsNGA0Ywg0YHQu9C10LTRg9GO0YnQtdCz0L4g0LPQvtC00LApINCy0LzQtdGB0YLQviDRgtC+0LPQviwg0YfRgtC+0LHRiyDRgdGH0LjRgtCw0YLRjFxyXG4gIC8vINGB0YLRgNC+0LrRgyDQvdC10LLQsNC70LjQtNC90L7QuS5cclxuICBpZiAobW9udGggPCAxIHx8IG1vbnRoID4gMTIgfHwgZGF5IDwgMSB8fCBkYXkgPiAzMSB8fCBob3VyID4gMjMgfHwgbWludXRlID4gNTkgfHwgc2Vjb25kID4gNTkpIHtcclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG5cclxuICByZXR1cm4gYnVpbGREYXRlKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKVxyXG59XHJcblxyXG4vKiog0KHQvtCx0LjRgNCw0LXRgiDQtNCw0YLRgywg0L7RgtCx0YDQsNGB0YvQstCw0Y8g0L3QtdGB0YPRidC10YHRgtCy0YPRjtGJ0LjQtSDQtNC90Lgg0LzQtdGB0Y/RhtCwOiBuZXcgRGF0ZSgpINC/0YDQtdCy0YDQsNGC0LjQuyDQsdGLIDMxINGE0LXQstGA0LDQu9GPINCyIDMg0LzQsNGA0YLQsC4gKi9cclxuZnVuY3Rpb24gYnVpbGREYXRlKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5OiBudW1iZXIsIGhvdXI6IG51bWJlciwgbWludXRlOiBudW1iZXIsIHNlY29uZDogbnVtYmVyKTogRGF0ZSB8IG51bGwge1xyXG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQpXHJcbiAgcmV0dXJuIChpc05hTihkYXRlLmdldFRpbWUoKSkgfHwgZGF0ZS5nZXRNb250aCgpICE9PSBtb250aCAtIDEgfHwgZGF0ZS5nZXREYXRlKCkgIT09IGRheSkgPyBudWxsIDogZGF0ZVxyXG59XHJcblxyXG4vKipcclxuICog0J/QvtGB0LvQtdC00L3QuNC5INGA0LXQt9C10YDQstC90YvQuSDRgNCw0LfQsdC+0YAg4oCUINCx0LXQtyDQt9C90LDQvdC40Y8g0LrQvtC90LrRgNC10YLQvdC+0LPQviDRhNC+0YDQvNCw0YLQsC4g0KDQsNCx0L7RgtCw0LXRgiDRgtC+0LvRjNC60L4g0LTQu9GPINGH0LjRgdGC0L5cclxuICog0YfQuNGB0LvQvtCy0YvRhSDQtNCw0YIgKNC90LjQutCw0LrQuNGFINC90LDQt9Cy0LDQvdC40Lkg0LzQtdGB0Y/RhtC10LIv0LTQvdC10Lkg4oCUINC00LvRjyDRjdGC0L7Qs9C+INC90YPQttC90YsgbG9jYWxlLdGC0LDQsdC70LjRhtGLLCDQsCDRjdGC0L4g0LrQsNC6XHJcbiAqINGA0LDQtyDRgtC+0YIg0LLQtdGBLCDRgNCw0LTQuCDRg9GF0L7QtNCwINC+0YIg0LrQvtGC0L7RgNC+0LPQviBsdXhvbiDQsdGL0Lsg0YPQsdGA0LDQvSDQuNC3INC30LDQstC40YHQuNC80L7RgdGC0LXQuSkuXHJcbiAqXHJcbiAqINCY0LTQtdGPOiDQs9C+0LQg4oCUINC10LTQuNC90YHRgtCy0LXQvdC90YvQuSDRgdC10LPQvNC10L3RgiDQtNC70LjQvdC+0Lkg0YDQvtCy0L3QviA0INGG0LjRhNGA0YssINC/0L7RjdGC0L7QvNGDINC10LPQviDQv9C+0LfQuNGG0LjRjyAo0L/QtdGA0LLRi9C5INC40LvQuFxyXG4gKiDQv9C+0YHQu9C10LTQvdC40Lkg0LjQtyDRgtGA0ZHRhSDRgdC10LPQvNC10L3RgtC+0LIg0LTQsNGC0YspINC+0LTQvdC+0LfQvdCw0YfQvdC+INC+0L/QvtC30L3QsNGR0YLRgdGPINC/0YDQuCDQu9GO0LHQvtC8INGA0LDQt9C00LXQu9C40YLQtdC70LUgKGAuYCwgYC1gLFxyXG4gKiBgL2AsINC/0YDQvtCx0LXQuy4uLikuINCc0LXRgdGP0YYg0L/QviDQstGB0LXQvCDRgNCw0YHQv9GA0L7RgdGC0YDQsNC90ZHQvdC90YvQvCDQsiDQvNC40YDQtSDRgdC+0LPQu9Cw0YjQtdC90LjRj9C8IChJU08gYHl5eXktTU0tZGRgINC4XHJcbiAqINC10LLRgNC+0L/QtdC50YHQutC+0LUgYGRkLk1NLnl5eXlgKSDRgdGC0L7QuNGCINC80LXQttC00YMg0LPQvtC00L7QvCDQuCDQtNC90ZHQvCwg0L/QvtGN0YLQvtC80YMg0LHQtdGA0ZHRgtGB0Y8g0LrQsNC6INGB0YDQtdC00L3QuNC5INGB0LXQs9C80LXQvdGCLlxyXG4gKiDQktGA0LXQvNGPLCDQtdGB0LvQuCDQtdGB0YLRjCwg0LLRgdC10LPQtNCwINC40LTRkdGCINC60LDQuiBgSEg6bW06c3NgIOKAlCDRjdGC0L7RgiDQv9C+0YDRj9C00L7QuiDRg9C90LjQstC10YDRgdCw0LvQtdC9LlxyXG4gKlxyXG4gKiDQndC1INGA0LXRiNCw0LXRgiDQuCDQvdC1INC/0YvRgtCw0LXRgtGB0Y8g0YDQtdGI0LjRgtGMINC90LXQvtC00L3QvtC30L3QsNGH0L3QvtGB0YLRjCDQtNC10L3RjC/QvNC10YHRj9GGINCyINGH0LjRgdGC0L4g0YfQuNGB0LvQvtCy0YvRhSDRhNC+0YDQvNCw0YLQsNGFINCy0LjQtNCwXHJcbiAqIGBNTS9kZC95eXl5YCAo0KHQqNCQKSwg0LPQtNC1INC+0LHQsCDRgdC10LPQvNC10L3RgtCwINC80L7Qs9GD0YIg0LHRi9GC0Ywg4omkMTIg4oCUINGD0LPQsNC00YvQstCw0YLRjCDRjdGC0L4g0LHQtdC3INC30L3QsNC90LjRjyDQu9C+0LrQsNC70LhcclxuICog0LfQvdCw0YfQuNC70L4g0LHRiyDQuNC90L7Qs9C00LAg0LzQvtC70YfQsCDQv9GD0YLQsNGC0Ywg0LTQtdC90Ywg0YEg0LzQtdGB0Y/RhtC10LwsINGH0YLQviDRhdGD0LbQtSDRj9Cy0L3QvtC5INC+0YjQuNCx0LrQuC5cclxuICovXHJcbmZ1bmN0aW9uIHBhcnNlRGF0ZUhldXJpc3RpY2FsbHkodmFsOiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XHJcbiAgY29uc3QgcGFydHMgPSB2YWwubWF0Y2goL1xcZCsvZylcclxuICBpZiAoIXBhcnRzIHx8IHBhcnRzLmxlbmd0aCA8IDMgfHwgcGFydHMubGVuZ3RoID4gNikge1xyXG4gICAgcmV0dXJuIG51bGxcclxuICB9XHJcblxyXG4gIGNvbnN0IFtkMCwgZDEsIGQyLCAuLi50aW1lUGFydHNdID0gcGFydHNcclxuICBjb25zdCBkYXRlUGFydHMgPSBbZDAsIGQxLCBkMl1cclxuICBjb25zdCB5ZWFySWR4ID0gZGF0ZVBhcnRzLmZpbmRJbmRleChwID0+IHAubGVuZ3RoID09PSA0KVxyXG4gIC8vINCT0L7QtCDQtNC+0LvQttC10L0g0LHRi9GC0Ywg0L7QtNC90L7Qt9C90LDRh9C90L4g0L3QsNC50LTQtdC9ICjRgNC+0LLQvdC+IDQg0YbQuNGE0YDRiykg0Lgg0YHRgtC+0Y/RgtGMINGBINC60YDQsNGPLCDQsCDQvdC1INCyINGB0LXRgNC10LTQuNC90LUg4oCUXHJcbiAgLy8g0LjQvdCw0YfQtSDQv9C+0LfQuNGG0LjRjyDQvNC10YHRj9GG0LAv0LTQvdGPINC90LUg0L7Qv9GA0LXQtNC10LvQuNGC0Ywg0LHQtdC30L7Qv9Cw0YHQvdC+LlxyXG4gIGlmICh5ZWFySWR4ICE9PSAwICYmIHllYXJJZHggIT09IDIpIHtcclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG5cclxuICBjb25zdCB5ZWFyID0gTnVtYmVyKGRhdGVQYXJ0c1t5ZWFySWR4XSlcclxuICBjb25zdCBtb250aCA9IE51bWJlcihkYXRlUGFydHNbMV0pXHJcbiAgY29uc3QgZGF5ID0gTnVtYmVyKGRhdGVQYXJ0c1t5ZWFySWR4ID09PSAwID8gMiA6IDBdKVxyXG4gIGlmIChtb250aCA8IDEgfHwgbW9udGggPiAxMiB8fCBkYXkgPCAxIHx8IGRheSA+IDMxKSB7XHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxuXHJcbiAgY29uc3QgW2hoLCBtbSwgc3NdID0gdGltZVBhcnRzXHJcbiAgY29uc3QgaG91ciA9IGhoICE9PSB1bmRlZmluZWQgPyBOdW1iZXIoaGgpIDogMFxyXG4gIGNvbnN0IG1pbnV0ZSA9IG1tICE9PSB1bmRlZmluZWQgPyBOdW1iZXIobW0pIDogMFxyXG4gIGNvbnN0IHNlY29uZCA9IHNzICE9PSB1bmRlZmluZWQgPyBOdW1iZXIoc3MpIDogMFxyXG4gIGlmIChob3VyID4gMjMgfHwgbWludXRlID4gNTkgfHwgc2Vjb25kID4gNTkpIHtcclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG5cclxuICByZXR1cm4gYnVpbGREYXRlKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKVxyXG59XHJcblxyXG4vKipcclxuICog0J/RgNC10L7QsdGA0LDQt9GD0LXRgiDQt9C90LDRh9C10L3QuNC1INCyINC00LDRgtGDLlxyXG4gKlxyXG4gKiDQldGB0LvQuCDQv9C10YDQtdC00LDQvSBgZm9ybWF0YCwg0L3QviDQt9C90LDRh9C10L3QuNC1INC10LzRgyDQvdC1INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPQtdGCICjRgdC8LiBGQUxMQkFDS19EQVRFX0ZPUk1BVFMg4oCUXHJcbiAqINCw0LrRgtGD0LDQu9GM0L3QviDQtNC70Y8g0L/QvtC70LXQuSwg0LPQtNC1IEJpdHJpeDI0INC+0YLQtNCw0ZHRgiDQtNCw0YLRgyDQsiDRhNC+0YDQvNCw0YLQtSwg0L3QsNGB0YLRgNC+0LXQvdC90L7QvCDQvdCwINC/0L7RgNGC0LDQu9C1LCDQsCDQvdC1INCyXHJcbiAqINGC0L7QvCwg0YfRgtC+INC30LDRhdCw0YDQtNC60L7QttC10L0g0LIg0LzQsNC/0L/QtdGA0LUpLCDQv9C10YDQtdC0INGC0LXQvCDQutCw0Log0YHRh9C40YLQsNGC0Ywg0LfQvdCw0YfQtdC90LjQtSDQvdC10LLQsNC70LjQtNC90YvQvCwg0LTQtdC70LDRjtGC0YHRjyDQtdGJ0ZFcclxuICog0LTQstC1INC/0L7Qv9GL0YLQutC4OiDQtNGA0YPQs9C40LUg0YDQsNGB0L/RgNC+0YHRgtGA0LDQvdGR0L3QvdGL0LUg0YTQvtGA0LzQsNGC0YsgQml0cml4MjQsINCwINC30LDRgtC10Lwg4oCUINC/0L7Qt9C40YbQuNC+0L3QvdCw0Y8g0Y3QstGA0LjRgdGC0LjQutCwXHJcbiAqICjRgdC8LiBwYXJzZURhdGVIZXVyaXN0aWNhbGx5KSwg0LrQvtGC0L7RgNCw0Y8g0YDQsNGB0L/QvtC30L3QsNGR0YIg0L/RgNCw0LrRgtC40YfQtdGB0LrQuCDQu9GO0LHQvtC5INGH0LjRgdGC0L4g0YfQuNGB0LvQvtCy0L7QuSDRhNC+0YDQvNCw0YJcclxuICog0LTQsNGC0Ysg0L3QtdC30LDQstC40YHQuNC80L4g0L7RgiDRgNCw0LfQtNC10LvQuNGC0LXQu9GPLiDQldGB0LvQuCDQv9GA0LjQu9C+0LbQtdC90LjRjiDRgtC+0YfQvdC+INC40LfQstC10YHRgtC10L0g0YTQvtGA0LzQsNGCINC60L7QvdC60YDQtdGC0L3QvtCz0L4g0L/QvtGA0YLQsNC70LAsXHJcbiAqINC10LPQviDRgdGC0L7QuNGCINC/0LXRgNC10LTQsNCy0LDRgtGMINGP0LLQvdGL0LwgYGZvcm1hdGAg4oCUINGN0YLQviDQstGB0LXQs9C00LAg0L/RgNC40L7RgNC40YLQtdGC0L3QtdC1INGD0LPQsNC00YvQstCw0L3QuNGPLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZSh2YWw6IG51bWJlciB8IHN0cmluZyB8IERhdGUsIGZvcm1hdD86IHN0cmluZywgb3B0PzogVG9EYXRlT3B0aW9ucywgdGhyb3dFcnJvciA9IHRydWUpOiBEYXRlIHtcclxuICBpZiAodmFsIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgcmV0dXJuIHZhbFxyXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcclxuICAgIGlmIChmb3JtYXQpIHtcclxuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VEYXRlV2l0aEZvcm1hdCh2YWwsIGZvcm1hdClcclxuICAgICAgaWYgKHBhcnNlZCkge1xyXG4gICAgICAgIHJldHVybiBwYXJzZWRcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChjb25zdCBmYWxsYmFja0Zvcm1hdCBvZiBGQUxMQkFDS19EQVRFX0ZPUk1BVFMpIHtcclxuICAgICAgICBpZiAoZmFsbGJhY2tGb3JtYXQgPT09IGZvcm1hdCkgY29udGludWVcclxuICAgICAgICBjb25zdCBmYWxsYmFja1BhcnNlZCA9IHBhcnNlRGF0ZVdpdGhGb3JtYXQodmFsLCBmYWxsYmFja0Zvcm1hdClcclxuICAgICAgICBpZiAoZmFsbGJhY2tQYXJzZWQpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxsYmFja1BhcnNlZFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgaGV1cmlzdGljUGFyc2VkID0gcGFyc2VEYXRlSGV1cmlzdGljYWxseSh2YWwpXHJcbiAgICAgIGlmIChoZXVyaXN0aWNQYXJzZWQpIHtcclxuICAgICAgICByZXR1cm4gaGV1cmlzdGljUGFyc2VkXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWwpXHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbClcclxuICB9XHJcblxyXG4gIGlmICh0aHJvd0Vycm9yKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKCdXcm9uZyBkYXRlIGZvcm1hdCcsIHZhbCwgZm9ybWF0KVxyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyBkYXRlIGZvcm1hdCcpXHJcbiAgfVxyXG5cclxuICByZXR1cm4gbmV3IERhdGUoKVxyXG59XHJcblxyXG4vKipcclxuICog0J/RgNC10L7QsdGA0LDQt9GD0LXRgiDQtNCw0YLRgyDQsiDRgdGC0YDQvtC60YMg0YEg0YPRh9C10YLQvtC8INCy0YDQtdC80LXQvdC90L7QuSDQt9C+0L3Ri1xyXG4gKlxyXG4gKiDQpNC+0YDQvNCw0YLQuNGA0L7QstCw0L3QuNC1INC00LXQu9C10LPQuNGA0L7QstCw0L3QviB0b0xvY2FsQXRvbSgpIOKAlCDRgNCw0L3RjNGI0LUg0LfQtNC10YHRjCDQsdGL0LvQsCDQstGC0L7RgNCw0Y8sXHJcbiAqINC90LXQt9Cw0LLQuNGB0LjQvNCw0Y8g0LrQvtC/0LjRjyDRgtC+0Lkg0LbQtSDRhNC+0YDQvNGD0LvRiyAocGFkZGluZCArINGB0LzQtdGJ0LXQvdC40LUg0YLQsNC50LzQt9C+0L3RiyksINC60L7RgtC+0YDQsNGPXHJcbiAqINC80L7Qs9C70LAg0YDQsNC30L7QudGC0LjRgdGMINGBIHRvTG9jYWxBdG9tKCkg0L/RgNC4INC/0YDQsNCy0LrQtSDQvtC00L3QvtC5INC40Lcg0L3QuNGFINC4INC90LUg0LTRgNGD0LPQvtC5LlxyXG4gKlxyXG4gKiBAcGFyYW0gZGF0ZVxyXG4gKiBAcGFyYW0gdGhyb3dFcnJvclxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvSVNPU3RyaW5nV2l0aFRpbWV6b25lKGRhdGU6IERhdGUsIHRocm93RXJyb3IgPSB0cnVlKTogc3RyaW5nIHtcclxuICBpZiAoIShkYXRlIGluc3RhbmNlb2YgRGF0ZSkpIHtcclxuICAgIGlmICh0aHJvd0Vycm9yKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWU6IG5vdCBhIHZhbGlkIERhdGUgb2JqZWN0JylcclxuICAgIHJldHVybiAnJ1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRvTG9jYWxBdG9tKGRhdGUpXHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC30L3QsNGH0LXQvdC40LUg0LIg0LHRg9C70LXQstC+INC30L3QsNGH0LXQvdC40LVcclxuICpcclxuICogQHBhcmFtIHZhbFxyXG4gKiBAcGFyYW0gdGhyb3dFcnJvclxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvQm9vbCh2YWw6IGFueSwgdGhyb3dFcnJvciA9IHRydWUpOiBib29sZWFuIHtcclxuICBzd2l0Y2ggKHR5cGVvZiB2YWwpIHtcclxuICAgIGNhc2UgJ3N0cmluZyc6XHJcbiAgICAgIHZhbCA9IHZhbC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgIGlmICh2YWwgPT09ICduJyB8fCB2YWwgPT09ICd5JykgeyAvLyDQsdC40YLRgNC40LrRgdC+0LLRi9C1INC/0L7QvdGP0YLQuNGPINC+IGJvb2xcclxuICAgICAgICByZXR1cm4gdmFsID09PSAneSdcclxuICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICd0cnVlJyB8fCB2YWwgPT09ICdmYWxzZScpIHsgLy8g0LHQuNGC0YDQuNC60YHQvtCy0YvQtSDQv9C+0L3Rj9GC0LjRjyDQviBib29sXHJcbiAgICAgICAgcmV0dXJuIHZhbCA9PT0gJ3RydWUnXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRocm93RXJyb3IpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZTogY2Fubm90IGJlIGNvbnZlcnRlZCB0byBib29sZWFuJylcclxuICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgfVxyXG4gICAgZGVmYXVsdDpcclxuICAgICAgcmV0dXJuIEJvb2xlYW4odmFsKVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqINCf0YDQtdC+0LHRgNCw0LfRg9C10YIg0LHRg9C70LXQstC+INC30L3QsNGH0LXQvdC40LUg0LIgJ1knINC40LvQuCAnTidcclxuICpcclxuICogQHBhcmFtIHZhbFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvQlhZb3JOKHZhbDogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHZhbCA/ICdZJyA6ICdOJ1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZVVybEh0dHBzKHVybDogc3RyaW5nLCBjb21wb25lbnQgPSBmYWxzZSk6IHN0cmluZyB7XHJcbiAgaWYgKGNvbXBvbmVudCkge1xyXG4gICAgcmV0dXJuIGVuY29kZVVSSShjcm9wVXJsKHVybCkgKyAnLycpXHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBlbmNvZGVVUkkoJ2h0dHBzOi8vJyArIGNyb3BVcmwodXJsKSArICcvJylcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQntCx0YDQtdC30LDQtdGCIFVSTCAo0YPQtNCw0LvRj9C10YIg0L/RgNC+0YLQvtC60L7QuylcclxuICpcclxuICogQHBhcmFtIHVybFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyb3BVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHVybCA9IHVybCA/IHVybC5yZXBsYWNlKCdodHRwczovLycsICcnKSA6ICcnXHJcbiAgdXJsID0gdXJsID8gdXJsLnJlcGxhY2UoJ2h0dHA6Ly8nLCAnJykgOiAnJ1xyXG4gIHVybCA9IHVybCA/IHVybC5yZXBsYWNlKCdodHRwczonLCAnJykgOiAnJ1xyXG4gIHVybCA9IHVybCA/IHVybC5yZXBsYWNlKCdodHRwOicsICcnKSA6ICcnXHJcbiAgcmV0dXJuIHVybFxyXG59XHJcblxyXG4vKipcclxuICog0J/RgNC10L7QsdGA0LDQt9GD0LXRgiDRhNCw0LnQuyDQsiBiYXNlNjRcclxuICpcclxuICogQHBhcmFtIGZpbGVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlNjRGaWxlKGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXHJcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKVxyXG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpXHJcbiAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcilcclxuICB9KVxyXG59XHJcblxyXG4vKipcclxuICog0J/QvtC70YPRh9C40YLRjCDRhNCw0LnQuyDQsiDRhNC+0YDQvNCw0YLQtSBiYXNlNjQg0YEg0YDQsNC30LHQuNCy0LrQvtC5INC90LAg0LfQsNCz0L7Qu9C+0LLQvtC6INC4INC00LDQvdC90YvQtVxyXG4gKlxyXG4gKiBAcGFyYW0gZmlsZVxyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJhc2U2NEZpbGVMaWtlU3RyKGZpbGU6IEZpbGUpOiBQcm9taXNlPHtcclxuICBoZWFkZXI6IHN0cmluZyxcclxuICB2YWw6IHN0cmluZ1xyXG59IHwgdW5kZWZpbmVkPiB7XHJcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0QmFzZTY0RmlsZShmaWxlKVxyXG4gIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJykge1xyXG4gICAgY29uc3Qgc3BsaXQgPSByZXN1bHQuc3BsaXQoJywnKVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaGVhZGVyOiBzcGxpdFswXSxcclxuICAgICAgdmFsOiBzcGxpdFsxXVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gdW5kZWZpbmVkXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlQmFzZUFkZHJlc3ModXJsOiBzdHJpbmcsIGFkZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gJycpIHtcclxuICBpZiAoYWRkICYmIGFkZC5sZW5ndGggPiAwKSB7XHJcbiAgICBpZiAodXJsLmxhc3RJbmRleE9mKCcvJykgIT09ICh1cmwubGVuZ3RoIC0gMSkpIHtcclxuICAgICAgdXJsID0gdXJsICsgJy8nXHJcbiAgICB9XHJcblxyXG4gICAgdXJsID0gdXJsICsgYWRkXHJcbiAgfVxyXG5cclxuICBpZiAodXJsLmxhc3RJbmRleE9mKCcvJykgIT09ICh1cmwubGVuZ3RoIC0gMSkpIHtcclxuICAgIHVybCA9IHVybCArICcvJ1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHVybFxyXG59Il19
@@ -0,0 +1,59 @@
1
+ import { BXRestSettings } from '../settings';
2
+ /**
3
+ * Контекст клиента: его настройки, экземпляр axios и общее состояние
4
+ * продления авторизации и очереди `throttle`.
5
+ *
6
+ * Объекты библиотеки запоминают контекст в момент создания
7
+ * (`currentContext()`), поэтому все запросы клиента `new BXRestNavvy(settings)`
8
+ * идут с его настройками, а не с глобальными. Внутренняя деталь библиотеки.
9
+ */
10
+ export class BXRestContext {
11
+ constructor(own) {
12
+ this.own = own;
13
+ /** Сколько продлений уже завершилось успешно. */
14
+ this.refreshCount = 0;
15
+ /** Очередь `throttle`: когда можно отправить следующий запрос клиента (мс, Date.now()). */
16
+ this.throttleNextSlot = 0;
17
+ }
18
+ /**
19
+ * Свои настройки клиента, а без них — глобальные `BXRestSettings.value`,
20
+ * прочитанные в момент обращения: `BXRestSettings.update()` заменяет объект.
21
+ */
22
+ get settings() {
23
+ return this.own ?? BXRestSettings.value;
24
+ }
25
+ }
26
+ /**
27
+ * Контекст глобальных настроек. С ним работают `new BXRestNavvy()` без
28
+ * аргумента и объекты, созданные приложением напрямую (`new Navvy()`,
29
+ * `new BXRestRequest()`).
30
+ */
31
+ export const globalContext = /* @__PURE__ */ new BXRestContext();
32
+ let current = globalContext;
33
+ export function currentContext() {
34
+ return current;
35
+ }
36
+ /**
37
+ * Делает `ctx` текущим и возвращает прежний контекст. Вызывающий обязан
38
+ * вернуть его через `restoreContext()` в `finally`: иначе после исключения
39
+ * чужие настройки достанутся объектам, созданным позже.
40
+ */
41
+ export function enterContext(ctx) {
42
+ const previous = current;
43
+ current = ctx;
44
+ return previous;
45
+ }
46
+ export function restoreContext(previous) {
47
+ current = previous;
48
+ }
49
+ /** Создаёт объекты в контексте `ctx` и возвращает прежний контекст, даже при исключении. */
50
+ export function runInContext(ctx, build) {
51
+ const previous = enterContext(ctx);
52
+ try {
53
+ return build();
54
+ }
55
+ finally {
56
+ restoreContext(previous);
57
+ }
58
+ }
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUk1Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFVeEIsWUFBNkIsR0FBcUI7UUFBckIsUUFBRyxHQUFILEdBQUcsQ0FBa0I7UUFQbEQsaURBQWlEO1FBQ2pELGlCQUFZLEdBQUcsQ0FBQyxDQUFBO1FBR2hCLDJGQUEyRjtRQUMzRixxQkFBZ0IsR0FBRyxDQUFDLENBQUE7SUFFaUMsQ0FBQztJQUV0RDs7O09BR0c7SUFDSCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxHQUFHLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQTtJQUN6QyxDQUFDO0NBQ0Y7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxJQUFJLGFBQWEsRUFBRSxDQUFBO0FBRWhFLElBQUksT0FBTyxHQUFHLGFBQWEsQ0FBQTtBQUUzQixNQUFNLFVBQVUsY0FBYztJQUM1QixPQUFPLE9BQU8sQ0FBQTtBQUNoQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBa0I7SUFDN0MsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFBO0lBQ3hCLE9BQU8sR0FBRyxHQUFHLENBQUE7SUFDYixPQUFPLFFBQVEsQ0FBQTtBQUNqQixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxRQUF1QjtJQUNwRCxPQUFPLEdBQUcsUUFBUSxDQUFBO0FBQ3BCLENBQUM7QUFFRCw0RkFBNEY7QUFDNUYsTUFBTSxVQUFVLFlBQVksQ0FBSSxHQUFrQixFQUFFLEtBQWM7SUFDaEUsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2xDLElBQUksQ0FBQztRQUNILE9BQU8sS0FBSyxFQUFFLENBQUE7SUFDaEIsQ0FBQztZQUFTLENBQUM7UUFDVCxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDMUIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCWFJlc3RTZXR0aW5ncyB9IGZyb20gJy4uL3NldHRpbmdzJ1xyXG5pbXBvcnQgeyBpQlhSZXN0U2V0dGluZ3MgfSBmcm9tICcuLi90eXBpZmljYXRpb24vc2V0dGluZ3MnXHJcbmltcG9ydCB0eXBlIHsgQXhpb3NJbnN0YW5jZSB9IGZyb20gJ2F4aW9zJ1xyXG5cclxuLyoqXHJcbiAqINCa0L7QvdGC0LXQutGB0YIg0LrQu9C40LXQvdGC0LA6INC10LPQviDQvdCw0YHRgtGA0L7QudC60LgsINGN0LrQt9C10LzQv9C70Y/RgCBheGlvcyDQuCDQvtCx0YnQtdC1INGB0L7RgdGC0L7Rj9C90LjQtVxyXG4gKiDQv9GA0L7QtNC70LXQvdC40Y8g0LDQstGC0L7RgNC40LfQsNGG0LjQuCDQuCDQvtGH0LXRgNC10LTQuCBgdGhyb3R0bGVgLlxyXG4gKlxyXG4gKiDQntCx0YrQtdC60YLRiyDQsdC40LHQu9C40L7RgtC10LrQuCDQt9Cw0L/QvtC80LjQvdCw0Y7RgiDQutC+0L3RgtC10LrRgdGCINCyINC80L7QvNC10L3RgiDRgdC+0LfQtNCw0L3QuNGPXHJcbiAqIChgY3VycmVudENvbnRleHQoKWApLCDQv9C+0Y3RgtC+0LzRgyDQstGB0LUg0LfQsNC/0YDQvtGB0Ysg0LrQu9C40LXQvdGC0LAgYG5ldyBCWFJlc3ROYXZ2eShzZXR0aW5ncylgXHJcbiAqINC40LTRg9GCINGBINC10LPQviDQvdCw0YHRgtGA0L7QudC60LDQvNC4LCDQsCDQvdC1INGBINCz0LvQvtCx0LDQu9GM0L3Ri9C80LguINCS0L3Rg9GC0YDQtdC90L3Rj9GPINC00LXRgtCw0LvRjCDQsdC40LHQu9C40L7RgtC10LrQuC5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBCWFJlc3RDb250ZXh0IHtcclxuICAvKiog0JjQtNGD0YnQtdC1INGB0LXQudGH0LDRgSDQv9GA0L7QtNC70LXQvdC40LUg0LDQstGC0L7RgNC40LfQsNGG0LjQuCwg0LXQs9C+INC20LTRg9GCINCy0YHQtSDRg9C/0LDQstGI0LjQtSDQt9Cw0L/RgNC+0YHRiyDQutC70LjQtdC90YLQsC4gKi9cclxuICBwZW5kaW5nUmVmcmVzaDogUHJvbWlzZTx2b2lkPiB8IHVuZGVmaW5lZFxyXG4gIC8qKiDQodC60L7Qu9GM0LrQviDQv9GA0L7QtNC70LXQvdC40Lkg0YPQttC1INC30LDQstC10YDRiNC40LvQvtGB0Ywg0YPRgdC/0LXRiNC90L4uICovXHJcbiAgcmVmcmVzaENvdW50ID0gMFxyXG4gIC8qKiDQrdC60LfQtdC80L/Qu9GP0YAgYXhpb3Mg0LrQu9C40LXQvdGC0LA6INC+0LTQuNC9INC90LAg0LrQvtC90YLQtdC60YHRgiwg0YHQvtC30LTQsNGR0YLRgdGPINC/0YDQuCDQv9C10YDQstC+0Lwg0LfQsNC/0YDQvtGB0LUuICovXHJcbiAgYXhpb3M6IEF4aW9zSW5zdGFuY2UgfCB1bmRlZmluZWRcclxuICAvKiog0J7Rh9C10YDQtdC00YwgYHRocm90dGxlYDog0LrQvtCz0LTQsCDQvNC+0LbQvdC+INC+0YLQv9GA0LDQstC40YLRjCDRgdC70LXQtNGD0Y7RidC40Lkg0LfQsNC/0YDQvtGBINC60LvQuNC10L3RgtCwICjQvNGBLCBEYXRlLm5vdygpKS4gKi9cclxuICB0aHJvdHRsZU5leHRTbG90ID0gMFxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG93bj86IGlCWFJlc3RTZXR0aW5ncykge31cclxuXHJcbiAgLyoqXHJcbiAgICog0KHQstC+0Lgg0L3QsNGB0YLRgNC+0LnQutC4INC60LvQuNC10L3RgtCwLCDQsCDQsdC10Lcg0L3QuNGFIOKAlCDQs9C70L7QsdCw0LvRjNC90YvQtSBgQlhSZXN0U2V0dGluZ3MudmFsdWVgLFxyXG4gICAqINC/0YDQvtGH0LjRgtCw0L3QvdGL0LUg0LIg0LzQvtC80LXQvdGCINC+0LHRgNCw0YnQtdC90LjRjzogYEJYUmVzdFNldHRpbmdzLnVwZGF0ZSgpYCDQt9Cw0LzQtdC90Y/QtdGCINC+0LHRitC10LrRgi5cclxuICAgKi9cclxuICBnZXQgc2V0dGluZ3MoKTogaUJYUmVzdFNldHRpbmdzIHtcclxuICAgIHJldHVybiB0aGlzLm93biA/PyBCWFJlc3RTZXR0aW5ncy52YWx1ZVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqINCa0L7QvdGC0LXQutGB0YIg0LPQu9C+0LHQsNC70YzQvdGL0YUg0L3QsNGB0YLRgNC+0LXQui4g0KEg0L3QuNC8INGA0LDQsdC+0YLQsNGO0YIgYG5ldyBCWFJlc3ROYXZ2eSgpYCDQsdC10LdcclxuICog0LDRgNCz0YPQvNC10L3RgtCwINC4INC+0LHRitC10LrRgtGLLCDRgdC+0LfQtNCw0L3QvdGL0LUg0L/RgNC40LvQvtC20LXQvdC40LXQvCDQvdCw0L/RgNGP0LzRg9GOIChgbmV3IE5hdnZ5KClgLFxyXG4gKiBgbmV3IEJYUmVzdFJlcXVlc3QoKWApLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGdsb2JhbENvbnRleHQgPSAvKiBAX19QVVJFX18gKi8gbmV3IEJYUmVzdENvbnRleHQoKVxyXG5cclxubGV0IGN1cnJlbnQgPSBnbG9iYWxDb250ZXh0XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3VycmVudENvbnRleHQoKTogQlhSZXN0Q29udGV4dCB7XHJcbiAgcmV0dXJuIGN1cnJlbnRcclxufVxyXG5cclxuLyoqXHJcbiAqINCU0LXQu9Cw0LXRgiBgY3R4YCDRgtC10LrRg9GJ0LjQvCDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDQv9GA0LXQttC90LjQuSDQutC+0L3RgtC10LrRgdGCLiDQktGL0LfRi9Cy0LDRjtGJ0LjQuSDQvtCx0Y/Qt9Cw0L1cclxuICog0LLQtdGA0L3Rg9GC0Ywg0LXQs9C+INGH0LXRgNC10LcgYHJlc3RvcmVDb250ZXh0KClgINCyIGBmaW5hbGx5YDog0LjQvdCw0YfQtSDQv9C+0YHQu9C1INC40YHQutC70Y7Rh9C10L3QuNGPXHJcbiAqINGH0YPQttC40LUg0L3QsNGB0YLRgNC+0LnQutC4INC00L7RgdGC0LDQvdGD0YLRgdGPINC+0LHRitC10LrRgtCw0LwsINGB0L7Qt9C00LDQvdC90YvQvCDQv9C+0LfQttC1LlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGVudGVyQ29udGV4dChjdHg6IEJYUmVzdENvbnRleHQpOiBCWFJlc3RDb250ZXh0IHtcclxuICBjb25zdCBwcmV2aW91cyA9IGN1cnJlbnRcclxuICBjdXJyZW50ID0gY3R4XHJcbiAgcmV0dXJuIHByZXZpb3VzXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZXN0b3JlQ29udGV4dChwcmV2aW91czogQlhSZXN0Q29udGV4dCk6IHZvaWQge1xyXG4gIGN1cnJlbnQgPSBwcmV2aW91c1xyXG59XHJcblxyXG4vKiog0KHQvtC30LTQsNGR0YIg0L7QsdGK0LXQutGC0Ysg0LIg0LrQvtC90YLQtdC60YHRgtC1IGBjdHhgINC4INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCINC/0YDQtdC20L3QuNC5INC60L7QvdGC0LXQutGB0YIsINC00LDQttC1INC/0YDQuCDQuNGB0LrQu9GO0YfQtdC90LjQuC4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJ1bkluQ29udGV4dDxUPihjdHg6IEJYUmVzdENvbnRleHQsIGJ1aWxkOiAoKSA9PiBUKTogVCB7XHJcbiAgY29uc3QgcHJldmlvdXMgPSBlbnRlckNvbnRleHQoY3R4KVxyXG4gIHRyeSB7XHJcbiAgICByZXR1cm4gYnVpbGQoKVxyXG4gIH0gZmluYWxseSB7XHJcbiAgICByZXN0b3JlQ29udGV4dChwcmV2aW91cylcclxuICB9XHJcbn1cclxuIl19