@decaf-ts/for-fabric 0.1.55 → 0.1.56

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 (377) hide show
  1. package/dist/for-fabric.cjs +2 -1964
  2. package/dist/for-fabric.cjs.map +1 -0
  3. package/dist/for-fabric.js +2 -2099
  4. package/dist/for-fabric.js.map +1 -0
  5. package/lib/bin/cli.cjs +1 -2
  6. package/lib/bin/cli.js.map +1 -0
  7. package/lib/cli-module.cjs +1 -1
  8. package/lib/cli-module.js.map +1 -0
  9. package/lib/cli-utils.cjs +1 -1
  10. package/lib/cli-utils.js.map +1 -0
  11. package/lib/client/FabricClientAdapter.cjs +1 -1
  12. package/lib/client/FabricClientAdapter.js.map +1 -0
  13. package/lib/client/FabricClientDispatch.cjs +1 -1
  14. package/lib/client/FabricClientDispatch.js.map +1 -0
  15. package/lib/client/FabricClientPaginator.cjs +1 -1
  16. package/lib/client/FabricClientPaginator.js.map +1 -0
  17. package/lib/client/FabricClientRepository.cjs +1 -1
  18. package/lib/client/FabricClientRepository.js.map +1 -0
  19. package/lib/client/FabricClientStatement.cjs +1 -1
  20. package/lib/client/FabricClientStatement.js.map +1 -0
  21. package/lib/client/collections/generation.cjs +1 -1
  22. package/lib/client/collections/generation.js.map +1 -0
  23. package/lib/client/collections/index.cjs +1 -1
  24. package/lib/client/collections/index.js.map +1 -0
  25. package/lib/client/constants.cjs +1 -1
  26. package/lib/client/constants.js.map +1 -0
  27. package/lib/client/crypto.cjs +1 -1
  28. package/lib/client/crypto.js.map +1 -0
  29. package/lib/client/erc20/FabricERC20ClientRepository.cjs +1 -1
  30. package/lib/client/erc20/FabricERC20ClientRepository.js.map +1 -0
  31. package/lib/client/erc20/index.cjs +1 -1
  32. package/lib/client/erc20/index.js.map +1 -0
  33. package/lib/client/fabric-fs.cjs +1 -1
  34. package/lib/client/fabric-fs.js.map +1 -0
  35. package/lib/client/fabric-hsm.cjs +1 -1
  36. package/lib/client/fabric-hsm.js.map +1 -0
  37. package/lib/client/index.cjs +2 -1
  38. package/lib/client/index.d.ts +1 -0
  39. package/lib/client/index.js.map +1 -0
  40. package/lib/client/indexes/generation.cjs +1 -1
  41. package/lib/client/indexes/generation.js.map +1 -0
  42. package/lib/client/indexes/index.cjs +1 -1
  43. package/lib/client/indexes/index.js.map +1 -0
  44. package/lib/client/logging.cjs +1 -1
  45. package/lib/client/logging.js.map +1 -0
  46. package/lib/client/services/FabricEnrollmentService.cjs +1 -1
  47. package/lib/client/services/FabricEnrollmentService.js.map +1 -0
  48. package/lib/client/services/FabricIdentityService.cjs +1 -1
  49. package/lib/client/services/FabricIdentityService.js.map +1 -0
  50. package/lib/client/services/RegistrationRequestBuilder.cjs +1 -1
  51. package/lib/client/services/RegistrationRequestBuilder.js.map +1 -0
  52. package/lib/client/services/constants.cjs +1 -1
  53. package/lib/client/services/constants.js.map +1 -0
  54. package/lib/client/services/index.cjs +1 -1
  55. package/lib/client/services/index.js.map +1 -0
  56. package/lib/client/types.cjs +1 -1
  57. package/lib/client/types.js.map +1 -0
  58. package/lib/client/utils.cjs +1 -1
  59. package/lib/client/utils.js.map +1 -0
  60. package/lib/contract/Address.cjs +1 -1
  61. package/lib/contract/Address.js.map +1 -0
  62. package/lib/contract/AddressContract.cjs +1 -1
  63. package/lib/contract/AddressContract.js.map +1 -0
  64. package/lib/contract/BatchContract.cjs +1 -1
  65. package/lib/contract/BatchContract.js.map +1 -0
  66. package/lib/contract/Product.cjs +1 -1
  67. package/lib/contract/Product.js.map +1 -0
  68. package/lib/contract/ProductContract.cjs +1 -1
  69. package/lib/contract/ProductContract.js.map +1 -0
  70. package/lib/contract/User.cjs +1 -1
  71. package/lib/contract/User.js.map +1 -0
  72. package/lib/contract/UserContract.cjs +1 -1
  73. package/lib/contract/UserContract.js.map +1 -0
  74. package/lib/contract/index.cjs +1 -1
  75. package/lib/contract/index.js.map +1 -0
  76. package/lib/contract/models/Audit.cjs +1 -1
  77. package/lib/contract/models/Audit.js.map +1 -0
  78. package/lib/contract/models/BaseIdentifiedModel.cjs +1 -1
  79. package/lib/contract/models/BaseIdentifiedModel.js.map +1 -0
  80. package/lib/contract/models/BaseModel.cjs +1 -1
  81. package/lib/contract/models/BaseModel.js.map +1 -0
  82. package/lib/contract/models/Batch.cjs +1 -1
  83. package/lib/contract/models/Batch.js.map +1 -0
  84. package/lib/contract/models/Leaflet.cjs +1 -1
  85. package/lib/contract/models/Leaflet.js.map +1 -0
  86. package/lib/contract/models/LeafletFile.cjs +1 -1
  87. package/lib/contract/models/LeafletFile.js.map +1 -0
  88. package/lib/contract/models/Market.cjs +1 -1
  89. package/lib/contract/models/Market.js.map +1 -0
  90. package/lib/contract/models/Product.cjs +1 -1
  91. package/lib/contract/models/Product.js.map +1 -0
  92. package/lib/contract/models/ProductStrength.cjs +1 -1
  93. package/lib/contract/models/ProductStrength.js.map +1 -0
  94. package/lib/contract/models/constants.cjs +1 -1
  95. package/lib/contract/models/constants.js.map +1 -0
  96. package/lib/contract/models/decorators.cjs +1 -1
  97. package/lib/contract/models/decorators.js.map +1 -0
  98. package/lib/contract/models/gtin.cjs +1 -1
  99. package/lib/contract/models/gtin.js.map +1 -0
  100. package/lib/contracts/ContractAdapter.cjs +1 -1
  101. package/lib/contracts/ContractAdapter.js.map +1 -0
  102. package/lib/contracts/ContractContext.cjs +1 -1
  103. package/lib/contracts/ContractContext.js.map +1 -0
  104. package/lib/contracts/ContractPrivateDataAdapter.cjs +1 -1
  105. package/lib/contracts/ContractPrivateDataAdapter.js.map +1 -0
  106. package/lib/contracts/FabricConstruction.cjs +1 -1
  107. package/lib/contracts/FabricConstruction.js.map +1 -0
  108. package/lib/contracts/FabricContractPaginator.cjs +1 -1
  109. package/lib/contracts/FabricContractPaginator.js.map +1 -0
  110. package/lib/contracts/FabricContractRepository.cjs +1 -1
  111. package/lib/contracts/FabricContractRepository.js.map +1 -0
  112. package/lib/contracts/FabricContractRepositoryObservableHandler.cjs +1 -1
  113. package/lib/contracts/FabricContractRepositoryObservableHandler.js.map +1 -0
  114. package/lib/contracts/FabricContractSequence.cjs +1 -1
  115. package/lib/contracts/FabricContractSequence.js.map +1 -0
  116. package/lib/contracts/FabricContractStatement.cjs +1 -1
  117. package/lib/contracts/FabricContractStatement.js.map +1 -0
  118. package/lib/contracts/PrivateSequence.cjs +1 -1
  119. package/lib/contracts/PrivateSequence.js.map +1 -0
  120. package/lib/contracts/crud/crud-contract.cjs +1 -1
  121. package/lib/contracts/crud/crud-contract.js.map +1 -0
  122. package/lib/contracts/crud/index.cjs +1 -1
  123. package/lib/contracts/crud/index.js.map +1 -0
  124. package/lib/contracts/crud/serialized-crud-contract.cjs +1 -1
  125. package/lib/contracts/crud/serialized-crud-contract.js.map +1 -0
  126. package/lib/contracts/erc20/erc20contract.cjs +1 -1
  127. package/lib/contracts/erc20/erc20contract.js.map +1 -0
  128. package/lib/contracts/erc20/index.cjs +1 -1
  129. package/lib/contracts/erc20/index.js.map +1 -0
  130. package/lib/contracts/erc20/models.cjs +1 -1
  131. package/lib/contracts/erc20/models.js.map +1 -0
  132. package/lib/contracts/index.cjs +1 -1
  133. package/lib/contracts/index.js.map +1 -0
  134. package/lib/contracts/logging.cjs +1 -1
  135. package/lib/contracts/logging.js.map +1 -0
  136. package/lib/contracts/private-data.cjs +1 -1
  137. package/lib/contracts/private-data.js.map +1 -0
  138. package/lib/contracts/types.cjs +1 -1
  139. package/lib/contracts/types.js.map +1 -0
  140. package/lib/esm/bin/cli.js +1 -1
  141. package/lib/esm/bin/cli.js.map +1 -0
  142. package/lib/esm/cli-module.js +1 -1
  143. package/lib/esm/cli-module.js.map +1 -0
  144. package/lib/esm/cli-utils.js +1 -1
  145. package/lib/esm/cli-utils.js.map +1 -0
  146. package/lib/esm/client/FabricClientAdapter.js +1 -1
  147. package/lib/esm/client/FabricClientAdapter.js.map +1 -0
  148. package/lib/esm/client/FabricClientDispatch.js +1 -1
  149. package/lib/esm/client/FabricClientDispatch.js.map +1 -0
  150. package/lib/esm/client/FabricClientPaginator.js +1 -1
  151. package/lib/esm/client/FabricClientPaginator.js.map +1 -0
  152. package/lib/esm/client/FabricClientRepository.js +1 -1
  153. package/lib/esm/client/FabricClientRepository.js.map +1 -0
  154. package/lib/esm/client/FabricClientStatement.js +1 -1
  155. package/lib/esm/client/FabricClientStatement.js.map +1 -0
  156. package/lib/esm/client/collections/generation.js +1 -1
  157. package/lib/esm/client/collections/generation.js.map +1 -0
  158. package/lib/esm/client/collections/index.js +1 -1
  159. package/lib/esm/client/collections/index.js.map +1 -0
  160. package/lib/esm/client/constants.js +1 -1
  161. package/lib/esm/client/constants.js.map +1 -0
  162. package/lib/esm/client/crypto.js +1 -1
  163. package/lib/esm/client/crypto.js.map +1 -0
  164. package/lib/esm/client/erc20/FabricERC20ClientRepository.js +1 -1
  165. package/lib/esm/client/erc20/FabricERC20ClientRepository.js.map +1 -0
  166. package/lib/esm/client/erc20/index.js +1 -1
  167. package/lib/esm/client/erc20/index.js.map +1 -0
  168. package/lib/esm/client/fabric-fs.js +1 -1
  169. package/lib/esm/client/fabric-fs.js.map +1 -0
  170. package/lib/esm/client/fabric-hsm.js +1 -1
  171. package/lib/esm/client/fabric-hsm.js.map +1 -0
  172. package/lib/esm/client/index.d.ts +1 -0
  173. package/lib/esm/client/index.js +2 -1
  174. package/lib/esm/client/index.js.map +1 -0
  175. package/lib/esm/client/indexes/generation.js +1 -1
  176. package/lib/esm/client/indexes/generation.js.map +1 -0
  177. package/lib/esm/client/indexes/index.js +1 -1
  178. package/lib/esm/client/indexes/index.js.map +1 -0
  179. package/lib/esm/client/logging.js +1 -1
  180. package/lib/esm/client/logging.js.map +1 -0
  181. package/lib/esm/client/services/FabricEnrollmentService.js +1 -1
  182. package/lib/esm/client/services/FabricEnrollmentService.js.map +1 -0
  183. package/lib/esm/client/services/FabricIdentityService.js +1 -1
  184. package/lib/esm/client/services/FabricIdentityService.js.map +1 -0
  185. package/lib/esm/client/services/RegistrationRequestBuilder.js +1 -1
  186. package/lib/esm/client/services/RegistrationRequestBuilder.js.map +1 -0
  187. package/lib/esm/client/services/constants.js +1 -1
  188. package/lib/esm/client/services/constants.js.map +1 -0
  189. package/lib/esm/client/services/index.js +1 -1
  190. package/lib/esm/client/services/index.js.map +1 -0
  191. package/lib/esm/client/types.js +1 -1
  192. package/lib/esm/client/types.js.map +1 -0
  193. package/lib/esm/client/utils.js +1 -1
  194. package/lib/esm/client/utils.js.map +1 -0
  195. package/lib/esm/contract/Address.js +1 -1
  196. package/lib/esm/contract/Address.js.map +1 -0
  197. package/lib/esm/contract/AddressContract.js +1 -1
  198. package/lib/esm/contract/AddressContract.js.map +1 -0
  199. package/lib/esm/contract/BatchContract.js +1 -1
  200. package/lib/esm/contract/BatchContract.js.map +1 -0
  201. package/lib/esm/contract/Product.js +1 -1
  202. package/lib/esm/contract/Product.js.map +1 -0
  203. package/lib/esm/contract/ProductContract.js +1 -1
  204. package/lib/esm/contract/ProductContract.js.map +1 -0
  205. package/lib/esm/contract/User.js +1 -1
  206. package/lib/esm/contract/User.js.map +1 -0
  207. package/lib/esm/contract/UserContract.js +1 -1
  208. package/lib/esm/contract/UserContract.js.map +1 -0
  209. package/lib/esm/contract/index.js +1 -1
  210. package/lib/esm/contract/index.js.map +1 -0
  211. package/lib/esm/contract/models/Audit.js +1 -1
  212. package/lib/esm/contract/models/Audit.js.map +1 -0
  213. package/lib/esm/contract/models/BaseIdentifiedModel.js +1 -1
  214. package/lib/esm/contract/models/BaseIdentifiedModel.js.map +1 -0
  215. package/lib/esm/contract/models/BaseModel.js +1 -1
  216. package/lib/esm/contract/models/BaseModel.js.map +1 -0
  217. package/lib/esm/contract/models/Batch.js +1 -1
  218. package/lib/esm/contract/models/Batch.js.map +1 -0
  219. package/lib/esm/contract/models/Leaflet.js +1 -1
  220. package/lib/esm/contract/models/Leaflet.js.map +1 -0
  221. package/lib/esm/contract/models/LeafletFile.js +1 -1
  222. package/lib/esm/contract/models/LeafletFile.js.map +1 -0
  223. package/lib/esm/contract/models/Market.js +1 -1
  224. package/lib/esm/contract/models/Market.js.map +1 -0
  225. package/lib/esm/contract/models/Product.js +1 -1
  226. package/lib/esm/contract/models/Product.js.map +1 -0
  227. package/lib/esm/contract/models/ProductStrength.js +1 -1
  228. package/lib/esm/contract/models/ProductStrength.js.map +1 -0
  229. package/lib/esm/contract/models/constants.js +1 -1
  230. package/lib/esm/contract/models/constants.js.map +1 -0
  231. package/lib/esm/contract/models/decorators.js +1 -1
  232. package/lib/esm/contract/models/decorators.js.map +1 -0
  233. package/lib/esm/contract/models/gtin.js +1 -1
  234. package/lib/esm/contract/models/gtin.js.map +1 -0
  235. package/lib/esm/contracts/ContractAdapter.js +1 -1
  236. package/lib/esm/contracts/ContractAdapter.js.map +1 -0
  237. package/lib/esm/contracts/ContractContext.js +1 -1
  238. package/lib/esm/contracts/ContractContext.js.map +1 -0
  239. package/lib/esm/contracts/ContractPrivateDataAdapter.js +1 -1
  240. package/lib/esm/contracts/ContractPrivateDataAdapter.js.map +1 -0
  241. package/lib/esm/contracts/FabricConstruction.js +1 -1
  242. package/lib/esm/contracts/FabricConstruction.js.map +1 -0
  243. package/lib/esm/contracts/FabricContractPaginator.js +1 -1
  244. package/lib/esm/contracts/FabricContractPaginator.js.map +1 -0
  245. package/lib/esm/contracts/FabricContractRepository.js +1 -1
  246. package/lib/esm/contracts/FabricContractRepository.js.map +1 -0
  247. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
  248. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +1 -0
  249. package/lib/esm/contracts/FabricContractSequence.js +1 -1
  250. package/lib/esm/contracts/FabricContractSequence.js.map +1 -0
  251. package/lib/esm/contracts/FabricContractStatement.js +1 -1
  252. package/lib/esm/contracts/FabricContractStatement.js.map +1 -0
  253. package/lib/esm/contracts/PrivateSequence.js +1 -1
  254. package/lib/esm/contracts/PrivateSequence.js.map +1 -0
  255. package/lib/esm/contracts/crud/crud-contract.js +1 -1
  256. package/lib/esm/contracts/crud/crud-contract.js.map +1 -0
  257. package/lib/esm/contracts/crud/index.js +1 -1
  258. package/lib/esm/contracts/crud/index.js.map +1 -0
  259. package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
  260. package/lib/esm/contracts/crud/serialized-crud-contract.js.map +1 -0
  261. package/lib/esm/contracts/erc20/erc20contract.js +1 -1
  262. package/lib/esm/contracts/erc20/erc20contract.js.map +1 -0
  263. package/lib/esm/contracts/erc20/index.js +1 -1
  264. package/lib/esm/contracts/erc20/index.js.map +1 -0
  265. package/lib/esm/contracts/erc20/models.js +1 -1
  266. package/lib/esm/contracts/erc20/models.js.map +1 -0
  267. package/lib/esm/contracts/index.js +1 -1
  268. package/lib/esm/contracts/index.js.map +1 -0
  269. package/lib/esm/contracts/logging.js +1 -1
  270. package/lib/esm/contracts/logging.js.map +1 -0
  271. package/lib/esm/contracts/private-data.js +1 -1
  272. package/lib/esm/contracts/private-data.js.map +1 -0
  273. package/lib/esm/contracts/types.js +1 -1
  274. package/lib/esm/contracts/types.js.map +1 -0
  275. package/lib/esm/index.js +1 -1
  276. package/lib/esm/index.js.map +1 -0
  277. package/lib/esm/shared/ClientSerializer.js +1 -1
  278. package/lib/esm/shared/ClientSerializer.js.map +1 -0
  279. package/lib/esm/shared/DeterministicSerializer.js +1 -1
  280. package/lib/esm/shared/DeterministicSerializer.js.map +1 -0
  281. package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
  282. package/lib/esm/shared/SimpleDeterministicSerializer.js.map +1 -0
  283. package/lib/esm/shared/constants.js +1 -1
  284. package/lib/esm/shared/constants.js.map +1 -0
  285. package/lib/esm/shared/decorators.js +1 -1
  286. package/lib/esm/shared/decorators.js.map +1 -0
  287. package/lib/esm/shared/erc20/erc20-constants.js +1 -1
  288. package/lib/esm/shared/erc20/erc20-constants.js.map +1 -0
  289. package/lib/esm/shared/erc20/index.js +1 -1
  290. package/lib/esm/shared/erc20/index.js.map +1 -0
  291. package/lib/esm/shared/errors.js +1 -1
  292. package/lib/esm/shared/errors.js.map +1 -0
  293. package/lib/esm/shared/events.js +1 -1
  294. package/lib/esm/shared/events.js.map +1 -0
  295. package/lib/esm/shared/fabric-types.js +1 -1
  296. package/lib/esm/shared/fabric-types.js.map +1 -0
  297. package/lib/esm/shared/index.js +1 -1
  298. package/lib/esm/shared/index.js.map +1 -0
  299. package/lib/esm/shared/interfaces/Checkable.js +1 -1
  300. package/lib/esm/shared/interfaces/Checkable.js.map +1 -0
  301. package/lib/esm/shared/interfaces/index.js +1 -1
  302. package/lib/esm/shared/interfaces/index.js.map +1 -0
  303. package/lib/esm/shared/math.js +1 -1
  304. package/lib/esm/shared/math.js.map +1 -0
  305. package/lib/esm/shared/model/FabricBaseModel.js +1 -1
  306. package/lib/esm/shared/model/FabricBaseModel.js.map +1 -0
  307. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js +1 -1
  308. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js.map +1 -0
  309. package/lib/esm/shared/model/Identity.js +1 -1
  310. package/lib/esm/shared/model/Identity.js.map +1 -0
  311. package/lib/esm/shared/model/IdentityCredentials.js +1 -1
  312. package/lib/esm/shared/model/IdentityCredentials.js.map +1 -0
  313. package/lib/esm/shared/model/index.js +1 -1
  314. package/lib/esm/shared/model/index.js.map +1 -0
  315. package/lib/esm/shared/overrides/Model.js +1 -1
  316. package/lib/esm/shared/overrides/Model.js.map +1 -0
  317. package/lib/esm/shared/overrides/index.js +1 -1
  318. package/lib/esm/shared/overrides/index.js.map +1 -0
  319. package/lib/esm/shared/overrides/overrides.js +1 -1
  320. package/lib/esm/shared/overrides/overrides.js.map +1 -0
  321. package/lib/esm/shared/types.js +1 -1
  322. package/lib/esm/shared/types.js.map +1 -0
  323. package/lib/esm/version.d.ts +1 -1
  324. package/lib/esm/version.js +2 -2
  325. package/lib/esm/version.js.map +1 -0
  326. package/lib/index.cjs +1 -1
  327. package/lib/index.js.map +1 -0
  328. package/lib/shared/ClientSerializer.cjs +1 -1
  329. package/lib/shared/ClientSerializer.js.map +1 -0
  330. package/lib/shared/DeterministicSerializer.cjs +1 -1
  331. package/lib/shared/DeterministicSerializer.js.map +1 -0
  332. package/lib/shared/SimpleDeterministicSerializer.cjs +1 -1
  333. package/lib/shared/SimpleDeterministicSerializer.js.map +1 -0
  334. package/lib/shared/constants.cjs +1 -1
  335. package/lib/shared/constants.js.map +1 -0
  336. package/lib/shared/decorators.cjs +1 -1
  337. package/lib/shared/decorators.js.map +1 -0
  338. package/lib/shared/erc20/erc20-constants.cjs +1 -1
  339. package/lib/shared/erc20/erc20-constants.js.map +1 -0
  340. package/lib/shared/erc20/index.cjs +1 -1
  341. package/lib/shared/erc20/index.js.map +1 -0
  342. package/lib/shared/errors.cjs +1 -1
  343. package/lib/shared/errors.js.map +1 -0
  344. package/lib/shared/events.cjs +1 -1
  345. package/lib/shared/events.js.map +1 -0
  346. package/lib/shared/fabric-types.cjs +1 -1
  347. package/lib/shared/fabric-types.js.map +1 -0
  348. package/lib/shared/index.cjs +1 -1
  349. package/lib/shared/index.js.map +1 -0
  350. package/lib/shared/interfaces/Checkable.cjs +1 -1
  351. package/lib/shared/interfaces/Checkable.js.map +1 -0
  352. package/lib/shared/interfaces/index.cjs +1 -1
  353. package/lib/shared/interfaces/index.js.map +1 -0
  354. package/lib/shared/math.cjs +1 -1
  355. package/lib/shared/math.js.map +1 -0
  356. package/lib/shared/model/FabricBaseModel.cjs +1 -1
  357. package/lib/shared/model/FabricBaseModel.js.map +1 -0
  358. package/lib/shared/model/FabricIdentifiedBaseModel.cjs +1 -1
  359. package/lib/shared/model/FabricIdentifiedBaseModel.js.map +1 -0
  360. package/lib/shared/model/Identity.cjs +1 -1
  361. package/lib/shared/model/Identity.js.map +1 -0
  362. package/lib/shared/model/IdentityCredentials.cjs +1 -1
  363. package/lib/shared/model/IdentityCredentials.js.map +1 -0
  364. package/lib/shared/model/index.cjs +1 -1
  365. package/lib/shared/model/index.js.map +1 -0
  366. package/lib/shared/overrides/Model.cjs +1 -1
  367. package/lib/shared/overrides/Model.js.map +1 -0
  368. package/lib/shared/overrides/index.cjs +1 -1
  369. package/lib/shared/overrides/index.js.map +1 -0
  370. package/lib/shared/overrides/overrides.cjs +1 -1
  371. package/lib/shared/overrides/overrides.js.map +1 -0
  372. package/lib/shared/types.cjs +1 -1
  373. package/lib/shared/types.js.map +1 -0
  374. package/lib/version.cjs +2 -2
  375. package/lib/version.d.ts +1 -1
  376. package/lib/version.js.map +1 -0
  377. package/package.json +1 -1
@@ -941,4 +941,4 @@ class FabricContractAdapter extends for_couchdb_1.CouchDBAdapter {
941
941
  exports.FabricContractAdapter = FabricContractAdapter;
942
942
  FabricContractAdapter.decoration();
943
943
  core_1.Adapter.setCurrent(constants_1.FabricFlavour);
944
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJhY3RBZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9Db250cmFjdEFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBc0dBLHNFQW9CQztBQThCRCw0Q0FzQ0M7QUE5TEQsdURBQWdGO0FBQ2hGLHlFQUF1RTtBQUV2RSwyREFBMEQ7QUFDMUQsMkRBVWlDO0FBQ2pDLDZEQUs2QjtBQUM3QiwrQ0FBb0Q7QUFDcEQseUNBeUJ3QjtBQUN4Qiw2RUFBc0U7QUFPdEUsMkVBQTREO0FBQzVELHlFQUFrRTtBQUNsRSx5REFBb0Q7QUFDcEQsaUdBQXdGO0FBQ3hGLHFEQUs4QjtBQUM5QiwyRUFBb0U7QUFDcEUsbURBQXVEO0FBVXZEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBQ0ksS0FBSyxVQUFVLDZCQUE2QixDQU1qRCxPQUFxQyxFQUNyQyxJQUFPLEVBQ1AsR0FBWSxFQUNaLEtBQVE7SUFFUixJQUFJLENBQUM7UUFDSCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBbUIsQ0FBQztRQUN2RCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBbUIsQ0FBQztRQUMzQyw2REFBNkQ7SUFDL0QsQ0FBQztJQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7UUFDcEIsTUFBTSxJQUFJLHVCQUFnQixDQUN4QixnRUFBZ0UsQ0FDakUsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCRztBQUNJLEtBQUssVUFBVSxnQkFBZ0IsQ0FLcEMsT0FBOEIsRUFDOUIsSUFBcUIsRUFDckIsR0FBWSxFQUNaLEtBQVE7SUFFUixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sa0JBQWtCLEdBQUcsVUFDekIsTUFBUyxFQUNULFdBQW1CLEVBQ25CLEtBQStCO1FBRS9CLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRTtZQUN6QyxVQUFVLEVBQUUsSUFBSTtZQUNoQixRQUFRLEVBQUUsS0FBSztZQUNmLFlBQVksRUFBRSxJQUFJO1lBQ2xCLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1FBQUUsSUFBSSxDQUFDLElBQUksR0FBRyw0QkFBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUQsSUFBSSxRQUFrQixDQUFDO0lBQ3ZCLElBQUksQ0FBQztRQUNILFFBQVEsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQWEsQ0FBQztJQUM3RCxDQUFDO0lBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksNkJBQWEsQ0FDckIsa0NBQWtDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQ3BELENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQWdDLENBQUMsQ0FBQztJQUNuRSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsR0FBYSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0NHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSw0QkFJMUM7SUFDb0IsU0FBUztRQUMxQixNQUFNLElBQUksdUJBQWdCLENBQUMsNkNBQTZDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0Q7O09BRUc7YUFDWSxnQkFBVyxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBRTNCLGVBQVUsR0FBRyxJQUFJLDZEQUE2QixFQUFFLENBQUM7SUFFM0U7OztPQUdHO0lBQ0gsSUFBdUIsT0FBTztRQUM1QixPQUFPLHVDQUFxQixDQUFDO0lBQy9CLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNNLFVBQVU7UUFNakIsT0FBTyxtREFBcUQsQ0FBQztJQUMvRCxDQUFDO0lBRVEsU0FBUyxDQUNoQixLQUFpQixFQUNqQixJQUFZLEVBQ1osS0FBcUI7UUFFckIsT0FBTyxJQUFJLGlEQUF1QixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFUSxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQXdCO1FBQzlDLE9BQU8sSUFBSSwrQ0FBc0IsQ0FBQyxPQUFPLEVBQUUsSUFBVyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxLQUFXLEVBQUUsS0FBYztRQUNyQyxLQUFLLENBQUMsS0FBSyxFQUFFLHlCQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVRLEdBQUcsQ0FBQyxNQUFvQixFQUFFLEdBQUcsSUFBUztRQUM3QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNNLEtBQUssQ0FBQyxNQUFNLENBQ25CLEtBQXFCLEVBQ3JCLEVBQWtCLEVBQ2xCLEtBQTBCLEVBQzFCLEdBQUcsSUFBa0Q7UUFFckQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEQsR0FBRyxDQUFDLElBQUksQ0FBQywrQkFBK0IsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRCxNQUFNLFNBQVMsR0FBRyw0QkFBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUM7WUFDSCxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixTQUFTLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQVUsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ00sS0FBSyxDQUFDLElBQUksQ0FDakIsS0FBcUIsRUFDckIsRUFBa0IsRUFDbEIsR0FBRyxJQUFrRDtRQUVyRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxHQUFHLENBQUMsSUFBSSxDQUFDLDZCQUE2QixJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sU0FBUyxHQUFHLDRCQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLElBQUksS0FBMEIsQ0FBQztRQUMvQixJQUFJLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekUsS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQVUsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDTSxLQUFLLENBQUMsTUFBTSxDQUNuQixLQUFxQixFQUNyQixFQUFrQixFQUNsQixLQUEwQixFQUMxQixHQUFHLElBQWtEO1FBRXJELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELE1BQU0sU0FBUyxHQUFHLDRCQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLElBQUksQ0FBQztZQUNILEdBQUcsQ0FBQyxPQUFPLENBQUMscUJBQXFCLFNBQVMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEUsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBVSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUNWLEtBQXFCLEVBQ3JCLEVBQWtCLEVBQ2xCLEdBQUcsSUFBa0Q7UUFFckQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUFHLDRCQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLElBQUksS0FBMEIsQ0FBQztRQUMvQixJQUFJLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekUsS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7WUFDL0MsR0FBRyxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxTQUFTLFNBQVMsUUFBUSxDQUFDLENBQUM7WUFDcEUsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBVSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVTLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBVSxFQUFFLE9BQThCO1FBQ3BFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFVBQVUsQ0FBQyxVQUFrQjtRQUMzQixNQUFNLFVBQVUsR0FBRztZQUNqQixJQUFJLENBQUMsUUFBUTtZQUNiLElBQUksQ0FBQyxTQUFTO1lBQ2QsSUFBSSxDQUFDLFdBQVc7WUFDaEIsSUFBSSxDQUFDLFdBQVc7WUFDaEIsSUFBSSxDQUFDLG9CQUFvQjtTQUMxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ3JCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVE7Z0JBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQWMsQ0FBQztvQkFDdEMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzdDLE9BQU8sSUFBSSxLQUFLLENBQUUsTUFBYyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUN0QyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUTt3QkFDL0IsUUFBUSxJQUFJLEVBQUUsQ0FBQzs0QkFDYixLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0NBQ2hCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQztnQ0FDbkMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0NBQzVELE9BQU8sS0FBSyxDQUFDOzRCQUNmLENBQUM7NEJBQ0QsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dDQUNuQixNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztnQ0FDNUIsT0FBUSxJQUFzQixDQUFDLGlCQUFpQixDQUM5QyxVQUFVLEVBQ1YsRUFBRSxDQUNILENBQUM7NEJBQ0osQ0FBQzs0QkFDRCxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0NBQ2pCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO2dDQUM1QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDOzRCQUM3QyxDQUFDOzRCQUNELEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQztnQ0FDbkIsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7Z0NBQ2xDLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQzs0QkFDOUQsQ0FBQzs0QkFDRCxLQUFLLHNCQUFzQixDQUFDLENBQUMsQ0FBQztnQ0FDNUIsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQztnQ0FDL0MsTUFBTSxRQUFRLEdBQUcsTUFDZixJQUNELENBQUMseUJBQXlCLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dDQUNsRCxNQUFNLE9BQU8sR0FBVSxFQUFFLENBQUM7Z0NBQzFCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztnQ0FDZCxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dDQUMxQyxJQUFJLE9BQU8sR0FBa0IsSUFBSSxDQUFDO2dDQUVsQyxPQUFPLElBQUksRUFBRSxDQUFDO29DQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO29DQUVsQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQzt3Q0FDNUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7d0NBQ2hDLE1BQU0sV0FBVyxHQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBYSxDQUFDLFFBQVEsQ0FDbkQsTUFBTSxDQUNQLENBQUM7d0NBRUYsNENBQTRDO3dDQUM1QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7NENBQ3JCLElBQUksU0FBUyxLQUFLLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO2dEQUNuQyxlQUFlLEdBQUcsSUFBSSxDQUFDOzRDQUN6QixDQUFDOzRDQUNELFNBQVM7d0NBQ1gsQ0FBQzt3Q0FFRCxPQUFPLENBQUMsSUFBSSxDQUFDOzRDQUNYLEdBQUcsRUFBRSxTQUFTOzRDQUNkLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQzt5Q0FDaEMsQ0FBQyxDQUFDO3dDQUNILE9BQU8sR0FBRyxTQUFTLENBQUM7d0NBQ3BCLEtBQUssRUFBRSxDQUFDO3dDQUVSLElBQUksS0FBSyxJQUFJLEtBQUssRUFBRSxDQUFDOzRDQUNuQixNQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQzs0Q0FDdkIsT0FBTztnREFDTCxRQUFRLEVBQ04sT0FBa0Q7Z0RBQ3BELFFBQVEsRUFBRTtvREFDUixtQkFBbUIsRUFBRSxPQUFPLENBQUMsTUFBTTtvREFDbkMsUUFBUSxFQUFFLE9BQU87aURBQ2xCOzZDQUNGLENBQUM7d0NBQ0osQ0FBQztvQ0FDSCxDQUFDO29DQUVELElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO3dDQUNiLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO3dDQUN2QixPQUFPOzRDQUNMLFFBQVEsRUFDTixPQUFrRDs0Q0FDcEQsUUFBUSxFQUFFO2dEQUNSLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxNQUFNO2dEQUNuQyxRQUFRLEVBQUUsRUFBRTs2Q0FDYjt5Q0FDRixDQUFDO29DQUNKLENBQUM7Z0NBQ0gsQ0FBQzs0QkFDSCxDQUFDOzRCQUNEO2dDQUNFLE1BQU0sSUFBSSw2QkFBYSxDQUNyQiwrQkFBK0IsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQzlDLENBQUM7d0JBQ04sQ0FBQztvQkFDSCxDQUFDO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsS0FBSyxDQUFDLFFBQVEsQ0FDdEIsRUFBVSxFQUNWLEtBQTBCLEVBQzFCLEdBQTBCO1FBRTFCLElBQUksSUFBWSxDQUFDO1FBRWpCLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQztZQUNILElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUNoQixxQkFBcUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQWMsRUFBRSxLQUFLLENBQUMsQ0FDbEUsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxrQ0FBa0IsQ0FDMUIsc0NBQXNDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FDakQsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pDLElBQUksVUFBVTtZQUNaLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQzs7WUFDNUQsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFbEQsR0FBRyxDQUFDLEtBQUssQ0FDUCxlQUFlLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxVQUFVLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsRUFBRSxDQUNqRixDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRVMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFVLEVBQUUsR0FBMEI7UUFDOUQsSUFBSSxNQUFXLENBQUM7UUFFaEIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsSUFBSSxHQUFXLENBQUM7UUFDaEIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN6QyxJQUFJLFVBQVU7WUFDWixHQUFHLEdBQUcsQ0FDSixNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDekQsQ0FBQyxRQUFRLEVBQUUsQ0FBQzs7WUFDVixHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFL0QsSUFBSSxDQUFDLEdBQUc7WUFDTixNQUFNLElBQUksNkJBQWEsQ0FDckIsa0JBQWtCLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sVUFBVSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUNwRixDQUFDO1FBQ0osR0FBRyxDQUFDLEtBQUssQ0FDUCx1QkFBdUIsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQ3RGLENBQUM7UUFDRixJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcscUJBQXFCLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksa0NBQWtCLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFUyxLQUFLLENBQUMsV0FBVyxDQUN6QixJQUFtQixFQUNuQixRQUFhLEVBQ2IsR0FBRyxJQUEyQztRQUU5QyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELElBQUksR0FBaUMsQ0FBQztRQUN0QyxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pDLElBQUksVUFBVTtZQUNaLEdBQUcsR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQzVDLFVBQVUsRUFDVixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUN6QixDQUFDOztZQUNDLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRS9ELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVTLEtBQUssQ0FBQyxvQkFBb0IsQ0FDbEMsSUFBbUIsRUFDbkIsUUFBYSxFQUNiLFFBQWdCLEdBQUcsRUFDbkIsSUFBYSxFQUNiLEdBQUcsSUFBVztRQUVkLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsSUFBSSxHQUFxRCxDQUFDO1FBQzFELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLFFBQVEsQ0FBQyxRQUFRLEdBQUc7Z0JBQ2xCLEdBQUcsUUFBUSxDQUFDLFFBQVE7Z0JBQ3BCLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7YUFDcEQsQ0FBQztZQUNGLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUM3QyxVQUFVLEVBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FDekIsQ0FBQztZQUNGLEdBQUcsR0FBRztnQkFDSixRQUFRLEVBQUUsRUFBRTtnQkFDWixRQUFRLEVBQUU7b0JBQ1IsbUJBQW1CLEVBQUUsS0FBSztvQkFDMUIsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7YUFDRixDQUFDO1FBQ0osQ0FBQzs7WUFDQyxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsNEJBQTRCLENBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQ3hCLEtBQUssRUFDTCxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQ2pCLENBQUM7UUFFSixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFUyxXQUFXLENBQUMsT0FBOEI7UUFDbEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUEwQixFQUFFLEVBQUUsQ0FDN0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUEwQixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7WUFDdEUsSUFBSSxPQUFPLEdBQUcsS0FBSyxXQUFXO2dCQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDakQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFVCxJQUFJLFVBQVUsR0FBd0IsT0FBTyxDQUFDLEdBQUcsRUFBeUIsQ0FBQztRQUUzRSxLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzFCLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLE1BQU0sQ0FBQyxNQUFrQjtRQUNqQyxPQUFPLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNnQixLQUFLLENBQUMsS0FBSyxDQUM1QixTQUEyQixFQUMzQixLQUFpQyxFQUNqQyxLQUF1RTtRQUV2RSxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUMzQjtZQUNFLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLEVBQ0QsS0FBSyxDQUNOLENBQUM7UUFDRixJQUFJLEtBQUssWUFBWSx1Q0FBcUIsRUFBRSxDQUFDO1lBQzNDLGFBQWE7UUFDZixDQUFDO2FBQU0sSUFBSyxLQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7Z0JBQ3ZCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFDaEIsUUFBUSxFQUFHLEtBQWEsQ0FBQyxjQUFjO2dCQUN2QyxNQUFNLEVBQUUsaUJBQU8sQ0FBQyxHQUFHLENBQ2pCLFNBQVMsRUFDVDtvQkFDRSxRQUFRLEVBQUUsS0FBSztvQkFDZixTQUFTLEVBQUUsS0FBSztvQkFDaEIsYUFBYSxFQUFHLEtBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2lCQUM3QyxFQUNELEtBQUssQ0FDTjtnQkFDRCxhQUFhLEVBQUcsS0FBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7YUFDN0MsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFFRCxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQWdCLENBQ2pCLENBQXdCLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILDZEQUE2RDtJQUNuRCxLQUFLLENBQUksTUFBc0I7UUFDdkMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bd0JHO0lBQ08sS0FBSyxDQUFDLGNBQWMsQ0FDNUIsR0FBVyxFQUNYLFFBQXNDLEVBQ3RDLFNBQVMsR0FBRyxLQUFLO1FBRWpCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLEdBQUcsR0FBa0MsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQixJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxPQUFPLEdBQVEsRUFBRSxDQUFDO2dCQUN0QixHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLFNBQVMsQ0FBQywwQkFBMEIsRUFBRSxDQUFDO29CQUN6QyxPQUFPLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO29CQUM5QixPQUFPLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO29CQUN4QyxJQUFJLENBQUM7d0JBQ0gsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUMvRCxDQUFDO29CQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7d0JBQ2xCLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ2YsT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ25ELENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQzt3QkFDSCxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDekQsQ0FBQztvQkFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO3dCQUNsQixHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNmLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzdDLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNCLENBQUM7WUFDRCxHQUFHLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUNELEdBQUcsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLFVBQVUsQ0FBQyxNQUFNLFVBQVUsQ0FBQyxDQUFDO1FBQ2pFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLHFEQUFxRDtRQUN2RSxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTJCRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQ1AsUUFBb0I7SUFDcEIsNkRBQTZEO0lBQzdELFdBQWMsSUFBUyxFQUN2QixHQUFHLElBQTJDO1FBRTlDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpELE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsUUFBUSxDQUFDO1FBQ2pDLElBQUksUUFBc0MsQ0FBQztRQUMzQyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQixPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QixPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4QixHQUFHLENBQUMsS0FBSyxDQUNQLHlDQUF5QyxLQUFLLFdBQVcsSUFBSSxFQUFFLENBQ2hFLENBQUM7WUFDRixNQUFNLFFBQVEsR0FDWixDQUFDLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUM5QixHQUFHLENBQUMsSUFBSSxFQUNSLFFBQVEsRUFDUixLQUFLLElBQUksTUFBTSxDQUFDLFNBQVMsRUFDeEIsSUFBWSxFQUFFLFFBQVEsRUFBRSxFQUN6QixHQUFHLENBQ0osQ0FBcUQsQ0FBQztZQUN6RCxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUMvQixDQUFDO2FBQU0sQ0FBQztZQUNOLEdBQUcsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNqQyxRQUFRLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQ2hDLEdBQUcsQ0FBQyxJQUFJLEVBQ1IsUUFBUSxFQUNSLEdBQUcsQ0FDSixDQUFpQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxHQUFHLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFL0IsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFNLENBQUM7UUFDaEUsR0FBRyxDQUFDLEtBQUssQ0FDUCxhQUFhLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUNuRSxDQUFDO1FBQ0YsT0FBTyxPQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVRLFNBQVM7UUFDaEIsT0FBTyxJQUFJLHlDQUFlLENBQUMsSUFBVyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVRLEtBQUssQ0FBQyxTQUFTLENBQ3RCLFNBQXlCLEVBQ3pCLEVBQW9CLEVBQ3BCLEtBQTRCLEVBQzVCLEdBQUcsSUFBMkM7UUFFOUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNO1lBQzVCLE1BQU0sSUFBSSw2QkFBYSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDdEUsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0QsTUFBTSxVQUFVLEdBQUcsNEJBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLFlBQVksVUFBVSxRQUFRLENBQUMsQ0FBQztRQUMvRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FDMUUsQ0FBQztJQUNKLENBQUM7SUFFUSxLQUFLLENBQUMsU0FBUyxDQUN0QixTQUF5QixFQUN6QixFQUFvQixFQUNwQixLQUE0QixFQUM1QixHQUFHLElBQTJDO1FBRTlDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTTtZQUM1QixNQUFNLElBQUksNkJBQWEsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sVUFBVSxHQUFHLDRCQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxZQUFZLFVBQVUsUUFBUSxDQUFDLENBQUM7UUFDL0QsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUNoQixFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQzFFLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTSxPQUFPLENBQ2QsS0FBUSxFQUNSLEdBQUcsSUFBMkM7UUFFOUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoRCxNQUFNLFNBQVMsR0FBRyw0QkFBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBa0IsQ0FBQyxDQUFDO1FBQzVELE1BQU0sRUFBRSxHQUFHLDRCQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFrQixDQUFDLENBQUM7UUFDOUMsTUFBTSxLQUFLLEdBQUcsNEJBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUMvQyxDQUFDLEtBQTBCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRTtZQUN6QyxJQUFJLE9BQU8sR0FBRyxLQUFLLFdBQVc7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDN0MsTUFBTSxVQUFVLEdBQUcsNEJBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQVUsQ0FBQyxDQUFDO1lBQ3ZELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0JBQzdCLE1BQU0sSUFBSSw2QkFBYSxDQUFDLGlCQUFpQixVQUFVLGNBQWMsQ0FBQyxDQUFDO1lBQ3JFLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDeEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLEVBQ0QsRUFBRSxDQUNILENBQUM7UUFFRixHQUFHLENBQUMsS0FBSyxDQUNQLHdCQUF3QixTQUFTLGtCQUFtQixLQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDeEUsQ0FBQztRQUVGLE9BQU87WUFDTCxNQUFNLEVBQUUsTUFBTTtZQUNkLEVBQUUsRUFBRyxLQUFhLENBQUMsRUFBRSxDQUFXO1lBQ2hDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztTQUMzQixDQUFDO0lBQ0osQ0FBQztJQUVRLE1BQU0sQ0FDYixHQUF3QixFQUN4QixLQUFxQixFQUNyQixFQUFrQixFQUNsQixTQUErQixFQUMvQixHQUFHLElBQTJDO1FBRTlDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsTUFBTSxFQUFFLEdBQXdCLEVBQUUsQ0FBQztRQUNuQyxNQUFNLEVBQUUsR0FBRyw0QkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixFQUFFLENBQUMsRUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxHQUFHLENBQ1IsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyw0QkFBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUM5RCxDQUFDO1FBQ1AsR0FBRyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3RCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNwRCxLQUE2QixDQUFDLEdBQUcsQ0FBQztnQkFDakMsR0FBRyxDQUFDLDRCQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFVLENBQUMsQ0FBQyxDQUFDO1lBQzNDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRU4sSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLEdBQUcsQ0FBQyxLQUFLLENBQ1AsbUNBQW1DLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ3ZFLENBQUM7WUFDRixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7Z0JBQy9DLElBQUksR0FBRyxJQUFJLE1BQU0sSUFBSyxNQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUztvQkFDckQsTUFBTSxJQUFJLDZCQUFhLENBQ3JCLHNCQUFzQixHQUFHLDRCQUE0QixDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksd0JBQXdCLENBQ2hHLENBQUM7Z0JBQ0osTUFBTSxDQUFDLEdBQWMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRVEsWUFBWSxDQUNuQixTQUF5QixFQUN6QixFQUFrQixFQUNsQixLQUEwQixFQUMxQixHQUFHLElBQStDO1FBRWxELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekQsTUFBTSxNQUFNLEdBQXdCLEVBQUUsQ0FBQztRQUN2QyxNQUFNLENBQUMseUJBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyw0QkFBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU3QixPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBTXhDLENBQUM7SUFDSixDQUFDO0lBRVEsWUFBWSxDQUNuQixTQUF5QixFQUN6QixFQUFrQixFQUNsQixLQUEwQixFQUMxQixHQUFHLElBQStDO1FBRWxELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekQsTUFBTSxNQUFNLEdBQXdCLEVBQUUsQ0FBQztRQUN2QyxNQUFNLENBQUMseUJBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyw0QkFBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU3QixPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBTXhDLENBQUM7SUFDSixDQUFDO0lBRWtCLGVBQWUsQ0FDaEMsU0FBeUIsRUFDekIsR0FBcUIsRUFDckIsTUFBNkIsRUFDN0IsR0FBRyxJQUFxQztRQUV4QyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU07WUFDOUIsTUFBTSxJQUFJLDZCQUFhLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUV0RSxNQUFNLEdBQUcsR0FBMEIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRTlDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDcEMsTUFBTSxNQUFNLEdBQXdCLEVBQUUsQ0FBQztZQUN2QyxNQUFNLENBQUMseUJBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyw0QkFBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN2RCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNyQyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFVLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRWtCLGVBQWUsQ0FDaEMsU0FBeUIsRUFDekIsR0FBcUIsRUFDckIsTUFBNkIsRUFDN0IsR0FBRyxJQUFxQztRQUV4QyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU07WUFDOUIsTUFBTSxJQUFJLDZCQUFhLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUV0RSxNQUFNLEdBQUcsR0FBMEIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRTlDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDcEMsTUFBTSxNQUFNLEdBQXdCLEVBQUUsQ0FBQztZQUN2QyxNQUFNLENBQUMseUJBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyw0QkFBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN2RCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNyQyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFVLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRVEsVUFBVSxDQUNqQixHQUFtQixFQUNuQixNQUFlO1FBRWYsT0FBTyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUE0QmtCLE1BQU0sQ0FJdkIsSUFBcUQsRUFDckQsU0FBaUIsRUFDakIsY0FBdUIsS0FBSyxFQUM1QixTQUF5RDtRQU16RCxJQUFJLENBQUMsV0FBVztZQUNkLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FDakIsSUFBSSxFQUNKLFNBQWdCLEVBQ2hCLFdBQWtCLEVBQ2xCLFNBQWdCLENBQ1YsQ0FBQztRQUVYLE9BQU8sS0FBSyxDQUFDLE1BQU07YUFDaEIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBZ0IsRUFBRSxXQUFXLEVBQUUsU0FBZ0IsQ0FBQzthQUNqRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNaLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFlBQVksdUNBQXFCLENBQUM7Z0JBQzdDLE1BQU0sSUFBSSw2QkFBYSxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSTtnQkFBRSxNQUFNLElBQUksNkJBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRO2dCQUFFLE1BQU0sSUFBSSw2QkFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDbkUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDeEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSTtnQkFDbEIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUTthQUMzQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQVEsQ0FBQztJQUNkLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsZ0NBQWdDO0lBQ2hDLDBEQUEwRDtJQUMxRCxLQUFLO0lBQ0wsMkRBQTJEO0lBQzNELG1CQUFtQjtJQUNuQix5QkFBeUI7SUFDekIsMkJBQTJCO0lBQzNCLFVBQVU7SUFDVix5Q0FBeUM7SUFDekMsUUFBUTtJQUNSLHlCQUF5QjtJQUN6Qiw4QkFBOEI7SUFDOUIsS0FBSztJQUNMLG1CQUFtQjtJQUNuQixnQ0FBZ0M7SUFDaEMsMERBQTBEO0lBQzFELEtBQUs7SUFDTCwyREFBMkQ7SUFDM0Qsb0JBQW9CO0lBQ3BCLHdCQUF3QjtJQUN4Qiw2Q0FBNkM7SUFDN0MseUJBQXlCO0lBQ3pCLDJCQUEyQjtJQUMzQixVQUFVO0lBQ1YseUNBQXlDO0lBQ3pDLFFBQVE7SUFDUix5QkFBeUI7SUFDekIsOEJBQThCO0lBQzlCLEtBQUs7SUFDTCxtQkFBbUI7SUFDbkIsZ0NBQWdDO0lBQ2hDLDBEQUEwRDtJQUMxRCxLQUFLO0lBQ0wsMkRBQTJEO0lBQzNELG9CQUFvQjtJQUNwQix1QkFBdUI7SUFDdkIsNkNBQTZDO0lBQzdDLGNBQWM7SUFDZCx3QkFBd0I7SUFDeEIsNkJBQTZCO0lBQzdCLFlBQVk7SUFDWiwyQ0FBMkM7SUFDM0MsVUFBVTtJQUNWLDJCQUEyQjtJQUMzQixnQ0FBZ0M7SUFDaEMsTUFBTTtJQUNOLEtBQUs7SUFDTCxtQkFBbUI7SUFDbkIsZ0NBQWdDO0lBQ2hDLDBEQUEwRDtJQUMxRCxLQUFLO0lBQ0wsMkRBQTJEO0lBQzNELG9CQUFvQjtJQUNwQixrQ0FBa0M7SUFDbEMsNkNBQTZDO0lBQzdDLEtBQUs7SUFDTCwyQkFBMkI7SUFDM0IsK0JBQStCO0lBQy9CLGNBQWM7SUFDZCw2Q0FBNkM7SUFDN0MsWUFBWTtJQUNaLDZCQUE2QjtJQUM3QixrQ0FBa0M7SUFDbEMsU0FBUztJQUNULGVBQWU7SUFDZiw0QkFBNEI7SUFDNUIsaUNBQWlDO0lBQ2pDLGdCQUFnQjtJQUNoQiwrQ0FBK0M7SUFDL0MsY0FBYztJQUNkLCtCQUErQjtJQUMvQixvQ0FBb0M7SUFDcEMsVUFBVTtJQUNWLFVBQVU7SUFDVixtQ0FBbUM7SUFDbkMsWUFBWTtJQUNaLGNBQWM7SUFDZCwwQkFBMEI7SUFDMUIsdUJBQXVCO0lBQ3ZCLFNBQVM7SUFDVCw0QkFBNEI7SUFDNUIsaUNBQWlDO0lBQ2pDLGdCQUFnQjtJQUNoQiwrQ0FBK0M7SUFDL0MsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQiw4QkFBOEI7SUFDOUIsbUNBQW1DO0lBQ25DLGtCQUFrQjtJQUNsQixpREFBaUQ7SUFDakQsWUFBWTtJQUNaLFdBQVc7SUFDWCxFQUFFO0lBQ0YsZ0ZBQWdGO0lBQ2hGLGNBQWM7SUFDZCxTQUFTO0lBQ1QsNEJBQTRCO0lBQzVCLDZCQUE2QjtJQUM3QixxQ0FBcUM7SUFDckMsa0JBQWtCO0lBQ2xCLDZCQUE2QjtJQUM3QixrQ0FBa0M7SUFDbEMsU0FBUztJQUNULEVBQUU7SUFDRix1Q0FBdUM7SUFDdkMsOEJBQThCO0lBQzlCLDBCQUEwQjtJQUMxQixJQUFJO0lBRUosTUFBTSxDQUFVLFVBQVUsQ0FBc0IsR0FBbUI7UUFDakUsT0FBTztRQUNQLHFDQUFxQztRQUNyQyxrREFBa0Q7UUFDbEQsTUFBTTtRQUNOLElBQUk7UUFDSix3REFBd0Q7UUFDeEQsTUFBTSxHQUFHLEdBQUcsT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDeEQsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLDZCQUFhLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxJQUFJLDZCQUFhLENBQUMsR0FBRyxDQUFNLENBQUM7UUFDekUsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLDZCQUFhLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxJQUFJLDZCQUFhLENBQUMsR0FBRyxDQUFNLENBQUM7UUFDekUsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLCtCQUFlLENBQUMsSUFBSSxDQUFDO1lBQ3BDLE9BQU8sSUFBSSwrQkFBZSxDQUFDLEdBQUcsQ0FBTSxDQUFDO1FBQ3ZDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxpQkFBVSxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxpQkFBVSxDQUFDLEdBQUcsQ0FBTSxDQUFDO1FBQ25FLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxrQkFBVyxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxrQkFBVyxDQUFDLEdBQUcsQ0FBTSxDQUFDO1FBQ3JFLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyx1QkFBZ0IsQ0FBQyxJQUFJLENBQUM7WUFDckMsT0FBTyxJQUFJLHVCQUFnQixDQUFDLEdBQUcsQ0FBTSxDQUFDO1FBQ3hDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxxQkFBYyxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxxQkFBYyxDQUFDLEdBQUcsQ0FBTSxDQUFDO1FBQzNFLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxvQkFBYSxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxvQkFBYSxDQUFDLEdBQUcsQ0FBTSxDQUFDO1FBQ3pFLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyx5QkFBa0IsQ0FBQyxJQUFJLENBQUM7WUFDdkMsT0FBTyxJQUFJLHlCQUFrQixDQUFDLEdBQUcsQ0FBTSxDQUFDO1FBQzFDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxxQkFBYyxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxxQkFBYyxDQUFDLEdBQUcsQ0FBTSxDQUFDO1FBQzNFLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxzQkFBZSxDQUFDLElBQUksQ0FBQztZQUNwQyxPQUFPLElBQUksc0JBQWUsQ0FBQyxHQUFHLENBQU0sQ0FBQztRQUN2QyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsa0NBQWtCLENBQUMsSUFBSSxDQUFDO1lBQ3ZDLE9BQU8sSUFBSSxrQ0FBa0IsQ0FBQyxHQUFHLENBQU0sQ0FBQztRQUMxQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUM7WUFDbkMsT0FBTyxJQUFJLDRCQUFtQixDQUM1QixzREFBc0QsR0FBRyxFQUFFLENBQ3ZELENBQUM7UUFFVCxPQUFPLElBQUksNkJBQWEsQ0FBQyxHQUFHLENBQU0sQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFVLFVBQVU7UUFDeEIsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25CLHVCQUFVLENBQUMsV0FBVyxDQUFDLHlCQUFhLENBQUM7YUFDbEMsR0FBRyxDQUFDLHNCQUFlLENBQUMsVUFBVSxDQUFDO2FBQy9CLE1BQU0sQ0FDTCxJQUFBLHdCQUFRLEVBQUMsNkJBQTZCLENBQUMsRUFDdkMsSUFBQSx5QkFBWSxFQUFDLHNCQUFlLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUM3QzthQUNBLEtBQUssRUFBRSxDQUFDO1FBRVgsdUJBQVUsQ0FBQyxXQUFXLENBQUMseUJBQWEsQ0FBQzthQUNsQyxHQUFHLENBQUMsc0JBQWUsQ0FBQyxVQUFVLENBQUM7YUFDL0IsTUFBTSxDQUNMLElBQUEsOEJBQWMsRUFBQyw2QkFBNkIsQ0FBQyxFQUM3QyxJQUFBLHlCQUFZLEVBQUMsc0JBQWUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQzdDO2FBQ0EsS0FBSyxFQUFFLENBQUM7UUFFWCx1QkFBVSxDQUFDLFdBQVcsQ0FBQyx5QkFBYSxDQUFDO2FBQ2xDLEdBQUcsQ0FBQyxzQkFBZSxDQUFDLE1BQU0sQ0FBQzthQUMzQixNQUFNLENBQUMsSUFBQSw4QkFBYyxHQUFFLENBQUM7YUFDeEIsS0FBSyxFQUFFLENBQUM7UUFFWCx1QkFBVSxDQUFDLFdBQVcsQ0FBQyx5QkFBYSxDQUFDO2FBQ2xDLEdBQUcsQ0FBQyxxQ0FBYyxDQUFDLElBQUksQ0FBQzthQUN4QixNQUFNLENBQUMsU0FBUyxjQUFjO1lBQzdCLE9BQU8sQ0FBQyxNQUFXLEVBQUUsSUFBVSxFQUFFLEVBQUU7Z0JBQ2pDLElBQUEsOEJBQVEsRUFBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzlDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUwsdUJBQVUsQ0FBQyxXQUFXLENBQUMseUJBQWEsQ0FBQzthQUNsQyxHQUFHLENBQUMsc0JBQWUsQ0FBQyxLQUFLLENBQUM7YUFDMUIsTUFBTSxDQUFDLFNBQVMsS0FBSyxDQUFDLEdBQVE7WUFDN0IsTUFBTSxLQUFLLEdBQVUsRUFBRSxDQUFDO1lBQ3hCLElBQUksT0FBTyxHQUNULE9BQU8sR0FBRyxLQUFLLFVBQVU7Z0JBQ3ZCLENBQUMsQ0FBQyxxQkFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxxQkFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFdkMsT0FBTyxPQUFPLElBQUksT0FBTyxLQUFLLE1BQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzFELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3BCLE9BQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUzQyx3REFBd0Q7WUFDeEQsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDOUMsSUFBQSw0QkFBWSxHQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDOUIsQ0FBQztZQUVELE9BQU8sSUFBQSw0QkFBWSxHQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxFQUFFLENBQUM7SUFDYixDQUFDOztBQTlqQ0gsc0RBK2pDQztBQUVELHFCQUFxQixDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ25DLGNBQU8sQ0FBQyxVQUFVLENBQUMseUJBQWEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ291Y2hEQkFkYXB0ZXIsIENvdWNoREJLZXlzLCBNYW5nb1F1ZXJ5IH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItY291Y2hkYlwiO1xuaW1wb3J0IHsgTW9kZWwsIFZhbGlkYXRpb25LZXlzIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgRmFicmljQ29udHJhY3RGbGFncyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBGYWJyaWNDb250cmFjdENvbnRleHQgfSBmcm9tIFwiLi9Db250cmFjdENvbnRleHRcIjtcbmltcG9ydCB7XG4gIEJhZFJlcXVlc3RFcnJvcixcbiAgQmFzZUVycm9yLFxuICBDb25mbGljdEVycm9yLFxuICBJbnRlcm5hbEVycm9yLFxuICBOb3RGb3VuZEVycm9yLFxuICBvbkNyZWF0ZSxcbiAgb25DcmVhdGVVcGRhdGUsXG4gIFByaW1hcnlLZXlUeXBlLFxuICBTZXJpYWxpemF0aW9uRXJyb3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHtcbiAgQ29udGV4dCBhcyBDdHgsXG4gIE9iamVjdCBhcyBGYWJyaWNPYmplY3QsXG4gIFByb3BlcnR5LFxuICBQcm9wZXJ0eSBhcyBGYWJyaWNQcm9wZXJ0eSxcbn0gZnJvbSBcImZhYnJpYy1jb250cmFjdC1hcGlcIjtcbmltcG9ydCB7IExvZ2dlciwgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHtcbiAgUGVyc2lzdGVuY2VLZXlzLFxuICBSZWxhdGlvbnNNZXRhZGF0YSxcbiAgU2VxdWVuY2UsXG4gIFNlcXVlbmNlT3B0aW9ucyxcbiAgVW5zdXBwb3J0ZWRFcnJvcixcbiAgQWRhcHRlcixcbiAgUHJlcGFyZWRNb2RlbCxcbiAgUmVwb3NpdG9yeSxcbiAgUXVlcnlFcnJvcixcbiAgUGFnaW5nRXJyb3IsXG4gIE1pZ3JhdGlvbkVycm9yLFxuICBPYnNlcnZlckVycm9yLFxuICBBdXRob3JpemF0aW9uRXJyb3IsXG4gIEZvcmJpZGRlbkVycm9yLFxuICBDb25uZWN0aW9uRXJyb3IsXG4gIENvbnRleHR1YWxpemVkQXJncyxcbiAgQ29udGV4dCxcbiAgUmF3UmVzdWx0LFxuICBQYWdpbmF0b3IsXG4gIENvbnRleHR1YWxBcmdzLFxuICBNYXliZUNvbnRleHR1YWxBcmcsXG4gIE1ldGhvZE9yT3BlcmF0aW9uLFxuICBBbGxPcGVyYXRpb25LZXlzLFxuICBGbGFnc09mLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEZhYnJpY0NvbnRyYWN0UmVwb3NpdG9yeSB9IGZyb20gXCIuL0ZhYnJpY0NvbnRyYWN0UmVwb3NpdG9yeVwiO1xuaW1wb3J0IHtcbiAgQ2hhaW5jb2RlU3R1YixcbiAgQ2xpZW50SWRlbnRpdHksXG4gIEl0ZXJhdG9ycyxcbiAgU3RhdGVRdWVyeVJlc3BvbnNlLFxufSBmcm9tIFwiZmFicmljLXNoaW0tYXBpXCI7XG5pbXBvcnQgeyBGYWJyaWNTdGF0ZW1lbnQgfSBmcm9tIFwiLi9GYWJyaWNDb250cmFjdFN0YXRlbWVudFwiO1xuaW1wb3J0IHsgRmFicmljQ29udHJhY3RTZXF1ZW5jZSB9IGZyb20gXCIuL0ZhYnJpY0NvbnRyYWN0U2VxdWVuY2VcIjtcbmltcG9ydCB7IEZhYnJpY0ZsYXZvdXIgfSBmcm9tIFwiLi4vc2hhcmVkL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgU2ltcGxlRGV0ZXJtaW5pc3RpY1NlcmlhbGl6ZXIgfSBmcm9tIFwiLi4vc2hhcmVkL1NpbXBsZURldGVybWluaXN0aWNTZXJpYWxpemVyXCI7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RvcixcbiAgRGVjb3JhdGlvbixcbiAgTWV0YWRhdGEsXG4gIHByb3BNZXRhZGF0YSxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBGYWJyaWNDb250cmFjdFBhZ2luYXRvciB9IGZyb20gXCIuL0ZhYnJpY0NvbnRyYWN0UGFnaW5hdG9yXCI7XG5pbXBvcnQgeyBNaXNzaW5nQ29udGV4dEVycm9yIH0gZnJvbSBcIi4uL3NoYXJlZC9lcnJvcnNcIjtcblxuZXhwb3J0IHR5cGUgRmFicmljQ29udGV4dHVhbGl6ZWRBcmdzPFxuICBBUkdTIGV4dGVuZHMgYW55W10gPSBhbnlbXSxcbiAgRVhURU5EIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlLFxuPiA9IENvbnRleHR1YWxpemVkQXJnczxGYWJyaWNDb250cmFjdENvbnRleHQsIEFSR1MsIEVYVEVORD4gJiB7XG4gIHN0dWI6IENoYWluY29kZVN0dWI7XG4gIGlkZW50aXR5OiBDbGllbnRJZGVudGl0eTtcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFNldHMgdGhlIGNyZWF0b3Igb3IgdXBkYXRlciBmaWVsZCBpbiBhIG1vZGVsIGJhc2VkIG9uIHRoZSB1c2VyIGluIHRoZSBjb250ZXh0XG4gKiBAc3VtbWFyeSBDYWxsYmFjayBmdW5jdGlvbiB1c2VkIGluIGRlY29yYXRvcnMgdG8gYXV0b21hdGljYWxseSBzZXQgdGhlIGNyZWF0ZWRfYnkgb3IgdXBkYXRlZF9ieSBmaWVsZHNcbiAqIHdpdGggdGhlIHVzZXJuYW1lIGZyb20gdGhlIGNvbnRleHQgd2hlbiBhIGRvY3VtZW50IGlzIGNyZWF0ZWQgb3IgdXBkYXRlZFxuICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICogQHRlbXBsYXRlIFIgLSBUeXBlIGV4dGVuZGluZyBOYW5vUmVwb3NpdG9yeTxNPlxuICogQHRlbXBsYXRlIFYgLSBUeXBlIGV4dGVuZGluZyBSZWxhdGlvbnNNZXRhZGF0YVxuICogQHBhcmFtIHtSfSB0aGlzIC0gVGhlIHJlcG9zaXRvcnkgaW5zdGFuY2VcbiAqIEBwYXJhbSB7RmFicmljQ29udHJhY3RDb250ZXh0fSBjb250ZXh0IC0gVGhlIG9wZXJhdGlvbiBjb250ZXh0IGNvbnRhaW5pbmcgdXNlciBpbmZvcm1hdGlvblxuICogQHBhcmFtIHtWfSBkYXRhIC0gVGhlIHJlbGF0aW9uIG1ldGFkYXRhXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIHByb3BlcnR5IGtleSB0byBzZXQgd2l0aCB0aGUgdXNlcm5hbWVcbiAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2UgYmVpbmcgY3JlYXRlZCBvciB1cGRhdGVkXG4gKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVcbiAqIEBmdW5jdGlvbiBjcmVhdGVkQnlPbkZhYnJpY0NyZWF0ZVVwZGF0ZVxuICogQG1lbWJlck9mIG1vZHVsZTpmYWJyaWMuY29udHJhY3RzXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IEYgYXMgY3JlYXRlZEJ5T25OYW5vQ3JlYXRlVXBkYXRlXG4gKiAgIHBhcnRpY2lwYW50IEMgYXMgQ29udGV4dFxuICogICBwYXJ0aWNpcGFudCBNIGFzIE1vZGVsXG4gKiAgIEYtPj5DOiBnZXQoXCJ1c2VyXCIpXG4gKiAgIEMtLT4+RjogdXNlciBvYmplY3RcbiAqICAgRi0+Pk06IHNldCBrZXkgdG8gdXNlci5uYW1lXG4gKiAgIE5vdGUgb3ZlciBGOiBJZiBubyB1c2VyIGluIGNvbnRleHRcbiAqICAgRi0tPj5GOiB0aHJvdyBVbnN1cHBvcnRlZEVycm9yXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVkQnlPbkZhYnJpY0NyZWF0ZVVwZGF0ZTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgRmFicmljQ29udHJhY3RSZXBvc2l0b3J5PE0+LFxuICBWIGV4dGVuZHMgUmVsYXRpb25zTWV0YWRhdGEsXG4+KFxuICB0aGlzOiBSLFxuICBjb250ZXh0OiBDb250ZXh0PEZhYnJpY0NvbnRyYWN0RmxhZ3M+LFxuICBkYXRhOiBWLFxuICBrZXk6IGtleW9mIE0sXG4gIG1vZGVsOiBNXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB1c2VyID0gY29udGV4dC5nZXQoXCJpZGVudGl0eVwiKSBhcyBDbGllbnRJZGVudGl0eTtcbiAgICBtb2RlbFtrZXldID0gdXNlci5nZXRJRCgpIGFzIE1bdHlwZW9mIGtleV07XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkRXJyb3IoXG4gICAgICBcIk5vIFVzZXIgZm91bmQgaW4gY29udGV4dC4gUGxlYXNlIHByb3ZpZGUgYSB1c2VyIGluIHRoZSBjb250ZXh0XCJcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFByaW1hcnkga2V5IGF1dG8tYXNzaWdubWVudCBjYWxsYmFjayBmb3IgRmFicmljIG1vZGVsc1xuICogQHN1bW1hcnkgR2VuZXJhdGVzIGFuZCBhc3NpZ25zIGEgcHJpbWFyeSBrZXkgdmFsdWUgdG8gdGhlIHNwZWNpZmllZCBtb2RlbCBwcm9wZXJ0eSB1c2luZyBhIEZhYnJpYy1iYWNrZWQgc2VxdWVuY2Ugd2hlbiB0aGUgbW9kZWwgaXMgY3JlYXRlZC4gSWYgdGhlIHNlcXVlbmNlIG5hbWUgaXMgbm90IHByb3ZpZGVkIGluIG9wdGlvbnMsIGl0IGlzIGRlcml2ZWQgZnJvbSB0aGUgbW9kZWwgdmlhIHNlcXVlbmNlTmFtZUZvck1vZGVsLiBUaGUgYXNzaWduZWQga2V5IGlzIGRlZmluZWQgYXMgbm9uLXdyaXRhYmxlIGFuZCBlbnVtZXJhYmxlLlxuICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbCBmb3IgdGhlIHRhcmdldCBpbnN0YW5jZVxuICogQHRlbXBsYXRlIFIgLSBUeXBlIGV4dGVuZGluZyBGYWJyaWNDb250cmFjdFJlcG9zaXRvcnkgZm9yIHJlcG9zaXRvcnkgY29udGV4dFxuICogQHRlbXBsYXRlIFYgLSBUeXBlIGV4dGVuZGluZyBTZXF1ZW5jZU9wdGlvbnMgdG8gY29uZmlndXJlIHNlcXVlbmNlIGJlaGF2aW9yXG4gKiBAdGVtcGxhdGUgRiAtIFR5cGUgZXh0ZW5kaW5nIEZhYnJpY0NvbnRyYWN0RmxhZ3MgZm9yIGNvbnRleHR1YWwgZmxhZ3NcbiAqIEBwYXJhbSB7Un0gdGhpcyAtIFRoZSByZXBvc2l0b3J5IGluc3RhbmNlIGludm9raW5nIHRoZSBjYWxsYmFja1xuICogQHBhcmFtIHtGYWJyaWNDb250cmFjdENvbnRleHR9IGNvbnRleHQgLSBGYWJyaWMgY29udHJhY3QgY29udGV4dCBjb250YWluaW5nIGludm9jYXRpb24gbWV0YWRhdGFcbiAqIEBwYXJhbSB7Vn0gZGF0YSAtIFNlcXVlbmNlIG9wdGlvbnMgdXNlZCB0byBjb25maWd1cmUgb3IgbG9jYXRlIHRoZSBzZXF1ZW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBwcmltYXJ5IGtleSBwcm9wZXJ0eSBuYW1lIHRvIGFzc2lnbiBvbiB0aGUgbW9kZWxcbiAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2UgdG8gcmVjZWl2ZSB0aGUgZ2VuZXJhdGVkIHByaW1hcnkga2V5XG4gKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBSZXNvbHZlcyB3aGVuIHRoZSBrZXkgaXMgYXNzaWduZWQgb3Igd2hlbiBubyBhY3Rpb24gaXMgcmVxdWlyZWRcbiAqIEBmdW5jdGlvbiBwa0ZhYnJpY09uQ3JlYXRlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWMuY29udHJhY3RzXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IFIgYXMgUmVwb3NpdG9yeVxuICogICBwYXJ0aWNpcGFudCBDIGFzIENvbnRleHQ8Rj5cbiAqICAgcGFydGljaXBhbnQgUyBhcyBGYWJyaWNDb250cmFjdERCU2VxdWVuY2VcbiAqICAgcGFydGljaXBhbnQgTSBhcyBNb2RlbFxuICogICBSLT4+UjogZGVyaXZlIHNlcXVlbmNlIG5hbWUgaWYgbWlzc2luZ1xuICogICBSLT4+UzogYWRhcHRlci5TZXF1ZW5jZShvcHRpb25zKVxuICogICBTLS0+PlI6IHNlcXVlbmNlIGluc3RhbmNlXG4gKiAgIFItPj5TOiBuZXh0KGNvbnRleHQpXG4gKiAgIFMtLT4+UjogbmV4dCB2YWx1ZVxuICogICBSLT4+TTogZGVmaW5lIG5vbi13cml0YWJsZSBwcmltYXJ5IGtleVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGtGYWJyaWNPbkNyZWF0ZTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgRmFicmljQ29udHJhY3RSZXBvc2l0b3J5PE0+LFxuPihcbiAgdGhpczogUixcbiAgY29udGV4dDogRmFicmljQ29udHJhY3RDb250ZXh0LFxuICBkYXRhOiBTZXF1ZW5jZU9wdGlvbnMsXG4gIGtleToga2V5b2YgTSxcbiAgbW9kZWw6IE1cbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIWRhdGEudHlwZSB8fCBtb2RlbFtrZXldKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc2V0UHJpbWFyeUtleVZhbHVlID0gZnVuY3Rpb24gPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgdGFyZ2V0OiBNLFxuICAgIHByb3BlcnR5S2V5OiBzdHJpbmcsXG4gICAgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludFxuICApIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcbiAgaWYgKCFkYXRhLm5hbWUpIGRhdGEubmFtZSA9IE1vZGVsLnNlcXVlbmNlTmFtZShtb2RlbCwgXCJwa1wiKTtcbiAgbGV0IHNlcXVlbmNlOiBTZXF1ZW5jZTtcbiAgdHJ5IHtcbiAgICBzZXF1ZW5jZSA9IChhd2FpdCB0aGlzLmFkYXB0ZXIuU2VxdWVuY2UoZGF0YSkpIGFzIFNlcXVlbmNlO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgIGBGYWlsZWQgdG8gaW5zdGFudGlhdGUgU2VxdWVuY2UgJHtkYXRhLm5hbWV9OiAke2V9YFxuICAgICk7XG4gIH1cblxuICBjb25zdCBuZXh0ID0gYXdhaXQgc2VxdWVuY2UubmV4dChjb250ZXh0IGFzIEZhYnJpY0NvbnRyYWN0Q29udGV4dCk7XG4gIHNldFByaW1hcnlLZXlWYWx1ZShtb2RlbCwga2V5IGFzIHN0cmluZywgbmV4dCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEFkYXB0ZXIgZm9yIEh5cGVybGVkZ2VyIEZhYnJpYyBjaGFpbmNvZGUgc3RhdGUgZGF0YWJhc2Ugb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgUHJvdmlkZXMgYSBDb3VjaERCLWxpa2UgaW50ZXJmYWNlIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBGYWJyaWMgc3RhdGUgZGF0YWJhc2UgZnJvbSB3aXRoaW4gYSBjaGFpbmNvZGUgY29udHJhY3RcbiAqIEB0ZW1wbGF0ZSB2b2lkIC0gTm8gY29uZmlndXJhdGlvbiBuZWVkZWQgZm9yIGNvbnRyYWN0IGFkYXB0ZXJcbiAqIEB0ZW1wbGF0ZSBGYWJyaWNDb250cmFjdEZsYWdzIC0gRmxhZ3Mgc3BlY2lmaWMgdG8gRmFicmljIGNvbnRyYWN0IG9wZXJhdGlvbnNcbiAqIEB0ZW1wbGF0ZSBGYWJyaWNDb250cmFjdENvbnRleHQgLSBDb250ZXh0IHR5cGUgZm9yIEZhYnJpYyBjb250cmFjdCBvcGVyYXRpb25zXG4gKiBAY2xhc3MgRmFicmljQ29udHJhY3RBZGFwdGVyXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gSW4gYSBGYWJyaWMgY2hhaW5jb2RlIGNvbnRyYWN0IGNsYXNzXG4gKiBpbXBvcnQgeyBGYWJyaWNDb250cmFjdEFkYXB0ZXIgfSBmcm9tICdAZGVjYWYtdHMvZm9yLWZhYnJpYyc7XG4gKlxuICogZXhwb3J0IGNsYXNzIE15Q29udHJhY3QgZXh0ZW5kcyBDb250cmFjdCB7XG4gKiAgIHByaXZhdGUgYWRhcHRlciA9IG5ldyBGYWJyaWNDb250cmFjdEFkYXB0ZXIoKTtcbiAqXG4gKiAgIEBUcmFuc2FjdGlvbigpXG4gKiAgIGFzeW5jIGNyZWF0ZUFzc2V0KGN0eDogQ29udGV4dCwgaWQ6IHN0cmluZywgZGF0YTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gKiAgICAgY29uc3QgbW9kZWwgPSB7IGlkLCBkYXRhLCB0aW1lc3RhbXA6IERhdGUubm93KCkgfTtcbiAqICAgICBhd2FpdCB0aGlzLmFkYXB0ZXIuY3JlYXRlKCdhc3NldHMnLCBpZCwgbW9kZWwsIHt9LCB7IHN0dWI6IGN0eC5zdHViIH0pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ29udHJhY3RcbiAqICAgcGFydGljaXBhbnQgRmFicmljQ29udHJhY3RBZGFwdGVyXG4gKiAgIHBhcnRpY2lwYW50IFN0dWJcbiAqICAgcGFydGljaXBhbnQgU3RhdGVEQlxuICpcbiAqICAgQ29udHJhY3QtPj5GYWJyaWNDb250cmFjdEFkYXB0ZXI6IGNyZWF0ZSh0YWJsZU5hbWUsIGlkLCBtb2RlbCwgdHJhbnNpZW50LCBjdHgpXG4gKiAgIEZhYnJpY0NvbnRyYWN0QWRhcHRlci0+PkZhYnJpY0NvbnRyYWN0QWRhcHRlcjogU2VyaWFsaXplIG1vZGVsIHRvIEpTT05cbiAqICAgRmFicmljQ29udHJhY3RBZGFwdGVyLT4+U3R1YjogcHV0U3RhdGUoaWQsIHNlcmlhbGl6ZWREYXRhKVxuICogICBTdHViLT4+U3RhdGVEQjogV3JpdGUgZGF0YVxuICogICBTdGF0ZURCLS0+PlN0dWI6IFN1Y2Nlc3NcbiAqICAgU3R1Yi0tPj5GYWJyaWNDb250cmFjdEFkYXB0ZXI6IFN1Y2Nlc3NcbiAqICAgRmFicmljQ29udHJhY3RBZGFwdGVyLS0+PkNvbnRyYWN0OiBtb2RlbFxuICovXG5leHBvcnQgY2xhc3MgRmFicmljQ29udHJhY3RBZGFwdGVyIGV4dGVuZHMgQ291Y2hEQkFkYXB0ZXI8XG4gIGFueSxcbiAgdm9pZCxcbiAgRmFicmljQ29udHJhY3RDb250ZXh0XG4+IHtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldENsaWVudCgpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcIkNsaWVudCBpcyBub3Qgc3VwcG9ydGVkIGluIEZhYnJpYyBjb250cmFjdHNcIik7XG4gIH1cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUZXh0IGRlY29kZXIgZm9yIGNvbnZlcnRpbmcgYmluYXJ5IGRhdGEgdG8gc3RyaW5nc1xuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgdGV4dERlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoXCJ1dGY4XCIpO1xuXG4gIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgc2VyaWFsaXplciA9IG5ldyBTaW1wbGVEZXRlcm1pbmlzdGljU2VyaWFsaXplcigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29udGV4dCBjb25zdHJ1Y3RvciBmb3IgdGhpcyBhZGFwdGVyXG4gICAqIEBzdW1tYXJ5IE92ZXJyaWRlcyB0aGUgYmFzZSBDb250ZXh0IGNvbnN0cnVjdG9yIHdpdGggRmFicmljQ29udHJhY3RDb250ZXh0XG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZ2V0IENvbnRleHQoKTogQ29uc3RydWN0b3I8RmFicmljQ29udHJhY3RDb250ZXh0PiB7XG4gICAgcmV0dXJuIEZhYnJpY0NvbnRyYWN0Q29udGV4dDtcbiAgfVxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgdGhlIHJlcG9zaXRvcnkgY29uc3RydWN0b3IgZm9yIHRoaXMgYWRhcHRlclxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIHRoZSBGYWJyaWNDb250cmFjdFJlcG9zaXRvcnkgY29uc3RydWN0b3IgZm9yIGNyZWF0aW5nIHJlcG9zaXRvcmllc1xuICAgKiBAdGVtcGxhdGUgTSAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAqIEByZXR1cm4ge0NvbnN0cnVjdG9yPFJlcG9zaXRvcnk8TSwgTWFuZ29RdWVyeSwgRmFicmljQ29udHJhY3RBZGFwdGVyLCBGYWJyaWNDb250cmFjdEZsYWdzLCBGYWJyaWNDb250cmFjdENvbnRleHQ+Pn0gVGhlIHJlcG9zaXRvcnkgY29uc3RydWN0b3JcbiAgICovXG4gIG92ZXJyaWRlIHJlcG9zaXRvcnk8XG4gICAgUiBleHRlbmRzIFJlcG9zaXRvcnk8XG4gICAgICBhbnksXG4gICAgICBBZGFwdGVyPGFueSwgdm9pZCwgTWFuZ29RdWVyeSwgQ29udGV4dDxGYWJyaWNDb250cmFjdEZsYWdzPj5cbiAgICA+LFxuICA+KCk6IENvbnN0cnVjdG9yPFI+IHtcbiAgICByZXR1cm4gRmFicmljQ29udHJhY3RSZXBvc2l0b3J5IGFzIHVua25vd24gYXMgQ29uc3RydWN0b3I8Uj47XG4gIH1cblxuICBvdmVycmlkZSBQYWdpbmF0b3I8TSBleHRlbmRzIE1vZGVsPihcbiAgICBxdWVyeTogTWFuZ29RdWVyeSxcbiAgICBzaXplOiBudW1iZXIsXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE0+XG4gICk6IFBhZ2luYXRvcjxNLCBhbnksIE1hbmdvUXVlcnk+IHtcbiAgICByZXR1cm4gbmV3IEZhYnJpY0NvbnRyYWN0UGFnaW5hdG9yKHRoaXMsIHF1ZXJ5LCBzaXplLCBjbGF6eik7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBTZXF1ZW5jZShvcHRpb25zOiBTZXF1ZW5jZU9wdGlvbnMpOiBQcm9taXNlPFNlcXVlbmNlPiB7XG4gICAgcmV0dXJuIG5ldyBGYWJyaWNDb250cmFjdFNlcXVlbmNlKG9wdGlvbnMsIHRoaXMgYXMgYW55KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBGYWJyaWNDb250cmFjdEFkYXB0ZXIgaW5zdGFuY2VcbiAgICogQHN1bW1hcnkgSW5pdGlhbGl6ZXMgYW4gYWRhcHRlciBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgRmFicmljIHN0YXRlIGRhdGFiYXNlXG4gICAqIEBwYXJhbSB7dm9pZH0gc2NvcGUgLSBOb3QgdXNlZCBpbiB0aGlzIGFkYXB0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IFthbGlhc10gLSBPcHRpb25hbCBhbGlhcyBmb3IgdGhlIGFkYXB0ZXIgaW5zdGFuY2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiB2b2lkLCBhbGlhcz86IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBGYWJyaWNGbGF2b3VyLCBhbGlhcyk7XG4gIH1cblxuICBvdmVycmlkZSBmb3IoY29uZmlnOiBQYXJ0aWFsPGFueT4sIC4uLmFyZ3M6IGFueSk6IHR5cGVvZiB0aGlzIHtcbiAgICByZXR1cm4gc3VwZXIuZm9yKGNvbmZpZywgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSByZWNvcmQgaW4gdGhlIHN0YXRlIGRhdGFiYXNlXG4gICAqIEBzdW1tYXJ5IFNlcmlhbGl6ZXMgYSBtb2RlbCBhbmQgc3RvcmVzIGl0IGluIHRoZSBGYWJyaWMgc3RhdGUgZGF0YWJhc2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBpZCAtIFRoZSByZWNvcmQgaWRlbnRpZmllclxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG1vZGVsIC0gVGhlIHJlY29yZCBkYXRhXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gdHJhbnNpZW50IC0gVHJhbnNpZW50IGRhdGEgKG5vdCB1c2VkIGluIHRoaXMgaW1wbGVtZW50YXRpb24pXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50cywgaW5jbHVkaW5nIHRoZSBjaGFpbmNvZGUgc3R1YiBhbmQgbG9nZ2VyXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBjcmVhdGVkIHJlY29yZFxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgY3JlYXRlPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE0+LFxuICAgIGlkOiBQcmltYXJ5S2V5VHlwZSxcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxDb250ZXh0PEZhYnJpY0NvbnRyYWN0RmxhZ3M+PlxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBjb25zdCB7IGN0eCwgbG9nIH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLmNyZWF0ZSk7XG4gICAgbG9nLmluZm8oYGluIEFEQVBURVIgY3JlYXRlIHdpdGggYXJncyAke2FyZ3N9YCk7XG4gICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKGNsYXp6KTtcbiAgICB0cnkge1xuICAgICAgbG9nLmluZm8oYGFkZGluZyBlbnRyeSB0byAke3RhYmxlTmFtZX0gdGFibGUgd2l0aCBwayAke2lkfWApO1xuICAgICAgY29uc3QgY29tcG9zZWRLZXkgPSBjdHguc3R1Yi5jcmVhdGVDb21wb3NpdGVLZXkodGFibGVOYW1lLCBbU3RyaW5nKGlkKV0pO1xuICAgICAgbW9kZWwgPSBhd2FpdCB0aGlzLnB1dFN0YXRlKGNvbXBvc2VkS2V5LCBtb2RlbCwgY3R4KTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSBhcyBFcnJvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWFkcyBhIHJlY29yZCBmcm9tIHRoZSBzdGF0ZSBkYXRhYmFzZVxuICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgYW5kIGRlc2VyaWFsaXplcyBhIHJlY29yZCBmcm9tIHRoZSBGYWJyaWMgc3RhdGUgZGF0YWJhc2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBpZCAtIFRoZSByZWNvcmQgaWRlbnRpZmllclxuICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHMsIGluY2x1ZGluZyB0aGUgY2hhaW5jb2RlIHN0dWIgYW5kIGxvZ2dlclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmV0cmlldmVkIHJlY29yZFxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgcmVhZDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIGNsYXp6OiBDb25zdHJ1Y3RvcjxNPixcbiAgICBpZDogUHJpbWFyeUtleVR5cGUsXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8Q29udGV4dDxGYWJyaWNDb250cmFjdEZsYWdzPj5cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgY29uc3QgeyBjdHgsIGxvZyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5yZWFkKTtcbiAgICBsb2cuaW5mbyhgaW4gQURBUFRFUiByZWFkIHdpdGggYXJncyAke2FyZ3N9YCk7XG4gICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKGNsYXp6KTtcblxuICAgIGxldCBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29tcG9zZWRLZXkgPSBjdHguc3R1Yi5jcmVhdGVDb21wb3NpdGVLZXkodGFibGVOYW1lLCBbU3RyaW5nKGlkKV0pO1xuICAgICAgbW9kZWwgPSBhd2FpdCB0aGlzLnJlYWRTdGF0ZShjb21wb3NlZEtleSwgY3R4KTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSBhcyBFcnJvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGVzIGEgcmVjb3JkIGluIHRoZSBzdGF0ZSBkYXRhYmFzZVxuICAgKiBAc3VtbWFyeSBTZXJpYWxpemVzIGEgbW9kZWwgYW5kIHVwZGF0ZXMgaXQgaW4gdGhlIEZhYnJpYyBzdGF0ZSBkYXRhYmFzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlL2NvbGxlY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IGlkIC0gVGhlIHJlY29yZCBpZGVudGlmaWVyXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gbW9kZWwgLSBUaGUgdXBkYXRlZCByZWNvcmQgZGF0YVxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IHRyYW5zaWVudCAtIFRyYW5zaWVudCBkYXRhIChub3QgdXNlZCBpbiB0aGlzIGltcGxlbWVudGF0aW9uKVxuICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHMsIGluY2x1ZGluZyB0aGUgY2hhaW5jb2RlIHN0dWIgYW5kIGxvZ2dlclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgdXBkYXRlZCByZWNvcmRcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIHVwZGF0ZTxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIGNsYXp6OiBDb25zdHJ1Y3RvcjxNPixcbiAgICBpZDogUHJpbWFyeUtleVR5cGUsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8Q29udGV4dDxGYWJyaWNDb250cmFjdEZsYWdzPj5cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgY29uc3QgeyBjdHgsIGxvZyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy51cGRhdGUpO1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IE1vZGVsLnRhYmxlTmFtZShjbGF6eik7XG5cbiAgICB0cnkge1xuICAgICAgbG9nLnZlcmJvc2UoYHVwZGF0aW5nIGVudHJ5IHRvICR7dGFibGVOYW1lfSB0YWJsZSB3aXRoIHBrICR7aWR9YCk7XG4gICAgICBjb25zdCBjb21wb3NlZEtleSA9IGN0eC5zdHViLmNyZWF0ZUNvbXBvc2l0ZUtleSh0YWJsZU5hbWUsIFtTdHJpbmcoaWQpXSk7XG4gICAgICBtb2RlbCA9IGF3YWl0IHRoaXMucHV0U3RhdGUoY29tcG9zZWRLZXksIG1vZGVsLCBjdHgpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlIGFzIEVycm9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZXMgYSByZWNvcmQgZnJvbSB0aGUgc3RhdGUgZGF0YWJhc2VcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIGEgcmVjb3JkIGFuZCB0aGVuIHJlbW92ZXMgaXQgZnJvbSB0aGUgRmFicmljIHN0YXRlIGRhdGFiYXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUvY29sbGVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0gaWQgLSBUaGUgcmVjb3JkIGlkZW50aWZpZXIgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50cywgaW5jbHVkaW5nIHRoZSBjaGFpbmNvZGUgc3R1YiBhbmQgbG9nZ2VyXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBkZWxldGVkIHJlY29yZFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE0+LFxuICAgIGlkOiBQcmltYXJ5S2V5VHlwZSxcbiAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxDb250ZXh0PEZhYnJpY0NvbnRyYWN0RmxhZ3M+PlxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBjb25zdCB7IGN0eCwgbG9nLCBjdHhBcmdzIH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLmRlbGV0ZSk7XG4gICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKGNsYXp6KTtcbiAgICBsZXQgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbXBvc2VkS2V5ID0gY3R4LnN0dWIuY3JlYXRlQ29tcG9zaXRlS2V5KHRhYmxlTmFtZSwgW1N0cmluZyhpZCldKTtcbiAgICAgIG1vZGVsID0gYXdhaXQgdGhpcy5yZWFkKGNsYXp6LCBpZCwgLi4uY3R4QXJncyk7XG4gICAgICBsb2cudmVyYm9zZShgZGVsZXRpbmcgZW50cnkgd2l0aCBwayAke2lkfSBmcm9tICR7dGFibGVOYW1lfSB0YWJsZWApO1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGVTdGF0ZShjb21wb3NlZEtleSwgY3R4KTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSBhcyBFcnJvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGRlbGV0ZVN0YXRlKGlkOiBzdHJpbmcsIGNvbnRleHQ6IEZhYnJpY0NvbnRyYWN0Q29udGV4dCkge1xuICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLmxvZ0N0eChbY29udGV4dF0sIHRoaXMuZGVsZXRlU3RhdGUpO1xuICAgIGF3YWl0IGN0eC5zdHViLmRlbGV0ZVN0YXRlKGlkKTtcbiAgfVxuXG4gIGZvclByaXZhdGUoY29sbGVjdGlvbjogc3RyaW5nKTogRmFicmljQ29udHJhY3RBZGFwdGVyIHtcbiAgICBjb25zdCB0b092ZXJyaWRlID0gW1xuICAgICAgdGhpcy5wdXRTdGF0ZSxcbiAgICAgIHRoaXMucmVhZFN0YXRlLFxuICAgICAgdGhpcy5kZWxldGVTdGF0ZSxcbiAgICAgIHRoaXMucXVlcnlSZXN1bHQsXG4gICAgICB0aGlzLnF1ZXJ5UmVzdWx0UGFnaW5hdGVkLFxuICAgIF0ubWFwKChmbikgPT4gZm4ubmFtZSk7XG4gICAgcmV0dXJuIG5ldyBQcm94eSh0aGlzLCB7XG4gICAgICBnZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICBpZiAoIXRvT3ZlcnJpZGUuaW5jbHVkZXMocHJvcCBhcyBzdHJpbmcpKVxuICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm94eSgodGFyZ2V0IGFzIGFueSlbcHJvcF0sIHtcbiAgICAgICAgICBhc3luYyBhcHBseShmbiwgdGhpc0FyZywgYXJnc0xpc3QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcCkge1xuICAgICAgICAgICAgICBjYXNlIFwicHV0U3RhdGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtzdHViLCBpZCwgbW9kZWxdID0gYXJnc0xpc3Q7XG4gICAgICAgICAgICAgICAgYXdhaXQgc3R1Yi5wdXRQcml2YXRlRGF0YShjb2xsZWN0aW9uLCBpZC50b1N0cmluZygpLCBtb2RlbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vZGVsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNhc2UgXCJkZWxldGVTdGF0ZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgW3N0dWIsIGlkXSA9IGFyZ3NMaXN0O1xuICAgICAgICAgICAgICAgIHJldHVybiAoc3R1YiBhcyBDaGFpbmNvZGVTdHViKS5kZWxldGVQcml2YXRlRGF0YShcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2FzZSBcInJlYWRTdGF0ZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgW3N0dWIsIGlkXSA9IGFyZ3NMaXN0O1xuICAgICAgICAgICAgICAgIHJldHVybiBzdHViLmdldFByaXZhdGVEYXRhKGNvbGxlY3Rpb24sIGlkKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlIFwicXVlcnlSZXN1bHRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtzdHViLCByYXdJbnB1dF0gPSBhcmdzTGlzdDtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3R1Yi5nZXRQcml2YXRlRGF0YVF1ZXJ5UmVzdWx0KGNvbGxlY3Rpb24sIHJhd0lucHV0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlIFwicXVlcnlSZXN1bHRQYWdpbmF0ZWRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtzdHViLCByYXdJbnB1dCwgbGltaXQsIHNraXBdID0gYXJnc0xpc3Q7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3IgPSBhd2FpdCAoXG4gICAgICAgICAgICAgICAgICBzdHViIGFzIENoYWluY29kZVN0dWJcbiAgICAgICAgICAgICAgICApLmdldFByaXZhdGVEYXRhUXVlcnlSZXN1bHQoY29sbGVjdGlvbiwgcmF3SW5wdXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHM6IGFueVtdID0gW107XG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgcmVhY2hlZEJvb2ttYXJrID0gc2tpcCA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgICAgICAgICBsZXQgbGFzdEtleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgaXRlcmF0b3IubmV4dCgpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAocmVzLnZhbHVlICYmIHJlcy52YWx1ZS52YWx1ZS50b1N0cmluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZEtleSA9IHJlcy52YWx1ZS5rZXk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZFZhbHVlID0gKHJlcy52YWx1ZS52YWx1ZSBhcyBhbnkpLnRvU3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgIFwidXRmOFwiXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHNraXAsIHNraXAgdW50aWwgd2UgcmVhY2ggaXRcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWFjaGVkQm9va21hcmspIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3JkS2V5ID09PSBza2lwPy50b1N0cmluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWFjaGVkQm9va21hcmsgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgS2V5OiByZWNvcmRLZXksXG4gICAgICAgICAgICAgICAgICAgICAgUmVjb3JkOiBKU09OLnBhcnNlKHJlY29yZFZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGxhc3RLZXkgPSByZWNvcmRLZXk7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50Kys7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ID49IGxpbWl0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgYXdhaXQgaXRlcmF0b3IuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3I6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgYXMgdW5rbm93biBhcyBJdGVyYXRvcnMuU3RhdGVRdWVyeUl0ZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hlZFJlY29yZHNDb3VudDogcmVzdWx0cy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2ttYXJrOiBsYXN0S2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGlmIChyZXMuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBpdGVyYXRvci5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyBhcyB1bmtub3duIGFzIEl0ZXJhdG9ycy5TdGF0ZVF1ZXJ5SXRlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoZWRSZWNvcmRzQ291bnQ6IHJlc3VsdHMubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9va21hcms6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBVbnN1cHBvcnRlZCBtZXRob2Qgb3ZlcnJpZGUgJHtTdHJpbmcocHJvcCl9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHB1dFN0YXRlKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgY3R4OiBGYWJyaWNDb250cmFjdENvbnRleHRcbiAgKSB7XG4gICAgbGV0IGRhdGE6IEJ1ZmZlcjtcblxuICAgIGNvbnN0IHsgbG9nIH0gPSB0aGlzLmxvZ0N0eChbY3R4XSwgdGhpcy5wdXRTdGF0ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGEgPSBCdWZmZXIuZnJvbShcbiAgICAgICAgRmFicmljQ29udHJhY3RBZGFwdGVyLnNlcmlhbGl6ZXIuc2VyaWFsaXplKG1vZGVsIGFzIE1vZGVsLCBmYWxzZSlcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byBzZXJpYWxpemUgcmVjb3JkIHdpdGggaWQgJHtpZH06ICR7ZX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBjdHguZ2V0KFwic2VncmVnYXRlZFwiKTtcbiAgICBpZiAoY29sbGVjdGlvbilcbiAgICAgIGF3YWl0IGN0eC5zdHViLnB1dFByaXZhdGVEYXRhKGNvbGxlY3Rpb24sIGlkLnRvU3RyaW5nKCksIGRhdGEpO1xuICAgIGVsc2UgYXdhaXQgY3R4LnN0dWIucHV0U3RhdGUoaWQudG9TdHJpbmcoKSwgZGF0YSk7XG5cbiAgICBsb2cuc2lsbHkoXG4gICAgICBgc3RhdGUgc3RvcmVkJHtjb2xsZWN0aW9uID8gYCBpbiAke2NvbGxlY3Rpb259IGNvbGxlY3Rpb25gIDogXCJcIn0gdW5kZXIgaWQgJHtpZH1gXG4gICAgKTtcbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcmVhZFN0YXRlKGlkOiBzdHJpbmcsIGN0eDogRmFicmljQ29udHJhY3RDb250ZXh0KSB7XG4gICAgbGV0IHJlc3VsdDogYW55O1xuXG4gICAgY29uc3QgeyBsb2cgfSA9IHRoaXMubG9nQ3R4KFtjdHhdLCB0aGlzLnJlYWRTdGF0ZSk7XG4gICAgbGV0IHJlczogc3RyaW5nO1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBjdHguZ2V0KFwic2VncmVnYXRlZFwiKTtcbiAgICBpZiAoY29sbGVjdGlvbilcbiAgICAgIHJlcyA9IChcbiAgICAgICAgYXdhaXQgY3R4LnN0dWIuZ2V0UHJpdmF0ZURhdGEoY29sbGVjdGlvbiwgaWQudG9TdHJpbmcoKSlcbiAgICAgICkudG9TdHJpbmcoKTtcbiAgICBlbHNlIHJlcyA9IChhd2FpdCBjdHguc3R1Yi5nZXRTdGF0ZShpZC50b1N0cmluZygpKSkudG9TdHJpbmcoKTtcblxuICAgIGlmICghcmVzKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgIGBSZWNvcmQgd2l0aCBpZCAke2lkfSR7Y29sbGVjdGlvbiA/IGAgaW4gJHtjb2xsZWN0aW9ufSBjb2xsZWN0aW9uYCA6IFwiXCJ9IG5vdCBmb3VuZGBcbiAgICAgICk7XG4gICAgbG9nLnNpbGx5KFxuICAgICAgYHN0YXRlIHJldHJpZXZlZCBmcm9tJHtjb2xsZWN0aW9uID8gYCAke2NvbGxlY3Rpb259IGNvbGxlY3Rpb25gIDogXCJcIn0gdW5kZXIgaWQgJHtpZH1gXG4gICAgKTtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gRmFicmljQ29udHJhY3RBZGFwdGVyLnNlcmlhbGl6ZXIuZGVzZXJpYWxpemUocmVzLnRvU3RyaW5nKCkpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXJyb3IoYEZhaWxlZCB0byBwYXJzZSByZWNvcmQ6ICR7ZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHF1ZXJ5UmVzdWx0KFxuICAgIHN0dWI6IENoYWluY29kZVN0dWIsXG4gICAgcmF3SW5wdXQ6IGFueSxcbiAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxGYWJyaWNDb250cmFjdENvbnRleHQ+XG4gICk6IFByb21pc2U8SXRlcmF0b3JzLlN0YXRlUXVlcnlJdGVyYXRvcj4ge1xuICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLnF1ZXJ5UmVzdWx0KTtcbiAgICBsZXQgcmVzOiBJdGVyYXRvcnMuU3RhdGVRdWVyeUl0ZXJhdG9yO1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBjdHguZ2V0KFwic2VncmVnYXRlZFwiKTtcbiAgICBpZiAoY29sbGVjdGlvbilcbiAgICAgIHJlcyA9IGF3YWl0IGN0eC5zdHViLmdldFByaXZhdGVEYXRhUXVlcnlSZXN1bHQoXG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHJhd0lucHV0KVxuICAgICAgKTtcbiAgICBlbHNlIHJlcyA9IGF3YWl0IHN0dWIuZ2V0UXVlcnlSZXN1bHQoSlNPTi5zdHJpbmdpZnkocmF3SW5wdXQpKTtcblxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcXVlcnlSZXN1bHRQYWdpbmF0ZWQoXG4gICAgc3R1YjogQ2hhaW5jb2RlU3R1YixcbiAgICByYXdJbnB1dDogYW55LFxuICAgIGxpbWl0OiBudW1iZXIgPSAyNTAsXG4gICAgc2tpcD86IG51bWJlcixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFN0YXRlUXVlcnlSZXNwb25zZTxJdGVyYXRvcnMuU3RhdGVRdWVyeUl0ZXJhdG9yPj4ge1xuICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLnJlYWRTdGF0ZSk7XG4gICAgbGV0IHJlczogU3RhdGVRdWVyeVJlc3BvbnNlPEl0ZXJhdG9ycy5TdGF0ZVF1ZXJ5SXRlcmF0b3I+O1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBjdHguZ2V0KFwic2VncmVnYXRlZFwiKTtcbiAgICBpZiAoY29sbGVjdGlvbikge1xuICAgICAgcmF3SW5wdXQuc2VsZWN0b3IgPSB7XG4gICAgICAgIC4uLnJhd0lucHV0LnNlbGVjdG9yLFxuICAgICAgICBfaWQ6IHNraXAgPyB7ICRndDogc2tpcC50b1N0cmluZygpIH0gOiB7ICRndGU6IFwiXCIgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBpdCA9IGF3YWl0IHN0dWIuZ2V0UHJpdmF0ZURhdGFRdWVyeVJlc3VsdChcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocmF3SW5wdXQpXG4gICAgICApO1xuICAgICAgcmVzID0ge1xuICAgICAgICBpdGVyYXRvcjogaXQsXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgZmV0Y2hlZFJlY29yZHNDb3VudDogbGltaXQsXG4gICAgICAgICAgYm9va21hcms6IFwiXCIsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZVxuICAgICAgcmVzID0gYXdhaXQgc3R1Yi5nZXRRdWVyeVJlc3VsdFdpdGhQYWdpbmF0aW9uKFxuICAgICAgICBKU09OLnN0cmluZ2lmeShyYXdJbnB1dCksXG4gICAgICAgIGxpbWl0LFxuICAgICAgICBza2lwPy50b1N0cmluZygpXG4gICAgICApO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHByb3RlY3RlZCBtZXJnZU1vZGVscyhyZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W10pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBjb25zdCBleHRyYWN0ID0gKG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PlxuICAgICAgT2JqZWN0LmVudHJpZXMobW9kZWwpLnJlZHVjZSgoYWNjdW06IFJlY29yZDxzdHJpbmcsIGFueT4sIFtrZXksIHZhbF0pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgIT09IFwidW5kZWZpbmVkXCIpIGFjY3VtW2tleV0gPSB2YWw7XG4gICAgICAgIHJldHVybiBhY2N1bTtcbiAgICAgIH0sIHt9KTtcblxuICAgIGxldCBmaW5hbE1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gcmVzdWx0cy5wb3AoKSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gICAgZm9yIChjb25zdCByZXMgb2YgcmVzdWx0cykge1xuICAgICAgZmluYWxNb2RlbCA9IE9iamVjdC5hc3NpZ24oe30sIGV4dHJhY3QoZmluYWxNb2RlbCksIGV4dHJhY3QocmVzKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbmFsTW9kZWw7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlY29kZXMgYmluYXJ5IGRhdGEgdG8gc3RyaW5nXG4gICAqIEBzdW1tYXJ5IENvbnZlcnRzIGEgVWludDhBcnJheSB0byBhIHN0cmluZyB1c2luZyBVVEYtOCBlbmNvZGluZ1xuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZmZlciAtIFRoZSBiaW5hcnkgZGF0YSB0byBkZWNvZGVcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgZGVjb2RlZCBzdHJpbmdcbiAgICovXG4gIHByb3RlY3RlZCBkZWNvZGUoYnVmZmVyOiBVaW50OEFycmF5KSB7XG4gICAgcmV0dXJuIEZhYnJpY0NvbnRyYWN0QWRhcHRlci50ZXh0RGVjb2Rlci5kZWNvZGUoYnVmZmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBvcGVyYXRpb24gZmxhZ3MgZm9yIEZhYnJpYyBjb250cmFjdCBvcGVyYXRpb25zXG4gICAqIEBzdW1tYXJ5IE1lcmdlcyBkZWZhdWx0IGZsYWdzIHdpdGggRmFicmljLXNwZWNpZmljIGNvbnRleHQgaW5mb3JtYXRpb25cbiAgICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICAgKiBAcGFyYW0ge09wZXJhdGlvbktleXN9IG9wZXJhdGlvbiAtIFRoZSBvcGVyYXRpb24gYmVpbmcgcGVyZm9ybWVkXG4gICAqIEBwYXJhbSB7Q29uc3RydWN0b3I8TT59IG1vZGVsIC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7UGFydGlhbDxGYWJyaWNDb250cmFjdEZsYWdzPn0gZmxhZ3MgLSBQYXJ0aWFsIGZsYWdzIHRvIG1lcmdlIHdpdGggZGVmYXVsdHNcbiAgICogQHBhcmFtIHtDdHh9IGN0eCAtIFRoZSBGYWJyaWMgY2hhaW5jb2RlIGNvbnRleHRcbiAgICogQHJldHVybiB7RmFicmljQ29udHJhY3RGbGFnc30gVGhlIG1lcmdlZCBmbGFnc1xuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGZsYWdzPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgb3BlcmF0aW9uOiBBbGxPcGVyYXRpb25LZXlzLFxuICAgIG1vZGVsOiBDb25zdHJ1Y3RvcjxNPiB8IHVuZGVmaW5lZCxcbiAgICBmbGFnczogUGFydGlhbDxGYWJyaWNDb250cmFjdEZsYWdzPiB8IEZhYnJpY0NvbnRyYWN0Q29udGV4dCB8IEN0eCB8IGFueVxuICApOiBQcm9taXNlPEZhYnJpY0NvbnRyYWN0RmxhZ3M+IHtcbiAgICBsZXQgYmFzZUZsYWdzID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgc2VncmVnYXRlZDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgZmxhZ3NcbiAgICApO1xuICAgIGlmIChmbGFncyBpbnN0YW5jZW9mIEZhYnJpY0NvbnRyYWN0Q29udGV4dCkge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH0gZWxzZSBpZiAoKGZsYWdzIGFzIEN0eCkuc3R1Yikge1xuICAgICAgT2JqZWN0LmFzc2lnbihiYXNlRmxhZ3MsIHtcbiAgICAgICAgc3R1YjogZmxhZ3Muc3R1YixcbiAgICAgICAgaWRlbnRpdHk6IChmbGFncyBhcyBDdHgpLmNsaWVudElkZW50aXR5LFxuICAgICAgICBsb2dnZXI6IExvZ2dpbmcuZm9yKFxuICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsb2dMZXZlbDogZmFsc2UsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IGZhbHNlLFxuICAgICAgICAgICAgY29ycmVsYXRpb25JZDogKGZsYWdzIGFzIEN0eCkuc3R1Yi5nZXRUeElEKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmbGFnc1xuICAgICAgICApLFxuICAgICAgICBjb3JyZWxhdGlvbklkOiAoZmxhZ3MgYXMgQ3R4KS5zdHViLmdldFR4SUQoKSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBiYXNlRmxhZ3MgPSBPYmplY3QuYXNzaWduKGJhc2VGbGFncywgZmxhZ3MgfHwge30pO1xuICAgIH1cblxuICAgIHJldHVybiAoYXdhaXQgc3VwZXIuZmxhZ3MoXG4gICAgICBvcGVyYXRpb24sXG4gICAgICBtb2RlbCxcbiAgICAgIGJhc2VGbGFncyBhcyBhbnlcbiAgICApKSBhcyBGYWJyaWNDb250cmFjdEZsYWdzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGFuIGluZGV4IGZvciBhIG1vZGVsXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgRmFicmljIGNvbnRyYWN0cyBhbmQgcmV0dXJucyBhIHJlc29sdmVkIHByb21pc2VcbiAgICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICAgKiBAcGFyYW0ge0NvbnN0cnVjdG9yPE0+fSBtb2RlbHMgLSBUaGUgbW9kZWwgY29uc3RydWN0b3JcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIGltbWVkaWF0ZWx5XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHByb3RlY3RlZCBpbmRleDxNPihtb2RlbHM6IENvbnN0cnVjdG9yPE0+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQcm9jZXNzZXMgcmVzdWx0cyBmcm9tIGEgc3RhdGUgcXVlcnkgaXRlcmF0b3JcbiAgICogQHN1bW1hcnkgSXRlcmF0ZXMgdGhyb3VnaCBxdWVyeSByZXN1bHRzIGFuZCBjb252ZXJ0cyB0aGVtIHRvIGEgc3RydWN0dXJlZCBmb3JtYXRcbiAgICogQHBhcmFtIHtMb2dnZXJ9IGxvZyAtIExvZ2dlciBpbnN0YW5jZSBmb3IgZGVidWdnaW5nXG4gICAqIEBwYXJhbSB7SXRlcmF0b3JzLlN0YXRlUXVlcnlJdGVyYXRvcn0gaXRlcmF0b3IgLSBUaGUgc3RhdGUgcXVlcnkgaXRlcmF0b3JcbiAgICogQHBhcmFtIHtib29sZWFufSBbaXNIaXN0b3J5PWZhbHNlXSAtIFdoZXRoZXIgdGhpcyBpcyBhIGhpc3RvcnkgcXVlcnlcbiAgICogQHJldHVybiB7UHJvbWlzZTxhbnlbXT59IFByb21pc2UgcmVzb2x2aW5nIHRvIGFuIGFycmF5IG9mIHByb2Nlc3NlZCByZXN1bHRzXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IENhbGxlclxuICAgKiAgIHBhcnRpY2lwYW50IFJlc3VsdEl0ZXJhdG9yXG4gICAqICAgcGFydGljaXBhbnQgSXRlcmF0b3JcbiAgICpcbiAgICogICBDYWxsZXItPj5SZXN1bHRJdGVyYXRvcjogcmVzdWx0SXRlcmF0b3IobG9nLCBpdGVyYXRvciwgaXNIaXN0b3J5KVxuICAgKiAgIGxvb3AgVW50aWwgZG9uZVxuICAgKiAgICAgUmVzdWx0SXRlcmF0b3ItPj5JdGVyYXRvcjogbmV4dCgpXG4gICAqICAgICBJdGVyYXRvci0tPj5SZXN1bHRJdGVyYXRvcjogeyB2YWx1ZSwgZG9uZSB9XG4gICAqICAgICBhbHQgSGFzIHZhbHVlXG4gICAqICAgICAgIFJlc3VsdEl0ZXJhdG9yLT4+UmVzdWx0SXRlcmF0b3I6IFByb2Nlc3MgdmFsdWUgYmFzZWQgb24gaXNIaXN0b3J5XG4gICAqICAgICAgIFJlc3VsdEl0ZXJhdG9yLT4+UmVzdWx0SXRlcmF0b3I6IEFkZCB0byByZXN1bHRzIGFycmF5XG4gICAqICAgICBlbmRcbiAgICogICBlbmRcbiAgICogICBSZXN1bHRJdGVyYXRvci0+Pkl0ZXJhdG9yOiBjbG9zZSgpXG4gICAqICAgUmVzdWx0SXRlcmF0b3ItLT4+Q2FsbGVyOiBhbGxSZXN1bHRzXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgcmVzdWx0SXRlcmF0b3IoXG4gICAgbG9nOiBMb2dnZXIsXG4gICAgaXRlcmF0b3I6IEl0ZXJhdG9ycy5TdGF0ZVF1ZXJ5SXRlcmF0b3IsXG4gICAgaXNIaXN0b3J5ID0gZmFsc2VcbiAgKSB7XG4gICAgY29uc3QgYWxsUmVzdWx0cyA9IFtdO1xuICAgIGxldCByZXM6IHsgdmFsdWU6IGFueTsgZG9uZTogYm9vbGVhbiB9ID0gYXdhaXQgaXRlcmF0b3IubmV4dCgpO1xuICAgIHdoaWxlICghcmVzLmRvbmUpIHtcbiAgICAgIGlmIChyZXMudmFsdWUgJiYgcmVzLnZhbHVlLnZhbHVlLnRvU3RyaW5nKCkpIHtcbiAgICAgICAgbGV0IGpzb25SZXM6IGFueSA9IHt9O1xuICAgICAgICBsb2cuZGVidWcocmVzLnZhbHVlLnZhbHVlLnRvU3RyaW5nKFwidXRmOFwiKSk7XG4gICAgICAgIGlmIChpc0hpc3RvcnkgLyogJiYgaXNIaXN0b3J5ID09PSB0cnVlKi8pIHtcbiAgICAgICAgICBqc29uUmVzLlR4SWQgPSByZXMudmFsdWUudHhJZDtcbiAgICAgICAgICBqc29uUmVzLlRpbWVzdGFtcCA9IHJlcy52YWx1ZS50aW1lc3RhbXA7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGpzb25SZXMuVmFsdWUgPSBKU09OLnBhcnNlKHJlcy52YWx1ZS52YWx1ZS50b1N0cmluZyhcInV0ZjhcIikpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgICBsb2cuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIGpzb25SZXMuVmFsdWUgPSByZXMudmFsdWUudmFsdWUudG9TdHJpbmcoXCJ1dGY4XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAganNvblJlcyA9IEpTT04ucGFyc2UocmVzLnZhbHVlLnZhbHVlLnRvU3RyaW5nKFwidXRmOFwiKSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgICAgIGxvZy5lcnJvcihlcnIpO1xuICAgICAgICAgICAganNvblJlcyA9IHJlcy52YWx1ZS52YWx1ZS50b1N0cmluZyhcInV0ZjhcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFsbFJlc3VsdHMucHVzaChqc29uUmVzKTtcbiAgICAgIH1cbiAgICAgIHJlcyA9IGF3YWl0IGl0ZXJhdG9yLm5leHQoKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBDbG9zaW5nIGl0ZXJhdG9yIGFmdGVyICR7YWxsUmVzdWx0cy5sZW5ndGh9IHJlc3VsdHNgKTtcbiAgICBpdGVyYXRvci5jbG9zZSgpOyAvLyBwdXJwb3NlbHkgbm90IGF3YWl0LiBsZXQgaXRlcmF0b3IgY2xvc2Ugb24gaXRzIG93blxuICAgIHJldHVybiBhbGxSZXN1bHRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFeGVjdXRlcyBhIHJhdyBxdWVyeSBhZ2FpbnN0IHRoZSBzdGF0ZSBkYXRhYmFzZVxuICAgKiBAc3VtbWFyeSBQZXJmb3JtcyBhIHJpY2ggcXVlcnkgdXNpbmcgQ291Y2hEQiBzeW50YXggYWdhaW5zdCB0aGUgRmFicmljIHN0YXRlIGRhdGFiYXNlXG4gICAqIEB0ZW1wbGF0ZSBSIC0gVGhlIHJldHVybiB0eXBlXG4gICAqIEBwYXJhbSB7TWFuZ29RdWVyeX0gcmF3SW5wdXQgLSBUaGUgTWFuZ28gUXVlcnkgdG8gZXhlY3V0ZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRvY3NPbmx5IC0gV2hldGhlciB0byByZXR1cm4gb25seSBkb2N1bWVudHMgKG5vdCB1c2VkIGluIHRoaXMgaW1wbGVtZW50YXRpb24pXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50cywgaW5jbHVkaW5nIHRoZSBjaGFpbmNvZGUgc3R1YiBhbmQgbG9nZ2VyXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Uj59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBxdWVyeSByZXN1bHRzXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IENhbGxlclxuICAgKiAgIHBhcnRpY2lwYW50IEZhYnJpY0NvbnRyYWN0QWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IFN0dWJcbiAgICogICBwYXJ0aWNpcGFudCBTdGF0ZURCXG4gICAqXG4gICAqICAgQ2FsbGVyLT4+RmFicmljQ29udHJhY3RBZGFwdGVyOiByYXcocmF3SW5wdXQsIGRvY3NPbmx5LCBjdHgpXG4gICAqICAgRmFicmljQ29udHJhY3RBZGFwdGVyLT4+RmFicmljQ29udHJhY3RBZGFwdGVyOiBFeHRyYWN0IGxpbWl0IGFuZCBza2lwXG4gICAqICAgYWx0IFdpdGggcGFnaW5hdGlvblxuICAgKiAgICAgRmFicmljQ29udHJhY3RBZGFwdGVyLT4+U3R1YjogZ2V0UXVlcnlSZXN1bHRXaXRoUGFnaW5hdGlvbihxdWVyeSwgbGltaXQsIHNraXApXG4gICAqICAgZWxzZSBXaXRob3V0IHBhZ2luYXRpb25cbiAgICogICAgIEZhYnJpY0NvbnRyYWN0QWRhcHRlci0+PlN0dWI6IGdldFF1ZXJ5UmVzdWx0KHF1ZXJ5KVxuICAgKiAgIGVuZFxuICAgKiAgIFN0dWItPj5TdGF0ZURCOiBFeGVjdXRlIHF1ZXJ5XG4gICAqICAgU3RhdGVEQi0tPj5TdHViOiBJdGVyYXRvclxuICAgKiAgIFN0dWItLT4+RmFicmljQ29udHJhY3RBZGFwdGVyOiBJdGVyYXRvclxuICAgKiAgIEZhYnJpY0NvbnRyYWN0QWRhcHRlci0+PkZhYnJpY0NvbnRyYWN0QWRhcHRlcjogcmVzdWx0SXRlcmF0b3IobG9nLCBpdGVyYXRvcilcbiAgICogICBGYWJyaWNDb250cmFjdEFkYXB0ZXItLT4+Q2FsbGVyOiByZXN1bHRzXG4gICAqL1xuICBhc3luYyByYXc8UiwgRCBleHRlbmRzIGJvb2xlYW4+KFxuICAgIHJhd0lucHV0OiBNYW5nb1F1ZXJ5LFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBkb2NzT25seTogRCA9IHRydWUgYXMgRCxcbiAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxGYWJyaWNDb250cmFjdENvbnRleHQ+XG4gICk6IFByb21pc2U8UmF3UmVzdWx0PFIsIEQ+PiB7XG4gICAgY29uc3QgeyBsb2csIGN0eCB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5yYXcpO1xuXG4gICAgY29uc3QgeyBza2lwLCBsaW1pdCB9ID0gcmF3SW5wdXQ7XG4gICAgbGV0IGl0ZXJhdG9yOiBJdGVyYXRvcnMuU3RhdGVRdWVyeUl0ZXJhdG9yO1xuICAgIGlmIChsaW1pdCB8fCBza2lwKSB7XG4gICAgICBkZWxldGUgcmF3SW5wdXRbXCJsaW1pdFwiXTtcbiAgICAgIGRlbGV0ZSByYXdJbnB1dFtcInNraXBcIl07XG4gICAgICBsb2cuZGVidWcoXG4gICAgICAgIGBSZXRyaWV2aW5nIHBhZ2luYXRlZCBpdGVyYXRvcjogbGltaXQ6ICR7bGltaXR9LyBza2lwOiAke3NraXB9YFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBTdGF0ZVF1ZXJ5UmVzcG9uc2U8SXRlcmF0b3JzLlN0YXRlUXVlcnlJdGVyYXRvcj4gPVxuICAgICAgICAoYXdhaXQgdGhpcy5xdWVyeVJlc3VsdFBhZ2luYXRlZChcbiAgICAgICAgICBjdHguc3R1YixcbiAgICAgICAgICByYXdJbnB1dCxcbiAgICAgICAgICBsaW1pdCB8fCBOdW1iZXIuTUFYX1ZBTFVFLFxuICAgICAgICAgIChza2lwIGFzIGFueSk/LnRvU3RyaW5nKCksXG4gICAgICAgICAgY3R4XG4gICAgICAgICkpIGFzIFN0YXRlUXVlcnlSZXNwb25zZTxJdGVyYXRvcnMuU3RhdGVRdWVyeUl0ZXJhdG9yPjtcbiAgICAgIGl0ZXJhdG9yID0gcmVzcG9uc2UuaXRlcmF0b3I7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5kZWJ1ZyhcIlJldHJpZXZpbmcgaXRlcmF0b3JcIik7XG4gICAgICBpdGVyYXRvciA9IChhd2FpdCB0aGlzLnF1ZXJ5UmVzdWx0KFxuICAgICAgICBjdHguc3R1YixcbiAgICAgICAgcmF3SW5wdXQsXG4gICAgICAgIGN0eFxuICAgICAgKSkgYXMgSXRlcmF0b3JzLlN0YXRlUXVlcnlJdGVyYXRvcjtcbiAgICB9XG4gICAgbG9nLmRlYnVnKFwiSXRlcmF0b3IgYWNxdWlyZWRcIik7XG5cbiAgICBjb25zdCByZXN1bHRzID0gKGF3YWl0IHRoaXMucmVzdWx0SXRlcmF0b3IobG9nLCBpdGVyYXRvcikpIGFzIFI7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYHJldHVybmluZyAke0FycmF5LmlzQXJyYXkocmVzdWx0cykgPyByZXN1bHRzLmxlbmd0aCA6IDF9IHJlc3VsdHNgXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0cyBhcyBhbnk7XG4gIH1cblxuICBvdmVycmlkZSBTdGF0ZW1lbnQ8TSBleHRlbmRzIE1vZGVsPigpOiBGYWJyaWNTdGF0ZW1lbnQ8TSwgYW55PiB7XG4gICAgcmV0dXJuIG5ldyBGYWJyaWNTdGF0ZW1lbnQodGhpcyBhcyBhbnkpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgY3JlYXRlQWxsPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgdGFibGVOYW1lOiBDb25zdHJ1Y3RvcjxNPixcbiAgICBpZDogUHJpbWFyeUtleVR5cGVbXSxcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PltdLFxuICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPEZhYnJpY0NvbnRyYWN0Q29udGV4dD5cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+IHtcbiAgICBpZiAoaWQubGVuZ3RoICE9PSBtb2RlbC5sZW5ndGgpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIklkcyBhbmQgbW9kZWxzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIik7XG4gICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMuY3JlYXRlQWxsKTtcbiAgICBjb25zdCB0YWJsZUxhYmVsID0gTW9kZWwudGFibGVOYW1lKHRhYmxlTmFtZSk7XG4gICAgbG9nLmRlYnVnKGBDcmVhdGluZyAke2lkLmxlbmd0aH0gZW50cmllcyAke3RhYmxlTGFiZWx9IHRhYmxlYCk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgaWQubWFwKChpLCBjb3VudCkgPT4gdGhpcy5jcmVhdGUodGFibGVOYW1lLCBpLCBtb2RlbFtjb3VudF0sIC4uLmN0eEFyZ3MpKVxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyB1cGRhdGVBbGw8TSBleHRlbmRzIE1vZGVsPihcbiAgICB0YWJsZU5hbWU6IENvbnN0cnVjdG9yPE0+LFxuICAgIGlkOiBQcmltYXJ5S2V5VHlwZVtdLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W10sXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8RmFicmljQ29udHJhY3RDb250ZXh0PlxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIGlmIChpZC5sZW5ndGggIT09IG1vZGVsLmxlbmd0aClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiSWRzIGFuZCBtb2RlbHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiKTtcbiAgICBjb25zdCB7IGxvZywgY3R4QXJncyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy51cGRhdGVBbGwpO1xuICAgIGNvbnN0IHRhYmxlTGFiZWwgPSBNb2RlbC50YWJsZU5hbWUodGFibGVOYW1lKTtcbiAgICBsb2cuZGVidWcoYFVwZGF0aW5nICR7aWQubGVuZ3RofSBlbnRyaWVzICR7dGFibGVMYWJlbH0gdGFibGVgKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBpZC5tYXAoKGksIGNvdW50KSA9PiB0aGlzLnVwZGF0ZSh0YWJsZU5hbWUsIGksIG1vZGVsW2NvdW50XSwgLi4uY3R4QXJncykpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gbW9kZWxcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBrXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqL1xuICBvdmVycmlkZSBwcmVwYXJlPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgbW9kZWw6IE0sXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8RmFicmljQ29udHJhY3RDb250ZXh0PlxuICApOiBQcmVwYXJlZE1vZGVsIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5wcmVwYXJlKTtcblxuICAgIGNvbnN0IHRhYmxlTmFtZSA9IE1vZGVsLnRhYmxlTmFtZShtb2RlbC5jb25zdHJ1Y3RvciBhcyBhbnkpO1xuICAgIGNvbnN0IHBrID0gTW9kZWwucGsobW9kZWwuY29uc3RydWN0b3IgYXMgYW55KTtcbiAgICBjb25zdCBzcGxpdCA9IE1vZGVsLnNlZ3JlZ2F0ZShtb2RlbCk7XG4gICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXMoc3BsaXQubW9kZWwpLnJlZHVjZShcbiAgICAgIChhY2N1bTogUmVjb3JkPHN0cmluZywgYW55PiwgW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIGFjY3VtO1xuICAgICAgICBjb25zdCBtYXBwZWRQcm9wID0gTW9kZWwuY29sdW1uTmFtZShtb2RlbCwga2V5IGFzIGFueSk7XG4gICAgICAgIGlmICh0aGlzLmlzUmVzZXJ2ZWQobWFwcGVkUHJvcCkpXG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYFByb3BlcnR5IG5hbWUgJHttYXBwZWRQcm9wfSBpcyByZXNlcnZlZGApO1xuICAgICAgICBhY2N1bVttYXBwZWRQcm9wXSA9IHZhbDtcbiAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGxvZy5zaWxseShcbiAgICAgIGBQcmVwYXJpbmcgcmVjb3JkIGZvciAke3RhYmxlTmFtZX0gdGFibGUgd2l0aCBwayAkeyhtb2RlbCBhcyBhbnkpW3BrXX1gXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICByZWNvcmQ6IHJlc3VsdCxcbiAgICAgIGlkOiAobW9kZWwgYXMgYW55KVtwa10gYXMgc3RyaW5nLFxuICAgICAgdHJhbnNpZW50OiBzcGxpdC50cmFuc2llbnQsXG4gICAgfTtcbiAgfVxuXG4gIG92ZXJyaWRlIHJldmVydDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIG9iajogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBjbGF6ejogQ29uc3RydWN0b3I8TT4sXG4gICAgaWQ6IFByaW1hcnlLZXlUeXBlLFxuICAgIHRyYW5zaWVudD86IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8RmFicmljQ29udHJhY3RDb250ZXh0PlxuICApOiBNIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5yZXZlcnQpO1xuICAgIGNvbnN0IG9iOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgY29uc3QgcGsgPSBNb2RlbC5wayhjbGF6eik7XG4gICAgb2JbcGsgYXMgc3RyaW5nXSA9IGlkO1xuICAgIGNvbnN0IG0gPSAoXG4gICAgICB0eXBlb2YgY2xhenogPT09IFwic3RyaW5nXCIgPyBNb2RlbC5idWlsZChvYiwgY2xhenopIDogbmV3IGNsYXp6KG9iKVxuICAgICkgYXMgTTtcbiAgICBsb2cuc2lsbHkoYFJlYnVpbGRpbmcgbW9kZWwgJHttLmNvbnN0cnVjdG9yLm5hbWV9IGlkICR7aWR9YCk7XG4gICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmtleXMobSkucmVkdWNlKChhY2N1bTogTSwga2V5KSA9PiB7XG4gICAgICAoYWNjdW0gYXMgUmVjb3JkPHN0cmluZywgYW55Pilba2V5XSA9XG4gICAgICAgIG9ialtNb2RlbC5jb2x1bW5OYW1lKGFjY3VtLCBrZXkgYXMgYW55KV07XG4gICAgICByZXR1cm4gYWNjdW07XG4gICAgfSwgbSk7XG5cbiAgICBpZiAodHJhbnNpZW50KSB7XG4gICAgICBsb2cuZGVidWcoXG4gICAgICAgIGByZS1hZGRpbmcgdHJhbnNpZW50IHByb3BlcnRpZXM6ICR7T2JqZWN0LmtleXModHJhbnNpZW50KS5qb2luKFwiLCBcIil9YFxuICAgICAgKTtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHRyYW5zaWVudCkuZm9yRWFjaCgoW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICBpZiAoa2V5IGluIHJlc3VsdCAmJiAocmVzdWx0IGFzIGFueSlba2V5XSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgYFRyYW5zaWVudCBwcm9wZXJ0eSAke2tleX0gYWxyZWFkeSBleGlzdHMgb24gbW9kZWwgJHttLmNvbnN0cnVjdG9yLm5hbWV9LiBzaG91bGQgYmUgaW1wb3NzaWJsZWBcbiAgICAgICAgICApO1xuICAgICAgICByZXN1bHRba2V5IGFzIGtleW9mIE1dID0gdmFsO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIG92ZXJyaWRlIGNyZWF0ZVByZWZpeDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIHRhYmxlTmFtZTogQ29uc3RydWN0b3I8TT4sXG4gICAgaWQ6IFByaW1hcnlLZXlUeXBlLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQ+XG4gICkge1xuICAgIGNvbnN0IHsgY3R4QXJncyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5jcmVhdGVQcmVmaXgpO1xuICAgIGNvbnN0IHJlY29yZDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgIHJlY29yZFtDb3VjaERCS2V5cy5UQUJMRV0gPSBNb2RlbC50YWJsZU5hbWUodGFibGVOYW1lKTtcbiAgICBPYmplY3QuYXNzaWduKHJlY29yZCwgbW9kZWwpO1xuXG4gICAgcmV0dXJuIFt0YWJsZU5hbWUsIGlkLCByZWNvcmQsIC4uLmN0eEFyZ3NdIGFzIFtcbiAgICAgIENvbnN0cnVjdG9yPE0+LFxuICAgICAgUHJpbWFyeUtleVR5cGUsXG4gICAgICBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgICAgLi4uYW55W10sXG4gICAgICBGYWJyaWNDb250cmFjdENvbnRleHQsXG4gICAgXTtcbiAgfVxuXG4gIG92ZXJyaWRlIHVwZGF0ZVByZWZpeDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIHRhYmxlTmFtZTogQ29uc3RydWN0b3I8TT4sXG4gICAgaWQ6IFByaW1hcnlLZXlUeXBlLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQ+XG4gICk6IGFueVtdIHtcbiAgICBjb25zdCB7IGN0eEFyZ3MgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMudXBkYXRlUHJlZml4KTtcbiAgICBjb25zdCByZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICByZWNvcmRbQ291Y2hEQktleXMuVEFCTEVdID0gTW9kZWwudGFibGVOYW1lKHRhYmxlTmFtZSk7XG4gICAgT2JqZWN0LmFzc2lnbihyZWNvcmQsIG1vZGVsKTtcblxuICAgIHJldHVybiBbdGFibGVOYW1lLCBpZCwgcmVjb3JkLCAuLi5jdHhBcmdzXSBhcyBbXG4gICAgICBDb25zdHJ1Y3RvcjxNPixcbiAgICAgIFByaW1hcnlLZXlUeXBlLFxuICAgICAgUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgIC4uLmFueVtdLFxuICAgICAgRmFicmljQ29udHJhY3RDb250ZXh0LFxuICAgIF07XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY3JlYXRlQWxsUHJlZml4PE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgdGFibGVOYW1lOiBDb25zdHJ1Y3RvcjxNPixcbiAgICBpZHM6IFByaW1hcnlLZXlUeXBlW10sXG4gICAgbW9kZWxzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W10sXG4gICAgLi4uYXJnczogWy4uLmFueSwgRmFicmljQ29udHJhY3RDb250ZXh0XVxuICApOiAoc3RyaW5nIHwgc3RyaW5nW10gfCBudW1iZXJbXSB8IFJlY29yZDxzdHJpbmcsIGFueT5bXSlbXSB7XG4gICAgaWYgKGlkcy5sZW5ndGggIT09IG1vZGVscy5sZW5ndGgpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIklkcyBhbmQgbW9kZWxzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIik7XG5cbiAgICBjb25zdCBjdHg6IEZhYnJpY0NvbnRyYWN0Q29udGV4dCA9IGFyZ3MucG9wKCk7XG5cbiAgICBjb25zdCByZWNvcmRzID0gaWRzLm1hcCgoaWQsIGNvdW50KSA9PiB7XG4gICAgICBjb25zdCByZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICAgIHJlY29yZFtDb3VjaERCS2V5cy5UQUJMRV0gPSBNb2RlbC50YWJsZU5hbWUodGFibGVOYW1lKTtcbiAgICAgIE9iamVjdC5hc3NpZ24ocmVjb3JkLCBtb2RlbHNbY291bnRdKTtcbiAgICAgIHJldHVybiByZWNvcmQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIFt0YWJsZU5hbWUsIGlkcywgcmVjb3JkcywgY3R4IGFzIGFueV07XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlQWxsUHJlZml4PE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgdGFibGVOYW1lOiBDb25zdHJ1Y3RvcjxNPixcbiAgICBpZHM6IFByaW1hcnlLZXlUeXBlW10sXG4gICAgbW9kZWxzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W10sXG4gICAgLi4uYXJnczogWy4uLmFueSwgRmFicmljQ29udHJhY3RDb250ZXh0XVxuICApIHtcbiAgICBpZiAoaWRzLmxlbmd0aCAhPT0gbW9kZWxzLmxlbmd0aClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiSWRzIGFuZCBtb2RlbHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiKTtcblxuICAgIGNvbnN0IGN0eDogRmFicmljQ29udHJhY3RDb250ZXh0ID0gYXJncy5wb3AoKTtcblxuICAgIGNvbnN0IHJlY29yZHMgPSBpZHMubWFwKChpZCwgY291bnQpID0+IHtcbiAgICAgIGNvbnN0IHJlY29yZDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgcmVjb3JkW0NvdWNoREJLZXlzLlRBQkxFXSA9IE1vZGVsLnRhYmxlTmFtZSh0YWJsZU5hbWUpO1xuICAgICAgT2JqZWN0LmFzc2lnbihyZWNvcmQsIG1vZGVsc1tjb3VudF0pO1xuICAgICAgcmV0dXJuIHJlY29yZDtcbiAgICB9KTtcbiAgICByZXR1cm4gW3RhYmxlTmFtZSwgaWRzLCByZWNvcmRzLCBjdHggYXMgYW55XTtcbiAgfVxuXG4gIG92ZXJyaWRlIHBhcnNlRXJyb3I8RSBleHRlbmRzIEJhc2VFcnJvcj4oXG4gICAgZXJyOiBFcnJvciB8IHN0cmluZyxcbiAgICByZWFzb24/OiBzdHJpbmdcbiAgKTogRSB7XG4gICAgcmV0dXJuIEZhYnJpY0NvbnRyYWN0QWRhcHRlci5wYXJzZUVycm9yKHJlYXNvbiB8fCBlcnIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGxvZ0N0eDxcbiAgICBBUkdTIGV4dGVuZHMgYW55W10gPSBhbnlbXSxcbiAgICBNRVRIT0QgZXh0ZW5kcyBNZXRob2RPck9wZXJhdGlvbiA9IE1ldGhvZE9yT3BlcmF0aW9uLFxuICA+KFxuICAgIGFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQsIEFSR1M+LFxuICAgIG9wZXJhdGlvbjogTUVUSE9EXG4gICk6IEZhYnJpY0NvbnRleHR1YWxpemVkQXJnczxBUkdTLCBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2U+O1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbG9nQ3R4PFxuICAgIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuICAgIE1FVEhPRCBleHRlbmRzIE1ldGhvZE9yT3BlcmF0aW9uID0gTWV0aG9kT3JPcGVyYXRpb24sXG4gID4oXG4gICAgYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPEZhYnJpY0NvbnRyYWN0Q29udGV4dCwgQVJHUz4sXG4gICAgb3BlcmF0aW9uOiBNRVRIT0QsXG4gICAgYWxsb3dDcmVhdGU6IGZhbHNlXG4gICk6IEZhYnJpY0NvbnRleHR1YWxpemVkQXJnczxBUkdTLCBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2U+O1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbG9nQ3R4PFxuICAgIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuICAgIE1FVEhPRCBleHRlbmRzIE1ldGhvZE9yT3BlcmF0aW9uID0gTWV0aG9kT3JPcGVyYXRpb24sXG4gID4oXG4gICAgYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPEZhYnJpY0NvbnRyYWN0Q29udGV4dCwgQVJHUz4sXG4gICAgb3BlcmF0aW9uOiBNRVRIT0QsXG4gICAgYWxsb3dDcmVhdGU6IHRydWUsXG4gICAgb3ZlcnJpZGVzPzogUGFydGlhbDxGbGFnc09mPEZhYnJpY0NvbnRyYWN0Q29udGV4dD4+XG4gICk6IFByb21pc2U8XG4gICAgRmFicmljQ29udGV4dHVhbGl6ZWRBcmdzPEFSR1MsIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZT5cbiAgPjtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGxvZ0N0eDxcbiAgICBBUkdTIGV4dGVuZHMgYW55W10gPSBhbnlbXSxcbiAgICBNRVRIT0QgZXh0ZW5kcyBNZXRob2RPck9wZXJhdGlvbiA9IE1ldGhvZE9yT3BlcmF0aW9uLFxuICA+KFxuICAgIGFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQsIEFSR1M+LFxuICAgIG9wZXJhdGlvbjogTUVUSE9ELFxuICAgIGFsbG93Q3JlYXRlOiBib29sZWFuID0gZmFsc2UsXG4gICAgb3ZlcnJpZGVzPzogUGFydGlhbDxGbGFnc09mPEZhYnJpY0NvbnRyYWN0Q29udGV4dD4+IHwgQ3R4XG4gICk6XG4gICAgfCBQcm9taXNlPFxuICAgICAgICBGYWJyaWNDb250ZXh0dWFsaXplZEFyZ3M8QVJHUywgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlPlxuICAgICAgPlxuICAgIHwgRmFicmljQ29udGV4dHVhbGl6ZWRBcmdzPEFSR1MsIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZT4ge1xuICAgIGlmICghYWxsb3dDcmVhdGUpXG4gICAgICByZXR1cm4gc3VwZXIubG9nQ3R4PEFSR1MsIE1FVEhPRD4oXG4gICAgICAgIGFyZ3MsXG4gICAgICAgIG9wZXJhdGlvbiBhcyBhbnksXG4gICAgICAgIGFsbG93Q3JlYXRlIGFzIGFueSxcbiAgICAgICAgb3ZlcnJpZGVzIGFzIGFueVxuICAgICAgKSBhcyBhbnk7XG5cbiAgICByZXR1cm4gc3VwZXIubG9nQ3R4XG4gICAgICAuY2FsbCh0aGlzLCBhcmdzLCBvcGVyYXRpb24gYXMgYW55LCBhbGxvd0NyZWF0ZSwgb3ZlcnJpZGVzIGFzIGFueSlcbiAgICAgIC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgaWYgKCEocmVzLmN0eCBpbnN0YW5jZW9mIEZhYnJpY0NvbnRyYWN0Q29udGV4dCkpXG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEludmFsaWQgY29udGV4dCBiaW5kaW5nYCk7XG4gICAgICAgIGlmICghcmVzLmN0eC5zdHViKSB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTWlzc2luZyBTdHViYCk7XG4gICAgICAgIGlmICghcmVzLmN0eC5pZGVudGl0eSkgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYE1pc3NpbmcgSWRlbnRpdHlgKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24ocmVzLCB7XG4gICAgICAgICAgc3R1YjogcmVzLmN0eC5zdHViLFxuICAgICAgICAgIGlkZW50aXR5OiByZXMuY3R4LmlkZW50aXR5LFxuICAgICAgICB9KTtcbiAgICAgIH0pIGFzIGFueTtcbiAgfVxuXG4gIC8vIG92ZXJyaWRlIGxvZ0N0eDxcbiAgLy8gICBBUkdTIGV4dGVuZHMgYW55W10gPSBhbnlbXSxcbiAgLy8gICBNRVRIT0QgZXh0ZW5kcyBNZXRob2RPck9wZXJhdGlvbiA9IE1ldGhvZE9yT3BlcmF0aW9uLFxuICAvLyA+KFxuICAvLyAgIGFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQsIEFSR1M+LFxuICAvLyAgIG1ldGhvZDogTUVUSE9EXG4gIC8vICk6IENvbnRleHR1YWxpemVkQXJnczxcbiAgLy8gICBGYWJyaWNDb250cmFjdENvbnRleHQsXG4gIC8vICAgQVJHUyxcbiAgLy8gICBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2VcbiAgLy8gPiAmIHtcbiAgLy8gICBzdHViOiBDaGFpbmNvZGVTdHViO1xuICAvLyAgIGlkZW50aXR5OiBDbGllbnRJZGVudGl0eTtcbiAgLy8gfTtcbiAgLy8gb3ZlcnJpZGUgbG9nQ3R4PFxuICAvLyAgIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuICAvLyAgIE1FVEhPRCBleHRlbmRzIE1ldGhvZE9yT3BlcmF0aW9uID0gTWV0aG9kT3JPcGVyYXRpb24sXG4gIC8vID4oXG4gIC8vICAgYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPEZhYnJpY0NvbnRyYWN0Q29udGV4dCwgQVJHUz4sXG4gIC8vICAgbWV0aG9kOiBNRVRIT0QsXG4gIC8vICAgYWxsb3dDcmVhdGU6IGZhbHNlLFxuICAvLyAgIG92ZXJyaWRlcz86IFBhcnRpYWw8RmFicmljQ29udHJhY3RGbGFncz5cbiAgLy8gKTogQ29udGV4dHVhbGl6ZWRBcmdzPFxuICAvLyAgIEZhYnJpY0NvbnRyYWN0Q29udGV4dCxcbiAgLy8gICBBUkdTLFxuICAvLyAgIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZVxuICAvLyA+ICYge1xuICAvLyAgIHN0dWI6IENoYWluY29kZVN0dWI7XG4gIC8vICAgaWRlbnRpdHk6IENsaWVudElkZW50aXR5O1xuICAvLyB9O1xuICAvLyBvdmVycmlkZSBsb2dDdHg8XG4gIC8vICAgQVJHUyBleHRlbmRzIGFueVtdID0gYW55W10sXG4gIC8vICAgTUVUSE9EIGV4dGVuZHMgTWV0aG9kT3JPcGVyYXRpb24gPSBNZXRob2RPck9wZXJhdGlvbixcbiAgLy8gPihcbiAgLy8gICBhcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8RmFicmljQ29udHJhY3RDb250ZXh0LCBBUkdTPixcbiAgLy8gICBtZXRob2Q6IE1FVEhPRCxcbiAgLy8gICBhbGxvd0NyZWF0ZTogdHJ1ZSxcbiAgLy8gICBvdmVycmlkZXM/OiBQYXJ0aWFsPEZhYnJpY0NvbnRyYWN0RmxhZ3M+XG4gIC8vICk6IFByb21pc2U8XG4gIC8vICAgQ29udGV4dHVhbGl6ZWRBcmdzPFxuICAvLyAgICAgRmFicmljQ29udHJhY3RDb250ZXh0LFxuICAvLyAgICAgQVJHUyxcbiAgLy8gICAgIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZVxuICAvLyAgID4gJiB7XG4gIC8vICAgICBzdHViOiBDaGFpbmNvZGVTdHViO1xuICAvLyAgICAgaWRlbnRpdHk6IENsaWVudElkZW50aXR5O1xuICAvLyAgIH1cbiAgLy8gPjtcbiAgLy8gb3ZlcnJpZGUgbG9nQ3R4PFxuICAvLyAgIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuICAvLyAgIE1FVEhPRCBleHRlbmRzIE1ldGhvZE9yT3BlcmF0aW9uID0gTWV0aG9kT3JPcGVyYXRpb24sXG4gIC8vID4oXG4gIC8vICAgYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPEZhYnJpY0NvbnRyYWN0Q29udGV4dCwgQVJHUz4sXG4gIC8vICAgbWV0aG9kOiBNRVRIT0QsXG4gIC8vICAgYWxsb3dDcmVhdGU6IGJvb2xlYW4gPSBmYWxzZSxcbiAgLy8gICBvdmVycmlkZXM/OiBQYXJ0aWFsPEZhYnJpY0NvbnRyYWN0RmxhZ3M+XG4gIC8vICk6XG4gIC8vICAgfCAoQ29udGV4dHVhbGl6ZWRBcmdzPFxuICAvLyAgICAgICBGYWJyaWNDb250cmFjdENvbnRleHQsXG4gIC8vICAgICAgIEFSR1MsXG4gIC8vICAgICAgIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZVxuICAvLyAgICAgPiAmIHtcbiAgLy8gICAgICAgc3R1YjogQ2hhaW5jb2RlU3R1YjtcbiAgLy8gICAgICAgaWRlbnRpdHk6IENsaWVudElkZW50aXR5O1xuICAvLyAgICAgfSlcbiAgLy8gICB8IFByb21pc2U8XG4gIC8vICAgICAgIENvbnRleHR1YWxpemVkQXJnczxcbiAgLy8gICAgICAgICBGYWJyaWNDb250cmFjdENvbnRleHQsXG4gIC8vICAgICAgICAgQVJHUyxcbiAgLy8gICAgICAgICBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2VcbiAgLy8gICAgICAgPiAmIHtcbiAgLy8gICAgICAgICBzdHViOiBDaGFpbmNvZGVTdHViO1xuICAvLyAgICAgICAgIGlkZW50aXR5OiBDbGllbnRJZGVudGl0eTtcbiAgLy8gICAgICAgfVxuICAvLyAgICAgPiB7XG4gIC8vICAgY29uc3QgcmVzcG9uc2UgPSBzdXBlci5sb2dDdHgoXG4gIC8vICAgICBhcmdzLFxuICAvLyAgICAgbWV0aG9kLFxuICAvLyAgICAgYWxsb3dDcmVhdGUgYXMgYW55LFxuICAvLyAgICAgb3ZlcnJpZGVzIGFzIGFueVxuICAvLyAgICkgYXNcbiAgLy8gICAgIHwgQ29udGV4dHVhbGl6ZWRBcmdzPFxuICAvLyAgICAgICAgIEZhYnJpY0NvbnRyYWN0Q29udGV4dCxcbiAgLy8gICAgICAgICBBUkdTLFxuICAvLyAgICAgICAgIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZVxuICAvLyAgICAgICA+XG4gIC8vICAgICB8IFByb21pc2U8XG4gIC8vICAgICAgICAgQ29udGV4dHVhbGl6ZWRBcmdzPFxuICAvLyAgICAgICAgICAgRmFicmljQ29udHJhY3RDb250ZXh0LFxuICAvLyAgICAgICAgICAgQVJHUyxcbiAgLy8gICAgICAgICAgIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZVxuICAvLyAgICAgICAgID5cbiAgLy8gICAgICAgPjtcbiAgLy9cbiAgLy8gICBjb25zdCBhdHRhY2ggPSA8VCBleHRlbmRzIENvbnRleHR1YWxpemVkQXJnczxGYWJyaWNDb250cmFjdENvbnRleHQsIEFSR1M+PihcbiAgLy8gICAgIHJlc3A6IFRcbiAgLy8gICApID0+XG4gIC8vICAgICBPYmplY3QuYXNzaWduKHJlc3AsIHtcbiAgLy8gICAgICAgc3R1YjogcmVzcC5jdHguc3R1YixcbiAgLy8gICAgICAgaWRlbnRpdHk6IHJlc3AuY3R4LmlkZW50aXR5LFxuICAvLyAgICAgfSkgYXMgVCAmIHtcbiAgLy8gICAgICAgc3R1YjogQ2hhaW5jb2RlU3R1YjtcbiAgLy8gICAgICAgaWRlbnRpdHk6IENsaWVudElkZW50aXR5O1xuICAvLyAgICAgfTtcbiAgLy9cbiAgLy8gICByZXR1cm4gcmVzcG9uc2UgaW5zdGFuY2VvZiBQcm9taXNlXG4gIC8vICAgICA/IHJlc3BvbnNlLnRoZW4oYXR0YWNoKVxuICAvLyAgICAgOiBhdHRhY2gocmVzcG9uc2UpO1xuICAvLyB9XG5cbiAgc3RhdGljIG92ZXJyaWRlIHBhcnNlRXJyb3I8RSBleHRlbmRzIEJhc2VFcnJvcj4oZXJyOiBFcnJvciB8IHN0cmluZyk6IEUge1xuICAgIC8vIGlmIChcbiAgICAvLyAgIE1JU1NJTkdfUFJJVkFURV9EQVRBX1JFR0VYLnRlc3QoXG4gICAgLy8gICAgIHR5cGVvZiBlcnIgPT09IFwic3RyaW5nXCIgPyBlcnIgOiBlcnIubWVzc2FnZVxuICAgIC8vICAgKVxuICAgIC8vIClcbiAgICAvLyAgIHJldHVybiBuZXcgVW5hdXRob3JpemVkUHJpdmF0ZURhdGFBY2Nlc3MoZXJyKSBhcyBFO1xuICAgIGNvbnN0IG1zZyA9IHR5cGVvZiBlcnIgPT09IFwic3RyaW5nXCIgPyBlcnIgOiBlcnIubWVzc2FnZTtcbiAgICBpZiAobXNnLmluY2x1ZGVzKE5vdEZvdW5kRXJyb3IubmFtZSkpIHJldHVybiBuZXcgTm90Rm91bmRFcnJvcihlcnIpIGFzIEU7XG4gICAgaWYgKG1zZy5pbmNsdWRlcyhDb25mbGljdEVycm9yLm5hbWUpKSByZXR1cm4gbmV3IENvbmZsaWN0RXJyb3IoZXJyKSBhcyBFO1xuICAgIGlmIChtc2cuaW5jbHVkZXMoQmFkUmVxdWVzdEVycm9yLm5hbWUpKVxuICAgICAgcmV0dXJuIG5ldyBCYWRSZXF1ZXN0RXJyb3IoZXJyKSBhcyBFO1xuICAgIGlmIChtc2cuaW5jbHVkZXMoUXVlcnlFcnJvci5uYW1lKSkgcmV0dXJuIG5ldyBRdWVyeUVycm9yKGVycikgYXMgRTtcbiAgICBpZiAobXNnLmluY2x1ZGVzKFBhZ2luZ0Vycm9yLm5hbWUpKSByZXR1cm4gbmV3IFBhZ2luZ0Vycm9yKGVycikgYXMgRTtcbiAgICBpZiAobXNnLmluY2x1ZGVzKFVuc3VwcG9ydGVkRXJyb3IubmFtZSkpXG4gICAgICByZXR1cm4gbmV3IFVuc3VwcG9ydGVkRXJyb3IoZXJyKSBhcyBFO1xuICAgIGlmIChtc2cuaW5jbHVkZXMoTWlncmF0aW9uRXJyb3IubmFtZSkpIHJldHVybiBuZXcgTWlncmF0aW9uRXJyb3IoZXJyKSBhcyBFO1xuICAgIGlmIChtc2cuaW5jbHVkZXMoT2JzZXJ2ZXJFcnJvci5uYW1lKSkgcmV0dXJuIG5ldyBPYnNlcnZlckVycm9yKGVycikgYXMgRTtcbiAgICBpZiAobXNnLmluY2x1ZGVzKEF1dGhvcml6YXRpb25FcnJvci5uYW1lKSlcbiAgICAgIHJldHVybiBuZXcgQXV0aG9yaXphdGlvbkVycm9yKGVycikgYXMgRTtcbiAgICBpZiAobXNnLmluY2x1ZGVzKEZvcmJpZGRlbkVycm9yLm5hbWUpKSByZXR1cm4gbmV3IEZvcmJpZGRlbkVycm9yKGVycikgYXMgRTtcbiAgICBpZiAobXNnLmluY2x1ZGVzKENvbm5lY3Rpb25FcnJvci5uYW1lKSlcbiAgICAgIHJldHVybiBuZXcgQ29ubmVjdGlvbkVycm9yKGVycikgYXMgRTtcbiAgICBpZiAobXNnLmluY2x1ZGVzKFNlcmlhbGl6YXRpb25FcnJvci5uYW1lKSlcbiAgICAgIHJldHVybiBuZXcgU2VyaWFsaXphdGlvbkVycm9yKGVycikgYXMgRTtcbiAgICBpZiAobXNnLmluY2x1ZGVzKFwibm8gbGVkZ2VyIGNvbnRleHRcIikpXG4gICAgICByZXR1cm4gbmV3IE1pc3NpbmdDb250ZXh0RXJyb3IoXG4gICAgICAgIGBObyBjb250ZXh0IGZvdW5kLiB0aGlzIGNhbiBiZSBjYXVzZWQgYnkgZGVidWdnaW5nOiAke21zZ31gXG4gICAgICApIGFzIEU7XG5cbiAgICByZXR1cm4gbmV3IEludGVybmFsRXJyb3IoZXJyKSBhcyBFO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTdGF0aWMgbWV0aG9kIGZvciBkZWNvcmF0aW9uIG92ZXJyaWRlc1xuICAgKiBAc3VtbWFyeSBPdmVycmlkZXMvZXh0ZW5kcyBkZWNhZiBkZWNvcmF0aW9uIHdpdGggRmFicmljLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHlcbiAgICogQHN0YXRpY1xuICAgKiBAb3ZlcnJpZGVcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyBvdmVycmlkZSBkZWNvcmF0aW9uKCk6IHZvaWQge1xuICAgIHN1cGVyLmRlY29yYXRpb24oKTtcbiAgICBEZWNvcmF0aW9uLmZsYXZvdXJlZEFzKEZhYnJpY0ZsYXZvdXIpXG4gICAgICAuZm9yKFBlcnNpc3RlbmNlS2V5cy5DUkVBVEVEX0JZKVxuICAgICAgLmRlZmluZShcbiAgICAgICAgb25DcmVhdGUoY3JlYXRlZEJ5T25GYWJyaWNDcmVhdGVVcGRhdGUpLFxuICAgICAgICBwcm9wTWV0YWRhdGEoUGVyc2lzdGVuY2VLZXlzLkNSRUFURURfQlksIHt9KVxuICAgICAgKVxuICAgICAgLmFwcGx5KCk7XG5cbiAgICBEZWNvcmF0aW9uLmZsYXZvdXJlZEFzKEZhYnJpY0ZsYXZvdXIpXG4gICAgICAuZm9yKFBlcnNpc3RlbmNlS2V5cy5VUERBVEVEX0JZKVxuICAgICAgLmRlZmluZShcbiAgICAgICAgb25DcmVhdGVVcGRhdGUoY3JlYXRlZEJ5T25GYWJyaWNDcmVhdGVVcGRhdGUpLFxuICAgICAgICBwcm9wTWV0YWRhdGEoUGVyc2lzdGVuY2VLZXlzLlVQREFURURfQlksIHt9KVxuICAgICAgKVxuICAgICAgLmFwcGx5KCk7XG5cbiAgICBEZWNvcmF0aW9uLmZsYXZvdXJlZEFzKEZhYnJpY0ZsYXZvdXIpXG4gICAgICAuZm9yKFBlcnNpc3RlbmNlS2V5cy5DT0xVTU4pXG4gICAgICAuZXh0ZW5kKEZhYnJpY1Byb3BlcnR5KCkpXG4gICAgICAuYXBwbHkoKTtcblxuICAgIERlY29yYXRpb24uZmxhdm91cmVkQXMoRmFicmljRmxhdm91cilcbiAgICAgIC5mb3IoVmFsaWRhdGlvbktleXMuREFURSlcbiAgICAgIC5leHRlbmQoZnVuY3Rpb24gZmFicmljUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiAodGFyZ2V0OiBhbnksIHByb3A/OiBhbnkpID0+IHtcbiAgICAgICAgICBQcm9wZXJ0eShwcm9wLCBcInN0cmluZzpkYXRlXCIpKHRhcmdldCwgcHJvcCk7XG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgIERlY29yYXRpb24uZmxhdm91cmVkQXMoRmFicmljRmxhdm91cilcbiAgICAgIC5mb3IoUGVyc2lzdGVuY2VLZXlzLlRBQkxFKVxuICAgICAgLmV4dGVuZChmdW5jdGlvbiB0YWJsZShvYmo6IGFueSkge1xuICAgICAgICBjb25zdCBjaGFpbjogYW55W10gPSBbXTtcbiAgICAgICAgbGV0IGN1cnJlbnQgPVxuICAgICAgICAgIHR5cGVvZiBvYmogPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgPyBNZXRhZGF0YS5jb25zdHIob2JqKVxuICAgICAgICAgICAgOiBNZXRhZGF0YS5jb25zdHIob2JqLmNvbnN0cnVjdG9yKTtcblxuICAgICAgICB3aGlsZSAoY3VycmVudCAmJiBjdXJyZW50ICE9PSBPYmplY3QgJiYgY3VycmVudC5wcm90b3R5cGUpIHtcbiAgICAgICAgICBjaGFpbi5wdXNoKGN1cnJlbnQpO1xuICAgICAgICAgIGN1cnJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3VycmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhjaGFpbi5tYXAoKGMpID0+IGMubmFtZSB8fCBjKSk7XG5cbiAgICAgICAgLy8gQXBwbHkgZnJvbSB0aGUgYmFzZSBjbGFzcyBkb3duIHRvIHRoZSBkZWNvcmF0ZWQgY2xhc3NcbiAgICAgICAgd2hpbGUgKGNoYWluLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBjb25zdHJ1Y3RvciA9IGNoYWluLnBvcCgpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBDYWxsaW5nIG9uICR7Y29uc3RydWN0b3IubmFtZX1gKTtcbiAgICAgICAgICBGYWJyaWNPYmplY3QoKShjb25zdHJ1Y3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRmFicmljT2JqZWN0KCkob2JqKTtcbiAgICAgIH0pXG4gICAgICAuYXBwbHkoKTtcbiAgfVxufVxuXG5GYWJyaWNDb250cmFjdEFkYXB0ZXIuZGVjb3JhdGlvbigpO1xuQWRhcHRlci5zZXRDdXJyZW50KEZhYnJpY0ZsYXZvdXIpO1xuIl19
944
+ //# sourceMappingURL=ContractAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContractAdapter.js","sourceRoot":"","sources":["../../src/contracts/ContractAdapter.ts"],"names":[],"mappings":"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"}
@@ -69,4 +69,4 @@ class FabricContractContext extends core_1.Context {
69
69
  }
70
70
  }
71
71
  exports.FabricContractContext = FabricContractContext;
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJhY3RDb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9Db250cmFjdENvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXlDO0FBSXpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUNILE1BQWEscUJBQXNCLFNBQVEsY0FBNEI7SUFDckU7OztPQUdHO0lBQ0g7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBYSxTQUFTO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFUSxRQUFRO1FBQ2YsT0FBTyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbEUsQ0FBQztDQUNGO0FBdkNELHNEQXVDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEZhYnJpY0NvbnRyYWN0RmxhZ3MgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgQ2hhaW5jb2RlU3R1YiwgQ2xpZW50SWRlbnRpdHkgfSBmcm9tIFwiZmFicmljLXNoaW0tYXBpXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbnRleHQgY2xhc3MgZm9yIEZhYnJpYyBjaGFpbmNvZGUgb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgUHJvdmlkZXMgYWNjZXNzIHRvIEZhYnJpYy1zcGVjaWZpYyBjb250ZXh0IGVsZW1lbnRzIGxpa2Ugc3R1YiwgaWRlbnRpdHksIGFuZCBsb2dnZXIgdG8gYmUgdXNlZCBieSByZXBvc2l0b3JpZXMgYW5kIGFkYXB0ZXJzIGR1cmluZyBjb250cmFjdCBleGVjdXRpb24uXG4gKiBAdGVtcGxhdGUgRiAtIEZsYWdzIHNwZWNpZmljIHRvIEZhYnJpYyBjb250cmFjdCBvcGVyYXRpb25zXG4gKiBAcGFyYW0ge29iamVjdH0gW2FyZ3NdIC0gT3B0aW9uYWwgaW5pdGlhbGl6YXRpb24gYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgYmFzZSBDb250ZXh0XG4gKiBAcmV0dXJuIHt2b2lkfVxuICogQGNsYXNzIEZhYnJpY0NvbnRyYWN0Q29udGV4dFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEluIGEgRmFicmljIGNoYWluY29kZSBjb250cmFjdCBtZXRob2RcbiAqIGNvbnN0IGNvbnRleHQgPSBuZXcgRmFicmljQ29udHJhY3RDb250ZXh0KCk7XG4gKiAvLyBPcHRpb25hbGx5IHNldCB2YWx1ZXMgdmlhIHRoZSBiYXNlIENvbnRleHQgQVBJXG4gKiBjb250ZXh0LnNldCgnc3R1YicsIGN0eC5zdHViKTtcbiAqIGNvbnRleHQuc2V0KCdjbGllbnRJZGVudGl0eScsIGN0eC5jbGllbnRJZGVudGl0eSk7XG4gKiBjb250ZXh0LnNldCgnbG9nZ2VyJywgY29udHJhY3RMb2dnZXIpO1xuICpcbiAqIC8vIEFjY2VzcyBjb250ZXh0IHByb3BlcnRpZXNcbiAqIGNvbnN0IHRpbWVzdGFtcCA9IGNvbnRleHQudGltZXN0YW1wO1xuICogY29uc3QgY3JlYXRvciA9IGNvbnRleHQuaWRlbnRpdHkuZ2V0SUQoKTtcbiAqIGBgYFxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDb250cmFjdFxuICogICBwYXJ0aWNpcGFudCBDb250ZXh0XG4gKiAgIHBhcnRpY2lwYW50IExlZGdlclxuICogICBDb250cmFjdC0+PkNvbnRleHQ6IG5ldyBGYWJyaWNDb250cmFjdENvbnRleHQoKVxuICogICBDb250cmFjdC0+PkNvbnRleHQ6IHNldCgnc3R1Yid8J2NsaWVudElkZW50aXR5J3wnbG9nZ2VyJywgLi4uKVxuICogICBDb250ZXh0LS0+PkNvbnRyYWN0OiB0aW1lc3RhbXAsIGlkZW50aXR5LCBsb2dnZXJcbiAqICAgQ29udHJhY3QtPj5MZWRnZXI6IEludGVyYWN0IHZpYSBzdHViXG4gKi9cbmV4cG9ydCBjbGFzcyBGYWJyaWNDb250cmFjdENvbnRleHQgZXh0ZW5kcyBDb250ZXh0PEZhYnJpY0NvbnRyYWN0RmxhZ3M+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IEZhYnJpY0NvbnRyYWN0Q29udGV4dCBpbnN0YW5jZVxuICAgKiBAc3VtbWFyeSBJbml0aWFsaXplcyB0aGUgY29udGV4dCB3aXRoIEZhYnJpYy1zcGVjaWZpYyBmbGFnc1xuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgY2hhaW5jb2RlIHN0dWJcbiAgICogQHN1bW1hcnkgUmV0dXJucyB0aGUgQ2hhaW5jb2RlU3R1YiBpbnN0YW5jZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgbGVkZ2VyXG4gICAqIEByZXR1cm4ge0NoYWluY29kZVN0dWJ9IFRoZSBjaGFpbmNvZGUgc3R1YlxuICAgKi9cbiAgZ2V0IHN0dWIoKTogQ2hhaW5jb2RlU3R1YiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KFwic3R1YlwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgdHJhbnNhY3Rpb24gdGltZXN0YW1wXG4gICAqIEBzdW1tYXJ5IE92ZXJyaWRlcyB0aGUgYmFzZSB0aW1lc3RhbXAgZ2V0dGVyIHRvIHVzZSB0aGUgc3R1YidzIHRpbWVzdGFtcFxuICAgKiBAcmV0dXJuIHtEYXRlfSBUaGUgdHJhbnNhY3Rpb24gdGltZXN0YW1wXG4gICAqL1xuICBvdmVycmlkZSBnZXQgdGltZXN0YW1wKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLnN0dWIuZ2V0RGF0ZVRpbWVzdGFtcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBHZXRzIHRoZSBjbGllbnQgaWRlbnRpdHlcbiAgICogQHN1bW1hcnkgUmV0dXJucyB0aGUgQ2xpZW50SWRlbnRpdHkgaW5zdGFuY2UgZm9yIHRoZSB0cmFuc2FjdGlvbiBzdWJtaXR0ZXJcbiAgICogQHJldHVybiB7Q2xpZW50SWRlbnRpdHl9IFRoZSBjbGllbnQgaWRlbnRpdHlcbiAgICovXG4gIGdldCBpZGVudGl0eSgpOiBDbGllbnRJZGVudGl0eSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KFwiaWRlbnRpdHlcIik7XG4gIH1cblxuICBvdmVycmlkZSB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYGZhYnJpYyBjdHgke3RoaXMuc3R1YiA/IFwiIHdpdGggc3R1YlwiIDogXCJ3aXRob3V0IHN0dWJcIn1gO1xuICB9XG59XG4iXX0=
72
+ //# sourceMappingURL=ContractContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContractContext.js","sourceRoot":"","sources":["../../src/contracts/ContractContext.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AAIzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAa,qBAAsB,SAAQ,cAA4B;IACrE;;;OAGG;IACH;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED;;;;OAIG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,IAAa,SAAS;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAEQ,QAAQ;QACf,OAAO,aAAa,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;IAClE,CAAC;CACF;AAvCD,sDAuCC"}
@@ -423,4 +423,4 @@
423
423
  // return results;
424
424
  // }
425
425
  // }
426
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJhY3RQcml2YXRlRGF0YUFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL0NvbnRyYWN0UHJpdmF0ZURhdGFBZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw4RUFBOEU7QUFDOUUsNkRBQTZEO0FBQzdELFdBQVc7QUFDWCxlQUFlO0FBQ2YsbUJBQW1CO0FBQ25CLHdCQUF3QjtBQUN4QixvQ0FBb0M7QUFDcEMsMERBQTBEO0FBQzFELFdBQVc7QUFDWCxnQ0FBZ0M7QUFDaEMsb0JBQW9CO0FBQ3BCLGtCQUFrQjtBQUNsQiwyQkFBMkI7QUFDM0Isb0VBQW9FO0FBQ3BFLDhEQUE4RDtBQUM5RCw2REFBNkQ7QUFDN0QsbUVBQW1FO0FBQ25FLEVBQUU7QUFDRixnRkFBZ0Y7QUFDaEYsUUFBUTtBQUNSLGlFQUFpRTtBQUNqRSxzRkFBc0Y7QUFDdEYsc0RBQXNEO0FBQ3RELHlFQUF5RTtBQUN6RSxRQUFRO0FBQ1IsaUJBQWlCO0FBQ2pCLG1CQUFtQjtBQUNuQixzQkFBc0I7QUFDdEIsOENBQThDO0FBQzlDLFFBQVE7QUFDUiwyQkFBMkI7QUFDM0IsNENBQTRDO0FBQzVDLE1BQU07QUFDTixFQUFFO0FBQ0YsUUFBUTtBQUNSLDJEQUEyRDtBQUMzRCxtRkFBbUY7QUFDbkYsb0VBQW9FO0FBQ3BFLDJEQUEyRDtBQUMzRCw4RkFBOEY7QUFDOUYsd0ZBQXdGO0FBQ3hGLFFBQVE7QUFDUix5QkFBeUI7QUFDekIseUJBQXlCO0FBQ3pCLDJCQUEyQjtBQUMzQixxQkFBcUI7QUFDckIscUJBQXFCO0FBQ3JCLHNDQUFzQztBQUN0QywyQ0FBMkM7QUFDM0MseUNBQXlDO0FBQ3pDLEVBQUU7QUFDRixzQ0FBc0M7QUFDdEMsWUFBWTtBQUNaLDhDQUE4QztBQUM5QyxnQkFBZ0I7QUFDaEIscUJBQXFCO0FBQ3JCLHlCQUF5QjtBQUN6QixtQkFBbUI7QUFDbkIsV0FBVztBQUNYLEVBQUU7QUFDRixrQ0FB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QXNHO0FBQ3RHLDhGQUE4RjtBQUM5RixtRUFBbUU7QUFDbkUsZ0JBQWdCO0FBQ2hCLHVCQUF1QjtBQUN2Qiw0QkFBNEI7QUFDNUIsMkNBQTJDO0FBQzNDLDBCQUEwQjtBQUMxQiw2QkFBNkI7QUFDN0IsT0FBTztBQUNQLHNFQUFzRTtBQUN0RSwrRUFBK0U7QUFDL0UsNkJBQTZCO0FBQzdCLDBGQUEwRjtBQUMxRixpQ0FBaUM7QUFDakMsK0RBQStEO0FBQy9ELGFBQWE7QUFDYix1Q0FBdUM7QUFDdkMsbUNBQW1DO0FBQ25DLGlEQUFpRDtBQUNqRCxzRkFBc0Y7QUFDdEYsa0RBQWtEO0FBQ2xELFFBQVE7QUFDUiwyQkFBMkI7QUFDM0IsNEJBQTRCO0FBQzVCLHlCQUF5QjtBQUN6QixxQkFBcUI7QUFDckIsb0JBQW9CO0FBQ3BCLDJDQUEyQztBQUMzQyx3Q0FBd0M7QUFDeEMsd0NBQXdDO0FBQ3hDLHFDQUFxQztBQUNyQyxrREFBa0Q7QUFDbEQsMkJBQTJCO0FBQzNCLGtDQUFrQztBQUNsQyxpQ0FBaUM7QUFDakMsbUJBQW1CO0FBQ25CLDBFQUEwRTtBQUMxRSxXQUFXO0FBQ1gsMkVBQTJFO0FBQzNFLDRDQUE0QztBQUM1QyxrQkFBa0I7QUFDbEIsc0JBQXNCO0FBQ3RCLDBCQUEwQjtBQUMxQix1Q0FBdUM7QUFDdkMscUJBQXFCO0FBQ3JCLGtFQUFrRTtBQUNsRSxzQ0FBc0M7QUFDdEMsZUFBZTtBQUNmLDBDQUEwQztBQUMxQyw0Q0FBNEM7QUFDNUMsZ0JBQWdCO0FBQ2hCLG9CQUFvQjtBQUNwQixtQkFBbUI7QUFDbkIsNENBQTRDO0FBQzVDLFFBQVE7QUFDUixzQ0FBc0M7QUFDdEMsRUFBRTtBQUNGLHVFQUF1RTtBQUN2RSxpQkFBaUI7QUFDakIsaUNBQWlDO0FBQ2pDLHlEQUF5RDtBQUN6RCxTQUFTO0FBQ1Qsc0JBQXNCO0FBQ3RCLE1BQU07QUFDTixJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IHsgQ2hhaW5jb2RlU3R1YiwgSXRlcmF0b3JzLCBTdGF0ZVF1ZXJ5UmVzcG9uc2UgfSBmcm9tIFwiZmFicmljLXNoaW1cIjtcbi8vIGltcG9ydCB7IEZhYnJpY0NvbnRyYWN0QWRhcHRlciB9IGZyb20gXCIuL0NvbnRyYWN0QWRhcHRlclwiO1xuLy8gaW1wb3J0IHtcbi8vICAgQmFzZUVycm9yLFxuLy8gICBOb3RGb3VuZEVycm9yLFxuLy8gICBTZXJpYWxpemF0aW9uRXJyb3IsXG4vLyB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuLy8gaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG4vLyBpbXBvcnQge1xuLy8gICBNSVNTSU5HX1BSSVZBVEVfREFUQV9SRUdFWCxcbi8vICAgbW9kZWxUb1ByaXZhdGUsXG4vLyAgIHByb2Nlc3NNb2RlbCxcbi8vIH0gZnJvbSBcIi4vcHJpdmF0ZS1kYXRhXCI7XG4vLyBpbXBvcnQgeyBVbmF1dGhvcml6ZWRQcml2YXRlRGF0YUFjY2VzcyB9IGZyb20gXCIuLi9zaGFyZWQvZXJyb3JzXCI7XG4vLyBpbXBvcnQgeyBTZXF1ZW5jZSwgU2VxdWVuY2VPcHRpb25zIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG4vLyBpbXBvcnQgeyBGYWJyaWNDb250cmFjdENvbnRleHQgfSBmcm9tIFwiLi9Db250cmFjdENvbnRleHRcIjtcbi8vIGltcG9ydCB7IENvdWNoREJLZXlzLCBNYW5nb1F1ZXJ5IH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItY291Y2hkYlwiO1xuLy9cbi8vIGV4cG9ydCBjbGFzcyBGYWJyaWNDb250cmFjdFByaXZhdGVEYXRhQWRhcHRlciBleHRlbmRzIEZhYnJpY0NvbnRyYWN0QWRhcHRlciB7XG4vLyAgIC8qKlxuLy8gICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBGYWJyaWNDb250cmFjdEFkYXB0ZXIgaW5zdGFuY2Vcbi8vICAgICogQHN1bW1hcnkgSW5pdGlhbGl6ZXMgYW4gYWRhcHRlciBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgRmFicmljIHN0YXRlIGRhdGFiYXNlXG4vLyAgICAqIEBwYXJhbSB7dm9pZH0gc2NvcGUgLSBOb3QgdXNlZCBpbiB0aGlzIGFkYXB0ZXJcbi8vICAgICogQHBhcmFtIHtzdHJpbmd9IFthbGlhc10gLSBPcHRpb25hbCBhbGlhcyBmb3IgdGhlIGFkYXB0ZXIgaW5zdGFuY2Vcbi8vICAgICovXG4vLyAgIGNvbnN0cnVjdG9yKFxuLy8gICAgIHNjb3BlOiB2b2lkLFxuLy8gICAgIGFsaWFzPzogc3RyaW5nLFxuLy8gICAgIHByaXZhdGUgcmVhZG9ubHkgY29sbGVjdGlvbnM/OiBzdHJpbmdbXVxuLy8gICApIHtcbi8vICAgICBzdXBlcihzY29wZSwgYWxpYXMpO1xuLy8gICAgIHRoaXMuY29sbGVjdGlvbnMgPSBjb2xsZWN0aW9ucyB8fCBbXTtcbi8vICAgfVxuLy9cbi8vICAgLyoqXG4vLyAgICAqIEBkZXNjcmlwdGlvbiBSZWFkcyBhIHJlY29yZCBmcm9tIHRoZSBzdGF0ZSBkYXRhYmFzZVxuLy8gICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgYW5kIGRlc2VyaWFsaXplcyBhIHJlY29yZCBmcm9tIHRoZSBGYWJyaWMgc3RhdGUgZGF0YWJhc2Vcbi8vICAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4vLyAgICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBpZCAtIFRoZSByZWNvcmQgaWRlbnRpZmllclxuLy8gICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHMsIGluY2x1ZGluZyB0aGUgY2hhaW5jb2RlIHN0dWIgYW5kIGxvZ2dlclxuLy8gICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmV0cmlldmVkIHJlY29yZFxuLy8gICAgKi9cbi8vICAgb3ZlcnJpZGUgYXN5bmMgcmVhZChcbi8vICAgICB0YWJsZU5hbWU6IHN0cmluZyxcbi8vICAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuLy8gICAgIGluc3RhbmNlOiBhbnksXG4vLyAgICAgLi4uYXJnczogYW55W11cbi8vICAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4vLyAgICAgY29uc3QgeyBzdHViLCBsb2dnZXIgfSA9IGFyZ3MucG9wKCk7XG4vLyAgICAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcih0aGlzLnJlYWQpO1xuLy9cbi8vICAgICBsZXQgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT47XG4vLyAgICAgdHJ5IHtcbi8vICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLnJlYWRTdGF0ZShcbi8vICAgICAgICAgc3R1Yixcbi8vICAgICAgICAgdGFibGVOYW1lLFxuLy8gICAgICAgICBpZC50b1N0cmluZygpLFxuLy8gICAgICAgICBpbnN0YW5jZVxuLy8gICAgICAgKTtcbi8vXG4vLyAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggPCAxKSB7XG4vLyAgICAgICAgIGxvZy5kZWJ1ZyhgTm8gcmVjb3JkIGZvdW5kIGZvciBpZCAke2lkfSBpbiAke3RhYmxlTmFtZX0gdGFibGVgKTtcbi8vICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4vLyAgICAgICAgICAgYE5vIHJlY29yZCBmb3VuZCBmb3IgaWQgJHtpZH0gaW4gJHt0YWJsZU5hbWV9IHRhYmxlYFxuLy8gICAgICAgICApO1xuLy8gICAgICAgfSBlbHNlIGlmIChyZXN1bHRzLmxlbmd0aCA8IDIpIHtcbi8vICAgICAgICAgbG9nLmRlYnVnKGBObyByZWNvcmQgZm91bmQgZm9yIGlkICR7aWR9IGluICR7dGFibGVOYW1lfSB0YWJsZWApO1xuLy8gICAgICAgICBtb2RlbCA9IHJlc3VsdHMucG9wKCkgYXMgUmVjb3JkPHN0cmluZywgYW55Pjtcbi8vICAgICAgIH0gZWxzZSB7XG4vLyAgICAgICAgIG1vZGVsID0gdGhpcy5tZXJnZU1vZGVscyhyZXN1bHRzKTtcbi8vICAgICAgIH1cbi8vICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4vLyAgICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSBhcyBFcnJvcik7XG4vLyAgICAgfVxuLy9cbi8vICAgICByZXR1cm4gbW9kZWw7XG4vLyAgIH1cbi8vXG4vLyAgIC8qKlxuLy8gICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlcyBhIHJlY29yZCBmcm9tIHRoZSBzdGF0ZSBkYXRhYmFzZVxuLy8gICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgYSByZWNvcmQgYW5kIHRoZW4gcmVtb3ZlcyBpdCBmcm9tIHRoZSBGYWJyaWMgc3RhdGUgZGF0YWJhc2Vcbi8vICAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4vLyAgICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBpZCAtIFRoZSByZWNvcmQgaWRlbnRpZmllciB0byBkZWxldGVcbi8vICAgICogQHBhcmFtIHsuLi5hbnlbXX0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzLCBpbmNsdWRpbmcgdGhlIGNoYWluY29kZSBzdHViIGFuZCBsb2dnZXJcbi8vICAgICogQHJldHVybiB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGRlbGV0ZWQgcmVjb3JkXG4vLyAgICAqL1xuLy8gICBvdmVycmlkZSBhc3luYyBkZWxldGUoXG4vLyAgICAgdGFibGVOYW1lOiBzdHJpbmcsXG4vLyAgICAgaWQ6IHN0cmluZyB8IG51bWJlcixcbi8vICAgICBpbnN0YW5jZTogYW55LFxuLy8gICAgIC4uLmFyZ3M6IGFueVtdXG4vLyAgICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuLy8gICAgIGNvbnN0IGN0eCA9IGFyZ3MucG9wKCk7XG4vLyAgICAgY29uc3QgeyBzdHViLCBsb2dnZXIgfSA9IGN0eDtcbi8vICAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKHRoaXMuZGVsZXRlKTtcbi8vXG4vLyAgICAgYXJncy5wdXNoKGN0eCk7XG4vL1xuLy8gICAgIGxldCBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55Pjtcbi8vICAgICB0cnkge1xuLy8gICAgICAgbW9kZWwgPSBhd2FpdCB0aGlzLnJlYWQodGFibGVOYW1lLCBpZCwgaW5zdGFuY2UsIC4uLmFyZ3MpO1xuLy8gICAgICAgbG9nLnZlcmJvc2UoYGRlbGV0aW5nIGVudHJ5IHdpdGggcGsgJHtpZH0gZnJvbSAke3RhYmxlTmFtZX0gdGFibGVgKTtcbi8vICAgICAgIHRoaXMuZGVsZXRlU3RhdGUoc3R1YiwgdGFibGVOYW1lLCBpZC50b1N0cmluZygpLCBpbnN0YW5jZSk7XG4vLyAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuLy8gICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUgYXMgRXJyb3IpO1xuLy8gICAgIH1cbi8vXG4vLyAgICAgcmV0dXJuIG1vZGVsO1xuLy8gICB9XG4vLyAgIG92ZXJyaWRlIHByZXBhcmU8TSBleHRlbmRzIE1vZGVsPihcbi8vICAgICBtb2RlbDogTSxcbi8vICAgICBwazoga2V5b2YgTSxcbi8vICAgICAuLi5hcmdzOiBhbnlbXVxuLy8gICApOiB7XG4vLyAgICAgcmVjb3JkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuLy8gICAgIGlkOiBzdHJpbmc7XG4vLyAgICAgdHJhbnNpZW50PzogUmVjb3JkPHN0cmluZywgYW55Pjtcbi8vICAgfSB7XG4vLyAgICAgY29uc3QgeyBzdHViLCBsb2dnZXIgfSA9IGFyZ3MucG9wKCk7XG4vLyAgICAgY29uc3QgdGFibGVOYW1lID0gYXJncy5zaGlmdCgpO1xuLy8gICAgIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IodGhpcy5wcmVwYXJlKTtcbi8vXG4vLyAgICAgY29uc3Qgc3BsaXQgPSBwcm9jZXNzTW9kZWwodGhpcywgbW9kZWwpO1xuLy8gICAgIC8vIGlmICgobW9kZWwgYXMgYW55KVtQZXJzaXN0ZW5jZUtleXMuTUVUQURBVEFdKSB7XG4vLyAgICAgLy8gICBsb2cuc2lsbHkoXG4vLyAgICAgLy8gICAgIGBQYXNzaW5nIGFsb25nIHBlcnNpc3RlbmNlIG1ldGFkYXRhIGZvciAkeyhtb2RlbCBhcyBhbnkpW1BlcnNpc3RlbmNlS2V5cy5NRVRBREFUQV19YFxuLy8gICAgIC8vICAgKTtcbi8vICAgICAvLyAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzcGxpdC5yZXN1bHQsIFBlcnNpc3RlbmNlS2V5cy5NRVRBREFUQSwge1xuLy8gICAgIC8vICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbi8vICAgICAvLyAgICAgd3JpdGFibGU6IGZhbHNlLFxuLy8gICAgIC8vICAgICBjb25maWd1cmFibGU6IHRydWUsXG4vLyAgICAgLy8gICAgIHZhbHVlOiAobW9kZWwgYXMgYW55KVtQZXJzaXN0ZW5jZUtleXMuTUVUQURBVEFdLFxuLy8gICAgIC8vICAgfSk7XG4vLyAgICAgLy8gfVxuLy9cbi8vICAgICBsb2cuaW5mbyhgUHJlcGFyaW5nIHJlY29yZCBmb3IgJHt0YWJsZU5hbWV9IHRhYmxlIHdpdGggcGsgJHttb2RlbFtwa119YCk7XG4vL1xuLy8gICAgIHJldHVybiB7XG4vLyAgICAgICByZWNvcmQ6IHNwbGl0LnByaXZhdGVEYXRhIGFzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4vLyAgICAgICBpZDogc3R1Yi5jcmVhdGVDb21wb3NpdGVLZXkodGFibGVOYW1lLCBbU3RyaW5nKG1vZGVsW3BrXSldKSxcbi8vICAgICAgIHRyYW5zaWVudDogc3BsaXQudHJhbnNpZW50LFxuLy8gICAgIH07XG4vLyAgIH1cbi8vXG4vLyAgIG92ZXJyaWRlIGNyZWF0ZVByZWZpeChcbi8vICAgICB0YWJsZU5hbWU6IHN0cmluZyxcbi8vICAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuLy8gICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuLy8gICAgIC4uLmFyZ3M6IGFueVtdXG4vLyAgICkge1xuLy8gICAgIGNvbnN0IGN0eDogRmFicmljQ29udHJhY3RDb250ZXh0ID0gYXJncy5wb3AoKTtcbi8vICAgICBjb25zdCBjb2xsZWN0aW9ucyA9IE9iamVjdC5rZXlzKG1vZGVsKTtcbi8vICAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gb2YgY29sbGVjdGlvbnMpIHtcbi8vICAgICAgIG1vZGVsW2NvbGxlY3Rpb25dW0NvdWNoREJLZXlzLlRBQkxFXSA9IHRhYmxlTmFtZTtcbi8vICAgICB9XG4vL1xuLy8gICAgIGNvbnN0IHJlY29yZDogUmVjb3JkPHN0cmluZywgYW55PiA9IG1vZGVsO1xuLy9cbi8vICAgICByZXR1cm4gW3RhYmxlTmFtZSwgaWQsIHJlY29yZCwgY3R4XTtcbi8vICAgfVxuLy9cbi8vICAgb3ZlcnJpZGUgdXBkYXRlUHJlZml4KFxuLy8gICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuLy8gICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4vLyAgICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4vLyAgICAgLi4uYXJnczogYW55W11cbi8vICAgKTogKHN0cmluZyB8IG51bWJlciB8IFJlY29yZDxzdHJpbmcsIGFueT4pW10ge1xuLy8gICAgIGNvbnN0IGN0eDogRmFicmljQ29udHJhY3RDb250ZXh0ID0gYXJncy5wb3AoKTtcbi8vICAgICBjb25zdCBjb2xsZWN0aW9ucyA9IE9iamVjdC5rZXlzKG1vZGVsKTtcbi8vXG4vLyAgICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIGNvbGxlY3Rpb25zKSB7XG4vLyAgICAgICBtb2RlbFtjb2xsZWN0aW9uXVtDb3VjaERCS2V5cy5UQUJMRV0gPSB0YWJsZU5hbWU7XG4vLyAgICAgfVxuLy9cbi8vICAgICBjb25zdCByZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBtb2RlbDtcbi8vXG4vLyAgICAgcmV0dXJuIFt0YWJsZU5hbWUsIGlkLCByZWNvcmQsIGN0eF07XG4vLyAgIH1cbi8vICAgb3ZlcnJpZGUgYXN5bmMgcHV0U3RhdGUoXG4vLyAgICAgc3R1YjogQ2hhaW5jb2RlU3R1Yixcbi8vICAgICBpZDogc3RyaW5nLFxuLy8gICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuLy8gICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbi8vICAgICAuLi5hcmdzOiBhbnlbXVxuLy8gICApIHtcbi8vICAgICBjb25zdCBjb2xsZWN0aW9ucyA9IE9iamVjdC5rZXlzKG1vZGVsKTtcbi8vICAgICBsZXQgcmVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4vLyAgICAgbGV0IGRhdGE6IEJ1ZmZlcjtcbi8vXG4vLyAgICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIGNvbGxlY3Rpb25zKSB7XG4vLyAgICAgICByZXMgPSBtb2RlbCFbY29sbGVjdGlvbl07XG4vLyAgICAgICB0cnkge1xuLy8gICAgICAgICBkYXRhID0gQnVmZmVyLmZyb20oXG4vLyAgICAgICAgICAgRmFicmljQ29udHJhY3RBZGFwdGVyLnNlcmlhbGl6ZXIuc2VyaWFsaXplKFxuLy8gICAgICAgICAgICAgbW9kZWwhW2NvbGxlY3Rpb25dIGFzIE1vZGVsXG4vLyAgICAgICAgICAgKVxuLy8gICAgICAgICApO1xuLy8gICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuLy8gICAgICAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkVycm9yKFxuLy8gICAgICAgICAgIGBGYWlsZWQgdG8gc2VyaWFsaXplIHJlY29yZCB3aXRoIGlkICR7aWR9OiAke2V9YFxuLy8gICAgICAgICApO1xuLy8gICAgICAgfVxuLy8gICAgICAgYXdhaXQgc3R1Yi5wdXRQcml2YXRlRGF0YShjb2xsZWN0aW9uLCBpZC50b1N0cmluZygpLCBkYXRhKTtcbi8vICAgICB9XG4vL1xuLy8gICAgIHJldHVybiByZXM7XG4vLyAgIH1cbi8vXG4vLyAgIG92ZXJyaWRlIGFzeW5jIHJlYWRTdGF0ZShcbi8vICAgICBzdHViOiBDaGFpbmNvZGVTdHViLFxuLy8gICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuLy8gICAgIGlkOiBzdHJpbmcsXG4vLyAgICAgaW5zdGFuY2U6IGFueSxcbi8vICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4vLyAgICAgLi4uYXJnczogYW55W11cbi8vICAgKSB7XG4vLyAgICAgY29uc3QgY29tcG9zZWRLZXkgPSBzdHViLmNyZWF0ZUNvbXBvc2l0ZUtleSh0YWJsZU5hbWUsIFtTdHJpbmcoaWQpXSk7XG4vLyAgICAgY29uc3QgbW9kZWwgPSBtb2RlbFRvUHJpdmF0ZShpbnN0YW5jZSk7XG4vLyAgICAgY29uc3QgY29sbGVjdGlvbnMgPSBPYmplY3Qua2V5cyhtb2RlbC5wcml2YXRlISk7XG4vLyAgICAgY29uc3QgcmVzdWx0czogYW55W10gPSBbXTtcbi8vXG4vLyAgICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIGNvbGxlY3Rpb25zKSB7XG4vLyAgICAgICB0cnkge1xuLy8gICAgICAgICBsZXQgcmVzOiBCdWZmZXIgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gYXdhaXQgc3R1Yi5nZXRQcml2YXRlRGF0YShcbi8vICAgICAgICAgICBjb2xsZWN0aW9uLFxuLy8gICAgICAgICAgIGNvbXBvc2VkS2V5XG4vLyAgICAgICAgICk7XG4vLyAgICAgICAgIGlmIChyZXMudG9TdHJpbmcoKSA9PT0gXCJcIikge1xuLy8gICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBFbnRyeSB3aXRoIGlkICR7aWR9IGRvZXNuJ3QgZXhpc3QuLi5gKTtcbi8vICAgICAgICAgfVxuLy8gICAgICAgICB0cnkge1xuLy8gICAgICAgICAgIHJlcyA9IEZhYnJpY0NvbnRyYWN0QWRhcHRlci5zZXJpYWxpemVyLmRlc2VyaWFsaXplKFxuLy8gICAgICAgICAgICAgcmVzLnRvU3RyaW5nKClcbi8vICAgICAgICAgICAgIC8vIG1vZGVsLmNvbnN0cnVjdG9yLm5hbWVcbi8vICAgICAgICAgICApO1xuLy8gICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4vLyAgICAgICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihgRmFpbGVkIHRvIHBhcnNlIHByaXZhdGUgZGF0YTogJHtlfWApO1xuLy8gICAgICAgICB9XG4vLyAgICAgICAgIHJlc3VsdHMucHVzaChyZXMpO1xuLy8gICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuLy8gICAgICAgICBpZiAoTUlTU0lOR19QUklWQVRFX0RBVEFfUkVHRVgudGVzdCgoZSBhcyBCYXNlRXJyb3IpLm1lc3NhZ2UpKVxuLy8gICAgICAgICAgIHRocm93IG5ldyBVbmF1dGhvcml6ZWRQcml2YXRlRGF0YUFjY2VzcyhlIGFzIEJhc2VFcnJvcik7XG4vLyAgICAgICAgIHRocm93IGU7XG4vLyAgICAgICB9XG4vLyAgICAgfVxuLy9cbi8vICAgICByZXR1cm4gcmVzdWx0cztcbi8vICAgfVxuLy9cbi8vICAgb3ZlcnJpZGUgYXN5bmMgZGVsZXRlU3RhdGUoXG4vLyAgICAgc3R1YjogQ2hhaW5jb2RlU3R1Yixcbi8vICAgICB0YWJsZU5hbWU6IHN0cmluZyxcbi8vICAgICBpZDogc3RyaW5nLFxuLy8gICAgIGluc3RhbmNlOiBhbnksXG4vLyAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuLy8gICAgIC4uLmFyZ3M6IGFueVtdXG4vLyAgICkge1xuLy8gICAgIGNvbnN0IGNvbXBvc2VkS2V5ID0gc3R1Yi5jcmVhdGVDb21wb3NpdGVLZXkodGFibGVOYW1lLCBbU3RyaW5nKGlkKV0pO1xuLy8gICAgIGNvbnN0IG1vZGVsID0gbW9kZWxUb1ByaXZhdGUoaW5zdGFuY2UpO1xuLy8gICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gT2JqZWN0LmtleXMobW9kZWwucHJpdmF0ZSEpO1xuLy9cbi8vICAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gb2YgY29sbGVjdGlvbnMpIHtcbi8vICAgICAgIGF3YWl0IHN0dWIuZGVsZXRlUHJpdmF0ZURhdGEoY29sbGVjdGlvbiwgY29tcG9zZWRLZXkpO1xuLy8gICAgIH1cbi8vICAgfVxuLy9cbi8vICAgb3ZlcnJpZGUgYXN5bmMgcXVlcnlSZXN1bHQoXG4vLyAgICAgc3R1YjogQ2hhaW5jb2RlU3R1Yixcbi8vICAgICByYXdJbnB1dDogYW55LFxuLy8gICAgIGluc3RhbmNlOiBhbnlcbi8vICAgKTogUHJvbWlzZTxJdGVyYXRvcnMuU3RhdGVRdWVyeUl0ZXJhdG9yPiB7XG4vLyAgICAgY29uc3QgcHJpdmF0ZURhdGEgPSBtb2RlbFRvUHJpdmF0ZShpbnN0YW5jZSkucHJpdmF0ZSE7XG4vLyAgICAgY29uc3QgY29sbGVjdGlvbiA9IE9iamVjdC5rZXlzKHByaXZhdGVEYXRhKVswXSB8fCBcIlwiO1xuLy9cbi8vICAgICBjb25zdCByZXN1bHQgPSAoYXdhaXQgc3R1Yi5nZXRQcml2YXRlRGF0YVF1ZXJ5UmVzdWx0KFxuLy8gICAgICAgY29sbGVjdGlvbixcbi8vICAgICAgIEpTT04uc3RyaW5naWZ5KHJhd0lucHV0KVxuLy8gICAgICkpIGFzIGFueTtcbi8vXG4vLyAgICAgY29uc3QgaXRlcmF0b3IgPSByZXN1bHQuaXRlcmF0b3IgYXMgSXRlcmF0b3JzLlN0YXRlUXVlcnlJdGVyYXRvcjtcbi8vXG4vLyAgICAgcmV0dXJuIGl0ZXJhdG9yO1xuLy8gICB9XG4vL1xuLy8gICBvdmVycmlkZSBhc3luYyBxdWVyeVJlc3VsdFBhZ2luYXRlZChcbi8vICAgICBzdHViOiBDaGFpbmNvZGVTdHViLFxuLy8gICAgIHJhd0lucHV0OiBhbnksXG4vLyAgICAgbGltaXQ6IG51bWJlciA9IDI1MCxcbi8vICAgICBza2lwOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4vLyAgICAgaW5zdGFuY2U6IGFueVxuLy8gICApOiBQcm9taXNlPFN0YXRlUXVlcnlSZXNwb25zZTxJdGVyYXRvcnMuU3RhdGVRdWVyeUl0ZXJhdG9yPj4ge1xuLy8gICAgIGNvbnN0IHByaXZhdGVEYXRhID0gbW9kZWxUb1ByaXZhdGUoaW5zdGFuY2UpLnByaXZhdGUhO1xuLy8gICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBPYmplY3Qua2V5cyhwcml2YXRlRGF0YSlbMF0gfHwgXCJcIjtcbi8vXG4vLyAgICAgY29uc3QgaXRlcmF0b3IgPSBhd2FpdCBzdHViLmdldFByaXZhdGVEYXRhUXVlcnlSZXN1bHQoXG4vLyAgICAgICBjb2xsZWN0aW9uLFxuLy8gICAgICAgSlNPTi5zdHJpbmdpZnkocmF3SW5wdXQpXG4vLyAgICAgKTtcbi8vXG4vLyAgICAgY29uc3QgcmVzdWx0czogYW55W10gPSBbXTtcbi8vICAgICBsZXQgY291bnQgPSAwO1xuLy8gICAgIGxldCByZWFjaGVkQm9va21hcmsgPSBza2lwID8gZmFsc2UgOiB0cnVlO1xuLy8gICAgIGxldCBsYXN0S2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbi8vXG4vLyAgICAgd2hpbGUgKHRydWUpIHtcbi8vICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGl0ZXJhdG9yLm5leHQoKTtcbi8vXG4vLyAgICAgICBpZiAocmVzLnZhbHVlICYmIHJlcy52YWx1ZS52YWx1ZS50b1N0cmluZygpKSB7XG4vLyAgICAgICAgIGNvbnN0IHJlY29yZEtleSA9IHJlcy52YWx1ZS5rZXk7XG4vLyAgICAgICAgIGNvbnN0IHJlY29yZFZhbHVlID0gKHJlcy52YWx1ZS52YWx1ZSBhcyBhbnkpLnRvU3RyaW5nKFwidXRmOFwiKTtcbi8vXG4vLyAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBza2lwLCBza2lwIHVudGlsIHdlIHJlYWNoIGl0XG4vLyAgICAgICAgIGlmICghcmVhY2hlZEJvb2ttYXJrKSB7XG4vLyAgICAgICAgICAgaWYgKHJlY29yZEtleSA9PT0gc2tpcD8udG9TdHJpbmcoKSkge1xuLy8gICAgICAgICAgICAgcmVhY2hlZEJvb2ttYXJrID0gdHJ1ZTtcbi8vICAgICAgICAgICB9XG4vLyAgICAgICAgICAgY29udGludWU7XG4vLyAgICAgICAgIH1cbi8vXG4vLyAgICAgICAgIHJlc3VsdHMucHVzaCh7IEtleTogcmVjb3JkS2V5LCBSZWNvcmQ6IEpTT04ucGFyc2UocmVjb3JkVmFsdWUpIH0pO1xuLy8gICAgICAgICBsYXN0S2V5ID0gcmVjb3JkS2V5O1xuLy8gICAgICAgICBjb3VudCsrO1xuLy9cbi8vICAgICAgICAgaWYgKGNvdW50ID49IGxpbWl0KSB7XG4vLyAgICAgICAgICAgYXdhaXQgaXRlcmF0b3IuY2xvc2UoKTtcbi8vICAgICAgICAgICByZXR1cm4ge1xuLy8gICAgICAgICAgICAgaXRlcmF0b3I6IHJlc3VsdHMgYXMgdW5rbm93biBhcyBJdGVyYXRvcnMuU3RhdGVRdWVyeUl0ZXJhdG9yLFxuLy8gICAgICAgICAgICAgbWV0YWRhdGE6IHtcbi8vICAgICAgICAgICAgICAgZmV0Y2hlZFJlY29yZHNDb3VudDogcmVzdWx0cy5sZW5ndGgsXG4vLyAgICAgICAgICAgICAgIGJvb2ttYXJrOiBsYXN0S2V5LFxuLy8gICAgICAgICAgICAgfSxcbi8vICAgICAgICAgICB9O1xuLy8gICAgICAgICB9XG4vLyAgICAgICB9XG4vL1xuLy8gICAgICAgaWYgKHJlcy5kb25lKSB7XG4vLyAgICAgICAgIGF3YWl0IGl0ZXJhdG9yLmNsb3NlKCk7XG4vLyAgICAgICAgIHJldHVybiB7XG4vLyAgICAgICAgICAgaXRlcmF0b3I6IHJlc3VsdHMgYXMgdW5rbm93biBhcyBJdGVyYXRvcnMuU3RhdGVRdWVyeUl0ZXJhdG9yLFxuLy8gICAgICAgICAgIG1ldGFkYXRhOiB7XG4vLyAgICAgICAgICAgICBmZXRjaGVkUmVjb3Jkc0NvdW50OiByZXN1bHRzLmxlbmd0aCxcbi8vICAgICAgICAgICAgIGJvb2ttYXJrOiBcIlwiLFxuLy8gICAgICAgICAgIH0sXG4vLyAgICAgICAgIH07XG4vLyAgICAgICB9XG4vLyAgICAgfVxuLy8gICAgIC8vIHJldHVybiAoYXdhaXQgc3R1Yi5nZXRRdWVyeVJlc3VsdFdpdGhQYWdpbmF0aW9uKFxuLy8gICAgIC8vICAgSlNPTi5zdHJpbmdpZnkocmF3SW5wdXQpLFxuLy8gICAgIC8vICAgbGltaXQsXG4vLyAgICAgLy8gICBza2lwPy50b1N0cmluZygpXG4vLyAgICAgLy8gKSkgYXMgU3RhdGVRdWVyeVJlc3BvbnNlPEl0ZXJhdG9ycy5TdGF0ZVF1ZXJ5SXRlcmF0b3I+O1xuLy8gICB9XG4vL1xuLy8gICAvKipcbi8vICAgICogQGRlc2NyaXB0aW9uIEV4ZWN1dGVzIGEgcmF3IHF1ZXJ5IGFnYWluc3QgdGhlIHN0YXRlIGRhdGFiYXNlXG4vLyAgICAqIEBzdW1tYXJ5IFBlcmZvcm1zIGEgcmljaCBxdWVyeSB1c2luZyBDb3VjaERCIHN5bnRheCBhZ2FpbnN0IHRoZSBGYWJyaWMgc3RhdGUgZGF0YWJhc2Vcbi8vICAgICogQHRlbXBsYXRlIFIgLSBUaGUgcmV0dXJuIHR5cGVcbi8vICAgICogQHBhcmFtIHtNYW5nb1F1ZXJ5fSByYXdJbnB1dCAtIFRoZSBNYW5nbyBRdWVyeSB0byBleGVjdXRlXG4vLyAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZG9jc09ubHkgLSBXaGV0aGVyIHRvIHJldHVybiBvbmx5IGRvY3VtZW50cyAobm90IHVzZWQgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbilcbi8vICAgICogQHBhcmFtIHsuLi5hbnlbXX0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzLCBpbmNsdWRpbmcgdGhlIGNoYWluY29kZSBzdHViIGFuZCBsb2dnZXJcbi8vICAgICogQHJldHVybiB7UHJvbWlzZTxSPn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIHF1ZXJ5IHJlc3VsdHNcbi8vICAgICogQG1lcm1haWRcbi8vICAgICogc2VxdWVuY2VEaWFncmFtXG4vLyAgICAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4vLyAgICAqICAgcGFydGljaXBhbnQgRmFicmljQ29udHJhY3RBZGFwdGVyXG4vLyAgICAqICAgcGFydGljaXBhbnQgU3R1YlxuLy8gICAgKiAgIHBhcnRpY2lwYW50IFN0YXRlREJcbi8vICAgICpcbi8vICAgICogICBDYWxsZXItPj5GYWJyaWNDb250cmFjdEFkYXB0ZXI6IHJhdyhyYXdJbnB1dCwgZG9jc09ubHksIGN0eClcbi8vICAgICogICBGYWJyaWNDb250cmFjdEFkYXB0ZXItPj5GYWJyaWNDb250cmFjdEFkYXB0ZXI6IEV4dHJhY3QgbGltaXQgYW5kIHNraXBcbi8vICAgICogICBhbHQgV2l0aCBwYWdpbmF0aW9uXG4vLyAgICAqICAgICBGYWJyaWNDb250cmFjdEFkYXB0ZXItPj5TdHViOiBnZXRRdWVyeVJlc3VsdFdpdGhQYWdpbmF0aW9uKHF1ZXJ5LCBsaW1pdCwgc2tpcClcbi8vICAgICogICBlbHNlIFdpdGhvdXQgcGFnaW5hdGlvblxuLy8gICAgKiAgICAgRmFicmljQ29udHJhY3RBZGFwdGVyLT4+U3R1YjogZ2V0UXVlcnlSZXN1bHQocXVlcnkpXG4vLyAgICAqICAgZW5kXG4vLyAgICAqICAgU3R1Yi0+PlN0YXRlREI6IEV4ZWN1dGUgcXVlcnlcbi8vICAgICogICBTdGF0ZURCLS0+PlN0dWI6IEl0ZXJhdG9yXG4vLyAgICAqICAgU3R1Yi0tPj5GYWJyaWNDb250cmFjdEFkYXB0ZXI6IEl0ZXJhdG9yXG4vLyAgICAqICAgRmFicmljQ29udHJhY3RBZGFwdGVyLT4+RmFicmljQ29udHJhY3RBZGFwdGVyOiByZXN1bHRJdGVyYXRvcihsb2csIGl0ZXJhdG9yKVxuLy8gICAgKiAgIEZhYnJpY0NvbnRyYWN0QWRhcHRlci0tPj5DYWxsZXI6IHJlc3VsdHNcbi8vICAgICovXG4vLyAgIG92ZXJyaWRlIGFzeW5jIHJhdzxSPihcbi8vICAgICByYXdJbnB1dDogTWFuZ29RdWVyeSxcbi8vICAgICBkb2NzT25seTogYm9vbGVhbixcbi8vICAgICAuLi5hcmdzOiBhbnlbXVxuLy8gICApOiBQcm9taXNlPFI+IHtcbi8vICAgICBjb25zdCB7IHN0dWIsIGxvZ2dlciB9ID0gYXJncy5wb3AoKTtcbi8vICAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKHRoaXMucmF3KTtcbi8vICAgICBjb25zdCB7IHNraXAsIGxpbWl0IH0gPSByYXdJbnB1dDtcbi8vICAgICBjb25zdCBpbnN0YW5jZSA9IGFyZ3Muc2hpZnQoKTtcbi8vICAgICBsZXQgaXRlcmF0b3I6IEl0ZXJhdG9ycy5TdGF0ZVF1ZXJ5SXRlcmF0b3I7XG4vLyAgICAgaWYgKGxpbWl0IHx8IHNraXApIHtcbi8vICAgICAgIGRlbGV0ZSByYXdJbnB1dFtcImxpbWl0XCJdO1xuLy8gICAgICAgZGVsZXRlIHJhd0lucHV0W1wic2tpcFwiXTtcbi8vICAgICAgIGxvZy5kZWJ1Zyhcbi8vICAgICAgICAgYFJldHJpZXZpbmcgcGFnaW5hdGVkIGl0ZXJhdG9yOiBsaW1pdDogJHtsaW1pdH0vIHNraXA6ICR7c2tpcH1gXG4vLyAgICAgICApO1xuLy8gICAgICAgY29uc3QgcmVzcG9uc2U6IFN0YXRlUXVlcnlSZXNwb25zZTxJdGVyYXRvcnMuU3RhdGVRdWVyeUl0ZXJhdG9yPiA9XG4vLyAgICAgICAgIChhd2FpdCB0aGlzLnF1ZXJ5UmVzdWx0UGFnaW5hdGVkKFxuLy8gICAgICAgICAgIHN0dWIsXG4vLyAgICAgICAgICAgcmF3SW5wdXQsXG4vLyAgICAgICAgICAgbGltaXQgfHwgMjUwLFxuLy8gICAgICAgICAgIChza2lwIGFzIGFueSk/LnRvU3RyaW5nKCksXG4vLyAgICAgICAgICAgaW5zdGFuY2Vcbi8vICAgICAgICAgKSkgYXMgU3RhdGVRdWVyeVJlc3BvbnNlPEl0ZXJhdG9ycy5TdGF0ZVF1ZXJ5SXRlcmF0b3I+O1xuLy8gICAgICAgaXRlcmF0b3IgPSByZXNwb25zZS5pdGVyYXRvcjtcbi8vICAgICB9IGVsc2Uge1xuLy8gICAgICAgbG9nLmRlYnVnKFwiUmV0cmlldmluZyBpdGVyYXRvclwiKTtcbi8vICAgICAgIGl0ZXJhdG9yID0gKGF3YWl0IHRoaXMucXVlcnlSZXN1bHQoXG4vLyAgICAgICAgIHN0dWIsXG4vLyAgICAgICAgIHJhd0lucHV0LFxuLy8gICAgICAgICBpbnN0YW5jZVxuLy8gICAgICAgKSkgYXMgSXRlcmF0b3JzLlN0YXRlUXVlcnlJdGVyYXRvcjtcbi8vICAgICB9XG4vLyAgICAgbG9nLmRlYnVnKFwiSXRlcmF0b3IgYWNxdWlyZWRcIik7XG4vL1xuLy8gICAgIGNvbnN0IHJlc3VsdHMgPSAoYXdhaXQgdGhpcy5yZXN1bHRJdGVyYXRvcihsb2csIGl0ZXJhdG9yKSkgYXMgUjtcbi8vICAgICBsb2cuZGVidWcoXG4vLyAgICAgICBgcmV0dXJuaW5nIHswfSByZXN1bHRzYCxcbi8vICAgICAgIGAke0FycmF5LmlzQXJyYXkocmVzdWx0cykgPyByZXN1bHRzLmxlbmd0aCA6IDF9YFxuLy8gICAgICk7XG4vLyAgICAgcmV0dXJuIHJlc3VsdHM7XG4vLyAgIH1cbi8vIH1cbiJdfQ==
426
+ //# sourceMappingURL=ContractPrivateDataAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContractPrivateDataAdapter.js","sourceRoot":"","sources":["../../src/contracts/ContractPrivateDataAdapter.ts"],"names":[],"mappings":"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"}
@@ -438,4 +438,4 @@ async function populate(context, data, key, model) {
438
438
  const res = await fetchPopulateValues(context, model, key, isArr ? nested : [nested], this.adapter.alias);
439
439
  model[key] = isArr ? res : res[0];
440
440
  }
441
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ29uc3RydWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9GYWJyaWNDb25zdHJ1Y3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpRUEsNENBcUNDO0FBaURELDRDQXlDQztBQTJDRCw0Q0FrQ0M7QUF3REQsOENBd0NDO0FBa0RELDhDQXNDQztBQXdERCw0QkFvREM7QUFqakJELHlDQVN3QjtBQUN4Qix5RUFBdUQ7QUFDdkQsMkRBQTZFO0FBSTdFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaURHO0FBQ0ksS0FBSyxVQUFVLGdCQUFnQixDQU1wQyxPQUE4QixFQUM5QixJQUFPLEVBQ1AsR0FBWSxFQUNaLEtBQVE7SUFFUixNQUFNLGFBQWEsR0FBUSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsSUFBSSxDQUFDLGFBQWE7UUFBRSxPQUFPO0lBRTNCLElBQUksT0FBTyxhQUFhLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDdEMsTUFBTSxTQUFTLEdBQUcsSUFBQSxpQ0FBMEIsRUFDMUMsS0FBSyxFQUNMLEdBQUcsRUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FDbkIsQ0FBQztRQUNGLE1BQU0sSUFBSSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUQsTUFBTSxJQUFBLDRCQUFxQixFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRSxLQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDO1FBQ3BDLE9BQU87SUFDVCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQUs7UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFD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dCI6WyJpbXBvcnQge1xuICBjYWNoZU1vZGVsRm9yUG9wdWxhdGUsXG4gIENhc2NhZGUsXG4gIGNyZWF0ZU9yVXBkYXRlLFxuICBnZXRQb3B1bGF0ZUtleSxcbiAgUmVsYXRpb25zTWV0YWRhdGEsXG4gIFJlcG8sXG4gIFJlcG9zaXRvcnksXG4gIHJlcG9zaXRvcnlGcm9tVHlwZU1ldGFkYXRhLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQ29udGV4dE9mUmVwb3NpdG9yeSwgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgRmFicmljQ29udHJhY3RSZXBvc2l0b3J5IH0gZnJvbSBcIi4vRmFicmljQ29udHJhY3RSZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBGYWJyaWNDb250cmFjdENvbnRleHQgfSBmcm9tIFwiLi9Db250cmFjdENvbnRleHRcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSGFuZGxlcyBvbmUtdG8tb25lIHJlbGF0aW9uc2hpcCBjcmVhdGlvblxuICogQHN1bW1hcnkgUHJvY2Vzc2VzIGEgb25lLXRvLW9uZSByZWxhdGlvbnNoaXAgd2hlbiBjcmVhdGluZyBhIG1vZGVsLCBlaXRoZXIgYnkgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgbW9kZWwgb3IgY3JlYXRpbmcgYSBuZXcgb25lXG4gKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIGV4dGVuZGluZyBNb2RlbFxuICogQHRlbXBsYXRlIFIgLSBUaGUgcmVwb3NpdG9yeSB0eXBlIGV4dGVuZGluZyBSZXBvPE0sIEYsIEM+XG4gKiBAdGVtcGxhdGUgViAtIFRoZSByZWxhdGlvbnMgbWV0YWRhdGEgdHlwZSBleHRlbmRpbmcgUmVsYXRpb25zTWV0YWRhdGFcbiAqIEB0ZW1wbGF0ZSBGIC0gVGhlIHJlcG9zaXRvcnkgZmxhZ3MgdHlwZVxuICogQHRlbXBsYXRlIEMgLSBUaGUgY29udGV4dCB0eXBlIGV4dGVuZGluZyBDb250ZXh0PEY+XG4gKiBAcGFyYW0ge1J9IHRoaXMgLSBUaGUgcmVwb3NpdG9yeSBpbnN0YW5jZVxuICogQHBhcmFtIHtDb250ZXh0PEY+fSBjb250ZXh0IC0gVGhlIGNvbnRleHQgZm9yIHRoZSBvcGVyYXRpb25cbiAqIEBwYXJhbSB7Vn0gZGF0YSAtIFRoZSByZWxhdGlvbnMgbWV0YWRhdGFcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSByZWxhdGlvbnNoaXBcbiAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2VcbiAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZVxuICogQGZ1bmN0aW9uIG9uZVRvT25lT25DcmVhdGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAqICAgcGFydGljaXBhbnQgb25lVG9PbmVPbkNyZWF0ZVxuICogICBwYXJ0aWNpcGFudCByZXBvc2l0b3J5RnJvbVR5cGVNZXRhZGF0YVxuICogICBwYXJ0aWNpcGFudCBNb2RlbFxuICogICBwYXJ0aWNpcGFudCBSZXBvc2l0b3J5XG4gKiAgIHBhcnRpY2lwYW50IGNhY2hlTW9kZWxGb3JQb3B1bGF0ZVxuICpcbiAqICAgQ2FsbGVyLT4+b25lVG9PbmVPbkNyZWF0ZTogdGhpcywgY29udGV4dCwgZGF0YSwga2V5LCBtb2RlbFxuICogICBvbmVUb09uZU9uQ3JlYXRlLT4+b25lVG9PbmVPbkNyZWF0ZTogY2hlY2sgaWYgcHJvcGVydHlWYWx1ZSBleGlzdHNcbiAqXG4gKiAgIGFsdCBwcm9wZXJ0eVZhbHVlIGlzIG5vdCBhbiBvYmplY3RcbiAqICAgICBvbmVUb09uZU9uQ3JlYXRlLT4+cmVwb3NpdG9yeUZyb21UeXBlTWV0YWRhdGE6IG1vZGVsLCBrZXlcbiAqICAgICByZXBvc2l0b3J5RnJvbVR5cGVNZXRhZGF0YS0tPj5vbmVUb09uZU9uQ3JlYXRlOiBpbm5lclJlcG9cbiAqICAgICBvbmVUb09uZU9uQ3JlYXRlLT4+aW5uZXJSZXBvOiByZWFkKHByb3BlcnR5VmFsdWUpXG4gKiAgICAgaW5uZXJSZXBvLS0+Pm9uZVRvT25lT25DcmVhdGU6IHJlYWRcbiAqICAgICBvbmVUb09uZU9uQ3JlYXRlLT4+Y2FjaGVNb2RlbEZvclBvcHVsYXRlOiBjb250ZXh0LCBtb2RlbCwga2V5LCBwcm9wZXJ0eVZhbHVlLCByZWFkXG4gKiAgICAgb25lVG9PbmVPbkNyZWF0ZS0+Pm9uZVRvT25lT25DcmVhdGU6IHNldCBtb2RlbFtrZXldID0gcHJvcGVydHlWYWx1ZVxuICogICBlbHNlIHByb3BlcnR5VmFsdWUgaXMgYW4gb2JqZWN0XG4gKiAgICAgb25lVG9PbmVPbkNyZWF0ZS0+Pk1vZGVsOiBnZXQoZGF0YS5jbGFzcylcbiAqICAgICBNb2RlbC0tPj5vbmVUb09uZU9uQ3JlYXRlOiBjb25zdHJ1Y3RvclxuICogICAgIG9uZVRvT25lT25DcmVhdGUtPj5SZXBvc2l0b3J5OiBmb3JNb2RlbChjb25zdHJ1Y3RvcilcbiAqICAgICBSZXBvc2l0b3J5LS0+Pm9uZVRvT25lT25DcmVhdGU6IHJlcG9cbiAqICAgICBvbmVUb09uZU9uQ3JlYXRlLT4+cmVwbzogY3JlYXRlKHByb3BlcnR5VmFsdWUpXG4gKiAgICAgcmVwby0tPj5vbmVUb09uZU9uQ3JlYXRlOiBjcmVhdGVkXG4gKiAgICAgb25lVG9PbmVPbkNyZWF0ZS0+PmZpbmRQcmltYXJ5S2V5OiBjcmVhdGVkXG4gKiAgICAgZmluZFByaW1hcnlLZXktLT4+b25lVG9PbmVPbkNyZWF0ZTogcGtcbiAqICAgICBvbmVUb09uZU9uQ3JlYXRlLT4+Y2FjaGVNb2RlbEZvclBvcHVsYXRlOiBjb250ZXh0LCBtb2RlbCwga2V5LCBjcmVhdGVkW3BrXSwgY3JlYXRlZFxuICogICAgIG9uZVRvT25lT25DcmVhdGUtPj5vbmVUb09uZU9uQ3JlYXRlOiBzZXQgbW9kZWxba2V5XSA9IGNyZWF0ZWRbcGtdXG4gKiAgIGVuZFxuICpcbiAqICAgb25lVG9PbmVPbkNyZWF0ZS0tPj5DYWxsZXI6IHZvaWRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9uZVRvT25lT25DcmVhdGU8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIEZhYnJpY0NvbnRyYWN0UmVwb3NpdG9yeTxNPixcbiAgViBleHRlbmRzIFJlbGF0aW9uc01ldGFkYXRhLFxuPihcbiAgdGhpczogUixcbiAgY29udGV4dDogRmFicmljQ29udHJhY3RDb250ZXh0LFxuICBkYXRhOiBWLFxuICBrZXk6IGtleW9mIE0sXG4gIG1vZGVsOiBNXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcHJvcGVydHlWYWx1ZTogYW55ID0gbW9kZWxba2V5XTtcbiAgaWYgKCFwcm9wZXJ0eVZhbHVlKSByZXR1cm47XG5cbiAgaWYgKHR5cGVvZiBwcm9wZXJ0eVZhbHVlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgY29uc3QgaW5uZXJSZXBvID0gcmVwb3NpdG9yeUZyb21UeXBlTWV0YWRhdGEoXG4gICAgICBtb2RlbCxcbiAgICAgIGtleSxcbiAgICAgIHRoaXMuYWRhcHRlci5hbGlhc1xuICAgICk7XG4gICAgY29uc3QgcmVhZCA9IGF3YWl0IGlubmVyUmVwby5yZWFkKHByb3BlcnR5VmFsdWUsIGNvbnRleHQpO1xuICAgIGF3YWl0IGNhY2hlTW9kZWxGb3JQb3B1bGF0ZShjb250ZXh0LCBtb2RlbCwga2V5LCBwcm9wZXJ0eVZhbHVlLCByZWFkKTtcbiAgICAobW9kZWwgYXMgYW55KVtrZXldID0gcHJvcGVydHlWYWx1ZTtcbiAgICByZXR1cm47XG4gIH1cblxuICBkYXRhLmNsYXNzID1cbiAgICB0eXBlb2YgZGF0YS5jbGFzcyA9PT0gXCJzdHJpbmdcIiA/IGRhdGEuY2xhc3MgOiAoZGF0YS5jbGFzcyBhcyBhbnkpKCkubmFtZTtcblxuICBjb25zdCBjb25zdHJ1Y3RvciA9IE1vZGVsLmdldChkYXRhLmNsYXNzIGFzIHVua25vd24gYXMgc3RyaW5nKTtcbiAgaWYgKCFjb25zdHJ1Y3RvcilcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgQ291bGQgbm90IGZpbmQgbW9kZWwgJHtkYXRhLmNsYXNzfWApO1xuICBjb25zdCByZXBvOiBSZXBvPGFueT4gPSBSZXBvc2l0b3J5LmZvck1vZGVsKGNvbnN0cnVjdG9yLCB0aGlzLmFkYXB0ZXIuYWxpYXMpO1xuICBjb25zdCBjcmVhdGVkID0gYXdhaXQgcmVwby5jcmVhdGUocHJvcGVydHlWYWx1ZSwgY29udGV4dCk7XG4gIGNvbnN0IHBrID0gTW9kZWwucGsoY3JlYXRlZCk7XG4gIGF3YWl0IGNhY2hlTW9kZWxGb3JQb3B1bGF0ZShjb250ZXh0LCBtb2RlbCwga2V5LCBjcmVhdGVkW3BrXSwgY3JlYXRlZCk7XG4gIChtb2RlbCBhcyBhbnkpW2tleV0gPSBjcmVhdGVkW3BrXTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSGFuZGxlcyBvbmUtdG8tb25lIHJlbGF0aW9uc2hpcCB1cGRhdGVzXG4gKiBAc3VtbWFyeSBQcm9jZXNzZXMgYSBvbmUtdG8tb25lIHJlbGF0aW9uc2hpcCB3aGVuIHVwZGF0aW5nIGEgbW9kZWwsIGVpdGhlciBieSByZWZlcmVuY2luZyBhbiBleGlzdGluZyBtb2RlbCBvciB1cGRhdGluZyB0aGUgcmVsYXRlZCBtb2RlbFxuICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSBleHRlbmRpbmcgTW9kZWxcbiAqIEB0ZW1wbGF0ZSBSIC0gVGhlIHJlcG9zaXRvcnkgdHlwZSBleHRlbmRpbmcgUmVwbzxNLCBGLCBDPlxuICogQHRlbXBsYXRlIFYgLSBUaGUgcmVsYXRpb25zIG1ldGFkYXRhIHR5cGUgZXh0ZW5kaW5nIFJlbGF0aW9uc01ldGFkYXRhXG4gKiBAdGVtcGxhdGUgRiAtIFRoZSByZXBvc2l0b3J5IGZsYWdzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBDIC0gVGhlIGNvbnRleHQgdHlwZSBleHRlbmRpbmcgQ29udGV4dDxGPlxuICogQHBhcmFtIHtSfSB0aGlzIC0gVGhlIHJlcG9zaXRvcnkgaW5zdGFuY2VcbiAqIEBwYXJhbSB7Q29udGV4dDxGPn0gY29udGV4dCAtIFRoZSBjb250ZXh0IGZvciB0aGUgb3BlcmF0aW9uXG4gKiBAcGFyYW0ge1Z9IGRhdGEgLSBUaGUgcmVsYXRpb25zIG1ldGFkYXRhXG4gKiBAcGFyYW0ga2V5IC0gVGhlIHByb3BlcnR5IGtleSBvZiB0aGUgcmVsYXRpb25zaGlwXG4gKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlXG4gKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVcbiAqIEBmdW5jdGlvbiBvbmVUb09uZU9uVXBkYXRlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gKiAgIHBhcnRpY2lwYW50IG9uZVRvT25lT25VcGRhdGVcbiAqICAgcGFydGljaXBhbnQgcmVwb3NpdG9yeUZyb21UeXBlTWV0YWRhdGFcbiAqICAgcGFydGljaXBhbnQgY3JlYXRlT3JVcGRhdGVcbiAqICAgcGFydGljaXBhbnQgZmluZFByaW1hcnlLZXlcbiAqICAgcGFydGljaXBhbnQgY2FjaGVNb2RlbEZvclBvcHVsYXRlXG4gKlxuICogICBDYWxsZXItPj5vbmVUb09uZU9uVXBkYXRlOiB0aGlzLCBjb250ZXh0LCBkYXRhLCBrZXksIG1vZGVsXG4gKiAgIG9uZVRvT25lT25VcGRhdGUtPj5vbmVUb09uZU9uVXBkYXRlOiBjaGVjayBpZiBwcm9wZXJ0eVZhbHVlIGV4aXN0c1xuICogICBvbmVUb09uZU9uVXBkYXRlLT4+b25lVG9PbmVPblVwZGF0ZTogY2hlY2sgaWYgY2FzY2FkZS51cGRhdGUgaXMgQ0FTQ0FERVxuICpcbiAqICAgYWx0IHByb3BlcnR5VmFsdWUgaXMgbm90IGFuIG9iamVjdFxuICogICAgIG9uZVRvT25lT25VcGRhdGUtPj5yZXBvc2l0b3J5RnJvbVR5cGVNZXRhZGF0YTogbW9kZWwsIGtleVxuICogICAgIHJlcG9zaXRvcnlGcm9tVHlwZU1ldGFkYXRhLS0+Pm9uZVRvT25lT25VcGRhdGU6IGlubmVyUmVwb1xuICogICAgIG9uZVRvT25lT25VcGRhdGUtPj5pbm5lclJlcG86IHJlYWQocHJvcGVydHlWYWx1ZSlcbiAqICAgICBpbm5lclJlcG8tLT4+b25lVG9PbmVPblVwZGF0ZTogcmVhZFxuICogICAgIG9uZVRvT25lT25VcGRhdGUtPj5jYWNoZU1vZGVsRm9yUG9wdWxhdGU6IGNvbnRleHQsIG1vZGVsLCBrZXksIHByb3BlcnR5VmFsdWUsIHJlYWRcbiAqICAgICBvbmVUb09uZU9uVXBkYXRlLT4+b25lVG9PbmVPblVwZGF0ZTogc2V0IG1vZGVsW2tleV0gPSBwcm9wZXJ0eVZhbHVlXG4gKiAgIGVsc2UgcHJvcGVydHlWYWx1ZSBpcyBhbiBvYmplY3RcbiAqICAgICBvbmVUb09uZU9uVXBkYXRlLT4+Y3JlYXRlT3JVcGRhdGU6IG1vZGVsW2tleV0sIGNvbnRleHRcbiAqICAgICBjcmVhdGVPclVwZGF0ZS0tPj5vbmVUb09uZU9uVXBkYXRlOiB1cGRhdGVkXG4gKiAgICAgb25lVG9PbmVPblVwZGF0ZS0+PmZpbmRQcmltYXJ5S2V5OiB1cGRhdGVkXG4gKiAgICAgZmluZFByaW1hcnlLZXktLT4+b25lVG9PbmVPblVwZGF0ZTogcGtcbiAqICAgICBvbmVUb09uZU9uVXBkYXRlLT4+Y2FjaGVNb2RlbEZvclBvcHVsYXRlOiBjb250ZXh0LCBtb2RlbCwga2V5LCB1cGRhdGVkW3BrXSwgdXBkYXRlZFxuICogICAgIG9uZVRvT25lT25VcGRhdGUtPj5vbmVUb09uZU9uVXBkYXRlOiBzZXQgbW9kZWxba2V5XSA9IHVwZGF0ZWRbcGtdXG4gKiAgIGVuZFxuICpcbiAqICAgb25lVG9PbmVPblVwZGF0ZS0tPj5DYWxsZXI6IHZvaWRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9uZVRvT25lT25VcGRhdGU8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIEZhYnJpY0NvbnRyYWN0UmVwb3NpdG9yeTxNPixcbiAgViBleHRlbmRzIFJlbGF0aW9uc01ldGFkYXRhLFxuPihcbiAgdGhpczogUixcbiAgY29udGV4dDogRmFicmljQ29udHJhY3RDb250ZXh0LFxuICBkYXRhOiBWLFxuICBrZXk6IGtleW9mIE0sXG4gIG1vZGVsOiBNXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcHJvcGVydHlWYWx1ZTogYW55ID0gbW9kZWxba2V5XTtcbiAgaWYgKCFwcm9wZXJ0eVZhbHVlKSByZXR1cm47XG4gIGlmIChkYXRhLmNhc2NhZGUudXBkYXRlICE9PSBDYXNjYWRlLkNBU0NBREUpIHJldHVybjtcblxuICBpZiAodHlwZW9mIHByb3BlcnR5VmFsdWUgIT09IFwib2JqZWN0XCIpIHtcbiAgICBjb25zdCBpbm5lclJlcG8gPSByZXBvc2l0b3J5RnJvbVR5cGVNZXRhZGF0YShcbiAgICAgIG1vZGVsLFxuICAgICAga2V5LFxuICAgICAgdGhpcy5hZGFwdGVyLmFsaWFzXG4gICAgKTtcbiAgICBjb25zdCByZWFkID0gYXdhaXQgaW5uZXJSZXBvLnJlYWQocHJvcGVydHlWYWx1ZSwgY29udGV4dCk7XG4gICAgYXdhaXQgY2FjaGVNb2RlbEZvclBvcHVsYXRlKGNvbnRleHQsIG1vZGVsLCBrZXksIHByb3BlcnR5VmFsdWUsIHJlYWQpO1xuICAgIChtb2RlbCBhcyBhbnkpW2tleV0gPSBwcm9wZXJ0eVZhbHVlO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWQ6IGFueSA9IGF3YWl0IGNyZWF0ZU9yVXBkYXRlKFxuICAgIG1vZGVsW2tleV0gYXMgTSxcbiAgICBjb250ZXh0LFxuICAgIHRoaXMuYWRhcHRlci5hbGlhc1xuICApO1xuICBjb25zdCBwayA9IE1vZGVsLnBrKHVwZGF0ZWQpO1xuICBhd2FpdCBjYWNoZU1vZGVsRm9yUG9wdWxhdGUoXG4gICAgY29udGV4dCxcbiAgICBtb2RlbCxcbiAgICBrZXksXG4gICAgdXBkYXRlZFtwa10gYXMgc3RyaW5nLFxuICAgIHVwZGF0ZWRcbiAgKTtcbiAgbW9kZWxba2V5XSA9IHVwZGF0ZWRbcGtdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBIYW5kbGVzIG9uZS10by1vbmUgcmVsYXRpb25zaGlwIGRlbGV0aW9uXG4gKiBAc3VtbWFyeSBQcm9jZXNzZXMgYSBvbmUtdG8tb25lIHJlbGF0aW9uc2hpcCB3aGVuIGRlbGV0aW5nIGEgbW9kZWwsIGRlbGV0aW5nIHRoZSByZWxhdGVkIG1vZGVsIGlmIGNhc2NhZGUgaXMgZW5hYmxlZFxuICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSBleHRlbmRpbmcgTW9kZWxcbiAqIEB0ZW1wbGF0ZSBSIC0gVGhlIHJlcG9zaXRvcnkgdHlwZSBleHRlbmRpbmcgUmVwbzxNLCBGLCBDPlxuICogQHRlbXBsYXRlIFYgLSBUaGUgcmVsYXRpb25zIG1ldGFkYXRhIHR5cGUgZXh0ZW5kaW5nIFJlbGF0aW9uc01ldGFkYXRhXG4gKiBAdGVtcGxhdGUgRiAtIFRoZSByZXBvc2l0b3J5IGZsYWdzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBDIC0gVGhlIGNvbnRleHQgdHlwZSBleHRlbmRpbmcgQ29udGV4dDxGPlxuICogQHBhcmFtIHtSfSB0aGlzIC0gVGhlIHJlcG9zaXRvcnkgaW5zdGFuY2VcbiAqIEBwYXJhbSB7Q29udGV4dDxGPn0gY29udGV4dCAtIFRoZSBjb250ZXh0IGZvciB0aGUgb3BlcmF0aW9uXG4gKiBAcGFyYW0ge1Z9IGRhdGEgLSBUaGUgcmVsYXRpb25zIG1ldGFkYXRhXG4gKiBAcGFyYW0ga2V5IC0gVGhlIHByb3BlcnR5IGtleSBvZiB0aGUgcmVsYXRpb25zaGlwXG4gKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlXG4gKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVcbiAqIEBmdW5jdGlvbiBvbmVUb09uZU9uRGVsZXRlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gKiAgIHBhcnRpY2lwYW50IG9uZVRvT25lT25EZWxldGVcbiAqICAgcGFydGljaXBhbnQgcmVwb3NpdG9yeUZyb21UeXBlTWV0YWRhdGFcbiAqICAgcGFydGljaXBhbnQgY2FjaGVNb2RlbEZvclBvcHVsYXRlXG4gKlxuICogICBDYWxsZXItPj5vbmVUb09uZU9uRGVsZXRlOiB0aGlzLCBjb250ZXh0LCBkYXRhLCBrZXksIG1vZGVsXG4gKiAgIG9uZVRvT25lT25EZWxldGUtPj5vbmVUb09uZU9uRGVsZXRlOiBjaGVjayBpZiBwcm9wZXJ0eVZhbHVlIGV4aXN0c1xuICogICBvbmVUb09uZU9uRGVsZXRlLT4+b25lVG9PbmVPbkRlbGV0ZTogY2hlY2sgaWYgY2FzY2FkZS51cGRhdGUgaXMgQ0FTQ0FERVxuICpcbiAqICAgb25lVG9PbmVPbkRlbGV0ZS0+PnJlcG9zaXRvcnlGcm9tVHlwZU1ldGFkYXRhOiBtb2RlbCwga2V5XG4gKiAgIHJlcG9zaXRvcnlGcm9tVHlwZU1ldGFkYXRhLS0+Pm9uZVRvT25lT25EZWxldGU6IGlubmVyUmVwb1xuICpcbiAqICAgYWx0IHByb3BlcnR5VmFsdWUgaXMgbm90IGEgTW9kZWwgaW5zdGFuY2VcbiAqICAgICBvbmVUb09uZU9uRGVsZXRlLT4+aW5uZXJSZXBvOiBkZWxldGUobW9kZWxba2V5XSwgY29udGV4dClcbiAqICAgICBpbm5lclJlcG8tLT4+b25lVG9PbmVPbkRlbGV0ZTogZGVsZXRlZFxuICogICBlbHNlIHByb3BlcnR5VmFsdWUgaXMgYSBNb2RlbCBpbnN0YW5jZVxuICogICAgIG9uZVRvT25lT25EZWxldGUtPj5pbm5lclJlcG86IGRlbGV0ZShtb2RlbFtrZXldW2lubmVyUmVwby5wa10sIGNvbnRleHQpXG4gKiAgICAgaW5uZXJSZXBvLS0+Pm9uZVRvT25lT25EZWxldGU6IGRlbGV0ZWRcbiAqICAgZW5kXG4gKlxuICogICBvbmVUb09uZU9uRGVsZXRlLT4+Y2FjaGVNb2RlbEZvclBvcHVsYXRlOiBjb250ZXh0LCBtb2RlbCwga2V5LCBkZWxldGVkW2lubmVyUmVwby5wa10sIGRlbGV0ZWRcbiAqICAgb25lVG9PbmVPbkRlbGV0ZS0tPj5DYWxsZXI6IHZvaWRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9uZVRvT25lT25EZWxldGU8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIEZhYnJpY0NvbnRyYWN0UmVwb3NpdG9yeTxNPixcbiAgViBleHRlbmRzIFJlbGF0aW9uc01ldGFkYXRhLFxuPihcbiAgdGhpczogUixcbiAgY29udGV4dDogRmFicmljQ29udHJhY3RDb250ZXh0LFxuICBkYXRhOiBWLFxuICBrZXk6IGtleW9mIE0sXG4gIG1vZGVsOiBNXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcHJvcGVydHlWYWx1ZTogYW55ID0gbW9kZWxba2V5XTtcbiAgaWYgKCFwcm9wZXJ0eVZhbHVlKSByZXR1cm47XG4gIGlmIChkYXRhLmNhc2NhZGUudXBkYXRlICE9PSBDYXNjYWRlLkNBU0NBREUpIHJldHVybjtcbiAgY29uc3QgaW5uZXJSZXBvOiBSZXBvPE0+ID0gcmVwb3NpdG9yeUZyb21UeXBlTWV0YWRhdGEoXG4gICAgbW9kZWwsXG4gICAga2V5LFxuICAgIHRoaXMuYWRhcHRlci5hbGlhc1xuICApO1xuICBsZXQgZGVsZXRlZDogTTtcbiAgaWYgKCEocHJvcGVydHlWYWx1ZSBpbnN0YW5jZW9mIE1vZGVsKSlcbiAgICBkZWxldGVkID0gYXdhaXQgaW5uZXJSZXBvLmRlbGV0ZShtb2RlbFtrZXldIGFzIHN0cmluZywgY29udGV4dCk7XG4gIGVsc2VcbiAgICBkZWxldGVkID0gYXdhaXQgaW5uZXJSZXBvLmRlbGV0ZShcbiAgICAgIChtb2RlbFtrZXldIGFzIE0pW01vZGVsLnBrKGlubmVyUmVwby5jbGFzcykgYXMga2V5b2YgTV0gYXMgc3RyaW5nLFxuICAgICAgY29udGV4dFxuICAgICk7XG4gIGF3YWl0IGNhY2hlTW9kZWxGb3JQb3B1bGF0ZShcbiAgICBjb250ZXh0LFxuICAgIG1vZGVsLFxuICAgIGtleSxcbiAgICBkZWxldGVkW01vZGVsLnBrKGlubmVyUmVwby5jbGFzcyldIGFzIHN0cmluZyxcbiAgICBkZWxldGVkXG4gICk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEhhbmRsZXMgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwIGNyZWF0aW9uXG4gKiBAc3VtbWFyeSBQcm9jZXNzZXMgYSBvbmUtdG8tbWFueSByZWxhdGlvbnNoaXAgd2hlbiBjcmVhdGluZyBhIG1vZGVsLCBlaXRoZXIgYnkgcmVmZXJlbmNpbmcgZXhpc3RpbmcgbW9kZWxzIG9yIGNyZWF0aW5nIG5ldyBvbmVzXG4gKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIGV4dGVuZGluZyBNb2RlbFxuICogQHRlbXBsYXRlIFIgLSBUaGUgcmVwb3NpdG9yeSB0eXBlIGV4dGVuZGluZyBSZXBvPE0sIEYsIEM+XG4gKiBAdGVtcGxhdGUgViAtIFRoZSByZWxhdGlvbnMgbWV0YWRhdGEgdHlwZSBleHRlbmRpbmcgUmVsYXRpb25zTWV0YWRhdGFcbiAqIEB0ZW1wbGF0ZSBGIC0gVGhlIHJlcG9zaXRvcnkgZmxhZ3MgdHlwZVxuICogQHRlbXBsYXRlIEMgLSBUaGUgY29udGV4dCB0eXBlIGV4dGVuZGluZyBDb250ZXh0PEY+XG4gKiBAcGFyYW0ge1J9IHRoaXMgLSBUaGUgcmVwb3NpdG9yeSBpbnN0YW5jZVxuICogQHBhcmFtIHtDb250ZXh0PEY+fSBjb250ZXh0IC0gVGhlIGNvbnRleHQgZm9yIHRoZSBvcGVyYXRpb25cbiAqIEBwYXJhbSB7Vn0gZGF0YSAtIFRoZSByZWxhdGlvbnMgbWV0YWRhdGFcbiAqIEBwYXJhbSBrZXkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSByZWxhdGlvbnNoaXBcbiAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2VcbiAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZVxuICogQGZ1bmN0aW9uIG9uZVRvTWFueU9uQ3JlYXRlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gKiAgIHBhcnRpY2lwYW50IG9uZVRvTWFueU9uQ3JlYXRlXG4gKiAgIHBhcnRpY2lwYW50IHJlcG9zaXRvcnlGcm9tVHlwZU1ldGFkYXRhXG4gKiAgIHBhcnRpY2lwYW50IGNyZWF0ZU9yVXBkYXRlXG4gKiAgIHBhcnRpY2lwYW50IGZpbmRQcmltYXJ5S2V5XG4gKiAgIHBhcnRpY2lwYW50IGNhY2hlTW9kZWxGb3JQb3B1bGF0ZVxuICpcbiAqICAgQ2FsbGVyLT4+b25lVG9NYW55T25DcmVhdGU6IHRoaXMsIGNvbnRleHQsIGRhdGEsIGtleSwgbW9kZWxcbiAqICAgb25lVG9NYW55T25DcmVhdGUtPj5vbmVUb01hbnlPbkNyZWF0ZTogY2hlY2sgaWYgcHJvcGVydHlWYWx1ZXMgZXhpc3RzIGFuZCBoYXMgbGVuZ3RoXG4gKiAgIG9uZVRvTWFueU9uQ3JlYXRlLT4+b25lVG9NYW55T25DcmVhdGU6IGNoZWNrIGlmIGFsbCBlbGVtZW50cyBoYXZlIHNhbWUgdHlwZVxuICogICBvbmVUb01hbnlPbkNyZWF0ZS0+Pm9uZVRvTWFueU9uQ3JlYXRlOiBjcmVhdGUgdW5pcXVlVmFsdWVzIHNldFxuICpcbiAqICAgYWx0IGFycmF5VHlwZSBpcyBub3QgXCJvYmplY3RcIlxuICogICAgIG9uZVRvTWFueU9uQ3JlYXRlLT4+cmVwb3NpdG9yeUZyb21UeXBlTWV0YWRhdGE6IG1vZGVsLCBrZXlcbiAqICAgICByZXBvc2l0b3J5RnJvbVR5cGVNZXRhZGF0YS0tPj5vbmVUb01hbnlPbkNyZWF0ZTogcmVwb1xuICogICAgIGxvb3AgZm9yIGVhY2ggaWQgaW4gdW5pcXVlVmFsdWVzXG4gKiAgICAgICBvbmVUb01hbnlPbkNyZWF0ZS0+PnJlcG86IHJlYWQoaWQpXG4gKiAgICAgICByZXBvLS0+Pm9uZVRvTWFueU9uQ3JlYXRlOiByZWFkXG4gKiAgICAgICBvbmVUb01hbnlPbkNyZWF0ZS0+PmNhY2hlTW9kZWxGb3JQb3B1bGF0ZTogY29udGV4dCwgbW9kZWwsIGtleSwgaWQsIHJlYWRcbiAqICAgICBlbmRcbiAqICAgICBvbmVUb01hbnlPbkNyZWF0ZS0+Pm9uZVRvTWFueU9uQ3JlYXRlOiBzZXQgbW9kZWxba2V5XSA9IFsuLi51bmlxdWVWYWx1ZXNdXG4gKiAgIGVsc2UgYXJyYXlUeXBlIGlzIFwib2JqZWN0XCJcbiAqICAgICBvbmVUb01hbnlPbkNyZWF0ZS0+PmZpbmRQcmltYXJ5S2V5OiBwcm9wZXJ0eVZhbHVlc1swXVxuICogICAgIGZpbmRQcmltYXJ5S2V5LS0+Pm9uZVRvTWFueU9uQ3JlYXRlOiBwa05hbWVcbiAqICAgICBvbmVUb01hbnlPbkNyZWF0ZS0+Pm9uZVRvTWFueU9uQ3JlYXRlOiBjcmVhdGUgcmVzdWx0IHNldFxuICogICAgIGxvb3AgZm9yIGVhY2ggbSBpbiBwcm9wZXJ0eVZhbHVlc1xuICogICAgICAgb25lVG9NYW55T25DcmVhdGUtPj5jcmVhdGVPclVwZGF0ZTogbSwgY29udGV4dFxuICogICAgICAgY3JlYXRlT3JVcGRhdGUtLT4+b25lVG9NYW55T25DcmVhdGU6IHJlY29yZFxuICogICAgICAgb25lVG9NYW55T25DcmVhdGUtPj5jYWNoZU1vZGVsRm9yUG9wdWxhdGU6IGNvbnRleHQsIG1vZGVsLCBrZXksIHJlY29yZFtwa05hbWVdLCByZWNvcmRcbiAqICAgICAgIG9uZVRvTWFueU9uQ3JlYXRlLT4+b25lVG9NYW55T25DcmVhdGU6IGFkZCByZWNvcmRbcGtOYW1lXSB0byByZXN1bHRcbiAqICAgICBlbmRcbiAqICAgICBvbmVUb01hbnlPbkNyZWF0ZS0+Pm9uZVRvTWFueU9uQ3JlYXRlOiBzZXQgbW9kZWxba2V5XSA9IFsuLi5yZXN1bHRdXG4gKiAgIGVuZFxuICpcbiAqICAgb25lVG9NYW55T25DcmVhdGUtLT4+Q2FsbGVyOiB2b2lkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvbmVUb01hbnlPbkNyZWF0ZTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgRmFicmljQ29udHJhY3RSZXBvc2l0b3J5PE0+LFxuICBWIGV4dGVuZHMgUmVsYXRpb25zTWV0YWRhdGEsXG4+KFxuICB0aGlzOiBSLFxuICBjb250ZXh0OiBGYWJyaWNDb250cmFjdENvbnRleHQsXG4gIGRhdGE6IFYsXG4gIGtleToga2V5b2YgTSxcbiAgbW9kZWw6IE1cbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwcm9wZXJ0eVZhbHVlczogYW55ID0gbW9kZWxba2V5XTtcbiAgaWYgKCFwcm9wZXJ0eVZhbHVlcyB8fCAhcHJvcGVydHlWYWx1ZXMubGVuZ3RoKSByZXR1cm47XG4gIGNvbnN0IGFycmF5VHlwZSA9IHR5cGVvZiBwcm9wZXJ0eVZhbHVlc1swXTtcbiAgaWYgKCFwcm9wZXJ0eVZhbHVlcy5ldmVyeSgoaXRlbTogYW55KSA9PiB0eXBlb2YgaXRlbSA9PT0gYXJyYXlUeXBlKSlcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgIGBJbnZhbGlkIG9wZXJhdGlvbi4gQWxsIGVsZW1lbnRzIG9mIHByb3BlcnR5ICR7a2V5IGFzIHN0cmluZ30gbXVzdCBtYXRjaCB0aGUgc2FtZSB0eXBlLmBcbiAgICApO1xuICBjb25zdCB1bmlxdWVWYWx1ZXMgPSBuZXcgU2V0KFsuLi5wcm9wZXJ0eVZhbHVlc10pO1xuICBpZiAoYXJyYXlUeXBlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgY29uc3QgcmVwbyA9IHJlcG9zaXRvcnlGcm9tVHlwZU1ldGFkYXRhKG1vZGVsLCBrZXksIHRoaXMuYWRhcHRlci5hbGlhcyk7XG4gICAgZm9yIChjb25zdCBpZCBvZiB1bmlxdWVWYWx1ZXMpIHtcbiAgICAgIGNvbnN0IHJlYWQgPSBhd2FpdCByZXBvLnJlYWQoaWQsIGNvbnRleHQpO1xuICAgICAgYXdhaXQgY2FjaGVNb2RlbEZvclBvcHVsYXRlKGNvbnRleHQsIG1vZGVsLCBrZXksIGlkLCByZWFkKTtcbiAgICB9XG4gICAgKG1vZGVsIGFzIGFueSlba2V5XSA9IFsuLi51bmlxdWVWYWx1ZXNdO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBrTmFtZSA9IE1vZGVsLnBrKHByb3BlcnR5VmFsdWVzWzBdKTtcblxuICBjb25zdCByZXN1bHQ6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xuXG4gIGZvciAoY29uc3QgbSBvZiBwcm9wZXJ0eVZhbHVlcykge1xuICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IGNyZWF0ZU9yVXBkYXRlKG0sIGNvbnRleHQsIHRoaXMuYWRhcHRlci5hbGlhcyk7XG4gICAgYXdhaXQgY2FjaGVNb2RlbEZvclBvcHVsYXRlKGNvbnRleHQsIG1vZGVsLCBrZXksIHJlY29yZFtwa05hbWVdLCByZWNvcmQpO1xuICAgIHJlc3VsdC5hZGQocmVjb3JkW3BrTmFtZV0pO1xuICB9XG5cbiAgKG1vZGVsIGFzIGFueSlba2V5XSA9IFsuLi5yZXN1bHRdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBIYW5kbGVzIG9uZS10by1tYW55IHJlbGF0aW9uc2hpcCBkZWxldGlvblxuICogQHN1bW1hcnkgUHJvY2Vzc2VzIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwIHdoZW4gZGVsZXRpbmcgYSBtb2RlbCwgZGVsZXRpbmcgYWxsIHJlbGF0ZWQgbW9kZWxzIGlmIGNhc2NhZGUgZGVsZXRlIGlzIGVuYWJsZWRcbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gKiBAdGVtcGxhdGUgUiAtIFRoZSByZXBvc2l0b3J5IHR5cGUgZXh0ZW5kaW5nIFJlcG88TSwgRiwgQz5cbiAqIEB0ZW1wbGF0ZSBWIC0gVGhlIHJlbGF0aW9ucyBtZXRhZGF0YSB0eXBlIGV4dGVuZGluZyBSZWxhdGlvbnNNZXRhZGF0YVxuICogQHRlbXBsYXRlIEYgLSBUaGUgcmVwb3NpdG9yeSBmbGFncyB0eXBlXG4gKiBAdGVtcGxhdGUgQyAtIFRoZSBjb250ZXh0IHR5cGUgZXh0ZW5kaW5nIENvbnRleHQ8Rj5cbiAqIEBwYXJhbSB7Un0gdGhpcyAtIFRoZSByZXBvc2l0b3J5IGluc3RhbmNlXG4gKiBAcGFyYW0ge0NvbnRleHQ8Rj59IGNvbnRleHQgLSBUaGUgY29udGV4dCBmb3IgdGhlIG9wZXJhdGlvblxuICogQHBhcmFtIHtWfSBkYXRhIC0gVGhlIHJlbGF0aW9ucyBtZXRhZGF0YVxuICogQHBhcmFtIGtleSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIHJlbGF0aW9uc2hpcFxuICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZVxuICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlXG4gKiBAZnVuY3Rpb24gb25lVG9NYW55T25EZWxldGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAqICAgcGFydGljaXBhbnQgb25lVG9NYW55T25EZWxldGVcbiAqICAgcGFydGljaXBhbnQgUmVwb3NpdG9yeVxuICogICBwYXJ0aWNpcGFudCByZXBvc2l0b3J5RnJvbVR5cGVNZXRhZGF0YVxuICogICBwYXJ0aWNpcGFudCBjYWNoZU1vZGVsRm9yUG9wdWxhdGVcbiAqXG4gKiAgIENhbGxlci0+Pm9uZVRvTWFueU9uRGVsZXRlOiB0aGlzLCBjb250ZXh0LCBkYXRhLCBrZXksIG1vZGVsXG4gKiAgIG9uZVRvTWFueU9uRGVsZXRlLT4+b25lVG9NYW55T25EZWxldGU6IGNoZWNrIGlmIGNhc2NhZGUuZGVsZXRlIGlzIENBU0NBREVcbiAqICAgb25lVG9NYW55T25EZWxldGUtPj5vbmVUb01hbnlPbkRlbGV0ZTogY2hlY2sgaWYgdmFsdWVzIGV4aXN0cyBhbmQgaGFzIGxlbmd0aFxuICogICBvbmVUb01hbnlPbkRlbGV0ZS0+Pm9uZVRvTWFueU9uRGVsZXRlOiBjaGVjayBpZiBhbGwgZWxlbWVudHMgaGF2ZSBzYW1lIHR5cGVcbiAqXG4gKiAgIGFsdCBpc0luc3RhbnRpYXRlZCAoYXJyYXlUeXBlIGlzIFwib2JqZWN0XCIpXG4gKiAgICAgb25lVG9NYW55T25EZWxldGUtPj5SZXBvc2l0b3J5OiBmb3JNb2RlbCh2YWx1ZXNbMF0pXG4gKiAgICAgUmVwb3NpdG9yeS0tPj5vbmVUb01hbnlPbkRlbGV0ZTogcmVwb1xuICogICBlbHNlIG5vdCBpbnN0YW50aWF0ZWRcbiAqICAgICBvbmVUb01hbnlPbkRlbGV0ZS0+PnJlcG9zaXRvcnlGcm9tVHlwZU1ldGFkYXRhOiBtb2RlbCwga2V5XG4gKiAgICAgcmVwb3NpdG9yeUZyb21UeXBlTWV0YWRhdGEtLT4+b25lVG9NYW55T25EZWxldGU6IHJlcG9cbiAqICAgZW5kXG4gKlxuICogICBvbmVUb01hbnlPbkRlbGV0ZS0+Pm9uZVRvTWFueU9uRGVsZXRlOiBjcmVhdGUgdW5pcXVlVmFsdWVzIHNldFxuICpcbiAqICAgbG9vcCBmb3IgZWFjaCBpZCBpbiB1bmlxdWVWYWx1ZXNcbiAqICAgICBvbmVUb01hbnlPbkRlbGV0ZS0+PnJlcG86IGRlbGV0ZShpZCwgY29udGV4dClcbiAqICAgICByZXBvLS0+Pm9uZVRvTWFueU9uRGVsZXRlOiBkZWxldGVkXG4gKiAgICAgb25lVG9NYW55T25EZWxldGUtPj5jYWNoZU1vZGVsRm9yUG9wdWxhdGU6IGNvbnRleHQsIG1vZGVsLCBrZXksIGlkLCBkZWxldGVkXG4gKiAgIGVuZFxuICpcbiAqICAgb25lVG9NYW55T25EZWxldGUtPj5vbmVUb01hbnlPbkRlbGV0ZTogc2V0IG1vZGVsW2tleV0gPSBbLi4udW5pcXVlVmFsdWVzXVxuICogICBvbmVUb01hbnlPbkRlbGV0ZS0tPj5DYWxsZXI6IHZvaWRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9uZVRvTWFueU9uRGVsZXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBGYWJyaWNDb250cmFjdFJlcG9zaXRvcnk8TT4sXG4gIFYgZXh0ZW5kcyBSZWxhdGlvbnNNZXRhZGF0YSxcbj4oXG4gIHRoaXM6IFIsXG4gIGNvbnRleHQ6IEZhYnJpY0NvbnRyYWN0Q29udGV4dCxcbiAgZGF0YTogVixcbiAga2V5OiBrZXlvZiBNLFxuICBtb2RlbDogTVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChkYXRhLmNhc2NhZGUuZGVsZXRlICE9PSBDYXNjYWRlLkNBU0NBREUpIHJldHVybjtcbiAgY29uc3QgdmFsdWVzID0gbW9kZWxba2V5XSBhcyBhbnk7XG4gIGlmICghdmFsdWVzIHx8ICF2YWx1ZXMubGVuZ3RoKSByZXR1cm47XG4gIGNvbnN0IGFycmF5VHlwZSA9IHR5cGVvZiB2YWx1ZXNbMF07XG4gIGNvbnN0IGFyZUFsbFNhbWVUeXBlID0gdmFsdWVzLmV2ZXJ5KChpdGVtOiBhbnkpID0+IHR5cGVvZiBpdGVtID09PSBhcnJheVR5cGUpO1xuICBpZiAoIWFyZUFsbFNhbWVUeXBlKVxuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgYEludmFsaWQgb3BlcmF0aW9uLiBBbGwgZWxlbWVudHMgb2YgcHJvcGVydHkgJHtrZXkgYXMgc3RyaW5nfSBtdXN0IG1hdGNoIHRoZSBzYW1lIHR5cGUuYFxuICAgICk7XG4gIGNvbnN0IGlzSW5zdGFudGlhdGVkID0gYXJyYXlUeXBlID09PSBcIm9iamVjdFwiO1xuICBjb25zdCByZXBvID0gaXNJbnN0YW50aWF0ZWRcbiAgICA/IFJlcG9zaXRvcnkuZm9yTW9kZWwodmFsdWVzWzBdLCB0aGlzLmFkYXB0ZXIuYWxpYXMpXG4gICAgOiByZXBvc2l0b3J5RnJvbVR5cGVNZXRhZGF0YShtb2RlbCwga2V5LCB0aGlzLmFkYXB0ZXIuYWxpYXMpO1xuXG4gIGNvbnN0IHVuaXF1ZVZhbHVlcyA9IG5ldyBTZXQoW1xuICAgIC4uLihpc0luc3RhbnRpYXRlZFxuICAgICAgPyB2YWx1ZXMubWFwKFxuICAgICAgICAgICh2OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB2W01vZGVsLnBrKHRoaXMuY2xhc3MpIGFzIHN0cmluZ11cbiAgICAgICAgKVxuICAgICAgOiB2YWx1ZXMpLFxuICBdKTtcblxuICBmb3IgKGNvbnN0IGlkIG9mIHVuaXF1ZVZhbHVlcy52YWx1ZXMoKSkge1xuICAgIGNvbnN0IGRlbGV0ZWQgPSBhd2FpdCByZXBvLmRlbGV0ZShpZCwgY29udGV4dCk7XG4gICAgYXdhaXQgY2FjaGVNb2RlbEZvclBvcHVsYXRlKGNvbnRleHQsIG1vZGVsLCBrZXksIGlkLCBkZWxldGVkKTtcbiAgfVxuICAobW9kZWwgYXMgYW55KVtrZXldID0gWy4uLnVuaXF1ZVZhbHVlc107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBvcHVsYXRlcyBhIG1vZGVsJ3MgcmVsYXRpb25zaGlwXG4gKiBAc3VtbWFyeSBSZXRyaWV2ZXMgYW5kIGF0dGFjaGVzIHJlbGF0ZWQgbW9kZWxzIHRvIGEgbW9kZWwncyByZWxhdGlvbnNoaXAgcHJvcGVydHlcbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gKiBAdGVtcGxhdGUgUiAtIFRoZSByZXBvc2l0b3J5IHR5cGUgZXh0ZW5kaW5nIFJlcG88TSwgRiwgQz5cbiAqIEB0ZW1wbGF0ZSBWIC0gVGhlIHJlbGF0aW9ucyBtZXRhZGF0YSB0eXBlIGV4dGVuZGluZyBSZWxhdGlvbnNNZXRhZGF0YVxuICogQHRlbXBsYXRlIEYgLSBUaGUgcmVwb3NpdG9yeSBmbGFncyB0eXBlXG4gKiBAdGVtcGxhdGUgQyAtIFRoZSBjb250ZXh0IHR5cGUgZXh0ZW5kaW5nIENvbnRleHQ8Rj5cbiAqIEBwYXJhbSB7Un0gdGhpcyAtIFRoZSByZXBvc2l0b3J5IGluc3RhbmNlXG4gKiBAcGFyYW0ge0NvbnRleHQ8Rj59IGNvbnRleHQgLSBUaGUgY29udGV4dCBmb3IgdGhlIG9wZXJhdGlvblxuICogQHBhcmFtIHtWfSBkYXRhIC0gVGhlIHJlbGF0aW9ucyBtZXRhZGF0YVxuICogQHBhcmFtIGtleSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIHJlbGF0aW9uc2hpcFxuICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZVxuICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlXG4gKiBAZnVuY3Rpb24gcG9wdWxhdGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAqICAgcGFydGljaXBhbnQgcG9wdWxhdGVcbiAqICAgcGFydGljaXBhbnQgZmV0Y2hQb3B1bGF0ZVZhbHVlc1xuICogICBwYXJ0aWNpcGFudCBnZXRQb3B1bGF0ZUtleVxuICogICBwYXJ0aWNpcGFudCBDb250ZXh0XG4gKiAgIHBhcnRpY2lwYW50IHJlcG9zaXRvcnlGcm9tVHlwZU1ldGFkYXRhXG4gKlxuICogICBDYWxsZXItPj5wb3B1bGF0ZTogdGhpcywgY29udGV4dCwgZGF0YSwga2V5LCBtb2RlbFxuICogICBwb3B1bGF0ZS0+PnBvcHVsYXRlOiBjaGVjayBpZiBkYXRhLnBvcHVsYXRlIGlzIHRydWVcbiAqICAgcG9wdWxhdGUtPj5wb3B1bGF0ZTogZ2V0IG5lc3RlZCB2YWx1ZSBhbmQgY2hlY2sgaWYgaXQgZXhpc3RzXG4gKlxuICogICBwb3B1bGF0ZS0+PmZldGNoUG9wdWxhdGVWYWx1ZXM6IGNvbnRleHQsIG1vZGVsLCBrZXksIGlzQXJyID8gbmVzdGVkIDogW25lc3RlZF1cbiAqXG4gKiAgIGZldGNoUG9wdWxhdGVWYWx1ZXMtPj5mZXRjaFBvcHVsYXRlVmFsdWVzOiBpbml0aWFsaXplIHZhcmlhYmxlc1xuICpcbiAqICAgbG9vcCBmb3IgZWFjaCBwcm9LZXlWYWx1ZSBpbiBwcm9wS2V5VmFsdWVzXG4gKiAgICAgZmV0Y2hQb3B1bGF0ZVZhbHVlcy0+PmdldFBvcHVsYXRlS2V5OiBtb2RlbC5jb25zdHJ1Y3Rvci5uYW1lLCBwcm9wTmFtZSwgcHJvS2V5VmFsdWVcbiAqICAgICBnZXRQb3B1bGF0ZUtleS0tPj5mZXRjaFBvcHVsYXRlVmFsdWVzOiBjYWNoZUtleVxuICpcbiAqICAgICBhbHQgdHJ5IHRvIGdldCBmcm9tIGNhY2hlXG4gKiAgICAgICBmZXRjaFBvcHVsYXRlVmFsdWVzLT4+Q29udGV4dDogZ2V0KGNhY2hlS2V5KVxuICogICAgICAgQ29udGV4dC0tPj5mZXRjaFBvcHVsYXRlVmFsdWVzOiB2YWxcbiAqICAgICBlbHNlIGNhdGNoIGVycm9yXG4gKiAgICAgICBmZXRjaFBvcHVsYXRlVmFsdWVzLT4+cmVwb3NpdG9yeUZyb21UeXBlTWV0YWRhdGE6IG1vZGVsLCBwcm9wTmFtZVxuICogICAgICAgcmVwb3NpdG9yeUZyb21UeXBlTWV0YWRhdGEtLT4+ZmV0Y2hQb3B1bGF0ZVZhbHVlczogcmVwb1xuICogICAgICAgZmV0Y2hQb3B1bGF0ZVZhbHVlcy0+PnJlcG86IHJlYWQocHJvS2V5VmFsdWUpXG4gKiAgICAgICByZXBvLS0+PmZldGNoUG9wdWxhdGVWYWx1ZXM6IHZhbFxuICogICAgIGVuZFxuICpcbiAqICAgICBmZXRjaFBvcHVsYXRlVmFsdWVzLT4+ZmV0Y2hQb3B1bGF0ZVZhbHVlczogYWRkIHZhbCB0byByZXN1bHRzXG4gKiAgIGVuZFxuICpcbiAqICAgZmV0Y2hQb3B1bGF0ZVZhbHVlcy0tPj5wb3B1bGF0ZTogcmVzdWx0c1xuICogICBwb3B1bGF0ZS0+PnBvcHVsYXRlOiBzZXQgbW9kZWxba2V5XSA9IGlzQXJyID8gcmVzIDogcmVzWzBdXG4gKiAgIHBvcHVsYXRlLS0+PkNhbGxlcjogdm9pZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcG9wdWxhdGU8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIFJlcG88TT4sXG4gIFYgZXh0ZW5kcyBSZWxhdGlvbnNNZXRhZGF0YSxcbj4oXG4gIHRoaXM6IFIsXG4gIGNvbnRleHQ6IENvbnRleHRPZlJlcG9zaXRvcnk8Uj4sXG4gIGRhdGE6IFYsXG4gIGtleToga2V5b2YgTSxcbiAgbW9kZWw6IE1cbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIWRhdGEucG9wdWxhdGUpIHJldHVybjtcbiAgY29uc3QgbmVzdGVkOiBhbnkgPSBtb2RlbFtrZXldO1xuICBjb25zdCBpc0FyciA9IEFycmF5LmlzQXJyYXkobmVzdGVkKTtcbiAgaWYgKHR5cGVvZiBuZXN0ZWQgPT09IFwidW5kZWZpbmVkXCIgfHwgKGlzQXJyICYmIG5lc3RlZC5sZW5ndGggPT09IDApKSByZXR1cm47XG5cbiAgYXN5bmMgZnVuY3Rpb24gZmV0Y2hQb3B1bGF0ZVZhbHVlcyhcbiAgICBjOiBDb250ZXh0T2ZSZXBvc2l0b3J5PFI+LFxuICAgIG1vZGVsOiBNLFxuICAgIHByb3BOYW1lOiBzdHJpbmcsXG4gICAgcHJvcEtleVZhbHVlczogYW55W10sXG4gICAgYWxpYXM/OiBzdHJpbmdcbiAgKSB7XG4gICAgbGV0IGNhY2hlS2V5OiBzdHJpbmc7XG4gICAgbGV0IHZhbDogYW55O1xuICAgIGNvbnN0IHJlc3VsdHM6IE1bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcHJvS2V5VmFsdWUgb2YgcHJvcEtleVZhbHVlcykge1xuICAgICAgY2FjaGVLZXkgPSBnZXRQb3B1bGF0ZUtleShtb2RlbC5jb25zdHJ1Y3Rvci5uYW1lLCBwcm9wTmFtZSwgcHJvS2V5VmFsdWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFsID0gYXdhaXQgYy5nZXQoY2FjaGVLZXkgYXMgYW55KTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIGNvbnN0IHJlcG8gPSByZXBvc2l0b3J5RnJvbVR5cGVNZXRhZGF0YShcbiAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICBwcm9wTmFtZSBhcyBrZXlvZiBNLFxuICAgICAgICAgIGFsaWFzXG4gICAgICAgICk7XG4gICAgICAgIGlmICghcmVwbykgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJDb3VsZCBub3QgZmluZCByZXBvXCIpO1xuICAgICAgICB2YWwgPSBhd2FpdCByZXBvLnJlYWQocHJvS2V5VmFsdWUsIGNvbnRleHQpO1xuICAgICAgfVxuICAgICAgcmVzdWx0cy5wdXNoKHZhbCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoUG9wdWxhdGVWYWx1ZXMoXG4gICAgY29udGV4dCxcbiAgICBtb2RlbCxcbiAgICBrZXkgYXMgc3RyaW5nLFxuICAgIGlzQXJyID8gbmVzdGVkIDogW25lc3RlZF0sXG4gICAgdGhpcy5hZGFwdGVyLmFsaWFzXG4gICk7XG4gIChtb2RlbCBhcyBhbnkpW2tleV0gPSBpc0FyciA/IHJlcyA6IHJlc1swXTtcbn1cbiJdfQ==
441
+ //# sourceMappingURL=FabricConstruction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FabricConstruction.js","sourceRoot":"","sources":["../../src/contracts/FabricConstruction.ts"],"names":[],"mappings":"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"}
@@ -155,4 +155,4 @@ class FabricContractPaginator extends for_couchdb_1.CouchDBPaginator {
155
155
  }
156
156
  }
157
157
  exports.FabricContractPaginator = FabricContractPaginator;
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ29udHJhY3RQYWdpbmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL0ZhYnJpY0NvbnRyYWN0UGFnaW5hdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUEyRTtBQUMzRSwyREFBaUQ7QUFDakQseUVBQXVEO0FBQ3ZELHFEQUE2RDtBQUU3RCx1REFBcUU7QUFFckU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQWEsdUJBRVgsU0FBUSw4QkFBbUI7SUFDM0I7Ozs7Ozs7T0FPRztJQUNILFlBQ0UsT0FBOEIsRUFDOUIsS0FBaUIsRUFDakIsSUFBWSxFQUNaLEtBQXFCO1FBRXJCLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDZ0IsT0FBTyxDQUFDLFlBQXdCO1FBQ2pELE1BQU0sS0FBSyxHQUFlLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzFELElBQUksS0FBSyxDQUFDLEtBQUs7WUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFFMUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRXhCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMERHO0lBQ00sS0FBSyxDQUFDLElBQUksQ0FDakIsT0FBZSxDQUFDLEVBQ2hCLFFBQWMsRUFDZCxHQUFHLElBQTZCO1FBRWhDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQ2xELENBQUMsUUFBUSxFQUFFLEdB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RUFBRSxFQUFFO2dCQUN2QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUN4QixDQUFDLEVBQ0QsSUFBSSxDQUFDLEtBQUssRUFDVixlQUFRLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDaEMsU0FBUyxFQUNULEdBQUcsQ0FDSixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDVCxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztRQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFqS0QsMERBaUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF5YmVDb250ZXh0dWFsQXJnLCBQYWdpbmdFcnJvciwgU2VxdWVuY2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IERCS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciwgTWV0YWRhdGEgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7IEZhYnJpY0NvbnRyYWN0QWRhcHRlciB9IGZyb20gXCIuL0NvbnRyYWN0QWRhcHRlclwiO1xuaW1wb3J0IHsgQ291Y2hEQlBhZ2luYXRvciwgTWFuZ29RdWVyeSB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUGFnaW5hdG9yIGZvciBDb3VjaERCIHF1ZXJ5IHJlc3VsdHNcbiAqIEBzdW1tYXJ5IEltcGxlbWVudHMgcGFnaW5hdGlvbiBmb3IgQ291Y2hEQiBxdWVyaWVzIHVzaW5nIGJvb2ttYXJrcyBmb3IgZWZmaWNpZW50IG5hdmlnYXRpb24gdGhyb3VnaCByZXN1bHQgc2V0c1xuICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSB0aGF0IGV4dGVuZHMgTW9kZWxcbiAqIEB0ZW1wbGF0ZSBSIC0gVGhlIHJlc3VsdCB0eXBlXG4gKiBAcGFyYW0ge0ZhYnJpY0NvPGFueSwgYW55LCBhbnk+fSBhZGFwdGVyIC0gVGhlIENvdWNoREIgYWRhcHRlclxuICogQHBhcmFtIHtNYW5nb1F1ZXJ5fSBxdWVyeSAtIFRoZSBNYW5nbyBxdWVyeSB0byBwYWdpbmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHNpemUgLSBUaGUgcGFnZSBzaXplXG4gKiBAcGFyYW0ge0NvbnN0cnVjdG9yPE0+fSBjbGF6eiAtIFRoZSBtb2RlbCBjb25zdHJ1Y3RvclxuICogQGNsYXNzIENvdWNoREJQYWdpbmF0b3JcbiAqIEBleGFtcGxlXG4gKiAvLyBFeGFtcGxlIG9mIHVzaW5nIENvdWNoREJQYWdpbmF0b3JcbiAqIGNvbnN0IGFkYXB0ZXIgPSBuZXcgTXlDb3VjaERCQWRhcHRlcihzY29wZSk7XG4gKiBjb25zdCBxdWVyeSA9IHsgc2VsZWN0b3I6IHsgdHlwZTogXCJ1c2VyXCIgfSB9O1xuICogY29uc3QgcGFnaW5hdG9yID0gbmV3IENvdWNoREJQYWdpbmF0b3IoYWRhcHRlciwgcXVlcnksIDEwLCBVc2VyKTtcbiAqXG4gKiAvLyBHZXQgdGhlIGZpcnN0IHBhZ2VcbiAqIGNvbnN0IHBhZ2UxID0gYXdhaXQgcGFnaW5hdG9yLnBhZ2UoMSk7XG4gKlxuICogLy8gR2V0IHRoZSBuZXh0IHBhZ2VcbiAqIGNvbnN0IHBhZ2UyID0gYXdhaXQgcGFnaW5hdG9yLnBhZ2UoMik7XG4gKi9cbmV4cG9ydCBjbGFzcyBGYWJyaWNDb250cmFjdFBhZ2luYXRvcjxcbiAgTSBleHRlbmRzIE1vZGVsLFxuPiBleHRlbmRzIENvdWNoREJQYWdpbmF0b3I8TT4ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBuZXcgQ291Y2hEQlBhZ2luYXRvciBpbnN0YW5jZVxuICAgKiBAc3VtbWFyeSBJbml0aWFsaXplcyBhIHBhZ2luYXRvciBmb3IgQ291Y2hEQiBxdWVyeSByZXN1bHRzXG4gICAqIEBwYXJhbSB7Q291Y2hEQkFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55Pn0gYWRhcHRlciAtIFRoZSBDb3VjaERCIGFkYXB0ZXJcbiAgICogQHBhcmFtIHtNYW5nb1F1ZXJ5fSBxdWVyeSAtIFRoZSBNYW5nbyBxdWVyeSB0byBwYWdpbmF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZSAtIFRoZSBwYWdlIHNpemVcbiAgICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNPn0gY2xhenogLSBUaGUgbW9kZWwgY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFkYXB0ZXI6IEZhYnJpY0NvbnRyYWN0QWRhcHRlcixcbiAgICBxdWVyeTogTWFuZ29RdWVyeSxcbiAgICBzaXplOiBudW1iZXIsXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE0+XG4gICkge1xuICAgIHN1cGVyKGFkYXB0ZXIsIHF1ZXJ5LCBzaXplLCBjbGF6eik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFByZXBhcmVzIGEgcXVlcnkgZm9yIHBhZ2luYXRpb25cbiAgICogQHN1bW1hcnkgTW9kaWZpZXMgdGhlIHJhdyBxdWVyeSB0byBpbmNsdWRlIHBhZ2luYXRpb24gcGFyYW1ldGVyc1xuICAgKiBAcGFyYW0ge01hbmdvUXVlcnl9IHJhd1N0YXRlbWVudCAtIFRoZSBvcmlnaW5hbCBNYW5nbyBxdWVyeVxuICAgKiBAcmV0dXJuIHtNYW5nb1F1ZXJ5fSBUaGUgcHJlcGFyZWQgcXVlcnkgd2l0aCBwYWdpbmF0aW9uIHBhcmFtZXRlcnNcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBwcmVwYXJlKHJhd1N0YXRlbWVudDogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgIGNvbnN0IHF1ZXJ5OiBNYW5nb1F1ZXJ5ID0gT2JqZWN0LmFzc2lnbih7fSwgcmF3U3RhdGVtZW50KTtcbiAgICBpZiAocXVlcnkubGltaXQpIHRoaXMubGltaXQgPSBxdWVyeS5saW1pdDtcblxuICAgIHF1ZXJ5LmxpbWl0ID0gdGhpcy5zaXplO1xuXG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYSBzcGVjaWZpYyBwYWdlIG9mIHJlc3VsdHNcbiAgICogQHN1bW1hcnkgRXhlY3V0ZXMgdGhlIHF1ZXJ5IHdpdGggcGFnaW5hdGlvbiBhbmQgcHJvY2Vzc2VzIHRoZSByZXN1bHRzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbcGFnZT0xXSAtIFRoZSBwYWdlIG51bWJlciB0byByZXRyaWV2ZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJbXT59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IG9mIHJlc3VsdHNcbiAgICogQHRocm93cyB7UGFnaW5nRXJyb3J9IElmIHRyeWluZyB0byBhY2Nlc3MgYSBwYWdlIG90aGVyIHRoYW4gdGhlIGZpcnN0IHdpdGhvdXQgYSBib29rbWFyaywgb3IgaWYgbm8gY2xhc3MgaXMgZGVmaW5lZFxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDbGllbnRcbiAgICogICBwYXJ0aWNpcGFudCBDb3VjaERCUGFnaW5hdG9yXG4gICAqICAgcGFydGljaXBhbnQgQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IENvdWNoREJcbiAgICpcbiAgICogICBDbGllbnQtPj5Db3VjaERCUGFnaW5hdG9yOiBwYWdlKHBhZ2VOdW1iZXIpXG4gICAqICAgTm90ZSBvdmVyIENvdWNoREJQYWdpbmF0b3I6IENsb25lIHN0YXRlbWVudFxuICAgKiAgIENvdWNoREJQYWdpbmF0b3ItPj5Db3VjaERCUGFnaW5hdG9yOiB2YWxpZGF0ZVBhZ2UocGFnZSlcbiAgICpcbiAgICogICBhbHQgcGFnZSAhPT0gMVxuICAgKiAgICAgQ291Y2hEQlBhZ2luYXRvci0+PkNvdWNoREJQYWdpbmF0b3I6IENoZWNrIGJvb2ttYXJrXG4gICAqICAgICBhbHQgTm8gYm9va21hcmtcbiAgICogICAgICAgQ291Y2hEQlBhZ2luYXRvci0tPj5DbGllbnQ6IFRocm93IFBhZ2luZ0Vycm9yXG4gICAqICAgICBlbHNlIEhhcyBib29rbWFya1xuICAgKiAgICAgICBDb3VjaERCUGFnaW5hdG9yLT4+Q291Y2hEQlBhZ2luYXRvcjogQWRkIGJvb2ttYXJrIHRvIHN0YXRlbWVudFxuICAgKiAgICAgZW5kXG4gICAqICAgZW5kXG4gICAqXG4gICAqICAgQ291Y2hEQlBhZ2luYXRvci0+PkFkYXB0ZXI6IHJhdyhzdGF0ZW1lbnQsIGZhbHNlKVxuICAgKiAgIEFkYXB0ZXItPj5Db3VjaERCOiBFeGVjdXRlIHF1ZXJ5XG4gICAqICAgQ291Y2hEQi0tPj5BZGFwdGVyOiBSZXR1cm4gcmVzdWx0c1xuICAgKiAgIEFkYXB0ZXItLT4+Q291Y2hEQlBhZ2luYXRvcjogUmV0dXJuIE1hbmdvUmVzcG9uc2VcbiAgICpcbiAgICogICBOb3RlIG92ZXIgQ291Y2hEQlBhZ2luYXRvcjogUHJvY2VzcyByZXN1bHRzXG4gICAqXG4gICAqICAgYWx0IEhhcyB3YXJuaW5nXG4gICAqICAgICBDb3VjaERCUGFnaW5hdG9yLT4+Q291Y2hEQlBhZ2luYXRvcjogTG9nIHdhcm5pbmdcbiAgICogICBlbmRcbiAgICpcbiAgICogICBDb3VjaERCUGFnaW5hdG9yLT4+Q291Y2hEQlBhZ2luYXRvcjogQ2hlY2sgZm9yIGNsYXp6XG4gICAqXG4gICAqICAgYWx0IE5vIGNsYXp6XG4gICAqICAgICBDb3VjaERCUGFnaW5hdG9yLS0+PkNsaWVudDogVGhyb3cgUGFnaW5nRXJyb3JcbiAgICogICBlbHNlIEhhcyBjbGF6elxuICAgKiAgICAgQ291Y2hEQlBhZ2luYXRvci0+PkNvdWNoREJQYWdpbmF0b3I6IEZpbmQgcHJpbWFyeSBrZXlcbiAgICpcbiAgICogICAgIGFsdCBIYXMgZmllbGRzIGluIHN0YXRlbWVudFxuICAgKiAgICAgICBDb3VjaERCUGFnaW5hdG9yLT4+Q291Y2hEQlBhZ2luYXRvcjogVXNlIGRvY3MgZGlyZWN0bHlcbiAgICogICAgIGVsc2UgTm8gZmllbGRzXG4gICAqICAgICAgIENvdWNoREJQYWdpbmF0b3ItPj5Db3VjaERCUGFnaW5hdG9yOiBQcm9jZXNzIGVhY2ggZG9jdW1lbnRcbiAgICogICAgICAgbG9vcCBGb3IgZWFjaCBkb2N1bWVudFxuICAgKiAgICAgICAgIENvdWNoREJQYWdpbmF0b3ItPj5Db3VjaERCUGFnaW5hdG9yOiBFeHRyYWN0IG9yaWdpbmFsIElEXG4gICAqICAgICAgICAgQ291Y2hEQlBhZ2luYXRvci0+PkFkYXB0ZXI6IHJldmVydChkb2MsIGNsYXp6LCBwa0RlZi5pZCwgcGFyc2VkSWQpXG4gICAqICAgICAgIGVuZFxuICAgKiAgICAgZW5kXG4gICAqXG4gICAqICAgICBDb3VjaERCUGFnaW5hdG9yLT4+Q291Y2hEQlBhZ2luYXRvcjogU3RvcmUgYm9va21hcmtcbiAgICogICAgIENvdWNoREJQYWdpbmF0b3ItPj5Db3VjaERCUGFnaW5hdG9yOiBVcGRhdGUgY3VycmVudFBhZ2VcbiAgICogICAgIENvdWNoREJQYWdpbmF0b3ItLT4+Q2xpZW50OiBSZXR1cm4gcmVzdWx0c1xuICAgKiAgIGVuZFxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgcGFnZShcbiAgICBwYWdlOiBudW1iZXIgPSAxLFxuICAgIGJvb2ttYXJrPzogYW55LFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxhbnk+XG4gICk6IFByb21pc2U8TVtdPiB7XG4gICAgY29uc3QgeyBjdHhBcmdzLCBjdHgsIGxvZyB9ID0gdGhpcy5hZGFwdGVyW1wibG9nQ3R4XCJdKFxuICAgICAgW2Jvb2ttYXJrLCAuLi5hcmdzXSxcbiAgICAgIHRoaXMucGFnZVxuICAgICk7XG4gICAgaWYgKHRoaXMuaXNQcmVwYXJlZFN0YXRlbWVudCgpKVxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucGFnZVByZXBhcmVkKHBhZ2UsIC4uLmN0eEFyZ3MpO1xuICAgIGNvbnN0IHN0YXRlbWVudCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc3RhdGVtZW50KTtcblxuICAgIGlmICghdGhpcy5fcmVjb3JkQ291bnQgfHwgIXRoaXMuX3RvdGFsUGFnZXMpIHtcbiAgICAgIHRoaXMuX3RvdGFsUGFnZXMgPSB0aGlzLl9yZWNvcmRDb3VudCA9IDA7XG4gICAgICBjb25zdCBjb3VudFJlc3VsdHMgPVxuICAgICAgICAoYXdhaXQgdGhpcy5hZGFwdGVyLnJhdzxNW10sIHRydWU+KFxuICAgICAgICAgIHsgLi4uc3RhdGVtZW50LCBsaW1pdDogTnVtYmVyLk1BWF9WQUxVRSB9LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICAgLi4uY3R4QXJnc1xuICAgICAgICApKSB8fCBbXTtcbiAgICAgIHRoaXMuX3JlY29yZENvdW50ID0gY291bnRSZXN1bHRzLmxlbmd0aDtcbiAgICAgIGlmICh0aGlzLl9yZWNvcmRDb3VudCA+IDApIHtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHN0YXRlbWVudD8ubGltaXQgfHwgdGhpcy5zaXplO1xuICAgICAgICB0aGlzLl90b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHRoaXMuX3JlY29yZENvdW50IC8gc2l6ZSk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnBhZ2UocGFnZSwgLi4uY3R4QXJncyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhZ2UgPSB0aGlzLnZhbGlkYXRlUGFnZShwYWdlKTtcbiAgICAgIHN0YXRlbWVudC5za2lwID0gKHBhZ2UgLSAxKSAqIHRoaXMuc2l6ZTtcbiAgICB9XG5cbiAgICBpZiAocGFnZSAhPT0gMSkge1xuICAgICAgaWYgKCF0aGlzLl9ib29rbWFyaylcbiAgICAgICAgdGhyb3cgbmV3IFBhZ2luZ0Vycm9yKFwiTm8gYm9va21hcmsuIERpZCB5b3Ugc3RhcnQgaW4gdGhlIGZpcnN0IHBhZ2U/XCIpO1xuICAgICAgc3RhdGVtZW50W1wiYm9va21hcmtcIl0gPSB0aGlzLl9ib29rbWFyayBhcyBzdHJpbmc7XG4gICAgfVxuICAgIGNvbnN0IHJhd1Jlc3VsdCA9IChhd2FpdCB0aGlzLmFkYXB0ZXIucmF3KFxuICAgICAgc3RhdGVtZW50LFxuICAgICAgdHJ1ZSxcbiAgICAgIC4uLmN0eEFyZ3NcbiAgICApKSBhcyBhbnk7XG5cbiAgICBjb25zdCB7IGRvY3MsIGJvb2ttYXJrOiBuZXh0Qm9va21hcmssIHdhcm5pbmcgfSA9IHJhd1Jlc3VsdDtcbiAgICBpZiAod2FybmluZykgbG9nLndhcm4od2FybmluZyk7XG4gICAgaWYgKCF0aGlzLmNsYXp6KSB0aHJvdyBuZXcgUGFnaW5nRXJyb3IoXCJObyBzdGF0ZW1lbnQgdGFyZ2V0IGRlZmluZWRcIik7XG4gICAgY29uc3QgaWQgPSBNb2RlbC5wayh0aGlzLmNsYXp6KTtcbiAgICBjb25zdCB0eXBlID0gTWV0YWRhdGEuZ2V0KFxuICAgICAgdGhpcy5jbGF6eixcbiAgICAgIE1ldGFkYXRhLmtleShEQktleXMuSUQsIGlkIGFzIHN0cmluZylcbiAgICApPy50eXBlO1xuICAgIGNvbnN0IHJlc3VsdHMgPVxuICAgICAgc3RhdGVtZW50LmZpZWxkcyAmJiBzdGF0ZW1lbnQuZmllbGRzLmxlbmd0aFxuICAgICAgICA/IHJhd1Jlc3VsdCAvLyBoYXMgZmllbGRzIG1lYW5zIGl0cyBub3QgZnVsbCBtb2RlbFxuICAgICAgICA6IHJhd1Jlc3VsdC5tYXAoKGQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5yZXZlcnQoXG4gICAgICAgICAgICAgIGQsXG4gICAgICAgICAgICAgIHRoaXMuY2xhenosXG4gICAgICAgICAgICAgIFNlcXVlbmNlLnBhcnNlVmFsdWUodHlwZSwgZFtpZF0pLFxuICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIGN0eFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICB0aGlzLl9ib29rbWFyayA9IG5leHRCb29rbWFyaztcbiAgICB0aGlzLl9jdXJyZW50UGFnZSA9IHBhZ2U7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cbn1cbiJdfQ==
158
+ //# sourceMappingURL=FabricContractPaginator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FabricContractPaginator.js","sourceRoot":"","sources":["../../src/contracts/FabricContractPaginator.ts"],"names":[],"mappings":"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"}
@@ -161,4 +161,4 @@ class FabricContractRepository extends core_1.Repository {
161
161
  }
162
162
  }
163
163
  exports.FabricContractRepository = FabricContractRepository;
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ29udHJhY3RSZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9GYWJyaWNDb250cmFjdFJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBYXdCO0FBRXhCLHlFQUF1RDtBQUN2RCwrR0FBd0c7QUFDeEcsMkRBS2lDO0FBSWpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErREc7QUFDSCxNQUFhLHdCQUEwQyxTQUFRLGlCQUc5RDtJQVNDLFlBQ0UsT0FBK0IsRUFDL0IsS0FBc0IsRUFDWixhQUFrRTtRQUU1RSxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRlosa0JBQWEsR0FBYixhQUFhLENBQXFEO1FBWDNELGVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDckUsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixjQUFjLEVBQUUsS0FBSztZQUNyQixrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLHlCQUF5QixFQUFFLEtBQUs7WUFDaEMsMEJBQTBCLEVBQUUsS0FBSztTQUNsQyxDQUFDLENBQUM7SUFRSCxDQUFDO0lBRVEsS0FBSyxDQUFDLFVBQVUsQ0FDdkIsR0FBWSxFQUNaLEtBQXFCLEVBQ3JCLE1BQStDO1FBQzdDLE1BQU0sRUFBRSxDQUFDO1FBQ1QsS0FBSyxFQUFFLEVBQUU7S0FDVixFQUNELEdBQUcsSUFBK0M7UUFFbEQsd0NBQXdDO1FBQ3hDLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUN0QyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUTtZQUN0QixNQUFNLElBQUksaUJBQVUsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ2hF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LENBQUM7WUFDcEMsTUFBTSxJQUFJLDZCQUFhLENBQ3JCLHdDQUF3QyxJQUFJLGNBQWMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUMxRSxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ00sZUFBZTtRQUN0QixPQUFPLElBQUkscUZBQXlDLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ00sS0FBSyxDQUFDLGVBQWUsQ0FDNUIsS0FBOEIsRUFDOUIsS0FBcUQsRUFDckQsRUFBWSxFQUNaLEdBQUcsSUFBMkM7UUFFOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pFLE9BQU8sTUFBTSxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbEUsQ0FBQztDQUNGO0FBekhELDREQXlIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFJlcG9zaXRvcnksXG4gIE9ic2VydmVySGFuZGxlcixcbiAgRXZlbnRJZHMsXG4gIENvbnRleHR1YWxBcmdzLFxuICBNYXliZUNvbnRleHR1YWxBcmcsXG4gIFF1ZXJ5RXJyb3IsXG4gIFBlcnNpc3RlbmNlS2V5cyxcbiAgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLFxuICBPcmRlckRpcmVjdGlvbixcbiAgU2VyaWFsaXplZFBhZ2UsXG4gIFBhZ2luYXRvcixcbiAgRGlyZWN0aW9uTGltaXRPZmZzZXQsXG59IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgRmFicmljQ29udHJhY3RDb250ZXh0IH0gZnJvbSBcIi4vQ29udHJhY3RDb250ZXh0XCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEZhYnJpY0NvbnRyYWN0UmVwb3NpdG9yeU9ic2VydmFibGVIYW5kbGVyIH0gZnJvbSBcIi4vRmFicmljQ29udHJhY3RSZXBvc2l0b3J5T2JzZXJ2YWJsZUhhbmRsZXJcIjtcbmltcG9ydCB7XG4gIEJhc2VFcnJvcixcbiAgQnVsa0NydWRPcGVyYXRpb25LZXlzLFxuICBJbnRlcm5hbEVycm9yLFxuICBPcGVyYXRpb25LZXlzLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBGYWJyaWNDb250cmFjdEFkYXB0ZXIgfSBmcm9tIFwiLi9Db250cmFjdEFkYXB0ZXJcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVwb3NpdG9yeSBmb3IgSHlwZXJsZWRnZXIgRmFicmljIGNoYWluY29kZSBtb2RlbHNcbiAqIEBzdW1tYXJ5IFByb3ZpZGVzIENSVUQgb3BlcmF0aW9ucyBmb3IgbW9kZWxzIHdpdGhpbiBGYWJyaWMgY2hhaW5jb2RlIGNvbnRyYWN0c1xuICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICogQHRlbXBsYXRlIE1hbmdvUXVlcnkgLSBRdWVyeSB0eXBlIGZvciBDb3VjaERCLWxpa2UgcXVlcmllc1xuICogQHRlbXBsYXRlIEZhYnJpY0NvbnRyYWN0QWRhcHRlciAtIEFkYXB0ZXIgdHlwZSBmb3IgRmFicmljIGNvbnRyYWN0IG9wZXJhdGlvbnNcbiAqIEB0ZW1wbGF0ZSBGYWJyaWNDb250cmFjdEZsYWdzIC0gRmxhZ3Mgc3BlY2lmaWMgdG8gRmFicmljIGNvbnRyYWN0IG9wZXJhdGlvbnNcbiAqIEB0ZW1wbGF0ZSBGYWJyaWNDb250cmFjdENvbnRleHQgLSBDb250ZXh0IHR5cGUgZm9yIEZhYnJpYyBjb250cmFjdCBvcGVyYXRpb25zXG4gKlxuICogQHBhcmFtIHtGYWJyaWNDb250cmFjdEFkYXB0ZXJ9IFthZGFwdGVyXSAtIFRoZSBhZGFwdGVyIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBzdGF0ZSBkYXRhYmFzZVxuICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNPn0gW2NsYXp6XSAtIFRoZSBtb2RlbCBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheTxPcGVyYXRpb25LZXlzIHwgQnVsa0NydWRPcGVyYXRpb25LZXlzIHwgc3RyaW5nPn0gW3RyYWNrZWRFdmVudHNdIC0gRXZlbnRzIHRvIHRyYWNrIGZvciBvYnNlcnZlciBub3RpZmljYXRpb25zXG4gKlxuICogQGNsYXNzIEZhYnJpY0NvbnRyYWN0UmVwb3NpdG9yeVxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEluIGEgRmFicmljIGNoYWluY29kZSBjb250cmFjdCBjbGFzc1xuICogaW1wb3J0IHsgRmFicmljQ29udHJhY3RSZXBvc2l0b3J5LCBGYWJyaWNDb250cmFjdEFkYXB0ZXIgfSBmcm9tICdAZGVjYWYtdHMvZm9yLWZhYnJpYyc7XG4gKlxuICogQHRhYmxlKCdhc3NldHMnKVxuICogY2xhc3MgQXNzZXQgZXh0ZW5kcyBNb2RlbCB7XG4gKiAgIEBpZCgpXG4gKiAgIGlkOiBzdHJpbmc7XG4gKlxuICogICBAcHJvcGVydHkoKVxuICogICBkYXRhOiBzdHJpbmc7XG4gKiB9XG4gKlxuICogZXhwb3J0IGNsYXNzIE15Q29udHJhY3QgZXh0ZW5kcyBDb250cmFjdCB7XG4gKiAgIHByaXZhdGUgYWRhcHRlciA9IG5ldyBGYWJyaWNDb250cmFjdEFkYXB0ZXIoKTtcbiAqICAgcHJpdmF0ZSByZXBvc2l0b3J5OiBGYWJyaWNDb250cmFjdFJlcG9zaXRvcnk8QXNzZXQ+O1xuICpcbiAqICAgY29uc3RydWN0b3IoKSB7XG4gKiAgICAgc3VwZXIoJ015Q29udHJhY3QnKTtcbiAqICAgICB0aGlzLnJlcG9zaXRvcnkgPSBuZXcgRmFicmljQ29udHJhY3RSZXBvc2l0b3J5PEFzc2V0Pih0aGlzLmFkYXB0ZXIsIEFzc2V0KTtcbiAqICAgfVxuICpcbiAqICAgQFRyYW5zYWN0aW9uKClcbiAqICAgYXN5bmMgY3JlYXRlQXNzZXQoY3R4OiBDb250ZXh0LCBpZDogc3RyaW5nLCBkYXRhOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAqICAgICBjb25zdCBhc3NldCA9IG5ldyBBc3NldCgpO1xuICogICAgIGFzc2V0LmlkID0gaWQ7XG4gKiAgICAgYXNzZXQuZGF0YSA9IGRhdGE7XG4gKlxuICogICAgIGF3YWl0IHRoaXMucmVwb3NpdG9yeS5jcmVhdGUoYXNzZXQsIHsgc3R1YjogY3R4LnN0dWIgfSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDb250cmFjdFxuICogICBwYXJ0aWNpcGFudCBSZXBvc2l0b3J5XG4gKiAgIHBhcnRpY2lwYW50IEFkYXB0ZXJcbiAqICAgcGFydGljaXBhbnQgU3RhdGVEQlxuICpcbiAqICAgQ29udHJhY3QtPj5SZXBvc2l0b3J5OiBjcmVhdGUobW9kZWwsIGN0eClcbiAqICAgUmVwb3NpdG9yeS0+PkFkYXB0ZXI6IHByZXBhcmUobW9kZWwsIHBrKVxuICogICBSZXBvc2l0b3J5LT4+QWRhcHRlcjogY3JlYXRlKHRhYmxlTmFtZSwgaWQsIHJlY29yZCwgdHJhbnNpZW50LCBjdHgpXG4gKiAgIEFkYXB0ZXItPj5TdGF0ZURCOiBwdXRTdGF0ZShpZCwgc2VyaWFsaXplZERhdGEpXG4gKiAgIFN0YXRlREItLT4+QWRhcHRlcjogU3VjY2Vzc1xuICogICBBZGFwdGVyLS0+PlJlcG9zaXRvcnk6IHJlY29yZFxuICogICBSZXBvc2l0b3J5LT4+QWRhcHRlcjogcmV2ZXJ0KHJlY29yZCwgY2xhc3MsIHBrLCBpZCwgdHJhbnNpZW50KVxuICogICBBZGFwdGVyLS0+PlJlcG9zaXRvcnk6IG1vZGVsXG4gKiAgIFJlcG9zaXRvcnktLT4+Q29udHJhY3Q6IG1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBGYWJyaWNDb250cmFjdFJlcG9zaXRvcnk8TSBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFJlcG9zaXRvcnk8XG4gIE0sXG4gIEZhYnJpY0NvbnRyYWN0QWRhcHRlclxuPiB7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBfb3ZlcnJpZGVzID0gT2JqZWN0LmFzc2lnbih7fSwgc3VwZXJbXCJfb3ZlcnJpZGVzXCJdLCB7XG4gICAgaWdub3JlVmFsaWRhdGlvbjogZmFsc2UsXG4gICAgaWdub3JlSGFuZGxlcnM6IGZhbHNlLFxuICAgIGFsbG93UmF3U3RhdGVtZW50czogdHJ1ZSxcbiAgICBmb3JjZVByZXBhcmVTaW1wbGVRdWVyaWVzOiBmYWxzZSxcbiAgICBmb3JjZVByZXBhcmVDb21wbGV4UXVlcmllczogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFkYXB0ZXI/OiBGYWJyaWNDb250cmFjdEFkYXB0ZXIsXG4gICAgY2xheno/OiBDb25zdHJ1Y3RvcjxNPixcbiAgICBwcm90ZWN0ZWQgdHJhY2tlZEV2ZW50cz86IChPcGVyYXRpb25LZXlzIHwgQnVsa0NydWRPcGVyYXRpb25LZXlzIHwgc3RyaW5nKVtdXG4gICkge1xuICAgIHN1cGVyKGFkYXB0ZXIsIGNsYXp6KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHBhZ2luYXRlQnkoXG4gICAga2V5OiBrZXlvZiBNLFxuICAgIG9yZGVyOiBPcmRlckRpcmVjdGlvbixcbiAgICByZWY6IE9taXQ8RGlyZWN0aW9uTGltaXRPZmZzZXQsIFwiZGlyZWN0aW9uXCI+ID0ge1xuICAgICAgb2Zmc2V0OiAxLFxuICAgICAgbGltaXQ6IDEwLFxuICAgIH0sXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPEZhYnJpY0NvbnRyYWN0Q29udGV4dD5cbiAgKTogUHJvbWlzZTxTZXJpYWxpemVkUGFnZTxNPj4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBsZXQgeyBvZmZzZXQsIGJvb2ttYXJrLCBsaW1pdCB9ID0gcmVmO1xuICAgIGlmICghb2Zmc2V0ICYmICFib29rbWFyaylcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGBQYWdpbmF0ZUJ5IG5lZWRzIGEgcGFnZSBvciBhIGJvb2ttYXJrYCk7XG4gICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFByZXBhcmVkU3RhdGVtZW50S2V5cy5QQUdFX0JZLCB0cnVlKVxuICAgICkuZm9yKHRoaXMucGFnaW5hdGVCeSk7XG4gICAgbG9nLnZlcmJvc2UoXG4gICAgICBgcGFnaW5hdGluZyAke01vZGVsLnRhYmxlTmFtZSh0aGlzLmNsYXNzKX0gd2l0aCBwYWdlIHNpemUgJHtsaW1pdH1gXG4gICAgKTtcblxuICAgIGxldCBwYWdpbmF0b3I6IFBhZ2luYXRvcjxNPjtcbiAgICBpZiAoYm9va21hcmspIHtcbiAgICAgIHBhZ2luYXRvciA9IGF3YWl0IHRoaXMub3ZlcnJpZGUoe1xuICAgICAgICBmb3JjZVByZXBhcmVDb21wbGV4UXVlcmllczogZmFsc2UsXG4gICAgICAgIGZvcmNlUHJlcGFyZVNpbXBsZVF1ZXJpZXM6IGZhbHNlLFxuICAgICAgfSBhcyBhbnkpXG4gICAgICAgIC5zZWxlY3QoKVxuICAgICAgICAud2hlcmUodGhpcy5hdHRyKE1vZGVsLnBrKHRoaXMuY2xhc3MpKS5ndChib29rbWFyaykpXG4gICAgICAgIC5vcmRlckJ5KFtrZXksIG9yZGVyXSlcbiAgICAgICAgLnBhZ2luYXRlKGxpbWl0IGFzIG51bWJlciwgLi4uY3R4QXJncyk7XG4gICAgICBvZmZzZXQgPSAxO1xuICAgIH0gZWxzZSBpZiAob2Zmc2V0KSB7XG4gICAgICBwYWdpbmF0b3IgPSBhd2FpdCB0aGlzLm92ZXJyaWRlKHtcbiAgICAgICAgZm9yY2VQcmVwYXJlQ29tcGxleFF1ZXJpZXM6IGZhbHNlLFxuICAgICAgICBmb3JjZVByZXBhcmVTaW1wbGVRdWVyaWVzOiBmYWxzZSxcbiAgICAgIH0gYXMgYW55KVxuICAgICAgICAuc2VsZWN0KClcbiAgICAgICAgLm9yZGVyQnkoW2tleSwgb3JkZXJdKVxuICAgICAgICAucGFnaW5hdGUobGltaXQgYXMgbnVtYmVyLCAuLi5jdHhBcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYFBhZ2luYXRlQnkgbmVlZHMgYSBwYWdlIG9yIGEgYm9va21hcmtgKTtcbiAgICB9XG4gICAgY29uc3QgcGFnZWQgPSBhd2FpdCBwYWdpbmF0b3IucGFnZShvZmZzZXQsIGJvb2ttYXJrLCAuLi5jdHhBcmdzKTtcbiAgICByZXR1cm4gcGFnaW5hdG9yLnNlcmlhbGl6ZShwYWdlZCkgYXMgU2VyaWFsaXplZFBhZ2U8TT47XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBzdGF0ZW1lbnQoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQ+XG4gICkge1xuICAgIGNvbnN0IHsgbG9nLCBjdHgsIGN0eEFyZ3MgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFBlcnNpc3RlbmNlS2V5cy5TVEFURU1FTlQsIHRydWUpXG4gICAgKS5mb3IodGhpcy5zdGF0ZW1lbnQpO1xuICAgIGlmICghUmVwb3NpdG9yeS5zdGF0ZW1lbnRzKHRoaXMsIG5hbWUgYXMga2V5b2YgdHlwZW9mIHRoaXMpKVxuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYEludmFsaWQgcHJlcGFyZWQgc3RhdGVtZW50IHJlcXVlc3RlZCAke25hbWV9YCk7XG4gICAgaWYgKGN0eC5sb2dnZXIpIHtcbiAgICAgIGN0eC5sb2dnZXIuaW5mbyhgUmVwbyBzdGF0ZW1lbnQ6ICR7bmFtZX0gKyAke2FyZ3N9YCk7XG4gICAgfVxuICAgIGxvZy52ZXJib3NlKGBFeGVjdXRpbmcgcHJlcGFyZWQgc3RhdGVtZW50ICR7bmFtZX0gd2l0aCBhcmdzICR7Y3R4QXJnc31gKTtcblxuICAgIGxldCByZXN1bHQ6IGFueTtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgKHRoaXMgYXMgYW55KVtuYW1lXSguLi5jdHhBcmdzKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEJhc2VFcnJvcikgdGhyb3cgZTtcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIGV4ZWN1dGUgcHJlcGFyZWQgc3RhdGVtZW50ICR7bmFtZX0gd2l0aCBhcmdzICR7Y3R4QXJnc306ICR7ZX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgdGhlIG9ic2VydmVyIGhhbmRsZXIgZm9yIHRoaXMgcmVwb3NpdG9yeVxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIGEgRmFicmljQ29udHJhY3RSZXBvc2l0b3J5T2JzZXJ2YWJsZUhhbmRsZXIgaW5zdGFuY2VcbiAgICogQHJldHVybiB7T2JzZXJ2ZXJIYW5kbGVyfSBUaGUgb2JzZXJ2ZXIgaGFuZGxlclxuICAgKi9cbiAgb3ZlcnJpZGUgT2JzZXJ2ZXJIYW5kbGVyKCk6IE9ic2VydmVySGFuZGxlciB7XG4gICAgcmV0dXJuIG5ldyBGYWJyaWNDb250cmFjdFJlcG9zaXRvcnlPYnNlcnZhYmxlSGFuZGxlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGVzIG9ic2VydmVycyBiYXNlZCBvbiB0cmFja2VkIGV2ZW50c1xuICAgKiBAc3VtbWFyeSBGaWx0ZXJzIGV2ZW50cyBiYXNlZCBvbiB0cmFja2VkRXZlbnRzIGFuZCBkZWxlZ2F0ZXMgdG8gdGhlIHBhcmVudCBtZXRob2RcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlIC0gVGhlIHRhYmxlL2NvbGxlY3Rpb24gbmFtZVxuICAgKiBAcGFyYW0ge09wZXJhdGlvbktleXMgfCBCdWxrQ3J1ZE9wZXJhdGlvbktleXMgfCBzdHJpbmd9IGV2ZW50IC0gVGhlIGV2ZW50IHR5cGVcbiAgICogQHBhcmFtIHtFdmVudElkc30gaWQgLSBUaGUgZXZlbnQgaWRlbnRpZmllclxuICAgKiBAcGFyYW0ge0ZhYnJpY0NvbnRyYWN0Q29udGV4dH0gY3R4IC0gVGhlIEZhYnJpYyBjb250cmFjdCBjb250ZXh0XG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBvYnNlcnZlcnMgYXJlIHVwZGF0ZWRcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIHVwZGF0ZU9ic2VydmVycyhcbiAgICB0YWJsZTogQ29uc3RydWN0b3I8TT4gfCBzdHJpbmcsXG4gICAgZXZlbnQ6IE9wZXJhdGlvbktleXMgfCBCdWxrQ3J1ZE9wZXJhdGlvbktleXMgfCBzdHJpbmcsXG4gICAgaWQ6IEV2ZW50SWRzLFxuICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPEZhYnJpY0NvbnRyYWN0Q29udGV4dD5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLnRyYWNrZWRFdmVudHMgfHwgdGhpcy50cmFja2VkRXZlbnRzLmluZGV4T2YoZXZlbnQpICE9PSAtMSlcbiAgICAgIHJldHVybiBhd2FpdCBzdXBlci51cGRhdGVPYnNlcnZlcnModGFibGUsIGV2ZW50LCBpZCwgLi4uYXJncyk7XG4gIH1cbn1cbiJdfQ==
164
+ //# sourceMappingURL=FabricContractRepository.js.map