@microsoft/terraform-cdk-constructs 0.0.3-pre.7 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (970) hide show
  1. package/.devcontainer/devcontainer.json +2 -2
  2. package/.jsii +22878 -10724
  3. package/API.md +25087 -9636
  4. package/LICENSE +16 -18
  5. package/README.md +147 -72
  6. package/cdktf.json +1 -1
  7. package/docs/ARCHITECTURE.md +836 -0
  8. package/docs/azapi-testing-architecture.md +482 -0
  9. package/docs/testing.md +39 -137
  10. package/docs/versioning-and-migrations-user-guide.md +409 -0
  11. package/go.mod +12 -12
  12. package/go.sum +27 -23
  13. package/lib/azure-resourcegroup/index.d.ts +37 -0
  14. package/lib/azure-resourcegroup/index.js +39 -1
  15. package/lib/azure-resourcegroup/lib/index.d.ts +44 -0
  16. package/lib/azure-resourcegroup/lib/index.js +43 -1
  17. package/lib/azure-resourcegroup/lib/resource-group-schemas.d.ts +40 -0
  18. package/lib/azure-resourcegroup/lib/resource-group-schemas.js +243 -0
  19. package/lib/azure-resourcegroup/lib/resource-group.d.ts +170 -46
  20. package/lib/azure-resourcegroup/lib/resource-group.js +222 -56
  21. package/lib/azure-resourcegroup/test/resource-group.integ.d.ts +9 -0
  22. package/lib/azure-resourcegroup/test/resource-group.integ.js +60 -0
  23. package/lib/azure-resourcegroup/test/resource-group.spec.d.ts +9 -0
  24. package/lib/azure-resourcegroup/test/resource-group.spec.js +554 -0
  25. package/lib/azure-storageaccount/index.d.ts +19 -0
  26. package/lib/azure-storageaccount/index.js +20 -1
  27. package/lib/azure-storageaccount/lib/index.d.ts +8 -5
  28. package/lib/azure-storageaccount/lib/index.js +9 -6
  29. package/lib/azure-storageaccount/lib/storage-account-schemas.d.ts +40 -0
  30. package/lib/azure-storageaccount/lib/storage-account-schemas.js +378 -0
  31. package/lib/azure-storageaccount/lib/storage-account.d.ts +311 -0
  32. package/lib/azure-storageaccount/lib/storage-account.js +229 -0
  33. package/lib/azure-storageaccount/test/storage-account.integ.d.ts +9 -0
  34. package/lib/azure-storageaccount/test/storage-account.integ.js +72 -0
  35. package/lib/azure-storageaccount/test/storage-account.spec.d.ts +4 -0
  36. package/lib/azure-storageaccount/test/storage-account.spec.js +315 -0
  37. package/lib/core-azure/lib/azapi/azapi-exports.d.ts +16 -0
  38. package/lib/core-azure/lib/azapi/azapi-exports.js +38 -0
  39. package/lib/core-azure/lib/azapi/azapi-resource.d.ts +413 -0
  40. package/lib/core-azure/lib/azapi/azapi-resource.js +468 -0
  41. package/lib/core-azure/lib/azapi/azapi-resource.spec.d.ts +7 -0
  42. package/lib/core-azure/lib/azapi/azapi-resource.spec.js +545 -0
  43. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.d.ts +62 -0
  44. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +161 -0
  45. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.d.ts +327 -0
  46. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +521 -0
  47. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.d.ts +331 -0
  48. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.js +436 -0
  49. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.d.ts +116 -0
  50. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.js +213 -0
  51. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.d.ts +272 -0
  52. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.js +368 -0
  53. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.d.ts +505 -0
  54. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.js +620 -0
  55. package/lib/core-azure/lib/azapi/providers-azapi/index.d.ts +10 -0
  56. package/lib/core-azure/lib/azapi/providers-azapi/index.js +15 -0
  57. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.d.ts +435 -0
  58. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +584 -0
  59. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.d.ts +675 -0
  60. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +856 -0
  61. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.d.ts +387 -0
  62. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +531 -0
  63. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.d.ts +437 -0
  64. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +589 -0
  65. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.d.ts +215 -0
  66. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +565 -0
  67. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.spec.d.ts +7 -0
  68. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.spec.js +630 -0
  69. package/lib/core-azure/lib/index.d.ts +18 -3
  70. package/lib/core-azure/lib/index.js +24 -4
  71. package/lib/core-azure/lib/version-manager/api-version-manager.d.ts +253 -0
  72. package/lib/core-azure/lib/version-manager/api-version-manager.js +509 -0
  73. package/lib/core-azure/lib/version-manager/api-version-manager.spec.d.ts +7 -0
  74. package/lib/core-azure/lib/version-manager/api-version-manager.spec.js +510 -0
  75. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.d.ts +669 -0
  76. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +202 -0
  77. package/lib/core-azure/lib/version-manager/version-manager.d.ts +9 -0
  78. package/lib/core-azure/lib/version-manager/version-manager.js +23 -0
  79. package/lib/index.d.ts +20 -16
  80. package/lib/index.js +41 -18
  81. package/lib/testing/index.d.ts +33 -0
  82. package/lib/testing/index.js +238 -2
  83. package/lib/util/azureTenantIdHelpers.js +3 -4
  84. package/lib/util/randomName.js +2 -3
  85. package/package.json +53 -40
  86. package/cdktf.out/manifest.json +0 -13
  87. package/cdktf.out/stacks/testAzureActionGroup/cdk.tf.json +0 -111
  88. package/cdktf.out/stacks/testAzureApplicationGateway/cdk.tf.json +0 -588
  89. package/cdktf.out/stacks/testAzureApplicationInsights/cdk.tf.json +0 -245
  90. package/cdktf.out/stacks/testAzureContainerRegistry/cdk.tf.json +0 -179
  91. package/cdktf.out/stacks/testAzureEventhub/cdk.tf.json +0 -236
  92. package/cdktf.out/stacks/testAzureKeyVault/cdk.tf.json +0 -436
  93. package/cdktf.out/stacks/testAzureKubernetesCluster/cdk.tf.json +0 -152
  94. package/cdktf.out/stacks/testAzureKusto/cdk.tf.json +0 -209
  95. package/cdktf.out/stacks/testAzureLinuxFunctionApp/cdk.tf.json +0 -439
  96. package/cdktf.out/stacks/testAzureLinuxVirtualMachineExample/cdk.tf.json +0 -283
  97. package/cdktf.out/stacks/testAzureLinuxVirtualMachineScaleSetExample/cdk.tf.json +0 -261
  98. package/cdktf.out/stacks/testAzureLogAnalytics/cdk.tf.json +0 -309
  99. package/cdktf.out/stacks/testAzureMetricAlert/cdk.tf.json +0 -161
  100. package/cdktf.out/stacks/testAzureNetworkSecurityGroup/cdk.tf.json +0 -271
  101. package/cdktf.out/stacks/testAzureQueryRuleAlert/cdk.tf.json +0 -122
  102. package/cdktf.out/stacks/testAzureResourceGroup/cdk.tf.json +0 -88
  103. package/cdktf.out/stacks/testAzureStorageAccount/cdk.tf.json +0 -339
  104. package/cdktf.out/stacks/testAzureVirtualNetwork/cdk.tf.json +0 -264
  105. package/cdktf.out/stacks/testAzureWindowVirtualMachineScaleSetExample/cdk.tf.json +0 -261
  106. package/cdktf.out/stacks/testAzureWindowsVirtualMachineExample/cdk.tf.json +0 -280
  107. package/cdktf.out/stacks/testExampleAzureResource/cdk.tf.json +0 -167
  108. package/lib/azure-actiongroup/index.d.ts +0 -1
  109. package/lib/azure-actiongroup/index.js +0 -18
  110. package/lib/azure-actiongroup/lib/actiongroup.d.ts +0 -49
  111. package/lib/azure-actiongroup/lib/actiongroup.js +0 -85
  112. package/lib/azure-actiongroup/lib/index.d.ts +0 -1
  113. package/lib/azure-actiongroup/lib/index.js +0 -18
  114. package/lib/azure-actiongroup/model/action-group-props.d.ts +0 -47
  115. package/lib/azure-actiongroup/model/action-group-props.js +0 -3
  116. package/lib/azure-actiongroup/model/arm-role-receiver-props.d.ts +0 -20
  117. package/lib/azure-actiongroup/model/arm-role-receiver-props.js +0 -3
  118. package/lib/azure-actiongroup/model/azure-app-push-receiver-props.d.ts +0 -14
  119. package/lib/azure-actiongroup/model/azure-app-push-receiver-props.js +0 -3
  120. package/lib/azure-actiongroup/model/email-receiver-props.d.ts +0 -19
  121. package/lib/azure-actiongroup/model/email-receiver-props.js +0 -3
  122. package/lib/azure-actiongroup/model/eventhub-receiver-props.d.ts +0 -23
  123. package/lib/azure-actiongroup/model/eventhub-receiver-props.js +0 -3
  124. package/lib/azure-actiongroup/model/function.d.ts +0 -40
  125. package/lib/azure-actiongroup/model/function.js +0 -118
  126. package/lib/azure-actiongroup/model/index.d.ts +0 -10
  127. package/lib/azure-actiongroup/model/index.js +0 -27
  128. package/lib/azure-actiongroup/model/logic-app-receiver-props.d.ts +0 -23
  129. package/lib/azure-actiongroup/model/logic-app-receiver-props.js +0 -3
  130. package/lib/azure-actiongroup/model/sms-receiver-props.d.ts +0 -18
  131. package/lib/azure-actiongroup/model/sms-receiver-props.js +0 -3
  132. package/lib/azure-actiongroup/model/voice-receiver-props.d.ts +0 -18
  133. package/lib/azure-actiongroup/model/voice-receiver-props.js +0 -3
  134. package/lib/azure-actiongroup/model/webhook-receiver-props.d.ts +0 -18
  135. package/lib/azure-actiongroup/model/webhook-receiver-props.js +0 -3
  136. package/lib/azure-actiongroup/test/AzureActionGroup.spec.d.ts +0 -1
  137. package/lib/azure-actiongroup/test/AzureActionGroup.spec.js +0 -294
  138. package/lib/azure-actiongroup/test/ExampleAzureActionGroup.d.ts +0 -5
  139. package/lib/azure-actiongroup/test/ExampleAzureActionGroup.js +0 -66
  140. package/lib/azure-applicationgateway/index.d.ts +0 -1
  141. package/lib/azure-applicationgateway/index.js +0 -18
  142. package/lib/azure-applicationgateway/lib/gateway.d.ts +0 -248
  143. package/lib/azure-applicationgateway/lib/gateway.js +0 -199
  144. package/lib/azure-applicationgateway/lib/index.d.ts +0 -1
  145. package/lib/azure-applicationgateway/lib/index.js +0 -18
  146. package/lib/azure-applicationgateway/test/AzureApplicationGateway.spec.d.ts +0 -1
  147. package/lib/azure-applicationgateway/test/AzureApplicationGateway.spec.js +0 -106
  148. package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.d.ts +0 -5
  149. package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.js +0 -267
  150. package/lib/azure-applicationinsights/index.d.ts +0 -1
  151. package/lib/azure-applicationinsights/index.js +0 -18
  152. package/lib/azure-applicationinsights/lib/appinsights.d.ts +0 -110
  153. package/lib/azure-applicationinsights/lib/appinsights.js +0 -134
  154. package/lib/azure-applicationinsights/lib/index.d.ts +0 -1
  155. package/lib/azure-applicationinsights/lib/index.js +0 -18
  156. package/lib/azure-applicationinsights/test/AzureAppInsights.spec.d.ts +0 -1
  157. package/lib/azure-applicationinsights/test/AzureAppInsights.spec.js +0 -55
  158. package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.d.ts +0 -5
  159. package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.js +0 -87
  160. package/lib/azure-containerregistry/index.d.ts +0 -1
  161. package/lib/azure-containerregistry/index.js +0 -18
  162. package/lib/azure-containerregistry/lib/index.d.ts +0 -1
  163. package/lib/azure-containerregistry/lib/index.js +0 -18
  164. package/lib/azure-containerregistry/lib/registry.d.ts +0 -70
  165. package/lib/azure-containerregistry/lib/registry.js +0 -76
  166. package/lib/azure-containerregistry/test/AzureContainerRegistry.spec.d.ts +0 -1
  167. package/lib/azure-containerregistry/test/AzureContainerRegistry.spec.js +0 -50
  168. package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.d.ts +0 -5
  169. package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.js +0 -57
  170. package/lib/azure-datalake/index.d.ts +0 -1
  171. package/lib/azure-datalake/index.js +0 -18
  172. package/lib/azure-datalake/lib/datalake.d.ts +0 -64
  173. package/lib/azure-datalake/lib/datalake.js +0 -92
  174. package/lib/azure-datalake/lib/filesystem.d.ts +0 -70
  175. package/lib/azure-datalake/lib/filesystem.js +0 -83
  176. package/lib/azure-datalake/lib/index.d.ts +0 -3
  177. package/lib/azure-datalake/lib/index.js +0 -20
  178. package/lib/azure-datalake/lib/path.d.ts +0 -49
  179. package/lib/azure-datalake/lib/path.js +0 -51
  180. package/lib/azure-eventhub/index.d.ts +0 -1
  181. package/lib/azure-eventhub/index.js +0 -18
  182. package/lib/azure-eventhub/lib/authorization.d.ts +0 -58
  183. package/lib/azure-eventhub/lib/authorization.js +0 -84
  184. package/lib/azure-eventhub/lib/cluster.d.ts +0 -56
  185. package/lib/azure-eventhub/lib/cluster.js +0 -64
  186. package/lib/azure-eventhub/lib/consumer.d.ts +0 -54
  187. package/lib/azure-eventhub/lib/consumer.js +0 -59
  188. package/lib/azure-eventhub/lib/index.d.ts +0 -6
  189. package/lib/azure-eventhub/lib/index.js +0 -23
  190. package/lib/azure-eventhub/lib/instance.d.ts +0 -164
  191. package/lib/azure-eventhub/lib/instance.js +0 -184
  192. package/lib/azure-eventhub/lib/kusto-connection.d.ts +0 -109
  193. package/lib/azure-eventhub/lib/kusto-connection.js +0 -76
  194. package/lib/azure-eventhub/lib/namespace.d.ts +0 -151
  195. package/lib/azure-eventhub/lib/namespace.js +0 -131
  196. package/lib/azure-eventhub/test/AzureEventhub.spec.d.ts +0 -1
  197. package/lib/azure-eventhub/test/AzureEventhub.spec.js +0 -56
  198. package/lib/azure-eventhub/test/ExampleAzureEventhub.d.ts +0 -5
  199. package/lib/azure-eventhub/test/ExampleAzureEventhub.js +0 -72
  200. package/lib/azure-functionapp/index.d.ts +0 -1
  201. package/lib/azure-functionapp/index.js +0 -18
  202. package/lib/azure-functionapp/lib/functionapplinux.d.ts +0 -211
  203. package/lib/azure-functionapp/lib/functionapplinux.js +0 -141
  204. package/lib/azure-functionapp/lib/index.d.ts +0 -1
  205. package/lib/azure-functionapp/lib/index.js +0 -18
  206. package/lib/azure-functionapp/serviceplanskus.d.ts +0 -70
  207. package/lib/azure-functionapp/serviceplanskus.js +0 -81
  208. package/lib/azure-functionapp/test/AzureLinuxFunctionApp.spec.d.ts +0 -1
  209. package/lib/azure-functionapp/test/AzureLinuxFunctionApp.spec.js +0 -48
  210. package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.d.ts +0 -5
  211. package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.js +0 -123
  212. package/lib/azure-keyvault/index.d.ts +0 -1
  213. package/lib/azure-keyvault/index.js +0 -18
  214. package/lib/azure-keyvault/lib/certificate.d.ts +0 -133
  215. package/lib/azure-keyvault/lib/certificate.js +0 -146
  216. package/lib/azure-keyvault/lib/index.d.ts +0 -5
  217. package/lib/azure-keyvault/lib/index.js +0 -22
  218. package/lib/azure-keyvault/lib/key.d.ts +0 -72
  219. package/lib/azure-keyvault/lib/key.js +0 -69
  220. package/lib/azure-keyvault/lib/policy.d.ts +0 -76
  221. package/lib/azure-keyvault/lib/policy.js +0 -56
  222. package/lib/azure-keyvault/lib/secret.d.ts +0 -70
  223. package/lib/azure-keyvault/lib/secret.js +0 -64
  224. package/lib/azure-keyvault/lib/vault.d.ts +0 -282
  225. package/lib/azure-keyvault/lib/vault.js +0 -392
  226. package/lib/azure-keyvault/test/AzureKeyVault.spec.d.ts +0 -1
  227. package/lib/azure-keyvault/test/AzureKeyVault.spec.js +0 -63
  228. package/lib/azure-keyvault/test/ExampleAzureKeyVault.d.ts +0 -5
  229. package/lib/azure-keyvault/test/ExampleAzureKeyVault.js +0 -112
  230. package/lib/azure-kubernetes/index.d.ts +0 -1
  231. package/lib/azure-kubernetes/index.js +0 -18
  232. package/lib/azure-kubernetes/lib/cluster.d.ts +0 -93
  233. package/lib/azure-kubernetes/lib/cluster.js +0 -63
  234. package/lib/azure-kubernetes/lib/index.d.ts +0 -1
  235. package/lib/azure-kubernetes/lib/index.js +0 -18
  236. package/lib/azure-kubernetes/test/AzureKubernetesCluster.spec.d.ts +0 -1
  237. package/lib/azure-kubernetes/test/AzureKubernetesCluster.spec.js +0 -56
  238. package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.d.ts +0 -5
  239. package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.js +0 -65
  240. package/lib/azure-kusto/index.d.ts +0 -1
  241. package/lib/azure-kusto/index.js +0 -18
  242. package/lib/azure-kusto/lib/cluster.d.ts +0 -136
  243. package/lib/azure-kusto/lib/cluster.js +0 -138
  244. package/lib/azure-kusto/lib/compute-specification.d.ts +0 -71
  245. package/lib/azure-kusto/lib/compute-specification.js +0 -651
  246. package/lib/azure-kusto/lib/database.d.ts +0 -162
  247. package/lib/azure-kusto/lib/database.js +0 -180
  248. package/lib/azure-kusto/lib/index.d.ts +0 -3
  249. package/lib/azure-kusto/lib/index.js +0 -20
  250. package/lib/azure-kusto/test/AzureKusto.spec.d.ts +0 -1
  251. package/lib/azure-kusto/test/AzureKusto.spec.js +0 -50
  252. package/lib/azure-kusto/test/ExampleAzureKusto.d.ts +0 -5
  253. package/lib/azure-kusto/test/ExampleAzureKusto.js +0 -71
  254. package/lib/azure-loganalytics/index.d.ts +0 -1
  255. package/lib/azure-loganalytics/index.js +0 -18
  256. package/lib/azure-loganalytics/lib/index.d.ts +0 -1
  257. package/lib/azure-loganalytics/lib/index.js +0 -18
  258. package/lib/azure-loganalytics/lib/workspace.d.ts +0 -163
  259. package/lib/azure-loganalytics/lib/workspace.js +0 -126
  260. package/lib/azure-loganalytics/test/AzureLogAnalytics.spec.d.ts +0 -1
  261. package/lib/azure-loganalytics/test/AzureLogAnalytics.spec.js +0 -50
  262. package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.d.ts +0 -5
  263. package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.js +0 -115
  264. package/lib/azure-metricalert/index.d.ts +0 -2
  265. package/lib/azure-metricalert/index.js +0 -19
  266. package/lib/azure-metricalert/lib/index.d.ts +0 -1
  267. package/lib/azure-metricalert/lib/index.js +0 -18
  268. package/lib/azure-metricalert/lib/metric-alert.d.ts +0 -56
  269. package/lib/azure-metricalert/lib/metric-alert.js +0 -128
  270. package/lib/azure-metricalert/model/action-props.d.ts +0 -11
  271. package/lib/azure-metricalert/model/action-props.js +0 -3
  272. package/lib/azure-metricalert/model/criteria-base-props.d.ts +0 -38
  273. package/lib/azure-metricalert/model/criteria-base-props.js +0 -3
  274. package/lib/azure-metricalert/model/criteria-dimension-props.d.ts +0 -21
  275. package/lib/azure-metricalert/model/criteria-dimension-props.js +0 -3
  276. package/lib/azure-metricalert/model/criteria-props.d.ts +0 -12
  277. package/lib/azure-metricalert/model/criteria-props.js +0 -3
  278. package/lib/azure-metricalert/model/dynamic-criteria-props.d.ts +0 -29
  279. package/lib/azure-metricalert/model/dynamic-criteria-props.js +0 -3
  280. package/lib/azure-metricalert/model/function.d.ts +0 -28
  281. package/lib/azure-metricalert/model/function.js +0 -78
  282. package/lib/azure-metricalert/model/index.d.ts +0 -7
  283. package/lib/azure-metricalert/model/index.js +0 -24
  284. package/lib/azure-metricalert/model/metric-alert-props.d.ts +0 -86
  285. package/lib/azure-metricalert/model/metric-alert-props.js +0 -3
  286. package/lib/azure-metricalert/test/AzureMetricAlert.spec.d.ts +0 -1
  287. package/lib/azure-metricalert/test/AzureMetricAlert.spec.js +0 -63
  288. package/lib/azure-metricalert/test/ExampleAzureMetricAlert.d.ts +0 -5
  289. package/lib/azure-metricalert/test/ExampleAzureMetricAlert.js +0 -81
  290. package/lib/azure-networksecuritygroup/index.d.ts +0 -1
  291. package/lib/azure-networksecuritygroup/index.js +0 -18
  292. package/lib/azure-networksecuritygroup/lib/index.d.ts +0 -2
  293. package/lib/azure-networksecuritygroup/lib/index.js +0 -19
  294. package/lib/azure-networksecuritygroup/lib/preconfigured-rules.d.ts +0 -77
  295. package/lib/azure-networksecuritygroup/lib/preconfigured-rules.js +0 -608
  296. package/lib/azure-networksecuritygroup/lib/securitygroup.d.ts +0 -190
  297. package/lib/azure-networksecuritygroup/lib/securitygroup.js +0 -172
  298. package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.spec.d.ts +0 -1
  299. package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.spec.js +0 -54
  300. package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.d.ts +0 -5
  301. package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.js +0 -97
  302. package/lib/azure-queryrulealert/index.d.ts +0 -1
  303. package/lib/azure-queryrulealert/index.js +0 -18
  304. package/lib/azure-queryrulealert/lib/index.d.ts +0 -1
  305. package/lib/azure-queryrulealert/lib/index.js +0 -18
  306. package/lib/azure-queryrulealert/lib/query-rule-alert.d.ts +0 -175
  307. package/lib/azure-queryrulealert/lib/query-rule-alert.js +0 -205
  308. package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.spec.d.ts +0 -1
  309. package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.spec.js +0 -67
  310. package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.d.ts +0 -5
  311. package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.js +0 -67
  312. package/lib/azure-resourcegroup/test/AzureResourceGroup.spec.d.ts +0 -1
  313. package/lib/azure-resourcegroup/test/AzureResourceGroup.spec.js +0 -41
  314. package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.d.ts +0 -5
  315. package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.js +0 -29
  316. package/lib/azure-storageaccount/lib/account.d.ts +0 -232
  317. package/lib/azure-storageaccount/lib/account.js +0 -225
  318. package/lib/azure-storageaccount/lib/container.d.ts +0 -122
  319. package/lib/azure-storageaccount/lib/container.js +0 -167
  320. package/lib/azure-storageaccount/lib/fileshare.d.ts +0 -105
  321. package/lib/azure-storageaccount/lib/fileshare.js +0 -126
  322. package/lib/azure-storageaccount/lib/queue.d.ts +0 -35
  323. package/lib/azure-storageaccount/lib/queue.js +0 -52
  324. package/lib/azure-storageaccount/lib/table.d.ts +0 -38
  325. package/lib/azure-storageaccount/lib/table.js +0 -55
  326. package/lib/azure-storageaccount/test/AzureStorageAccount.spec.d.ts +0 -1
  327. package/lib/azure-storageaccount/test/AzureStorageAccount.spec.js +0 -45
  328. package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.d.ts +0 -5
  329. package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.js +0 -102
  330. package/lib/azure-virtualmachine/index.d.ts +0 -1
  331. package/lib/azure-virtualmachine/index.js +0 -18
  332. package/lib/azure-virtualmachine/lib/image-references.d.ts +0 -22
  333. package/lib/azure-virtualmachine/lib/image-references.js +0 -128
  334. package/lib/azure-virtualmachine/lib/index.d.ts +0 -2
  335. package/lib/azure-virtualmachine/lib/index.js +0 -19
  336. package/lib/azure-virtualmachine/lib/vm.d.ts +0 -281
  337. package/lib/azure-virtualmachine/lib/vm.js +0 -283
  338. package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.spec.d.ts +0 -1
  339. package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.spec.js +0 -48
  340. package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.spec.d.ts +0 -1
  341. package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.spec.js +0 -50
  342. package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.d.ts +0 -5
  343. package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.js +0 -106
  344. package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.d.ts +0 -5
  345. package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.js +0 -102
  346. package/lib/azure-virtualmachinescaleset/index.d.ts +0 -1
  347. package/lib/azure-virtualmachinescaleset/index.js +0 -18
  348. package/lib/azure-virtualmachinescaleset/lib/cluster.d.ts +0 -324
  349. package/lib/azure-virtualmachinescaleset/lib/cluster.js +0 -264
  350. package/lib/azure-virtualmachinescaleset/lib/index.d.ts +0 -1
  351. package/lib/azure-virtualmachinescaleset/lib/index.js +0 -18
  352. package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.spec.d.ts +0 -1
  353. package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.spec.js +0 -48
  354. package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.spec.d.ts +0 -1
  355. package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.spec.js +0 -50
  356. package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.d.ts +0 -5
  357. package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.js +0 -107
  358. package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.d.ts +0 -5
  359. package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.js +0 -103
  360. package/lib/azure-virtualnetwork/index.d.ts +0 -1
  361. package/lib/azure-virtualnetwork/index.js +0 -18
  362. package/lib/azure-virtualnetwork/lib/index.d.ts +0 -2
  363. package/lib/azure-virtualnetwork/lib/index.js +0 -19
  364. package/lib/azure-virtualnetwork/lib/network.d.ts +0 -122
  365. package/lib/azure-virtualnetwork/lib/network.js +0 -120
  366. package/lib/azure-virtualnetwork/lib/peering.d.ts +0 -90
  367. package/lib/azure-virtualnetwork/lib/peering.js +0 -71
  368. package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.spec.d.ts +0 -1
  369. package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.spec.js +0 -48
  370. package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.d.ts +0 -5
  371. package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.js +0 -88
  372. package/lib/core-azure/lib/diagsettings.d.ts +0 -89
  373. package/lib/core-azure/lib/diagsettings.js +0 -83
  374. package/lib/core-azure/lib/rbac.d.ts +0 -50
  375. package/lib/core-azure/lib/rbac.js +0 -48
  376. package/lib/core-azure/lib/resource.d.ts +0 -62
  377. package/lib/core-azure/lib/resource.js +0 -118
  378. package/lib/core-azure/test/AzureResource.spec.d.ts +0 -1
  379. package/lib/core-azure/test/AzureResource.spec.js +0 -19
  380. package/lib/core-azure/test/ExampleAzureResource.d.ts +0 -5
  381. package/lib/core-azure/test/ExampleAzureResource.js +0 -67
  382. package/node_modules/moment/CHANGELOG.md +0 -996
  383. package/node_modules/moment/LICENSE +0 -22
  384. package/node_modules/moment/README.md +0 -55
  385. package/node_modules/moment/dist/locale/af.js +0 -71
  386. package/node_modules/moment/dist/locale/ar-dz.js +0 -156
  387. package/node_modules/moment/dist/locale/ar-kw.js +0 -55
  388. package/node_modules/moment/dist/locale/ar-ly.js +0 -171
  389. package/node_modules/moment/dist/locale/ar-ma.js +0 -56
  390. package/node_modules/moment/dist/locale/ar-ps.js +0 -112
  391. package/node_modules/moment/dist/locale/ar-sa.js +0 -105
  392. package/node_modules/moment/dist/locale/ar-tn.js +0 -55
  393. package/node_modules/moment/dist/locale/ar.js +0 -189
  394. package/node_modules/moment/dist/locale/az.js +0 -102
  395. package/node_modules/moment/dist/locale/be.js +0 -142
  396. package/node_modules/moment/dist/locale/bg.js +0 -87
  397. package/node_modules/moment/dist/locale/bm.js +0 -52
  398. package/node_modules/moment/dist/locale/bn-bd.js +0 -129
  399. package/node_modules/moment/dist/locale/bn.js +0 -119
  400. package/node_modules/moment/dist/locale/bo.js +0 -124
  401. package/node_modules/moment/dist/locale/br.js +0 -168
  402. package/node_modules/moment/dist/locale/bs.js +0 -160
  403. package/node_modules/moment/dist/locale/ca.js +0 -100
  404. package/node_modules/moment/dist/locale/cs.js +0 -181
  405. package/node_modules/moment/dist/locale/cv.js +0 -63
  406. package/node_modules/moment/dist/locale/cy.js +0 -98
  407. package/node_modules/moment/dist/locale/da.js +0 -53
  408. package/node_modules/moment/dist/locale/de-at.js +0 -79
  409. package/node_modules/moment/dist/locale/de-ch.js +0 -78
  410. package/node_modules/moment/dist/locale/de.js +0 -78
  411. package/node_modules/moment/dist/locale/dv.js +0 -90
  412. package/node_modules/moment/dist/locale/el.js +0 -106
  413. package/node_modules/moment/dist/locale/en-au.js +0 -68
  414. package/node_modules/moment/dist/locale/en-ca.js +0 -64
  415. package/node_modules/moment/dist/locale/en-gb.js +0 -68
  416. package/node_modules/moment/dist/locale/en-ie.js +0 -68
  417. package/node_modules/moment/dist/locale/en-il.js +0 -64
  418. package/node_modules/moment/dist/locale/en-in.js +0 -68
  419. package/node_modules/moment/dist/locale/en-nz.js +0 -68
  420. package/node_modules/moment/dist/locale/en-sg.js +0 -68
  421. package/node_modules/moment/dist/locale/eo.js +0 -68
  422. package/node_modules/moment/dist/locale/es-do.js +0 -108
  423. package/node_modules/moment/dist/locale/es-mx.js +0 -110
  424. package/node_modules/moment/dist/locale/es-us.js +0 -110
  425. package/node_modules/moment/dist/locale/es.js +0 -110
  426. package/node_modules/moment/dist/locale/et.js +0 -78
  427. package/node_modules/moment/dist/locale/eu.js +0 -65
  428. package/node_modules/moment/dist/locale/fa.js +0 -113
  429. package/node_modules/moment/dist/locale/fi.js +0 -124
  430. package/node_modules/moment/dist/locale/fil.js +0 -58
  431. package/node_modules/moment/dist/locale/fo.js +0 -57
  432. package/node_modules/moment/dist/locale/fr-ca.js +0 -70
  433. package/node_modules/moment/dist/locale/fr-ch.js +0 -74
  434. package/node_modules/moment/dist/locale/fr.js +0 -108
  435. package/node_modules/moment/dist/locale/fy.js +0 -75
  436. package/node_modules/moment/dist/locale/ga.js +0 -95
  437. package/node_modules/moment/dist/locale/gd.js +0 -95
  438. package/node_modules/moment/dist/locale/gl.js +0 -75
  439. package/node_modules/moment/dist/locale/gom-deva.js +0 -126
  440. package/node_modules/moment/dist/locale/gom-latn.js +0 -124
  441. package/node_modules/moment/dist/locale/gu.js +0 -122
  442. package/node_modules/moment/dist/locale/he.js +0 -94
  443. package/node_modules/moment/dist/locale/hi.js +0 -168
  444. package/node_modules/moment/dist/locale/hr.js +0 -156
  445. package/node_modules/moment/dist/locale/hu.js +0 -118
  446. package/node_modules/moment/dist/locale/hy-am.js +0 -94
  447. package/node_modules/moment/dist/locale/id.js +0 -76
  448. package/node_modules/moment/dist/locale/is.js +0 -140
  449. package/node_modules/moment/dist/locale/it-ch.js +0 -64
  450. package/node_modules/moment/dist/locale/it.js +0 -106
  451. package/node_modules/moment/dist/locale/ja.js +0 -148
  452. package/node_modules/moment/dist/locale/jv.js +0 -76
  453. package/node_modules/moment/dist/locale/ka.js +0 -92
  454. package/node_modules/moment/dist/locale/kk.js +0 -82
  455. package/node_modules/moment/dist/locale/km.js +0 -103
  456. package/node_modules/moment/dist/locale/kn.js +0 -124
  457. package/node_modules/moment/dist/locale/ko.js +0 -75
  458. package/node_modules/moment/dist/locale/ku-kmr.js +0 -121
  459. package/node_modules/moment/dist/locale/ku.js +0 -118
  460. package/node_modules/moment/dist/locale/ky.js +0 -84
  461. package/node_modules/moment/dist/locale/lb.js +0 -137
  462. package/node_modules/moment/dist/locale/lo.js +0 -66
  463. package/node_modules/moment/dist/locale/lt.js +0 -125
  464. package/node_modules/moment/dist/locale/lv.js +0 -94
  465. package/node_modules/moment/dist/locale/me.js +0 -117
  466. package/node_modules/moment/dist/locale/mi.js +0 -60
  467. package/node_modules/moment/dist/locale/mk.js +0 -85
  468. package/node_modules/moment/dist/locale/ml.js +0 -82
  469. package/node_modules/moment/dist/locale/mn.js +0 -100
  470. package/node_modules/moment/dist/locale/mr.js +0 -203
  471. package/node_modules/moment/dist/locale/ms-my.js +0 -76
  472. package/node_modules/moment/dist/locale/ms.js +0 -75
  473. package/node_modules/moment/dist/locale/mt.js +0 -56
  474. package/node_modules/moment/dist/locale/my.js +0 -91
  475. package/node_modules/moment/dist/locale/nb.js +0 -60
  476. package/node_modules/moment/dist/locale/ne.js +0 -121
  477. package/node_modules/moment/dist/locale/nl-be.js +0 -102
  478. package/node_modules/moment/dist/locale/nl.js +0 -104
  479. package/node_modules/moment/dist/locale/nn.js +0 -59
  480. package/node_modules/moment/dist/locale/oc-lnc.js +0 -85
  481. package/node_modules/moment/dist/locale/pa-in.js +0 -122
  482. package/node_modules/moment/dist/locale/pl.js +0 -140
  483. package/node_modules/moment/dist/locale/pt-br.js +0 -58
  484. package/node_modules/moment/dist/locale/pt.js +0 -63
  485. package/node_modules/moment/dist/locale/ro.js +0 -76
  486. package/node_modules/moment/dist/locale/ru.js +0 -213
  487. package/node_modules/moment/dist/locale/sd.js +0 -81
  488. package/node_modules/moment/dist/locale/se.js +0 -57
  489. package/node_modules/moment/dist/locale/si.js +0 -69
  490. package/node_modules/moment/dist/locale/sk.js +0 -145
  491. package/node_modules/moment/dist/locale/sl.js +0 -171
  492. package/node_modules/moment/dist/locale/sq.js +0 -65
  493. package/node_modules/moment/dist/locale/sr-cyrl.js +0 -127
  494. package/node_modules/moment/dist/locale/sr.js +0 -129
  495. package/node_modules/moment/dist/locale/ss.js +0 -84
  496. package/node_modules/moment/dist/locale/sv.js +0 -68
  497. package/node_modules/moment/dist/locale/sw.js +0 -55
  498. package/node_modules/moment/dist/locale/ta.js +0 -131
  499. package/node_modules/moment/dist/locale/te.js +0 -88
  500. package/node_modules/moment/dist/locale/tet.js +0 -68
  501. package/node_modules/moment/dist/locale/tg.js +0 -117
  502. package/node_modules/moment/dist/locale/th.js +0 -65
  503. package/node_modules/moment/dist/locale/tk.js +0 -91
  504. package/node_modules/moment/dist/locale/tl-ph.js +0 -57
  505. package/node_modules/moment/dist/locale/tlh.js +0 -124
  506. package/node_modules/moment/dist/locale/tr.js +0 -106
  507. package/node_modules/moment/dist/locale/tzl.js +0 -89
  508. package/node_modules/moment/dist/locale/tzm-latn.js +0 -54
  509. package/node_modules/moment/dist/locale/tzm.js +0 -54
  510. package/node_modules/moment/dist/locale/ug-cn.js +0 -111
  511. package/node_modules/moment/dist/locale/uk.js +0 -167
  512. package/node_modules/moment/dist/locale/ur.js +0 -82
  513. package/node_modules/moment/dist/locale/uz-latn.js +0 -54
  514. package/node_modules/moment/dist/locale/uz.js +0 -51
  515. package/node_modules/moment/dist/locale/vi.js +0 -80
  516. package/node_modules/moment/dist/locale/x-pseudo.js +0 -73
  517. package/node_modules/moment/dist/locale/yo.js +0 -53
  518. package/node_modules/moment/dist/locale/zh-cn.js +0 -120
  519. package/node_modules/moment/dist/locale/zh-hk.js +0 -101
  520. package/node_modules/moment/dist/locale/zh-mo.js +0 -100
  521. package/node_modules/moment/dist/locale/zh-tw.js +0 -99
  522. package/node_modules/moment/dist/moment.js +0 -5680
  523. package/node_modules/moment/ender.js +0 -1
  524. package/node_modules/moment/locale/af.js +0 -82
  525. package/node_modules/moment/locale/ar-dz.js +0 -167
  526. package/node_modules/moment/locale/ar-kw.js +0 -66
  527. package/node_modules/moment/locale/ar-ly.js +0 -182
  528. package/node_modules/moment/locale/ar-ma.js +0 -67
  529. package/node_modules/moment/locale/ar-ps.js +0 -123
  530. package/node_modules/moment/locale/ar-sa.js +0 -116
  531. package/node_modules/moment/locale/ar-tn.js +0 -66
  532. package/node_modules/moment/locale/ar.js +0 -200
  533. package/node_modules/moment/locale/az.js +0 -113
  534. package/node_modules/moment/locale/be.js +0 -153
  535. package/node_modules/moment/locale/bg.js +0 -98
  536. package/node_modules/moment/locale/bm.js +0 -62
  537. package/node_modules/moment/locale/bn-bd.js +0 -140
  538. package/node_modules/moment/locale/bn.js +0 -130
  539. package/node_modules/moment/locale/bo.js +0 -135
  540. package/node_modules/moment/locale/br.js +0 -179
  541. package/node_modules/moment/locale/bs.js +0 -171
  542. package/node_modules/moment/locale/ca.js +0 -111
  543. package/node_modules/moment/locale/cs.js +0 -192
  544. package/node_modules/moment/locale/cv.js +0 -74
  545. package/node_modules/moment/locale/cy.js +0 -109
  546. package/node_modules/moment/locale/da.js +0 -64
  547. package/node_modules/moment/locale/de-at.js +0 -90
  548. package/node_modules/moment/locale/de-ch.js +0 -87
  549. package/node_modules/moment/locale/de.js +0 -89
  550. package/node_modules/moment/locale/dv.js +0 -101
  551. package/node_modules/moment/locale/el.js +0 -117
  552. package/node_modules/moment/locale/en-au.js +0 -79
  553. package/node_modules/moment/locale/en-ca.js +0 -75
  554. package/node_modules/moment/locale/en-gb.js +0 -79
  555. package/node_modules/moment/locale/en-ie.js +0 -79
  556. package/node_modules/moment/locale/en-il.js +0 -75
  557. package/node_modules/moment/locale/en-in.js +0 -79
  558. package/node_modules/moment/locale/en-nz.js +0 -79
  559. package/node_modules/moment/locale/en-sg.js +0 -79
  560. package/node_modules/moment/locale/eo.js +0 -79
  561. package/node_modules/moment/locale/es-do.js +0 -119
  562. package/node_modules/moment/locale/es-mx.js +0 -121
  563. package/node_modules/moment/locale/es-us.js +0 -121
  564. package/node_modules/moment/locale/es.js +0 -121
  565. package/node_modules/moment/locale/et.js +0 -89
  566. package/node_modules/moment/locale/eu.js +0 -76
  567. package/node_modules/moment/locale/fa.js +0 -124
  568. package/node_modules/moment/locale/fi.js +0 -135
  569. package/node_modules/moment/locale/fil.js +0 -69
  570. package/node_modules/moment/locale/fo.js +0 -68
  571. package/node_modules/moment/locale/fr-ca.js +0 -81
  572. package/node_modules/moment/locale/fr-ch.js +0 -85
  573. package/node_modules/moment/locale/fr.js +0 -119
  574. package/node_modules/moment/locale/fy.js +0 -86
  575. package/node_modules/moment/locale/ga.js +0 -106
  576. package/node_modules/moment/locale/gd.js +0 -106
  577. package/node_modules/moment/locale/gl.js +0 -86
  578. package/node_modules/moment/locale/gom-deva.js +0 -137
  579. package/node_modules/moment/locale/gom-latn.js +0 -135
  580. package/node_modules/moment/locale/gu.js +0 -133
  581. package/node_modules/moment/locale/he.js +0 -105
  582. package/node_modules/moment/locale/hi.js +0 -179
  583. package/node_modules/moment/locale/hr.js +0 -167
  584. package/node_modules/moment/locale/hu.js +0 -129
  585. package/node_modules/moment/locale/hy-am.js +0 -105
  586. package/node_modules/moment/locale/id.js +0 -87
  587. package/node_modules/moment/locale/is.js +0 -151
  588. package/node_modules/moment/locale/it-ch.js +0 -75
  589. package/node_modules/moment/locale/it.js +0 -117
  590. package/node_modules/moment/locale/ja.js +0 -159
  591. package/node_modules/moment/locale/jv.js +0 -87
  592. package/node_modules/moment/locale/ka.js +0 -103
  593. package/node_modules/moment/locale/kk.js +0 -93
  594. package/node_modules/moment/locale/km.js +0 -114
  595. package/node_modules/moment/locale/kn.js +0 -135
  596. package/node_modules/moment/locale/ko.js +0 -86
  597. package/node_modules/moment/locale/ku-kmr.js +0 -125
  598. package/node_modules/moment/locale/ku.js +0 -129
  599. package/node_modules/moment/locale/ky.js +0 -95
  600. package/node_modules/moment/locale/lb.js +0 -148
  601. package/node_modules/moment/locale/lo.js +0 -77
  602. package/node_modules/moment/locale/lt.js +0 -136
  603. package/node_modules/moment/locale/lv.js +0 -105
  604. package/node_modules/moment/locale/me.js +0 -128
  605. package/node_modules/moment/locale/mi.js +0 -71
  606. package/node_modules/moment/locale/mk.js +0 -97
  607. package/node_modules/moment/locale/ml.js +0 -93
  608. package/node_modules/moment/locale/mn.js +0 -111
  609. package/node_modules/moment/locale/mr.js +0 -214
  610. package/node_modules/moment/locale/ms-my.js +0 -87
  611. package/node_modules/moment/locale/ms.js +0 -86
  612. package/node_modules/moment/locale/mt.js +0 -67
  613. package/node_modules/moment/locale/my.js +0 -102
  614. package/node_modules/moment/locale/nb.js +0 -71
  615. package/node_modules/moment/locale/ne.js +0 -132
  616. package/node_modules/moment/locale/nl-be.js +0 -113
  617. package/node_modules/moment/locale/nl.js +0 -115
  618. package/node_modules/moment/locale/nn.js +0 -70
  619. package/node_modules/moment/locale/oc-lnc.js +0 -96
  620. package/node_modules/moment/locale/pa-in.js +0 -133
  621. package/node_modules/moment/locale/pl.js +0 -151
  622. package/node_modules/moment/locale/pt-br.js +0 -69
  623. package/node_modules/moment/locale/pt.js +0 -74
  624. package/node_modules/moment/locale/ro.js +0 -87
  625. package/node_modules/moment/locale/ru.js +0 -224
  626. package/node_modules/moment/locale/sd.js +0 -92
  627. package/node_modules/moment/locale/se.js +0 -68
  628. package/node_modules/moment/locale/si.js +0 -80
  629. package/node_modules/moment/locale/sk.js +0 -156
  630. package/node_modules/moment/locale/sl.js +0 -182
  631. package/node_modules/moment/locale/sq.js +0 -76
  632. package/node_modules/moment/locale/sr-cyrl.js +0 -138
  633. package/node_modules/moment/locale/sr.js +0 -140
  634. package/node_modules/moment/locale/ss.js +0 -95
  635. package/node_modules/moment/locale/sv.js +0 -79
  636. package/node_modules/moment/locale/sw.js +0 -66
  637. package/node_modules/moment/locale/ta.js +0 -142
  638. package/node_modules/moment/locale/te.js +0 -99
  639. package/node_modules/moment/locale/tet.js +0 -79
  640. package/node_modules/moment/locale/tg.js +0 -128
  641. package/node_modules/moment/locale/th.js +0 -76
  642. package/node_modules/moment/locale/tk.js +0 -102
  643. package/node_modules/moment/locale/tl-ph.js +0 -68
  644. package/node_modules/moment/locale/tlh.js +0 -135
  645. package/node_modules/moment/locale/tr.js +0 -117
  646. package/node_modules/moment/locale/tzl.js +0 -100
  647. package/node_modules/moment/locale/tzm-latn.js +0 -65
  648. package/node_modules/moment/locale/tzm.js +0 -65
  649. package/node_modules/moment/locale/ug-cn.js +0 -122
  650. package/node_modules/moment/locale/uk.js +0 -178
  651. package/node_modules/moment/locale/ur.js +0 -93
  652. package/node_modules/moment/locale/uz-latn.js +0 -65
  653. package/node_modules/moment/locale/uz.js +0 -62
  654. package/node_modules/moment/locale/vi.js +0 -91
  655. package/node_modules/moment/locale/x-pseudo.js +0 -84
  656. package/node_modules/moment/locale/yo.js +0 -64
  657. package/node_modules/moment/locale/zh-cn.js +0 -131
  658. package/node_modules/moment/locale/zh-hk.js +0 -112
  659. package/node_modules/moment/locale/zh-mo.js +0 -111
  660. package/node_modules/moment/locale/zh-tw.js +0 -110
  661. package/node_modules/moment/min/locales.js +0 -12800
  662. package/node_modules/moment/min/locales.min.js +0 -2
  663. package/node_modules/moment/min/locales.min.js.map +0 -1
  664. package/node_modules/moment/min/moment-with-locales.js +0 -18472
  665. package/node_modules/moment/min/moment-with-locales.min.js +0 -2
  666. package/node_modules/moment/min/moment-with-locales.min.js.map +0 -1
  667. package/node_modules/moment/min/moment.min.js +0 -2
  668. package/node_modules/moment/min/moment.min.js.map +0 -1
  669. package/node_modules/moment/moment.d.ts +0 -796
  670. package/node_modules/moment/moment.js +0 -5688
  671. package/node_modules/moment/package.js +0 -11
  672. package/node_modules/moment/package.json +0 -116
  673. package/node_modules/moment/src/lib/create/check-overflow.js +0 -57
  674. package/node_modules/moment/src/lib/create/date-from-array.js +0 -35
  675. package/node_modules/moment/src/lib/create/from-anything.js +0 -117
  676. package/node_modules/moment/src/lib/create/from-array.js +0 -187
  677. package/node_modules/moment/src/lib/create/from-object.js +0 -20
  678. package/node_modules/moment/src/lib/create/from-string-and-array.js +0 -67
  679. package/node_modules/moment/src/lib/create/from-string-and-format.js +0 -135
  680. package/node_modules/moment/src/lib/create/from-string.js +0 -258
  681. package/node_modules/moment/src/lib/create/local.js +0 -5
  682. package/node_modules/moment/src/lib/create/parsing-flags.js +0 -28
  683. package/node_modules/moment/src/lib/create/utc.js +0 -5
  684. package/node_modules/moment/src/lib/create/valid.js +0 -51
  685. package/node_modules/moment/src/lib/duration/abs.js +0 -18
  686. package/node_modules/moment/src/lib/duration/add-subtract.js +0 -21
  687. package/node_modules/moment/src/lib/duration/as.js +0 -76
  688. package/node_modules/moment/src/lib/duration/bubble.js +0 -68
  689. package/node_modules/moment/src/lib/duration/clone.js +0 -5
  690. package/node_modules/moment/src/lib/duration/constructor.js +0 -42
  691. package/node_modules/moment/src/lib/duration/create.js +0 -133
  692. package/node_modules/moment/src/lib/duration/duration.js +0 -16
  693. package/node_modules/moment/src/lib/duration/get.js +0 -27
  694. package/node_modules/moment/src/lib/duration/humanize.js +0 -114
  695. package/node_modules/moment/src/lib/duration/iso-string.js +0 -68
  696. package/node_modules/moment/src/lib/duration/prototype.js +0 -78
  697. package/node_modules/moment/src/lib/duration/valid.js +0 -55
  698. package/node_modules/moment/src/lib/format/format.js +0 -104
  699. package/node_modules/moment/src/lib/locale/base-config.js +0 -41
  700. package/node_modules/moment/src/lib/locale/calendar.js +0 -15
  701. package/node_modules/moment/src/lib/locale/constructor.js +0 -5
  702. package/node_modules/moment/src/lib/locale/en.js +0 -39
  703. package/node_modules/moment/src/lib/locale/formats.js +0 -36
  704. package/node_modules/moment/src/lib/locale/invalid.js +0 -5
  705. package/node_modules/moment/src/lib/locale/lists.js +0 -93
  706. package/node_modules/moment/src/lib/locale/locale.js +0 -45
  707. package/node_modules/moment/src/lib/locale/locales.js +0 -249
  708. package/node_modules/moment/src/lib/locale/ordinal.js +0 -8
  709. package/node_modules/moment/src/lib/locale/pre-post-format.js +0 -3
  710. package/node_modules/moment/src/lib/locale/prototype.js +0 -88
  711. package/node_modules/moment/src/lib/locale/relative.js +0 -32
  712. package/node_modules/moment/src/lib/locale/set.js +0 -56
  713. package/node_modules/moment/src/lib/moment/add-subtract.js +0 -61
  714. package/node_modules/moment/src/lib/moment/calendar.js +0 -53
  715. package/node_modules/moment/src/lib/moment/clone.js +0 -5
  716. package/node_modules/moment/src/lib/moment/compare.js +0 -72
  717. package/node_modules/moment/src/lib/moment/constructor.js +0 -80
  718. package/node_modules/moment/src/lib/moment/creation-data.js +0 -9
  719. package/node_modules/moment/src/lib/moment/diff.js +0 -79
  720. package/node_modules/moment/src/lib/moment/format.js +0 -78
  721. package/node_modules/moment/src/lib/moment/from.js +0 -20
  722. package/node_modules/moment/src/lib/moment/get-set.js +0 -117
  723. package/node_modules/moment/src/lib/moment/locale.js +0 -34
  724. package/node_modules/moment/src/lib/moment/min-max.js +0 -62
  725. package/node_modules/moment/src/lib/moment/moment.js +0 -28
  726. package/node_modules/moment/src/lib/moment/now.js +0 -3
  727. package/node_modules/moment/src/lib/moment/prototype.js +0 -197
  728. package/node_modules/moment/src/lib/moment/start-end-of.js +0 -164
  729. package/node_modules/moment/src/lib/moment/to-type.js +0 -42
  730. package/node_modules/moment/src/lib/moment/to.js +0 -20
  731. package/node_modules/moment/src/lib/moment/valid.js +0 -15
  732. package/node_modules/moment/src/lib/parse/regex.js +0 -84
  733. package/node_modules/moment/src/lib/parse/token.js +0 -36
  734. package/node_modules/moment/src/lib/units/aliases.js +0 -75
  735. package/node_modules/moment/src/lib/units/constants.js +0 -9
  736. package/node_modules/moment/src/lib/units/day-of-month.js +0 -35
  737. package/node_modules/moment/src/lib/units/day-of-week.js +0 -432
  738. package/node_modules/moment/src/lib/units/day-of-year.js +0 -28
  739. package/node_modules/moment/src/lib/units/era.js +0 -293
  740. package/node_modules/moment/src/lib/units/hour.js +0 -152
  741. package/node_modules/moment/src/lib/units/millisecond.js +0 -66
  742. package/node_modules/moment/src/lib/units/minute.js +0 -24
  743. package/node_modules/moment/src/lib/units/month.js +0 -340
  744. package/node_modules/moment/src/lib/units/offset.js +0 -249
  745. package/node_modules/moment/src/lib/units/priorities.js +0 -34
  746. package/node_modules/moment/src/lib/units/quarter.js +0 -24
  747. package/node_modules/moment/src/lib/units/second.js +0 -24
  748. package/node_modules/moment/src/lib/units/timestamp.js +0 -20
  749. package/node_modules/moment/src/lib/units/timezone.js +0 -16
  750. package/node_modules/moment/src/lib/units/units.js +0 -20
  751. package/node_modules/moment/src/lib/units/week-calendar-utils.js +0 -66
  752. package/node_modules/moment/src/lib/units/week-year.js +0 -128
  753. package/node_modules/moment/src/lib/units/week.js +0 -62
  754. package/node_modules/moment/src/lib/units/year.js +0 -75
  755. package/node_modules/moment/src/lib/utils/abs-ceil.js +0 -7
  756. package/node_modules/moment/src/lib/utils/abs-floor.js +0 -8
  757. package/node_modules/moment/src/lib/utils/abs-round.js +0 -7
  758. package/node_modules/moment/src/lib/utils/compare-arrays.js +0 -18
  759. package/node_modules/moment/src/lib/utils/defaults.js +0 -10
  760. package/node_modules/moment/src/lib/utils/deprecate.js +0 -69
  761. package/node_modules/moment/src/lib/utils/extend.js +0 -19
  762. package/node_modules/moment/src/lib/utils/has-own-prop.js +0 -3
  763. package/node_modules/moment/src/lib/utils/hooks.js +0 -13
  764. package/node_modules/moment/src/lib/utils/index-of.js +0 -18
  765. package/node_modules/moment/src/lib/utils/is-array.js +0 -6
  766. package/node_modules/moment/src/lib/utils/is-calendar-spec.js +0 -25
  767. package/node_modules/moment/src/lib/utils/is-date.js +0 -6
  768. package/node_modules/moment/src/lib/utils/is-function.js +0 -6
  769. package/node_modules/moment/src/lib/utils/is-leap-year.js +0 -3
  770. package/node_modules/moment/src/lib/utils/is-moment-input.js +0 -75
  771. package/node_modules/moment/src/lib/utils/is-number.js +0 -6
  772. package/node_modules/moment/src/lib/utils/is-object-empty.js +0 -15
  773. package/node_modules/moment/src/lib/utils/is-object.js +0 -8
  774. package/node_modules/moment/src/lib/utils/is-string.js +0 -3
  775. package/node_modules/moment/src/lib/utils/is-undefined.js +0 -3
  776. package/node_modules/moment/src/lib/utils/keys.js +0 -20
  777. package/node_modules/moment/src/lib/utils/map.js +0 -9
  778. package/node_modules/moment/src/lib/utils/mod.js +0 -3
  779. package/node_modules/moment/src/lib/utils/some.js +0 -20
  780. package/node_modules/moment/src/lib/utils/to-int.js +0 -12
  781. package/node_modules/moment/src/lib/utils/zero-fill.js +0 -10
  782. package/node_modules/moment/src/locale/af.js +0 -71
  783. package/node_modules/moment/src/locale/ar-dz.js +0 -156
  784. package/node_modules/moment/src/locale/ar-kw.js +0 -55
  785. package/node_modules/moment/src/locale/ar-ly.js +0 -171
  786. package/node_modules/moment/src/locale/ar-ma.js +0 -56
  787. package/node_modules/moment/src/locale/ar-ps.js +0 -112
  788. package/node_modules/moment/src/locale/ar-sa.js +0 -105
  789. package/node_modules/moment/src/locale/ar-tn.js +0 -55
  790. package/node_modules/moment/src/locale/ar.js +0 -189
  791. package/node_modules/moment/src/locale/az.js +0 -102
  792. package/node_modules/moment/src/locale/be.js +0 -142
  793. package/node_modules/moment/src/locale/bg.js +0 -87
  794. package/node_modules/moment/src/locale/bm.js +0 -52
  795. package/node_modules/moment/src/locale/bn-bd.js +0 -129
  796. package/node_modules/moment/src/locale/bn.js +0 -119
  797. package/node_modules/moment/src/locale/bo.js +0 -124
  798. package/node_modules/moment/src/locale/br.js +0 -168
  799. package/node_modules/moment/src/locale/bs.js +0 -160
  800. package/node_modules/moment/src/locale/ca.js +0 -100
  801. package/node_modules/moment/src/locale/cs.js +0 -181
  802. package/node_modules/moment/src/locale/cv.js +0 -63
  803. package/node_modules/moment/src/locale/cy.js +0 -98
  804. package/node_modules/moment/src/locale/da.js +0 -53
  805. package/node_modules/moment/src/locale/de-at.js +0 -79
  806. package/node_modules/moment/src/locale/de-ch.js +0 -78
  807. package/node_modules/moment/src/locale/de.js +0 -78
  808. package/node_modules/moment/src/locale/dv.js +0 -90
  809. package/node_modules/moment/src/locale/el.js +0 -106
  810. package/node_modules/moment/src/locale/en-au.js +0 -68
  811. package/node_modules/moment/src/locale/en-ca.js +0 -64
  812. package/node_modules/moment/src/locale/en-gb.js +0 -68
  813. package/node_modules/moment/src/locale/en-ie.js +0 -68
  814. package/node_modules/moment/src/locale/en-il.js +0 -64
  815. package/node_modules/moment/src/locale/en-in.js +0 -68
  816. package/node_modules/moment/src/locale/en-nz.js +0 -68
  817. package/node_modules/moment/src/locale/en-sg.js +0 -68
  818. package/node_modules/moment/src/locale/eo.js +0 -68
  819. package/node_modules/moment/src/locale/es-do.js +0 -108
  820. package/node_modules/moment/src/locale/es-mx.js +0 -110
  821. package/node_modules/moment/src/locale/es-us.js +0 -110
  822. package/node_modules/moment/src/locale/es.js +0 -110
  823. package/node_modules/moment/src/locale/et.js +0 -78
  824. package/node_modules/moment/src/locale/eu.js +0 -65
  825. package/node_modules/moment/src/locale/fa.js +0 -113
  826. package/node_modules/moment/src/locale/fi.js +0 -124
  827. package/node_modules/moment/src/locale/fil.js +0 -58
  828. package/node_modules/moment/src/locale/fo.js +0 -57
  829. package/node_modules/moment/src/locale/fr-ca.js +0 -70
  830. package/node_modules/moment/src/locale/fr-ch.js +0 -74
  831. package/node_modules/moment/src/locale/fr.js +0 -108
  832. package/node_modules/moment/src/locale/fy.js +0 -75
  833. package/node_modules/moment/src/locale/ga.js +0 -95
  834. package/node_modules/moment/src/locale/gd.js +0 -95
  835. package/node_modules/moment/src/locale/gl.js +0 -75
  836. package/node_modules/moment/src/locale/gom-deva.js +0 -126
  837. package/node_modules/moment/src/locale/gom-latn.js +0 -124
  838. package/node_modules/moment/src/locale/gu.js +0 -122
  839. package/node_modules/moment/src/locale/he.js +0 -94
  840. package/node_modules/moment/src/locale/hi.js +0 -168
  841. package/node_modules/moment/src/locale/hr.js +0 -156
  842. package/node_modules/moment/src/locale/hu.js +0 -118
  843. package/node_modules/moment/src/locale/hy-am.js +0 -94
  844. package/node_modules/moment/src/locale/id.js +0 -76
  845. package/node_modules/moment/src/locale/is.js +0 -140
  846. package/node_modules/moment/src/locale/it-ch.js +0 -64
  847. package/node_modules/moment/src/locale/it.js +0 -106
  848. package/node_modules/moment/src/locale/ja.js +0 -148
  849. package/node_modules/moment/src/locale/jv.js +0 -76
  850. package/node_modules/moment/src/locale/ka.js +0 -92
  851. package/node_modules/moment/src/locale/kk.js +0 -82
  852. package/node_modules/moment/src/locale/km.js +0 -103
  853. package/node_modules/moment/src/locale/kn.js +0 -124
  854. package/node_modules/moment/src/locale/ko.js +0 -75
  855. package/node_modules/moment/src/locale/ku-kmr.js +0 -121
  856. package/node_modules/moment/src/locale/ku.js +0 -118
  857. package/node_modules/moment/src/locale/ky.js +0 -84
  858. package/node_modules/moment/src/locale/lb.js +0 -137
  859. package/node_modules/moment/src/locale/lo.js +0 -66
  860. package/node_modules/moment/src/locale/lt.js +0 -125
  861. package/node_modules/moment/src/locale/lv.js +0 -94
  862. package/node_modules/moment/src/locale/me.js +0 -117
  863. package/node_modules/moment/src/locale/mi.js +0 -60
  864. package/node_modules/moment/src/locale/mk.js +0 -85
  865. package/node_modules/moment/src/locale/ml.js +0 -82
  866. package/node_modules/moment/src/locale/mn.js +0 -100
  867. package/node_modules/moment/src/locale/mr.js +0 -203
  868. package/node_modules/moment/src/locale/ms-my.js +0 -76
  869. package/node_modules/moment/src/locale/ms.js +0 -75
  870. package/node_modules/moment/src/locale/mt.js +0 -56
  871. package/node_modules/moment/src/locale/my.js +0 -91
  872. package/node_modules/moment/src/locale/nb.js +0 -60
  873. package/node_modules/moment/src/locale/ne.js +0 -121
  874. package/node_modules/moment/src/locale/nl-be.js +0 -102
  875. package/node_modules/moment/src/locale/nl.js +0 -104
  876. package/node_modules/moment/src/locale/nn.js +0 -59
  877. package/node_modules/moment/src/locale/oc-lnc.js +0 -85
  878. package/node_modules/moment/src/locale/pa-in.js +0 -122
  879. package/node_modules/moment/src/locale/pl.js +0 -140
  880. package/node_modules/moment/src/locale/pt-br.js +0 -58
  881. package/node_modules/moment/src/locale/pt.js +0 -63
  882. package/node_modules/moment/src/locale/ro.js +0 -76
  883. package/node_modules/moment/src/locale/ru.js +0 -213
  884. package/node_modules/moment/src/locale/sd.js +0 -81
  885. package/node_modules/moment/src/locale/se.js +0 -57
  886. package/node_modules/moment/src/locale/si.js +0 -69
  887. package/node_modules/moment/src/locale/sk.js +0 -145
  888. package/node_modules/moment/src/locale/sl.js +0 -171
  889. package/node_modules/moment/src/locale/sq.js +0 -65
  890. package/node_modules/moment/src/locale/sr-cyrl.js +0 -127
  891. package/node_modules/moment/src/locale/sr.js +0 -129
  892. package/node_modules/moment/src/locale/ss.js +0 -84
  893. package/node_modules/moment/src/locale/sv.js +0 -68
  894. package/node_modules/moment/src/locale/sw.js +0 -55
  895. package/node_modules/moment/src/locale/ta.js +0 -131
  896. package/node_modules/moment/src/locale/te.js +0 -88
  897. package/node_modules/moment/src/locale/tet.js +0 -68
  898. package/node_modules/moment/src/locale/tg.js +0 -117
  899. package/node_modules/moment/src/locale/th.js +0 -65
  900. package/node_modules/moment/src/locale/tk.js +0 -91
  901. package/node_modules/moment/src/locale/tl-ph.js +0 -57
  902. package/node_modules/moment/src/locale/tlh.js +0 -124
  903. package/node_modules/moment/src/locale/tr.js +0 -106
  904. package/node_modules/moment/src/locale/tzl.js +0 -89
  905. package/node_modules/moment/src/locale/tzm-latn.js +0 -54
  906. package/node_modules/moment/src/locale/tzm.js +0 -54
  907. package/node_modules/moment/src/locale/ug-cn.js +0 -111
  908. package/node_modules/moment/src/locale/uk.js +0 -167
  909. package/node_modules/moment/src/locale/ur.js +0 -82
  910. package/node_modules/moment/src/locale/uz-latn.js +0 -54
  911. package/node_modules/moment/src/locale/uz.js +0 -51
  912. package/node_modules/moment/src/locale/vi.js +0 -80
  913. package/node_modules/moment/src/locale/x-pseudo.js +0 -73
  914. package/node_modules/moment/src/locale/yo.js +0 -53
  915. package/node_modules/moment/src/locale/zh-cn.js +0 -120
  916. package/node_modules/moment/src/locale/zh-hk.js +0 -101
  917. package/node_modules/moment/src/locale/zh-mo.js +0 -100
  918. package/node_modules/moment/src/locale/zh-tw.js +0 -99
  919. package/node_modules/moment/src/moment.js +0 -93
  920. package/node_modules/moment/ts3.1-typings/moment.d.ts +0 -785
  921. package/node_modules/nanoid/LICENSE +0 -20
  922. package/node_modules/nanoid/README.md +0 -38
  923. package/node_modules/nanoid/async/index.browser.js +0 -33
  924. package/node_modules/nanoid/async/index.d.ts +0 -56
  925. package/node_modules/nanoid/async/index.js +0 -34
  926. package/node_modules/nanoid/async/index.native.js +0 -25
  927. package/node_modules/nanoid/bin/nanoid.js +0 -46
  928. package/node_modules/nanoid/index.browser.js +0 -33
  929. package/node_modules/nanoid/index.d.ts +0 -91
  930. package/node_modules/nanoid/index.js +0 -45
  931. package/node_modules/nanoid/nanoid.js +0 -1
  932. package/node_modules/nanoid/non-secure/index.d.ts +0 -33
  933. package/node_modules/nanoid/non-secure/index.js +0 -20
  934. package/node_modules/nanoid/package.json +0 -46
  935. package/node_modules/nanoid/url-alphabet/index.js +0 -2
  936. package/node_modules/ts-md5/LICENSE +0 -21
  937. package/node_modules/ts-md5/README.md +0 -101
  938. package/node_modules/ts-md5/dist/cjs/index.d.ts +0 -3
  939. package/node_modules/ts-md5/dist/cjs/index.js +0 -10
  940. package/node_modules/ts-md5/dist/cjs/index.js.map +0 -1
  941. package/node_modules/ts-md5/dist/cjs/md5.d.ts +0 -70
  942. package/node_modules/ts-md5/dist/cjs/md5.js +0 -429
  943. package/node_modules/ts-md5/dist/cjs/md5.js.map +0 -1
  944. package/node_modules/ts-md5/dist/cjs/md5_file_hasher.d.ts +0 -25
  945. package/node_modules/ts-md5/dist/cjs/md5_file_hasher.js +0 -96
  946. package/node_modules/ts-md5/dist/cjs/md5_file_hasher.js.map +0 -1
  947. package/node_modules/ts-md5/dist/cjs/parallel_hasher.d.ts +0 -22
  948. package/node_modules/ts-md5/dist/cjs/parallel_hasher.js +0 -69
  949. package/node_modules/ts-md5/dist/cjs/parallel_hasher.js.map +0 -1
  950. package/node_modules/ts-md5/dist/esm/index.d.ts +0 -3
  951. package/node_modules/ts-md5/dist/esm/index.js +0 -4
  952. package/node_modules/ts-md5/dist/esm/index.js.map +0 -1
  953. package/node_modules/ts-md5/dist/esm/md5.d.ts +0 -70
  954. package/node_modules/ts-md5/dist/esm/md5.js +0 -421
  955. package/node_modules/ts-md5/dist/esm/md5.js.map +0 -1
  956. package/node_modules/ts-md5/dist/esm/md5_file_hasher.d.ts +0 -25
  957. package/node_modules/ts-md5/dist/esm/md5_file_hasher.js +0 -89
  958. package/node_modules/ts-md5/dist/esm/md5_file_hasher.js.map +0 -1
  959. package/node_modules/ts-md5/dist/esm/parallel_hasher.d.ts +0 -22
  960. package/node_modules/ts-md5/dist/esm/parallel_hasher.js +0 -64
  961. package/node_modules/ts-md5/dist/esm/parallel_hasher.js.map +0 -1
  962. package/node_modules/ts-md5/dist/md5.js +0 -429
  963. package/node_modules/ts-md5/dist/md5_worker.js +0 -523
  964. package/node_modules/ts-md5/package.json +0 -82
  965. package/node_modules/ts-md5/src/index.ts +0 -4
  966. package/node_modules/ts-md5/src/md5.ts +0 -473
  967. package/node_modules/ts-md5/src/md5_file_hasher.ts +0 -110
  968. package/node_modules/ts-md5/src/parallel_hasher.ts +0 -90
  969. package/node_modules/ts-md5/src/worker.js +0 -20
  970. package/tfsec.json +0 -4
@@ -0,0 +1,856 @@
1
+ "use strict";
2
+ var _a, _b, _c, _d, _e;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Resource = exports.ResourceTimeoutsOutputReference = exports.ResourceIdentityList = exports.ResourceIdentityOutputReference = exports.ResourceRetryOutputReference = void 0;
5
+ exports.resourceRetryToTerraform = resourceRetryToTerraform;
6
+ exports.resourceIdentityToTerraform = resourceIdentityToTerraform;
7
+ exports.resourceTimeoutsToTerraform = resourceTimeoutsToTerraform;
8
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
9
+ // https://registry.terraform.io/providers/azure/azapi/2.7.0/docs/resources/resource
10
+ // generated from terraform resource schema
11
+ const cdktf = require("cdktf");
12
+ function resourceRetryToTerraform(struct) {
13
+ if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
14
+ return struct;
15
+ }
16
+ if (cdktf.isComplexElement(struct)) {
17
+ throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
18
+ }
19
+ return {
20
+ error_message_regex: cdktf.listMapper(cdktf.stringToTerraform, false)(struct.errorMessageRegex),
21
+ interval_seconds: cdktf.numberToTerraform(struct.intervalSeconds),
22
+ max_interval_seconds: cdktf.numberToTerraform(struct.maxIntervalSeconds),
23
+ multiplier: cdktf.numberToTerraform(struct.multiplier),
24
+ randomization_factor: cdktf.numberToTerraform(struct.randomizationFactor),
25
+ };
26
+ }
27
+ class ResourceRetryOutputReference extends cdktf.ComplexObject {
28
+ /**
29
+ * @param terraformResource The parent resource
30
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
31
+ */
32
+ constructor(terraformResource, terraformAttribute) {
33
+ super(terraformResource, terraformAttribute, false);
34
+ this.isEmptyObject = false;
35
+ }
36
+ get internalValue() {
37
+ if (this.resolvableValue) {
38
+ return this.resolvableValue;
39
+ }
40
+ let hasAnyValues = this.isEmptyObject;
41
+ const internalValueResult = {};
42
+ if (this._errorMessageRegex !== undefined) {
43
+ hasAnyValues = true;
44
+ internalValueResult.errorMessageRegex = this._errorMessageRegex;
45
+ }
46
+ if (this._intervalSeconds !== undefined) {
47
+ hasAnyValues = true;
48
+ internalValueResult.intervalSeconds = this._intervalSeconds;
49
+ }
50
+ if (this._maxIntervalSeconds !== undefined) {
51
+ hasAnyValues = true;
52
+ internalValueResult.maxIntervalSeconds = this._maxIntervalSeconds;
53
+ }
54
+ if (this._multiplier !== undefined) {
55
+ hasAnyValues = true;
56
+ internalValueResult.multiplier = this._multiplier;
57
+ }
58
+ if (this._randomizationFactor !== undefined) {
59
+ hasAnyValues = true;
60
+ internalValueResult.randomizationFactor = this._randomizationFactor;
61
+ }
62
+ return hasAnyValues ? internalValueResult : undefined;
63
+ }
64
+ set internalValue(value) {
65
+ if (value === undefined) {
66
+ this.isEmptyObject = false;
67
+ this.resolvableValue = undefined;
68
+ this._errorMessageRegex = undefined;
69
+ this._intervalSeconds = undefined;
70
+ this._maxIntervalSeconds = undefined;
71
+ this._multiplier = undefined;
72
+ this._randomizationFactor = undefined;
73
+ }
74
+ else if (cdktf.Tokenization.isResolvable(value)) {
75
+ this.isEmptyObject = false;
76
+ this.resolvableValue = value;
77
+ }
78
+ else {
79
+ this.isEmptyObject = Object.keys(value).length === 0;
80
+ this.resolvableValue = undefined;
81
+ this._errorMessageRegex = value.errorMessageRegex;
82
+ this._intervalSeconds = value.intervalSeconds;
83
+ this._maxIntervalSeconds = value.maxIntervalSeconds;
84
+ this._multiplier = value.multiplier;
85
+ this._randomizationFactor = value.randomizationFactor;
86
+ }
87
+ }
88
+ get errorMessageRegex() {
89
+ return this.getListAttribute("error_message_regex");
90
+ }
91
+ set errorMessageRegex(value) {
92
+ this._errorMessageRegex = value;
93
+ }
94
+ // Temporarily expose input value. Use with caution.
95
+ get errorMessageRegexInput() {
96
+ return this._errorMessageRegex;
97
+ }
98
+ get intervalSeconds() {
99
+ return this.getNumberAttribute("interval_seconds");
100
+ }
101
+ set intervalSeconds(value) {
102
+ this._intervalSeconds = value;
103
+ }
104
+ resetIntervalSeconds() {
105
+ this._intervalSeconds = undefined;
106
+ }
107
+ // Temporarily expose input value. Use with caution.
108
+ get intervalSecondsInput() {
109
+ return this._intervalSeconds;
110
+ }
111
+ get maxIntervalSeconds() {
112
+ return this.getNumberAttribute("max_interval_seconds");
113
+ }
114
+ set maxIntervalSeconds(value) {
115
+ this._maxIntervalSeconds = value;
116
+ }
117
+ resetMaxIntervalSeconds() {
118
+ this._maxIntervalSeconds = undefined;
119
+ }
120
+ // Temporarily expose input value. Use with caution.
121
+ get maxIntervalSecondsInput() {
122
+ return this._maxIntervalSeconds;
123
+ }
124
+ get multiplier() {
125
+ return this.getNumberAttribute("multiplier");
126
+ }
127
+ set multiplier(value) {
128
+ this._multiplier = value;
129
+ }
130
+ resetMultiplier() {
131
+ this._multiplier = undefined;
132
+ }
133
+ // Temporarily expose input value. Use with caution.
134
+ get multiplierInput() {
135
+ return this._multiplier;
136
+ }
137
+ get randomizationFactor() {
138
+ return this.getNumberAttribute("randomization_factor");
139
+ }
140
+ set randomizationFactor(value) {
141
+ this._randomizationFactor = value;
142
+ }
143
+ resetRandomizationFactor() {
144
+ this._randomizationFactor = undefined;
145
+ }
146
+ // Temporarily expose input value. Use with caution.
147
+ get randomizationFactorInput() {
148
+ return this._randomizationFactor;
149
+ }
150
+ }
151
+ exports.ResourceRetryOutputReference = ResourceRetryOutputReference;
152
+ _a = JSII_RTTI_SYMBOL_1;
153
+ ResourceRetryOutputReference[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ResourceRetryOutputReference", version: "1.0.0" };
154
+ function resourceIdentityToTerraform(struct) {
155
+ if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
156
+ return struct;
157
+ }
158
+ if (cdktf.isComplexElement(struct)) {
159
+ throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
160
+ }
161
+ return {
162
+ identity_ids: cdktf.listMapper(cdktf.stringToTerraform, false)(struct.identityIds),
163
+ type: cdktf.stringToTerraform(struct.type),
164
+ };
165
+ }
166
+ class ResourceIdentityOutputReference extends cdktf.ComplexObject {
167
+ /**
168
+ * @param terraformResource The parent resource
169
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
170
+ * @param complexObjectIndex the index of this item in the list
171
+ * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
172
+ */
173
+ constructor(terraformResource, terraformAttribute, complexObjectIndex, complexObjectIsFromSet) {
174
+ super(terraformResource, terraformAttribute, complexObjectIsFromSet, complexObjectIndex);
175
+ this.isEmptyObject = false;
176
+ }
177
+ get internalValue() {
178
+ if (this.resolvableValue) {
179
+ return this.resolvableValue;
180
+ }
181
+ let hasAnyValues = this.isEmptyObject;
182
+ const internalValueResult = {};
183
+ if (this._identityIds !== undefined) {
184
+ hasAnyValues = true;
185
+ internalValueResult.identityIds = this._identityIds;
186
+ }
187
+ if (this._type !== undefined) {
188
+ hasAnyValues = true;
189
+ internalValueResult.type = this._type;
190
+ }
191
+ return hasAnyValues ? internalValueResult : undefined;
192
+ }
193
+ set internalValue(value) {
194
+ if (value === undefined) {
195
+ this.isEmptyObject = false;
196
+ this.resolvableValue = undefined;
197
+ this._identityIds = undefined;
198
+ this._type = undefined;
199
+ }
200
+ else if (cdktf.Tokenization.isResolvable(value)) {
201
+ this.isEmptyObject = false;
202
+ this.resolvableValue = value;
203
+ }
204
+ else {
205
+ this.isEmptyObject = Object.keys(value).length === 0;
206
+ this.resolvableValue = undefined;
207
+ this._identityIds = value.identityIds;
208
+ this._type = value.type;
209
+ }
210
+ }
211
+ get identityIds() {
212
+ return this.getListAttribute("identity_ids");
213
+ }
214
+ set identityIds(value) {
215
+ this._identityIds = value;
216
+ }
217
+ resetIdentityIds() {
218
+ this._identityIds = undefined;
219
+ }
220
+ // Temporarily expose input value. Use with caution.
221
+ get identityIdsInput() {
222
+ return this._identityIds;
223
+ }
224
+ // principal_id - computed: true, optional: false, required: false
225
+ get principalId() {
226
+ return this.getStringAttribute("principal_id");
227
+ }
228
+ // tenant_id - computed: true, optional: false, required: false
229
+ get tenantId() {
230
+ return this.getStringAttribute("tenant_id");
231
+ }
232
+ get type() {
233
+ return this.getStringAttribute("type");
234
+ }
235
+ set type(value) {
236
+ this._type = value;
237
+ }
238
+ // Temporarily expose input value. Use with caution.
239
+ get typeInput() {
240
+ return this._type;
241
+ }
242
+ }
243
+ exports.ResourceIdentityOutputReference = ResourceIdentityOutputReference;
244
+ _b = JSII_RTTI_SYMBOL_1;
245
+ ResourceIdentityOutputReference[_b] = { fqn: "@microsoft/terraform-cdk-constructs.ResourceIdentityOutputReference", version: "1.0.0" };
246
+ class ResourceIdentityList extends cdktf.ComplexList {
247
+ /**
248
+ * @param terraformResource The parent resource
249
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
250
+ * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
251
+ */
252
+ constructor(terraformResource, terraformAttribute, wrapsSet) {
253
+ super(terraformResource, terraformAttribute, wrapsSet);
254
+ this.terraformResource = terraformResource;
255
+ this.terraformAttribute = terraformAttribute;
256
+ this.wrapsSet = wrapsSet;
257
+ }
258
+ /**
259
+ * @param index the index of the item to return
260
+ */
261
+ get(index) {
262
+ return new ResourceIdentityOutputReference(this.terraformResource, this.terraformAttribute, index, this.wrapsSet);
263
+ }
264
+ }
265
+ exports.ResourceIdentityList = ResourceIdentityList;
266
+ _c = JSII_RTTI_SYMBOL_1;
267
+ ResourceIdentityList[_c] = { fqn: "@microsoft/terraform-cdk-constructs.ResourceIdentityList", version: "1.0.0" };
268
+ function resourceTimeoutsToTerraform(struct) {
269
+ if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
270
+ return struct;
271
+ }
272
+ if (cdktf.isComplexElement(struct)) {
273
+ throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
274
+ }
275
+ return {
276
+ create: cdktf.stringToTerraform(struct.create),
277
+ delete: cdktf.stringToTerraform(struct.delete),
278
+ read: cdktf.stringToTerraform(struct.read),
279
+ update: cdktf.stringToTerraform(struct.update),
280
+ };
281
+ }
282
+ class ResourceTimeoutsOutputReference extends cdktf.ComplexObject {
283
+ /**
284
+ * @param terraformResource The parent resource
285
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
286
+ */
287
+ constructor(terraformResource, terraformAttribute) {
288
+ super(terraformResource, terraformAttribute, false);
289
+ this.isEmptyObject = false;
290
+ }
291
+ get internalValue() {
292
+ if (this.resolvableValue) {
293
+ return this.resolvableValue;
294
+ }
295
+ let hasAnyValues = this.isEmptyObject;
296
+ const internalValueResult = {};
297
+ if (this._create !== undefined) {
298
+ hasAnyValues = true;
299
+ internalValueResult.create = this._create;
300
+ }
301
+ if (this._delete !== undefined) {
302
+ hasAnyValues = true;
303
+ internalValueResult.delete = this._delete;
304
+ }
305
+ if (this._read !== undefined) {
306
+ hasAnyValues = true;
307
+ internalValueResult.read = this._read;
308
+ }
309
+ if (this._update !== undefined) {
310
+ hasAnyValues = true;
311
+ internalValueResult.update = this._update;
312
+ }
313
+ return hasAnyValues ? internalValueResult : undefined;
314
+ }
315
+ set internalValue(value) {
316
+ if (value === undefined) {
317
+ this.isEmptyObject = false;
318
+ this.resolvableValue = undefined;
319
+ this._create = undefined;
320
+ this._delete = undefined;
321
+ this._read = undefined;
322
+ this._update = undefined;
323
+ }
324
+ else if (cdktf.Tokenization.isResolvable(value)) {
325
+ this.isEmptyObject = false;
326
+ this.resolvableValue = value;
327
+ }
328
+ else {
329
+ this.isEmptyObject = Object.keys(value).length === 0;
330
+ this.resolvableValue = undefined;
331
+ this._create = value.create;
332
+ this._delete = value.delete;
333
+ this._read = value.read;
334
+ this._update = value.update;
335
+ }
336
+ }
337
+ get create() {
338
+ return this.getStringAttribute("create");
339
+ }
340
+ set create(value) {
341
+ this._create = value;
342
+ }
343
+ resetCreate() {
344
+ this._create = undefined;
345
+ }
346
+ // Temporarily expose input value. Use with caution.
347
+ get createInput() {
348
+ return this._create;
349
+ }
350
+ get delete() {
351
+ return this.getStringAttribute("delete");
352
+ }
353
+ set delete(value) {
354
+ this._delete = value;
355
+ }
356
+ resetDelete() {
357
+ this._delete = undefined;
358
+ }
359
+ // Temporarily expose input value. Use with caution.
360
+ get deleteInput() {
361
+ return this._delete;
362
+ }
363
+ get read() {
364
+ return this.getStringAttribute("read");
365
+ }
366
+ set read(value) {
367
+ this._read = value;
368
+ }
369
+ resetRead() {
370
+ this._read = undefined;
371
+ }
372
+ // Temporarily expose input value. Use with caution.
373
+ get readInput() {
374
+ return this._read;
375
+ }
376
+ get update() {
377
+ return this.getStringAttribute("update");
378
+ }
379
+ set update(value) {
380
+ this._update = value;
381
+ }
382
+ resetUpdate() {
383
+ this._update = undefined;
384
+ }
385
+ // Temporarily expose input value. Use with caution.
386
+ get updateInput() {
387
+ return this._update;
388
+ }
389
+ }
390
+ exports.ResourceTimeoutsOutputReference = ResourceTimeoutsOutputReference;
391
+ _d = JSII_RTTI_SYMBOL_1;
392
+ ResourceTimeoutsOutputReference[_d] = { fqn: "@microsoft/terraform-cdk-constructs.ResourceTimeoutsOutputReference", version: "1.0.0" };
393
+ /**
394
+ * Represents a {@link https://registry.terraform.io/providers/azure/azapi/2.7.0/docs/resources/resource azapi_resource}
395
+ */
396
+ class Resource extends cdktf.TerraformResource {
397
+ // ===========
398
+ // INITIALIZER
399
+ // ===========
400
+ /**
401
+ * Create a new {@link https://registry.terraform.io/providers/azure/azapi/2.7.0/docs/resources/resource azapi_resource} Resource
402
+ *
403
+ * @param scope The scope in which to define this construct
404
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
405
+ * @param options ResourceConfig
406
+ */
407
+ constructor(scope, id, config) {
408
+ super(scope, id, {
409
+ terraformResourceType: "azapi_resource",
410
+ terraformGeneratorMetadata: {
411
+ providerName: "azapi",
412
+ providerVersion: "2.7.0",
413
+ providerVersionConstraint: "~> 2.7.0",
414
+ },
415
+ provider: config.provider,
416
+ dependsOn: config.dependsOn,
417
+ count: config.count,
418
+ lifecycle: config.lifecycle,
419
+ provisioners: config.provisioners,
420
+ connection: config.connection,
421
+ forEach: config.forEach,
422
+ });
423
+ // output - computed: true, optional: false, required: false
424
+ this._output = new cdktf.AnyMap(this, "output");
425
+ // retry - computed: false, optional: true, required: false
426
+ this._retry = new ResourceRetryOutputReference(this, "retry");
427
+ // identity - computed: false, optional: true, required: false
428
+ this._identity = new ResourceIdentityList(this, "identity", false);
429
+ // timeouts - computed: false, optional: true, required: false
430
+ this._timeouts = new ResourceTimeoutsOutputReference(this, "timeouts");
431
+ this._body = config.body;
432
+ this._createHeaders = config.createHeaders;
433
+ this._createQueryParameters = config.createQueryParameters;
434
+ this._deleteHeaders = config.deleteHeaders;
435
+ this._deleteQueryParameters = config.deleteQueryParameters;
436
+ this._ignoreCasing = config.ignoreCasing;
437
+ this._ignoreMissingProperty = config.ignoreMissingProperty;
438
+ this._ignoreNullProperty = config.ignoreNullProperty;
439
+ this._location = config.location;
440
+ this._locks = config.locks;
441
+ this._name = config.name;
442
+ this._parentId = config.parentId;
443
+ this._readHeaders = config.readHeaders;
444
+ this._readQueryParameters = config.readQueryParameters;
445
+ this._replaceTriggersExternalValues = config.replaceTriggersExternalValues;
446
+ this._replaceTriggersRefs = config.replaceTriggersRefs;
447
+ this._responseExportValues = config.responseExportValues;
448
+ this._retry.internalValue = config.retry;
449
+ this._schemaValidationEnabled = config.schemaValidationEnabled;
450
+ this._sensitiveBody = config.sensitiveBody;
451
+ this._sensitiveBodyVersion = config.sensitiveBodyVersion;
452
+ this._tags = config.tags;
453
+ this._type = config.type;
454
+ this._updateHeaders = config.updateHeaders;
455
+ this._updateQueryParameters = config.updateQueryParameters;
456
+ this._identity.internalValue = config.identity;
457
+ this._timeouts.internalValue = config.timeouts;
458
+ }
459
+ get body() {
460
+ return this.getAnyMapAttribute("body");
461
+ }
462
+ set body(value) {
463
+ this._body = value;
464
+ }
465
+ resetBody() {
466
+ this._body = undefined;
467
+ }
468
+ // Temporarily expose input value. Use with caution.
469
+ get bodyInput() {
470
+ return this._body;
471
+ }
472
+ get createHeaders() {
473
+ return this.getStringMapAttribute("create_headers");
474
+ }
475
+ set createHeaders(value) {
476
+ this._createHeaders = value;
477
+ }
478
+ resetCreateHeaders() {
479
+ this._createHeaders = undefined;
480
+ }
481
+ // Temporarily expose input value. Use with caution.
482
+ get createHeadersInput() {
483
+ return this._createHeaders;
484
+ }
485
+ get createQueryParameters() {
486
+ return this.interpolationForAttribute("create_query_parameters");
487
+ }
488
+ set createQueryParameters(value) {
489
+ this._createQueryParameters = value;
490
+ }
491
+ resetCreateQueryParameters() {
492
+ this._createQueryParameters = undefined;
493
+ }
494
+ // Temporarily expose input value. Use with caution.
495
+ get createQueryParametersInput() {
496
+ return this._createQueryParameters;
497
+ }
498
+ get deleteHeaders() {
499
+ return this.getStringMapAttribute("delete_headers");
500
+ }
501
+ set deleteHeaders(value) {
502
+ this._deleteHeaders = value;
503
+ }
504
+ resetDeleteHeaders() {
505
+ this._deleteHeaders = undefined;
506
+ }
507
+ // Temporarily expose input value. Use with caution.
508
+ get deleteHeadersInput() {
509
+ return this._deleteHeaders;
510
+ }
511
+ get deleteQueryParameters() {
512
+ return this.interpolationForAttribute("delete_query_parameters");
513
+ }
514
+ set deleteQueryParameters(value) {
515
+ this._deleteQueryParameters = value;
516
+ }
517
+ resetDeleteQueryParameters() {
518
+ this._deleteQueryParameters = undefined;
519
+ }
520
+ // Temporarily expose input value. Use with caution.
521
+ get deleteQueryParametersInput() {
522
+ return this._deleteQueryParameters;
523
+ }
524
+ // id - computed: true, optional: false, required: false
525
+ get id() {
526
+ return this.getStringAttribute("id");
527
+ }
528
+ get ignoreCasing() {
529
+ return this.getBooleanAttribute("ignore_casing");
530
+ }
531
+ set ignoreCasing(value) {
532
+ this._ignoreCasing = value;
533
+ }
534
+ resetIgnoreCasing() {
535
+ this._ignoreCasing = undefined;
536
+ }
537
+ // Temporarily expose input value. Use with caution.
538
+ get ignoreCasingInput() {
539
+ return this._ignoreCasing;
540
+ }
541
+ get ignoreMissingProperty() {
542
+ return this.getBooleanAttribute("ignore_missing_property");
543
+ }
544
+ set ignoreMissingProperty(value) {
545
+ this._ignoreMissingProperty = value;
546
+ }
547
+ resetIgnoreMissingProperty() {
548
+ this._ignoreMissingProperty = undefined;
549
+ }
550
+ // Temporarily expose input value. Use with caution.
551
+ get ignoreMissingPropertyInput() {
552
+ return this._ignoreMissingProperty;
553
+ }
554
+ get ignoreNullProperty() {
555
+ return this.getBooleanAttribute("ignore_null_property");
556
+ }
557
+ set ignoreNullProperty(value) {
558
+ this._ignoreNullProperty = value;
559
+ }
560
+ resetIgnoreNullProperty() {
561
+ this._ignoreNullProperty = undefined;
562
+ }
563
+ // Temporarily expose input value. Use with caution.
564
+ get ignoreNullPropertyInput() {
565
+ return this._ignoreNullProperty;
566
+ }
567
+ get location() {
568
+ return this.getStringAttribute("location");
569
+ }
570
+ set location(value) {
571
+ this._location = value;
572
+ }
573
+ resetLocation() {
574
+ this._location = undefined;
575
+ }
576
+ // Temporarily expose input value. Use with caution.
577
+ get locationInput() {
578
+ return this._location;
579
+ }
580
+ get locks() {
581
+ return this.getListAttribute("locks");
582
+ }
583
+ set locks(value) {
584
+ this._locks = value;
585
+ }
586
+ resetLocks() {
587
+ this._locks = undefined;
588
+ }
589
+ // Temporarily expose input value. Use with caution.
590
+ get locksInput() {
591
+ return this._locks;
592
+ }
593
+ get name() {
594
+ return this.getStringAttribute("name");
595
+ }
596
+ set name(value) {
597
+ this._name = value;
598
+ }
599
+ resetName() {
600
+ this._name = undefined;
601
+ }
602
+ // Temporarily expose input value. Use with caution.
603
+ get nameInput() {
604
+ return this._name;
605
+ }
606
+ get output() {
607
+ return this._output;
608
+ }
609
+ get parentId() {
610
+ return this.getStringAttribute("parent_id");
611
+ }
612
+ set parentId(value) {
613
+ this._parentId = value;
614
+ }
615
+ resetParentId() {
616
+ this._parentId = undefined;
617
+ }
618
+ // Temporarily expose input value. Use with caution.
619
+ get parentIdInput() {
620
+ return this._parentId;
621
+ }
622
+ get readHeaders() {
623
+ return this.getStringMapAttribute("read_headers");
624
+ }
625
+ set readHeaders(value) {
626
+ this._readHeaders = value;
627
+ }
628
+ resetReadHeaders() {
629
+ this._readHeaders = undefined;
630
+ }
631
+ // Temporarily expose input value. Use with caution.
632
+ get readHeadersInput() {
633
+ return this._readHeaders;
634
+ }
635
+ get readQueryParameters() {
636
+ return this.interpolationForAttribute("read_query_parameters");
637
+ }
638
+ set readQueryParameters(value) {
639
+ this._readQueryParameters = value;
640
+ }
641
+ resetReadQueryParameters() {
642
+ this._readQueryParameters = undefined;
643
+ }
644
+ // Temporarily expose input value. Use with caution.
645
+ get readQueryParametersInput() {
646
+ return this._readQueryParameters;
647
+ }
648
+ get replaceTriggersExternalValues() {
649
+ return this.getAnyMapAttribute("replace_triggers_external_values");
650
+ }
651
+ set replaceTriggersExternalValues(value) {
652
+ this._replaceTriggersExternalValues = value;
653
+ }
654
+ resetReplaceTriggersExternalValues() {
655
+ this._replaceTriggersExternalValues = undefined;
656
+ }
657
+ // Temporarily expose input value. Use with caution.
658
+ get replaceTriggersExternalValuesInput() {
659
+ return this._replaceTriggersExternalValues;
660
+ }
661
+ get replaceTriggersRefs() {
662
+ return this.getListAttribute("replace_triggers_refs");
663
+ }
664
+ set replaceTriggersRefs(value) {
665
+ this._replaceTriggersRefs = value;
666
+ }
667
+ resetReplaceTriggersRefs() {
668
+ this._replaceTriggersRefs = undefined;
669
+ }
670
+ // Temporarily expose input value. Use with caution.
671
+ get replaceTriggersRefsInput() {
672
+ return this._replaceTriggersRefs;
673
+ }
674
+ get responseExportValues() {
675
+ return this.getAnyMapAttribute("response_export_values");
676
+ }
677
+ set responseExportValues(value) {
678
+ this._responseExportValues = value;
679
+ }
680
+ resetResponseExportValues() {
681
+ this._responseExportValues = undefined;
682
+ }
683
+ // Temporarily expose input value. Use with caution.
684
+ get responseExportValuesInput() {
685
+ return this._responseExportValues;
686
+ }
687
+ get retry() {
688
+ return this._retry;
689
+ }
690
+ putRetry(value) {
691
+ this._retry.internalValue = value;
692
+ }
693
+ resetRetry() {
694
+ this._retry.internalValue = undefined;
695
+ }
696
+ // Temporarily expose input value. Use with caution.
697
+ get retryInput() {
698
+ return this._retry.internalValue;
699
+ }
700
+ get schemaValidationEnabled() {
701
+ return this.getBooleanAttribute("schema_validation_enabled");
702
+ }
703
+ set schemaValidationEnabled(value) {
704
+ this._schemaValidationEnabled = value;
705
+ }
706
+ resetSchemaValidationEnabled() {
707
+ this._schemaValidationEnabled = undefined;
708
+ }
709
+ // Temporarily expose input value. Use with caution.
710
+ get schemaValidationEnabledInput() {
711
+ return this._schemaValidationEnabled;
712
+ }
713
+ get sensitiveBody() {
714
+ return this.getAnyMapAttribute("sensitive_body");
715
+ }
716
+ set sensitiveBody(value) {
717
+ this._sensitiveBody = value;
718
+ }
719
+ resetSensitiveBody() {
720
+ this._sensitiveBody = undefined;
721
+ }
722
+ // Temporarily expose input value. Use with caution.
723
+ get sensitiveBodyInput() {
724
+ return this._sensitiveBody;
725
+ }
726
+ get sensitiveBodyVersion() {
727
+ return this.getStringMapAttribute("sensitive_body_version");
728
+ }
729
+ set sensitiveBodyVersion(value) {
730
+ this._sensitiveBodyVersion = value;
731
+ }
732
+ resetSensitiveBodyVersion() {
733
+ this._sensitiveBodyVersion = undefined;
734
+ }
735
+ // Temporarily expose input value. Use with caution.
736
+ get sensitiveBodyVersionInput() {
737
+ return this._sensitiveBodyVersion;
738
+ }
739
+ get tags() {
740
+ return this.getStringMapAttribute("tags");
741
+ }
742
+ set tags(value) {
743
+ this._tags = value;
744
+ }
745
+ resetTags() {
746
+ this._tags = undefined;
747
+ }
748
+ // Temporarily expose input value. Use with caution.
749
+ get tagsInput() {
750
+ return this._tags;
751
+ }
752
+ get type() {
753
+ return this.getStringAttribute("type");
754
+ }
755
+ set type(value) {
756
+ this._type = value;
757
+ }
758
+ // Temporarily expose input value. Use with caution.
759
+ get typeInput() {
760
+ return this._type;
761
+ }
762
+ get updateHeaders() {
763
+ return this.getStringMapAttribute("update_headers");
764
+ }
765
+ set updateHeaders(value) {
766
+ this._updateHeaders = value;
767
+ }
768
+ resetUpdateHeaders() {
769
+ this._updateHeaders = undefined;
770
+ }
771
+ // Temporarily expose input value. Use with caution.
772
+ get updateHeadersInput() {
773
+ return this._updateHeaders;
774
+ }
775
+ get updateQueryParameters() {
776
+ return this.interpolationForAttribute("update_query_parameters");
777
+ }
778
+ set updateQueryParameters(value) {
779
+ this._updateQueryParameters = value;
780
+ }
781
+ resetUpdateQueryParameters() {
782
+ this._updateQueryParameters = undefined;
783
+ }
784
+ // Temporarily expose input value. Use with caution.
785
+ get updateQueryParametersInput() {
786
+ return this._updateQueryParameters;
787
+ }
788
+ get identity() {
789
+ return this._identity;
790
+ }
791
+ putIdentity(value) {
792
+ this._identity.internalValue = value;
793
+ }
794
+ resetIdentity() {
795
+ this._identity.internalValue = undefined;
796
+ }
797
+ // Temporarily expose input value. Use with caution.
798
+ get identityInput() {
799
+ return this._identity.internalValue;
800
+ }
801
+ get timeouts() {
802
+ return this._timeouts;
803
+ }
804
+ putTimeouts(value) {
805
+ this._timeouts.internalValue = value;
806
+ }
807
+ resetTimeouts() {
808
+ this._timeouts.internalValue = undefined;
809
+ }
810
+ // Temporarily expose input value. Use with caution.
811
+ get timeoutsInput() {
812
+ return this._timeouts.internalValue;
813
+ }
814
+ // =========
815
+ // SYNTHESIS
816
+ // =========
817
+ synthesizeAttributes() {
818
+ return {
819
+ body: cdktf.hashMapper(cdktf.anyToTerraform)(this._body),
820
+ create_headers: cdktf.hashMapper(cdktf.stringToTerraform)(this._createHeaders),
821
+ create_query_parameters: cdktf.hashMapper(cdktf.listMapper(cdktf.stringToTerraform, false))(this._createQueryParameters),
822
+ delete_headers: cdktf.hashMapper(cdktf.stringToTerraform)(this._deleteHeaders),
823
+ delete_query_parameters: cdktf.hashMapper(cdktf.listMapper(cdktf.stringToTerraform, false))(this._deleteQueryParameters),
824
+ ignore_casing: cdktf.booleanToTerraform(this._ignoreCasing),
825
+ ignore_missing_property: cdktf.booleanToTerraform(this._ignoreMissingProperty),
826
+ ignore_null_property: cdktf.booleanToTerraform(this._ignoreNullProperty),
827
+ location: cdktf.stringToTerraform(this._location),
828
+ locks: cdktf.listMapper(cdktf.stringToTerraform, false)(this._locks),
829
+ name: cdktf.stringToTerraform(this._name),
830
+ parent_id: cdktf.stringToTerraform(this._parentId),
831
+ read_headers: cdktf.hashMapper(cdktf.stringToTerraform)(this._readHeaders),
832
+ read_query_parameters: cdktf.hashMapper(cdktf.listMapper(cdktf.stringToTerraform, false))(this._readQueryParameters),
833
+ replace_triggers_external_values: cdktf.hashMapper(cdktf.anyToTerraform)(this._replaceTriggersExternalValues),
834
+ replace_triggers_refs: cdktf.listMapper(cdktf.stringToTerraform, false)(this._replaceTriggersRefs),
835
+ response_export_values: cdktf.hashMapper(cdktf.anyToTerraform)(this._responseExportValues),
836
+ retry: resourceRetryToTerraform(this._retry.internalValue),
837
+ schema_validation_enabled: cdktf.booleanToTerraform(this._schemaValidationEnabled),
838
+ sensitive_body: cdktf.hashMapper(cdktf.anyToTerraform)(this._sensitiveBody),
839
+ sensitive_body_version: cdktf.hashMapper(cdktf.stringToTerraform)(this._sensitiveBodyVersion),
840
+ tags: cdktf.hashMapper(cdktf.stringToTerraform)(this._tags),
841
+ type: cdktf.stringToTerraform(this._type),
842
+ update_headers: cdktf.hashMapper(cdktf.stringToTerraform)(this._updateHeaders),
843
+ update_query_parameters: cdktf.hashMapper(cdktf.listMapper(cdktf.stringToTerraform, false))(this._updateQueryParameters),
844
+ identity: cdktf.listMapper(resourceIdentityToTerraform, true)(this._identity.internalValue),
845
+ timeouts: resourceTimeoutsToTerraform(this._timeouts.internalValue),
846
+ };
847
+ }
848
+ }
849
+ exports.Resource = Resource;
850
+ _e = JSII_RTTI_SYMBOL_1;
851
+ Resource[_e] = { fqn: "@microsoft/terraform-cdk-constructs.Resource", version: "1.0.0" };
852
+ // =================
853
+ // STATIC PROPERTIES
854
+ // =================
855
+ Resource.tfResourceType = "azapi_resource";
856
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29yZS1henVyZS9saWIvYXphcGkvcHJvdmlkZXJzLWF6YXBpL3Jlc291cmNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFtUkEsNERBcUJDO0FBbUtELGtFQWtCQztBQTZKRCxrRUFpQkM7O0FBM29CRCxvRkFBb0Y7QUFDcEYsMkNBQTJDO0FBRTNDLCtCQUErQjtBQWdSL0IsU0FBZ0Isd0JBQXdCLENBQ3RDLE1BQTBDO0lBRTFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDekUsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FDYixvSEFBb0gsQ0FDckgsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPO1FBQ0wsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDbkMsS0FBSyxDQUFDLGlCQUFpQixFQUN2QixLQUFLLENBQ04sQ0FBQyxNQUFPLENBQUMsaUJBQWlCLENBQUM7UUFDNUIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxlQUFlLENBQUM7UUFDbEUsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxrQkFBa0IsQ0FBQztRQUN6RSxVQUFVLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxVQUFVLENBQUM7UUFDdkQsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxtQkFBbUIsQ0FBQztLQUMzRSxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQWEsNEJBQTZCLFNBQVEsS0FBSyxDQUFDLGFBQWE7SUFJbkU7OztPQUdHO0lBQ0gsWUFDRSxpQkFBNkMsRUFDN0Msa0JBQTBCO1FBRTFCLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQVg5QyxrQkFBYSxHQUFHLEtBQUssQ0FBQztJQVk5QixDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM5QixDQUFDO1FBQ0QsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN0QyxNQUFNLG1CQUFtQixHQUFRLEVBQUUsQ0FBQztRQUNwQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLG1CQUFtQixDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNsRSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUNwQixtQkFBbUIsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzlELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMzQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLG1CQUFtQixDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ25DLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDcEIsbUJBQW1CLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDcEQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLG9CQUFvQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzVDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDcEIsbUJBQW1CLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ3RFLENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsSUFBVyxhQUFhLENBQ3RCLEtBQW9EO1FBRXBELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7WUFDcEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztZQUNsQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO1lBQzdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUM7UUFDeEMsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUMvQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUM7WUFDbEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDOUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztZQUNwRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDcEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztJQUlELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELElBQVcsaUJBQWlCLENBQUMsS0FBZTtRQUMxQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxvREFBb0Q7SUFDcEQsSUFBVyxzQkFBc0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUlELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxJQUFXLGVBQWUsQ0FBQyxLQUFhO1FBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUNNLG9CQUFvQjtRQUN6QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxvREFBb0Q7SUFDcEQsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUlELElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNELElBQVcsa0JBQWtCLENBQUMsS0FBYTtRQUN6QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7SUFDTSx1QkFBdUI7UUFDNUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQztJQUN2QyxDQUFDO0lBQ0Qsb0RBQW9EO0lBQ3BELElBQVcsdUJBQXVCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFJRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNELElBQVcsVUFBVSxDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUNNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQUNELG9EQUFvRDtJQUNwRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFJRCxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxJQUFXLG1CQUFtQixDQUFDLEtBQWE7UUFDMUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBQ00sd0JBQXdCO1FBQzdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUM7SUFDeEMsQ0FBQztJQUNELG9EQUFvRDtJQUNwRCxJQUFXLHdCQUF3QjtRQUNqQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDOztBQWhKSCxvRUFpSkM7OztBQWdCRCxTQUFnQiwyQkFBMkIsQ0FDekMsTUFBNkM7SUFFN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN6RSxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUNiLG9IQUFvSCxDQUNySCxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU87UUFDTCxZQUFZLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDNUIsS0FBSyxDQUFDLGlCQUFpQixFQUN2QixLQUFLLENBQ04sQ0FBQyxNQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTyxDQUFDLElBQUksQ0FBQztLQUM1QyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQWEsK0JBQWdDLFNBQVEsS0FBSyxDQUFDLGFBQWE7SUFJdEU7Ozs7O09BS0c7SUFDSCxZQUNFLGlCQUE2QyxFQUM3QyxrQkFBMEIsRUFDMUIsa0JBQTBCLEVBQzFCLHNCQUErQjtRQUUvQixLQUFLLENBQ0gsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsa0JBQWtCLENBQ25CLENBQUM7UUFwQkksa0JBQWEsR0FBRyxLQUFLLENBQUM7SUFxQjlCLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzlCLENBQUM7UUFDRCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3RDLE1BQU0sbUJBQW1CLEdBQVEsRUFBRSxDQUFDO1FBQ3BDLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLG1CQUFtQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3RELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDN0IsWUFBWSxHQUFHLElBQUksQ0FBQztZQUNwQixtQkFBbUIsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QyxDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQVcsYUFBYSxDQUN0QixLQUF1RDtRQUV2RCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztZQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztZQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN6QixDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7WUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUlELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsSUFBVyxXQUFXLENBQUMsS0FBZTtRQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBQ00sZ0JBQWdCO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxvREFBb0Q7SUFDcEQsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxrRUFBa0U7SUFDbEUsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFJRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsSUFBVyxJQUFJLENBQUMsS0FBYTtRQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBQ0Qsb0RBQW9EO0lBQ3BELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQzs7QUFqR0gsMEVBa0dDOzs7QUFFRCxNQUFhLG9CQUFxQixTQUFRLEtBQUssQ0FBQyxXQUFXO0lBR3pEOzs7O09BSUc7SUFDSCxZQUNZLGlCQUE2QyxFQUM3QyxrQkFBMEIsRUFDMUIsUUFBaUI7UUFFM0IsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBSjdDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNEI7UUFDN0MsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVM7SUFHN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksR0FBRyxDQUFDLEtBQWE7UUFDdEIsT0FBTyxJQUFJLCtCQUErQixDQUN4QyxJQUFJLENBQUMsaUJBQWlCLEVBQ3RCLElBQUksQ0FBQyxrQkFBa0IsRUFDdkIsS0FBSyxFQUNMLElBQUksQ0FBQyxRQUFRLENBQ2QsQ0FBQztJQUNKLENBQUM7O0FBMUJILG9EQTJCQzs7O0FBNEJELFNBQWdCLDJCQUEyQixDQUN6QyxNQUE2QztJQUU3QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3pFLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQ2Isb0hBQW9ILENBQ3JILENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTztRQUNMLE1BQU0sRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTyxDQUFDLE1BQU0sQ0FBQztRQUMvQyxNQUFNLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxNQUFNLENBQUM7UUFDL0MsSUFBSSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsSUFBSSxDQUFDO1FBQzNDLE1BQU0sRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTyxDQUFDLE1BQU0sQ0FBQztLQUNoRCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQWEsK0JBQWdDLFNBQVEsS0FBSyxDQUFDLGFBQWE7SUFJdEU7OztPQUdHO0lBQ0gsWUFDRSxpQkFBNkMsRUFDN0Msa0JBQTBCO1FBRTFCLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQVg5QyxrQkFBYSxHQUFHLEtBQUssQ0FBQztJQVk5QixDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM5QixDQUFDO1FBQ0QsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN0QyxNQUFNLG1CQUFtQixHQUFRLEVBQUUsQ0FBQztRQUNwQyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0IsWUFBWSxHQUFHLElBQUksQ0FBQztZQUNwQixtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQy9CLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDcEIsbUJBQW1CLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QixZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLG1CQUFtQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0IsWUFBWSxHQUFHLElBQUksQ0FBQztZQUNwQixtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QyxDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQVcsYUFBYSxDQUN0QixLQUF1RDtRQUV2RCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztZQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztZQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztZQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUMzQixDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7WUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBSUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELElBQVcsTUFBTSxDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUNNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7SUFDM0IsQ0FBQztJQUNELG9EQUFvRDtJQUNwRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFJRCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBVyxNQUFNLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBQ00sV0FBVztRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztJQUMzQixDQUFDO0lBQ0Qsb0RBQW9EO0lBQ3BELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUlELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxJQUFXLElBQUksQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFDTSxTQUFTO1FBQ2QsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7SUFDekIsQ0FBQztJQUNELG9EQUFvRDtJQUNwRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFJRCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBVyxNQUFNLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBQ00sV0FBVztRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztJQUMzQixDQUFDO0lBQ0Qsb0RBQW9EO0lBQ3BELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQzs7QUE3SEgsMEVBOEhDOzs7QUFFRDs7R0FFRztBQUNILE1BQWEsUUFBUyxTQUFRLEtBQUssQ0FBQyxpQkFBaUI7SUFNbkQsY0FBYztJQUNkLGNBQWM7SUFDZCxjQUFjO0lBRWQ7Ozs7OztPQU1HO0lBQ0gsWUFBbUIsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsTUFBc0I7UUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixxQkFBcUIsRUFBRSxnQkFBZ0I7WUFDdkMsMEJBQTBCLEVBQUU7Z0JBQzFCLFlBQVksRUFBRSxPQUFPO2dCQUNyQixlQUFlLEVBQUUsT0FBTztnQkFDeEIseUJBQXlCLEVBQUUsVUFBVTthQUN0QztZQUNELFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtZQUN6QixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7WUFDM0IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1lBQ25CLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztZQUMzQixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7WUFDakMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1lBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztTQUN4QixDQUFDLENBQUM7UUErTkwsNERBQTREO1FBQ3BELFlBQU8sR0FBRyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBeUduRCwyREFBMkQ7UUFDbkQsV0FBTSxHQUFHLElBQUksNEJBQTRCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBZ0lqRSw4REFBOEQ7UUFDdEQsY0FBUyxHQUFHLElBQUksb0JBQW9CLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQWV0RSw4REFBOEQ7UUFDdEQsY0FBUyxHQUFHLElBQUksK0JBQStCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBMWR4RSxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQzNDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUM7UUFDM0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQzNDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUM7UUFDM0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUM7UUFDM0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztRQUNyRCxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUM7UUFDdkQsSUFBSSxDQUFDLDhCQUE4QixHQUFHLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQztRQUMzRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDO1FBQ3ZELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUM7UUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUN6QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDO1FBQy9ELElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztRQUMzQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDO1FBQ3pELElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQzNDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUM7UUFDM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ2pELENBQUM7SUFRRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsSUFBVyxJQUFJLENBQUMsS0FBNkI7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUNNLFNBQVM7UUFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztJQUN6QixDQUFDO0lBQ0Qsb0RBQW9EO0lBQ3BELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUlELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxJQUFXLGFBQWEsQ0FBQyxLQUFnQztRQUN2RCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBQ00sa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxvREFBb0Q7SUFDcEQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFNRCxJQUFXLHFCQUFxQjtRQUM5QixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxJQUFXLHFCQUFxQixDQUM5QixLQUFzRDtRQUV0RCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFDTSwwQkFBMEI7UUFDL0IsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQztJQUMxQyxDQUFDO0lBQ0Qsb0RBQW9EO0lBQ3BELElBQVcsMEJBQTBCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7SUFJRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsSUFBVyxhQUFhLENBQUMsS0FBZ0M7UUFDdkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUNNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0lBQ0Qsb0RBQW9EO0lBQ3BELElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBTUQsSUFBVyxxQkFBcUI7UUFDOUIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsSUFBVyxxQkFBcUIsQ0FDOUIsS0FBc0Q7UUFFdEQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBQ00sMEJBQTBCO1FBQy9CLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxTQUFTLENBQUM7SUFDMUMsQ0FBQztJQUNELG9EQUFvRDtJQUNwRCxJQUFXLDBCQUEwQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBRUQsd0RBQXdEO0lBQ3hELElBQVcsRUFBRTtRQUNYLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFJRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNELElBQVcsWUFBWSxDQUFDLEtBQWtDO1FBQ3hELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFDTSxpQkFBaUI7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDakMsQ0FBQztJQUNELG9EQUFvRDtJQUNwRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUlELElBQVcscUJBQXFCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELElBQVcscUJBQXFCLENBQUMsS0FBa0M7UUFDakUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBQ00sMEJBQTBCO1FBQy9CLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxTQUFTLENBQUM7SUFDMUMsQ0FBQztJQUNELG9EQUFvRDtJQUNwRCxJQUFXLDBCQUEwQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBSUQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsSUFBVyxrQkFBa0IsQ0FBQyxLQUFrQztRQUM5RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7SUFDTSx1QkFBdUI7UUFDNUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQztJQUN2QyxDQUFDO0lBQ0Qsb0RBQW9EO0lBQ3BELElBQVcsdUJBQXVCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFJRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELElBQVcsUUFBUSxDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUNNLGFBQWE7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUNELG9EQUFvRDtJQUNwRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFJRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ0QsSUFBVyxLQUFLLENBQUMsS0FBZTtRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBQ00sVUFBVTtRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFDRCxvREFBb0Q7SUFDcEQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBSUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELElBQVcsSUFBSSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUNNLFNBQVM7UUFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztJQUN6QixDQUFDO0lBQ0Qsb0RBQW9EO0lBQ3BELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUlELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBSUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRCxJQUFXLFFBQVEsQ0FBQyxLQUFhO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFDTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFDRCxvREFBb0Q7SUFDcEQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBSUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRCxJQUFXLFdBQVcsQ0FBQyxLQUFnQztRQUNyRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBQ00sZ0JBQWdCO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxvREFBb0Q7SUFDcEQsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFNRCxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFDRCxJQUFXLG1CQUFtQixDQUM1QixLQUFzRDtRQUV0RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFDTSx3QkFBd0I7UUFDN0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFNBQVMsQ0FBQztJQUN4QyxDQUFDO0lBQ0Qsb0RBQW9EO0lBQ3BELElBQVcsd0JBQXdCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFJRCxJQUFXLDZCQUE2QjtRQUN0QyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFDRCxJQUFXLDZCQUE2QixDQUFDLEtBQTZCO1FBQ3BFLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUNNLGtDQUFrQztRQUN2QyxJQUFJLENBQUMsOEJBQThCLEdBQUcsU0FBUyxDQUFDO0lBQ2xELENBQUM7SUFDRCxvREFBb0Q7SUFDcEQsSUFBVyxrQ0FBa0M7UUFDM0MsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUM7SUFDN0MsQ0FBQztJQUlELElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUNELElBQVcsbUJBQW1CLENBQUMsS0FBZTtRQUM1QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFDTSx3QkFBd0I7UUFDN0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFNBQVMsQ0FBQztJQUN4QyxDQUFDO0lBQ0Qsb0RBQW9EO0lBQ3BELElBQVcsd0JBQXdCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFJRCxJQUFXLG9CQUFvQjtRQUM3QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxJQUFXLG9CQUFvQixDQUFDLEtBQTZCO1FBQzNELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUNNLHlCQUF5QjtRQUM5QixJQUFJLENBQUMscUJBQXFCLEdBQUcsU0FBUyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxvREFBb0Q7SUFDcEQsSUFBVyx5QkFBeUI7UUFDbEMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztJQUlELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ00sUUFBUSxDQUFDLEtBQW9CO1FBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBQ00sVUFBVTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUN4QyxDQUFDO0lBQ0Qsb0RBQW9EO0lBQ3BELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO0lBQ25DLENBQUM7SUFJRCxJQUFXLHVCQUF1QjtRQUNoQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDRCxJQUFXLHVCQUF1QixDQUFDLEtBQWtDO1FBQ25FLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQUNNLDRCQUE0QjtRQUNqQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsU0FBUyxDQUFDO0lBQzVDLENBQUM7SUFDRCxvREFBb0Q7SUFDcEQsSUFBVyw0QkFBNEI7UUFDckMsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDdkMsQ0FBQztJQUlELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCxJQUFXLGFBQWEsQ0FBQyxLQUE2QjtRQUNwRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBQ00sa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxvREFBb0Q7SUFDcEQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFJRCxJQUFXLG9CQUFvQjtRQUM3QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRCxJQUFXLG9CQUFvQixDQUFDLEtBQWdDO1FBQzlELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUNNLHlCQUF5QjtRQUM5QixJQUFJLENBQUMscUJBQXFCLEdBQUcsU0FBUyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxvREFBb0Q7SUFDcEQsSUFBVyx5QkFBeUI7UUFDbEMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztJQUlELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxJQUFXLElBQUksQ0FBQyxLQUFnQztRQUM5QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBQ00sU0FBUztRQUNkLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxvREFBb0Q7SUFDcEQsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBSUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELElBQVcsSUFBSSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUNELG9EQUFvRDtJQUNwRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFJRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsSUFBVyxhQUFhLENBQUMsS0FBZ0M7UUFDdkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUNNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0lBQ0Qsb0RBQW9EO0lBQ3BELElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBTUQsSUFBVyxxQkFBcUI7UUFDOUIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsSUFBVyxxQkFBcUIsQ0FDOUIsS0FBc0Q7UUFFdEQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBQ00sMEJBQTBCO1FBQy9CLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxTQUFTLENBQUM7SUFDMUMsQ0FBQztJQUNELG9EQUFvRDtJQUNwRCxJQUFXLDBCQUEwQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBSUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ00sV0FBVyxDQUFDLEtBQTZDO1FBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBQ00sYUFBYTtRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDM0MsQ0FBQztJQUNELG9EQUFvRDtJQUNwRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBSUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ00sV0FBVyxDQUFDLEtBQXVCO1FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBQ00sYUFBYTtRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDM0MsQ0FBQztJQUNELG9EQUFvRDtJQUNwRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBRUQsWUFBWTtJQUNaLFlBQVk7SUFDWixZQUFZO0lBRUYsb0JBQW9CO1FBQzVCLE9BQU87WUFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN4RCxjQUFjLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FDdkQsSUFBSSxDQUFDLGNBQWMsQ0FDcEI7WUFDRCx1QkFBdUIsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUN2QyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsQ0FDakQsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUM7WUFDOUIsY0FBYyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQ3ZELElBQUksQ0FBQyxjQUFjLENBQ3BCO1lBQ0QsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDdkMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQ2pELENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBQzlCLGFBQWEsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUMzRCx1QkFBdUIsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQy9DLElBQUksQ0FBQyxzQkFBc0IsQ0FDNUI7WUFDRCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQ3hFLFFBQVEsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNqRCxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNwRSxJQUFJLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDekMsU0FBUyxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2xELFlBQVksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUNyRCxJQUFJLENBQUMsWUFBWSxDQUNsQjtZQUNELHFCQUFxQixFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3JDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUNqRCxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUM1QixnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FDdEUsSUFBSSxDQUFDLDhCQUE4QixDQUNwQztZQUNELHFCQUFxQixFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3JDLEtBQUssQ0FBQyxpQkFBaUIsRUFDdkIsS0FBSyxDQUNOLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQzVCLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUM1RCxJQUFJLENBQUMscUJBQXFCLENBQzNCO1lBQ0QsS0FBSyxFQUFFLHdCQUF3QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQzFELHlCQUF5QixFQUFFLEtBQUssQ0FBQyxrQkFBa0IsQ0FDakQsSUFBSSxDQUFDLHdCQUF3QixDQUM5QjtZQUNELGNBQWMsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FDcEQsSUFBSSxDQUFDLGNBQWMsQ0FDcEI7WUFDRCxzQkFBc0IsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUMvRCxJQUFJLENBQUMscUJBQXFCLENBQzNCO1lBQ0QsSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUMzRCxJQUFJLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDekMsY0FBYyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQ3ZELElBQUksQ0FBQyxjQUFjLENBQ3BCO1lBQ0QsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDdkMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQ2pELENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBQzlCLFFBQVEsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUN4QiwyQkFBMkIsRUFDM0IsSUFBSSxDQUNMLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7WUFDL0IsUUFBUSxFQUFFLDJCQUEyQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO1NBQ3BFLENBQUM7SUFDSixDQUFDOztBQTlrQkgsNEJBK2tCQzs7O0FBOWtCQyxvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNHLHVCQUFjLEdBQUcsZ0JBQWdCLEFBQW5CLENBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3Jlc291cmNlXG4vLyBnZW5lcmF0ZWQgZnJvbSB0ZXJyYWZvcm0gcmVzb3VyY2Ugc2NoZW1hXG5cbmltcG9ydCAqIGFzIGNka3RmIGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuLy8gQ29uZmlndXJhdGlvblxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQ29uZmlnIGV4dGVuZHMgY2RrdGYuVGVycmFmb3JtTWV0YUFyZ3VtZW50cyB7XG4gIC8qKlxuICAgKiBBIGR5bmFtaWMgYXR0cmlidXRlIHRoYXQgY29udGFpbnMgdGhlIHJlcXVlc3QgYm9keS5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvcmVzb3VyY2UjYm9keSBSZXNvdXJjZSNib2R5fVxuICAgKi9cbiAgcmVhZG9ubHkgYm9keT86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIC8qKlxuICAgKiBBIG1hcHBpbmcgb2YgaGVhZGVycyB0byBiZSBzZW50IHdpdGggdGhlIGNyZWF0ZSByZXF1ZXN0LlxuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9yZXNvdXJjZSNjcmVhdGVfaGVhZGVycyBSZXNvdXJjZSNjcmVhdGVfaGVhZGVyc31cbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZUhlYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAvKipcbiAgICogQSBtYXBwaW5nIG9mIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gYmUgc2VudCB3aXRoIHRoZSBjcmVhdGUgcmVxdWVzdC5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvcmVzb3VyY2UjY3JlYXRlX3F1ZXJ5X3BhcmFtZXRlcnMgUmVzb3VyY2UjY3JlYXRlX3F1ZXJ5X3BhcmFtZXRlcnN9XG4gICAqL1xuICByZWFkb25seSBjcmVhdGVRdWVyeVBhcmFtZXRlcnM/OlxuICAgIHwgeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9XG4gICAgfCBjZGt0Zi5JUmVzb2x2YWJsZTtcbiAgLyoqXG4gICAqIEEgbWFwcGluZyBvZiBoZWFkZXJzIHRvIGJlIHNlbnQgd2l0aCB0aGUgZGVsZXRlIHJlcXVlc3QuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3Jlc291cmNlI2RlbGV0ZV9oZWFkZXJzIFJlc291cmNlI2RlbGV0ZV9oZWFkZXJzfVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlSGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIC8qKlxuICAgKiBBIG1hcHBpbmcgb2YgcXVlcnkgcGFyYW1ldGVycyB0byBiZSBzZW50IHdpdGggdGhlIGRlbGV0ZSByZXF1ZXN0LlxuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9yZXNvdXJjZSNkZWxldGVfcXVlcnlfcGFyYW1ldGVycyBSZXNvdXJjZSNkZWxldGVfcXVlcnlfcGFyYW1ldGVyc31cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZVF1ZXJ5UGFyYW1ldGVycz86XG4gICAgfCB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH1cbiAgICB8IGNka3RmLklSZXNvbHZhYmxlO1xuICAvKipcbiAgICogV2hldGhlciBpZ25vcmUgdGhlIGNhc2luZyBvZiB0aGUgcHJvcGVydHkgbmFtZXMgaW4gdGhlIHJlc3BvbnNlIGJvZHkuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3Jlc291cmNlI2lnbm9yZV9jYXNpbmcgUmVzb3VyY2UjaWdub3JlX2Nhc2luZ31cbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUNhc2luZz86IGJvb2xlYW4gfCBjZGt0Zi5JUmVzb2x2YWJsZTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgaWdub3JlIG5vdCByZXR1cm5lZCBwcm9wZXJ0aWVzIGxpa2UgY3JlZGVudGlhbHMgaW4gYGJvZHlgIHRvIHN1cHByZXNzIHBsYW4tZGlmZi4gRGVmYXVsdHMgdG8gYHRydWVgLiBJdCdzIHJlY29tbWVuZCB0byBlbmFibGUgdGhpcyBvcHRpb24gd2hlbiBzb21lIHNlbnNpdGl2ZSBwcm9wZXJ0aWVzIGFyZSBub3QgcmV0dXJuZWQgaW4gcmVzcG9uc2UgYm9keSwgaW5zdGVhZCBvZiBzZXR0aW5nIHRoZW0gaW4gYGxpZmVjeWNsZS5pZ25vcmVfY2hhbmdlc2AgYmVjYXVzZSBpdCB3aWxsIG1ha2UgdGhlIHNlbnNpdGl2ZSBmaWVsZHMgdW5hYmxlIHRvIHVwZGF0ZS5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvcmVzb3VyY2UjaWdub3JlX21pc3NpbmdfcHJvcGVydHkgUmVzb3VyY2UjaWdub3JlX21pc3NpbmdfcHJvcGVydHl9XG4gICAqL1xuICByZWFkb25seSBpZ25vcmVNaXNzaW5nUHJvcGVydHk/OiBib29sZWFuIHwgY2RrdGYuSVJlc29sdmFibGU7XG4gIC8qKlxuICAqIFdoZW4gc2V0IHRvIGB0cnVlYCwgdGhlIHByb3ZpZGVyIHdpbGwgaWdub3JlIHByb3BlcnRpZXMgd2hvc2UgdmFsdWVzIGFyZSBgbnVsbGAgaW4gdGhlIGBib2R5YC5cblRoZXNlIHByb3BlcnRpZXMgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIHJlcXVlc3QgYm9keSBzZW50IHRvIHRoZSBBUEksIGFuZCB0aGUgZGlmZmVyZW5jZSB3aWxsIG5vdCBiZSBzaG93biBpbiB0aGUgcGxhbiBvdXRwdXQuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9yZXNvdXJjZSNpZ25vcmVfbnVsbF9wcm9wZXJ0eSBSZXNvdXJjZSNpZ25vcmVfbnVsbF9wcm9wZXJ0eX1cbiAgKi9cbiAgcmVhZG9ubHkgaWdub3JlTnVsbFByb3BlcnR5PzogYm9vbGVhbiB8IGNka3RmLklSZXNvbHZhYmxlO1xuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSBBenVyZSByZXNvdXJjZS5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvcmVzb3VyY2UjbG9jYXRpb24gUmVzb3VyY2UjbG9jYXRpb259XG4gICAqL1xuICByZWFkb25seSBsb2NhdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBBUk0gcmVzb3VyY2UgSURzIHdoaWNoIGFyZSB1c2VkIHRvIGF2b2lkIGNyZWF0ZS9tb2RpZnkvZGVsZXRlIGF6YXBpIHJlc291cmNlcyBhdCB0aGUgc2FtZSB0aW1lLlxuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9yZXNvdXJjZSNsb2NrcyBSZXNvdXJjZSNsb2Nrc31cbiAgICovXG4gIHJlYWRvbmx5IGxvY2tzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGF6dXJlIHJlc291cmNlLiBDaGFuZ2luZyB0aGlzIGZvcmNlcyBhIG5ldyByZXNvdXJjZSB0byBiZSBjcmVhdGVkLlxuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9yZXNvdXJjZSNuYW1lIFJlc291cmNlI25hbWV9XG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgKiBUaGUgSUQgb2YgdGhlIGF6dXJlIHJlc291cmNlIGluIHdoaWNoIHRoaXMgcmVzb3VyY2UgaXMgY3JlYXRlZC4gSXQgc3VwcG9ydHMgZGlmZmVyZW50IGtpbmRzIG9mIGRlcGxveW1lbnQgc2NvcGUgZm9yICoqdG9wIGxldmVsKiogcmVzb3VyY2VzOlxuXG4gIC0gcmVzb3VyY2UgZ3JvdXAgc2NvcGU6IGBwYXJlbnRfaWRgIHNob3VsZCBiZSB0aGUgSUQgb2YgYSByZXNvdXJjZSBncm91cCwgaXQncyByZWNvbW1lbmRlZCB0byBtYW5hZ2UgYSByZXNvdXJjZSBncm91cCBieSBhenVyZXJtX3Jlc291cmNlX2dyb3VwLlxuXHQtIG1hbmFnZW1lbnQgZ3JvdXAgc2NvcGU6IGBwYXJlbnRfaWRgIHNob3VsZCBiZSB0aGUgSUQgb2YgYSBtYW5hZ2VtZW50IGdyb3VwLCBpdCdzIHJlY29tbWVuZGVkIHRvIG1hbmFnZSBhIG1hbmFnZW1lbnQgZ3JvdXAgYnkgYXp1cmVybV9tYW5hZ2VtZW50X2dyb3VwLlxuXHQtIGV4dGVuc2lvbiBzY29wZTogYHBhcmVudF9pZGAgc2hvdWxkIGJlIHRoZSBJRCBvZiB0aGUgcmVzb3VyY2UgeW91J3JlIGFkZGluZyB0aGUgZXh0ZW5zaW9uIHRvLlxuXHQtIHN1YnNjcmlwdGlvbiBzY29wZTogYHBhcmVudF9pZGAgc2hvdWxkIGJlIGxpa2UgXFx4NjAvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcXHg2MFxuXHQtIHRlbmFudCBzY29wZTogYHBhcmVudF9pZGAgc2hvdWxkIGJlIC9cblxuICBGb3IgY2hpbGQgbGV2ZWwgcmVzb3VyY2VzLCB0aGUgYHBhcmVudF9pZGAgc2hvdWxkIGJlIHRoZSBJRCBvZiBpdHMgcGFyZW50IHJlc291cmNlLCBmb3IgZXhhbXBsZSwgc3VibmV0IHJlc291cmNlJ3MgYHBhcmVudF9pZGAgaXMgdGhlIElEIG9mIHRoZSB2bmV0LlxuXG4gIEZvciB0eXBlIGBNaWNyb3NvZnQuUmVzb3VyY2VzL3Jlc291cmNlR3JvdXBzYCwgdGhlIGBwYXJlbnRfaWRgIGNvdWxkIGJlIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIHN1YnNjcmlwdGlvbiBJRCBzcGVjaWZpZWQgaW4gcHJvdmlkZXIgb3IgdGhlIGRlZmF1bHQgc3Vic2NyaXB0aW9uIChZb3UgY291bGQgY2hlY2sgdGhlIGRlZmF1bHQgc3Vic2NyaXB0aW9uIGJ5IGF6dXJlIGNsaSBjb21tYW5kOiBgYXogYWNjb3VudCBzaG93YCkuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9yZXNvdXJjZSNwYXJlbnRfaWQgUmVzb3VyY2UjcGFyZW50X2lkfVxuICAqL1xuICByZWFkb25seSBwYXJlbnRJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgbWFwcGluZyBvZiBoZWFkZXJzIHRvIGJlIHNlbnQgd2l0aCB0aGUgcmVhZCByZXF1ZXN0LlxuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9yZXNvdXJjZSNyZWFkX2hlYWRlcnMgUmVzb3VyY2UjcmVhZF9oZWFkZXJzfVxuICAgKi9cbiAgcmVhZG9ubHkgcmVhZEhlYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAvKipcbiAgICogQSBtYXBwaW5nIG9mIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gYmUgc2VudCB3aXRoIHRoZSByZWFkIHJlcXVlc3QuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3Jlc291cmNlI3JlYWRfcXVlcnlfcGFyYW1ldGVycyBSZXNvdXJjZSNyZWFkX3F1ZXJ5X3BhcmFtZXRlcnN9XG4gICAqL1xuICByZWFkb25seSByZWFkUXVlcnlQYXJhbWV0ZXJzPzpcbiAgICB8IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfVxuICAgIHwgY2RrdGYuSVJlc29sdmFibGU7XG4gIC8qKlxuICAqIFdpbGwgdHJpZ2dlciBhIHJlcGxhY2Ugb2YgdGhlIHJlc291cmNlIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMgYW5kIGlzIG5vdCBgbnVsbGAuIFRoaXMgY2FuIGJlIHVzZWQgYnkgcHJhY3RpdGlvbmVycyB0byBmb3JjZSBhIHJlcGxhY2Ugb2YgdGhlIHJlc291cmNlIHdoZW4gY2VydGFpbiB2YWx1ZXMgY2hhbmdlLCBlLmcuIGNoYW5naW5nIHRoZSBTS1Ugb2YgYSB2aXJ0dWFsIG1hY2hpbmUgYmFzZWQgb24gdGhlIHZhbHVlIG9mIHZhcmlhYmxlcyBvciBsb2NhbHMuIFRoZSB2YWx1ZSBpcyBhIGBkeW5hbWljYCwgc28gcHJhY3RpdGlvbmVycyBjYW4gY29tcG9zZSB0aGUgaW5wdXQgaG93ZXZlciB0aGV5IHdpc2guIEZvciBhIFwiYnJlYWsgZ2xhc3NcIiBzZXQgdGhlIHZhbHVlIHRvIGBudWxsYCB0byBwcmV2ZW50IHRoZSBwbGFuIG1vZGlmaWVyIHRha2luZyBlZmZlY3QuXG5JZiB5b3UgaGF2ZSBgbnVsbGAgdmFsdWVzIHRoYXQgeW91IGRvIHdhbnQgdG8gYmUgdHJhY2tlZCBhcyBhZmZlY3RpbmcgdGhlIHJlc291cmNlIHJlcGxhY2VtZW50LCBpbmNsdWRlIHRoZXNlIGluc2lkZSBhbiBvYmplY3QuXG5BZHZhbmNlZCB1c2UgY2FzZXMgYXJlIHBvc3NpYmxlIGFuZCByZXNvdXJjZSByZXBsYWNlbWVudCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHZhbHVlcyBleHRlcm5hbCB0byB0aGUgcmVzb3VyY2UsIGZvciBleGFtcGxlIHdoZW4gYSBkZXBlbmRlbnQgcmVzb3VyY2UgY2hhbmdlcy5cblxuZS5nLiB0byByZXBsYWNlIGEgcmVzb3VyY2Ugd2hlbiBlaXRoZXIgdGhlIFNLVSBvciBvc190eXBlIGF0dHJpYnV0ZXMgY2hhbmdlOlxuXG5gYGBoY2xcbnJlc291cmNlIFwiYXphcGlfcmVzb3VyY2VcIiBcImV4YW1wbGVcIiB7XG4gIG5hbWUgICAgICA9IHZhci5uYW1lXG4gIHR5cGUgICAgICA9IFwiTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXNAMjAyMy0xMS0wMVwiXG4gIHBhcmVudF9pZCA9IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL2V4YW1wbGVcIlxuICBib2R5ID0ge1xuICAgIHByb3BlcnRpZXMgPSB7XG4gICAgICBza3UgICA9IHZhci5za3VcbiAgICAgIHpvbmVzID0gdmFyLnpvbmVzXG4gICAgfVxuICB9XG5cbiAgcmVwbGFjZV90cmlnZ2Vyc19leHRlcm5hbF92YWx1ZXMgPSBbXG4gICAgdmFyLnNrdSxcbiAgICB2YXIuem9uZXMsXG4gIF1cbn1cbmBgYFxuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9yZXNvdXJjZSNyZXBsYWNlX3RyaWdnZXJzX2V4dGVybmFsX3ZhbHVlcyBSZXNvdXJjZSNyZXBsYWNlX3RyaWdnZXJzX2V4dGVybmFsX3ZhbHVlc31cbiAgKi9cbiAgcmVhZG9ubHkgcmVwbGFjZVRyaWdnZXJzRXh0ZXJuYWxWYWx1ZXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICAvKipcbiAgICogQSBsaXN0IG9mIHBhdGhzIGluIHRoZSBjdXJyZW50IFRlcnJhZm9ybSBjb25maWd1cmF0aW9uLiBXaGVuIHRoZSB2YWx1ZXMgYXQgdGhlc2UgcGF0aHMgY2hhbmdlLCB0aGUgcmVzb3VyY2Ugd2lsbCBiZSByZXBsYWNlZC5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvcmVzb3VyY2UjcmVwbGFjZV90cmlnZ2Vyc19yZWZzIFJlc291cmNlI3JlcGxhY2VfdHJpZ2dlcnNfcmVmc31cbiAgICovXG4gIHJlYWRvbmx5IHJlcGxhY2VUcmlnZ2Vyc1JlZnM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICogVGhlIGF0dHJpYnV0ZSBjYW4gYWNjZXB0IGVpdGhlciBhIGxpc3Qgb3IgYSBtYXAuXG5cbi0gKipMaXN0Kio6IEEgbGlzdCBvZiBwYXRocyB0aGF0IG5lZWQgdG8gYmUgZXhwb3J0ZWQgZnJvbSB0aGUgcmVzcG9uc2UgYm9keS4gU2V0dGluZyBpdCB0byBgW1wiKlwiXWAgd2lsbCBleHBvcnQgdGhlIGZ1bGwgcmVzcG9uc2UgYm9keS4gSGVyZSdzIGFuIGV4YW1wbGUuIElmIGl0IHNldHMgdG8gYFtcInByb3BlcnRpZXMubG9naW5TZXJ2ZXJcIiwgXCJwcm9wZXJ0aWVzLnBvbGljaWVzLnF1YXJhbnRpbmVQb2xpY3kuc3RhdHVzXCJdYCwgaXQgd2lsbCBzZXQgdGhlIGZvbGxvd2luZyBIQ0wgb2JqZWN0IHRvIHRoZSBjb21wdXRlZCBwcm9wZXJ0eSBvdXRwdXQuXG5cblx0YGBgdGV4dFxuXHR7XG5cdFx0cHJvcGVydGllcyA9IHtcblx0XHRcdGxvZ2luU2VydmVyID0gXCJyZWdpc3RyeTEuYXp1cmVjci5pb1wiXG5cdFx0XHRwb2xpY2llcyA9IHtcblx0XHRcdFx0cXVhcmFudGluZVBvbGljeSA9IHtcblx0XHRcdFx0XHRzdGF0dXMgPSBcImRpc2FibGVkXCJcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRgYGBcblxuLSAqKk1hcCoqOiBBIG1hcCB3aGVyZSB0aGUga2V5IGlzIHRoZSBuYW1lIGZvciB0aGUgcmVzdWx0IGFuZCB0aGUgdmFsdWUgaXMgYSBKTUVTUGF0aCBxdWVyeSBzdHJpbmcgdG8gZmlsdGVyIHRoZSByZXNwb25zZS4gSGVyZSdzIGFuIGV4YW1wbGUuIElmIGl0IHNldHMgdG8gYHtcImxvZ2luX3NlcnZlclwiOiBcInByb3BlcnRpZXMubG9naW5TZXJ2ZXJcIiwgXCJxdWFyYW50aW5lX3N0YXR1c1wiOiBcInByb3BlcnRpZXMucG9saWNpZXMucXVhcmFudGluZVBvbGljeS5zdGF0dXNcIn1gLCBpdCB3aWxsIHNldCB0aGUgZm9sbG93aW5nIEhDTCBvYmplY3QgdG8gdGhlIGNvbXB1dGVkIHByb3BlcnR5IG91dHB1dC5cblxuXHRgYGB0ZXh0XG5cdHtcblx0XHRcImxvZ2luX3NlcnZlclwiID0gXCJyZWdpc3RyeTEuYXp1cmVjci5pb1wiXG5cdFx0XCJxdWFyYW50aW5lX3N0YXR1c1wiID0gXCJkaXNhYmxlZFwiXG5cdH1cblx0YGBgXG5cblRvIGxlYXJuIG1vcmUgYWJvdXQgSk1FU1BhdGgsIHZpc2l0IFtKTUVTUGF0aF0oaHR0cHM6Ly9qbWVzcGF0aC5vcmcvKS5cblxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvcmVzb3VyY2UjcmVzcG9uc2VfZXhwb3J0X3ZhbHVlcyBSZXNvdXJjZSNyZXNwb25zZV9leHBvcnRfdmFsdWVzfVxuICAqL1xuICByZWFkb25seSByZXNwb25zZUV4cG9ydFZhbHVlcz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIC8qKlxuICAgKiBUaGUgcmV0cnkgb2JqZWN0IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczpcbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvcmVzb3VyY2UjcmV0cnkgUmVzb3VyY2UjcmV0cnl9XG4gICAqL1xuICByZWFkb25seSByZXRyeT86IFJlc291cmNlUmV0cnk7XG4gIC8qKlxuICAgKiBXaGV0aGVyIGVuYWJsZWQgdGhlIHZhbGlkYXRpb24gb24gYHR5cGVgIGFuZCBgYm9keWAgd2l0aCBlbWJlZGRlZCBzY2hlbWEuIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvcmVzb3VyY2Ujc2NoZW1hX3ZhbGlkYXRpb25fZW5hYmxlZCBSZXNvdXJjZSNzY2hlbWFfdmFsaWRhdGlvbl9lbmFibGVkfVxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZW1hVmFsaWRhdGlvbkVuYWJsZWQ/OiBib29sZWFuIHwgY2RrdGYuSVJlc29sdmFibGU7XG4gIC8qKlxuICAgKiBBIGR5bmFtaWMgYXR0cmlidXRlIHRoYXQgY29udGFpbnMgdGhlIHdyaXRlLW9ubHkgcHJvcGVydGllcyBvZiB0aGUgcmVxdWVzdCBib2R5LiBUaGlzIHdpbGwgYmUgbWVyZ2UtcGF0Y2hlZCB0byB0aGUgYm9keSB0byBjb25zdHJ1Y3QgdGhlIGFjdHVhbCByZXF1ZXN0IGJvZHkuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3Jlc291cmNlI3NlbnNpdGl2ZV9ib2R5IFJlc291cmNlI3NlbnNpdGl2ZV9ib2R5fVxuICAgKi9cbiAgcmVhZG9ubHkgc2Vuc2l0aXZlQm9keT86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIC8qKlxuICAgKiBBIG1hcCB3aGVyZSB0aGUga2V5IGlzIHRoZSBwYXRoIHRvIHRoZSBwcm9wZXJ0eSBpbiBgc2Vuc2l0aXZlX2JvZHlgIGFuZCB0aGUgdmFsdWUgaXMgdGhlIHZlcnNpb24gb2YgdGhlIHByb3BlcnR5LiBUaGUga2V5IGlzIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQgb2YgYHBhdGgudG8ucHJvcGVydHlbaW5kZXhdLnN1YnByb3BlcnR5YCwgd2hlcmUgYGluZGV4YCBpcyB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gaW4gYW4gYXJyYXkuIFdoZW4gdGhlIHZlcnNpb24gaXMgY2hhbmdlZCwgdGhlIHByb3BlcnR5IHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIHJlcXVlc3QgYm9keSwgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgb21pdHRlZCBmcm9tIHRoZSByZXF1ZXN0IGJvZHkuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3Jlc291cmNlI3NlbnNpdGl2ZV9ib2R5X3ZlcnNpb24gUmVzb3VyY2Ujc2Vuc2l0aXZlX2JvZHlfdmVyc2lvbn1cbiAgICovXG4gIHJlYWRvbmx5IHNlbnNpdGl2ZUJvZHlWZXJzaW9uPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgLyoqXG4gICAqIEEgbWFwcGluZyBvZiB0YWdzIHdoaWNoIHNob3VsZCBiZSBhc3NpZ25lZCB0byB0aGUgQXp1cmUgcmVzb3VyY2UuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3Jlc291cmNlI3RhZ3MgUmVzb3VyY2UjdGFnc31cbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAvKipcbiAgICogSW4gYSBmb3JtYXQgbGlrZSBgPHJlc291cmNlLXR5cGU+QDxhcGktdmVyc2lvbj5gLiBgPHJlc291cmNlLXR5cGU+YCBpcyB0aGUgQXp1cmUgcmVzb3VyY2UgdHlwZSwgZm9yIGV4YW1wbGUsIGBNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHNgLiBgPGFwaS12ZXJzaW9uPmAgaXMgdmVyc2lvbiBvZiB0aGUgQVBJIHVzZWQgdG8gbWFuYWdlIHRoaXMgYXp1cmUgcmVzb3VyY2UuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3Jlc291cmNlI3R5cGUgUmVzb3VyY2UjdHlwZX1cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEEgbWFwcGluZyBvZiBoZWFkZXJzIHRvIGJlIHNlbnQgd2l0aCB0aGUgdXBkYXRlIHJlcXVlc3QuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3Jlc291cmNlI3VwZGF0ZV9oZWFkZXJzIFJlc291cmNlI3VwZGF0ZV9oZWFkZXJzfVxuICAgKi9cbiAgcmVhZG9ubHkgdXBkYXRlSGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIC8qKlxuICAgKiBBIG1hcHBpbmcgb2YgcXVlcnkgcGFyYW1ldGVycyB0byBiZSBzZW50IHdpdGggdGhlIHVwZGF0ZSByZXF1ZXN0LlxuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9yZXNvdXJjZSN1cGRhdGVfcXVlcnlfcGFyYW1ldGVycyBSZXNvdXJjZSN1cGRhdGVfcXVlcnlfcGFyYW1ldGVyc31cbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZVF1ZXJ5UGFyYW1ldGVycz86XG4gICAgfCB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH1cbiAgICB8IGNka3RmLklSZXNvbHZhYmxlO1xuICAvKipcbiAgICogaWRlbnRpdHkgYmxvY2tcbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvcmVzb3VyY2UjaWRlbnRpdHkgUmVzb3VyY2UjaWRlbnRpdHl9XG4gICAqL1xuICByZWFkb25seSBpZGVudGl0eT86IFJlc291cmNlSWRlbnRpdHlbXSB8IGNka3RmLklSZXNvbHZhYmxlO1xuICAvKipcbiAgICogdGltZW91dHMgYmxvY2tcbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvcmVzb3VyY2UjdGltZW91dHMgUmVzb3VyY2UjdGltZW91dHN9XG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0cz86IFJlc291cmNlVGltZW91dHM7XG59XG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUmV0cnkge1xuICAvKipcbiAgICogQSBsaXN0IG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdG8gbWF0Y2ggYWdhaW5zdCBlcnJvciBtZXNzYWdlcy4gSWYgYW55IG9mIHRoZSByZWd1bGFyIGV4cHJlc3Npb25zIG1hdGNoLCB0aGUgcmVxdWVzdCB3aWxsIGJlIHJldHJpZWQuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3Jlc291cmNlI2Vycm9yX21lc3NhZ2VfcmVnZXggUmVzb3VyY2UjZXJyb3JfbWVzc2FnZV9yZWdleH1cbiAgICovXG4gIHJlYWRvbmx5IGVycm9yTWVzc2FnZVJlZ2V4OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBiYXNlIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgYmV0d2VlbiByZXRyaWVzLiBEZWZhdWx0IGlzIGAxMGAuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3Jlc291cmNlI2ludGVydmFsX3NlY29uZHMgUmVzb3VyY2UjaW50ZXJ2YWxfc2Vjb25kc31cbiAgICovXG4gIHJlYWRvbmx5IGludGVydmFsU2Vjb25kcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgYmV0d2VlbiByZXRyaWVzLiBEZWZhdWx0IGlzIGAxODBgLlxuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9yZXNvdXJjZSNtYXhfaW50ZXJ2YWxfc2Vjb25kcyBSZXNvdXJjZSNtYXhfaW50ZXJ2YWxfc2Vjb25kc31cbiAgICovXG4gIHJlYWRvbmx5IG1heEludGVydmFsU2Vjb25kcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBtdWx0aXBsaWVyIHRvIGFwcGx5IHRvIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIHJldHJpZXMuIERlZmF1bHQgaXMgYDEuNWAuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3Jlc291cmNlI211bHRpcGxpZXIgUmVzb3VyY2UjbXVsdGlwbGllcn1cbiAgICovXG4gIHJlYWRvbmx5IG11bHRpcGxpZXI/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgcmFuZG9taXphdGlvbiBmYWN0b3IgdG8gYXBwbHkgdG8gdGhlIGludGVydmFsIGJldHdlZW4gcmV0cmllcy4gVGhlIGZvcm11bGEgZm9yIHRoZSByYW5kb21pemVkIGludGVydmFsIGlzOiBgUmV0cnlJbnRlcnZhbCAqIChyYW5kb20gdmFsdWUgaW4gcmFuZ2UgWzEgLSBSYW5kb21pemF0aW9uRmFjdG9yLCAxICsgUmFuZG9taXphdGlvbkZhY3Rvcl0pYC4gVGhlcmVmb3JlIHNldCB0byB6ZXJvIGAwLjBgIGZvciBubyByYW5kb21pemF0aW9uLiBEZWZhdWx0IGlzIGAwLjVgLlxuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9yZXNvdXJjZSNyYW5kb21pemF0aW9uX2ZhY3RvciBSZXNvdXJjZSNyYW5kb21pemF0aW9uX2ZhY3Rvcn1cbiAgICovXG4gIHJlYWRvbmx5IHJhbmRvbWl6YXRpb25GYWN0b3I/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvdXJjZVJldHJ5VG9UZXJyYWZvcm0oXG4gIHN0cnVjdD86IFJlc291cmNlUmV0cnkgfCBjZGt0Zi5JUmVzb2x2YWJsZSxcbik6IGFueSB7XG4gIGlmICghY2RrdGYuY2FuSW5zcGVjdChzdHJ1Y3QpIHx8IGNka3RmLlRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUoc3RydWN0KSkge1xuICAgIHJldHVybiBzdHJ1Y3Q7XG4gIH1cbiAgaWYgKGNka3RmLmlzQ29tcGxleEVsZW1lbnQoc3RydWN0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiQSBjb21wbGV4IGVsZW1lbnQgd2FzIHVzZWQgYXMgY29uZmlndXJhdGlvbiwgdGhpcyBpcyBub3Qgc3VwcG9ydGVkOiBodHRwczovL2Nkay50Zi9jb21wbGV4LW9iamVjdC1hcy1jb25maWd1cmF0aW9uXCIsXG4gICAgKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGVycm9yX21lc3NhZ2VfcmVnZXg6IGNka3RmLmxpc3RNYXBwZXIoXG4gICAgICBjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybSxcbiAgICAgIGZhbHNlLFxuICAgICkoc3RydWN0IS5lcnJvck1lc3NhZ2VSZWdleCksXG4gICAgaW50ZXJ2YWxfc2Vjb25kczogY2RrdGYubnVtYmVyVG9UZXJyYWZvcm0oc3RydWN0IS5pbnRlcnZhbFNlY29uZHMpLFxuICAgIG1heF9pbnRlcnZhbF9zZWNvbmRzOiBjZGt0Zi5udW1iZXJUb1RlcnJhZm9ybShzdHJ1Y3QhLm1heEludGVydmFsU2Vjb25kcyksXG4gICAgbXVsdGlwbGllcjogY2RrdGYubnVtYmVyVG9UZXJyYWZvcm0oc3RydWN0IS5tdWx0aXBsaWVyKSxcbiAgICByYW5kb21pemF0aW9uX2ZhY3RvcjogY2RrdGYubnVtYmVyVG9UZXJyYWZvcm0oc3RydWN0IS5yYW5kb21pemF0aW9uRmFjdG9yKSxcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIFJlc291cmNlUmV0cnlPdXRwdXRSZWZlcmVuY2UgZXh0ZW5kcyBjZGt0Zi5Db21wbGV4T2JqZWN0IHtcbiAgcHJpdmF0ZSBpc0VtcHR5T2JqZWN0ID0gZmFsc2U7XG4gIHByaXZhdGUgcmVzb2x2YWJsZVZhbHVlPzogY2RrdGYuSVJlc29sdmFibGU7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB0ZXJyYWZvcm1SZXNvdXJjZSBUaGUgcGFyZW50IHJlc291cmNlXG4gICAqIEBwYXJhbSB0ZXJyYWZvcm1BdHRyaWJ1dGUgVGhlIGF0dHJpYnV0ZSBvbiB0aGUgcGFyZW50IHJlc291cmNlIHRoaXMgY2xhc3MgaXMgcmVmZXJlbmNpbmdcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICB0ZXJyYWZvcm1SZXNvdXJjZTogY2RrdGYuSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUsIGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW50ZXJuYWxWYWx1ZSgpOiBSZXNvdXJjZVJldHJ5IHwgY2RrdGYuSVJlc29sdmFibGUgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnJlc29sdmFibGVWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2YWJsZVZhbHVlO1xuICAgIH1cbiAgICBsZXQgaGFzQW55VmFsdWVzID0gdGhpcy5pc0VtcHR5T2JqZWN0O1xuICAgIGNvbnN0IGludGVybmFsVmFsdWVSZXN1bHQ6IGFueSA9IHt9O1xuICAgIGlmICh0aGlzLl9lcnJvck1lc3NhZ2VSZWdleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBoYXNBbnlWYWx1ZXMgPSB0cnVlO1xuICAgICAgaW50ZXJuYWxWYWx1ZVJlc3VsdC5lcnJvck1lc3NhZ2VSZWdleCA9IHRoaXMuX2Vycm9yTWVzc2FnZVJlZ2V4O1xuICAgIH1cbiAgICBpZiAodGhpcy5faW50ZXJ2YWxTZWNvbmRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0FueVZhbHVlcyA9IHRydWU7XG4gICAgICBpbnRlcm5hbFZhbHVlUmVzdWx0LmludGVydmFsU2Vjb25kcyA9IHRoaXMuX2ludGVydmFsU2Vjb25kcztcbiAgICB9XG4gICAgaWYgKHRoaXMuX21heEludGVydmFsU2Vjb25kcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBoYXNBbnlWYWx1ZXMgPSB0cnVlO1xuICAgICAgaW50ZXJuYWxWYWx1ZVJlc3VsdC5tYXhJbnRlcnZhbFNlY29uZHMgPSB0aGlzLl9tYXhJbnRlcnZhbFNlY29uZHM7XG4gICAgfVxuICAgIGlmICh0aGlzLl9tdWx0aXBsaWVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0FueVZhbHVlcyA9IHRydWU7XG4gICAgICBpbnRlcm5hbFZhbHVlUmVzdWx0Lm11bHRpcGxpZXIgPSB0aGlzLl9tdWx0aXBsaWVyO1xuICAgIH1cbiAgICBpZiAodGhpcy5fcmFuZG9taXphdGlvbkZhY3RvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBoYXNBbnlWYWx1ZXMgPSB0cnVlO1xuICAgICAgaW50ZXJuYWxWYWx1ZVJlc3VsdC5yYW5kb21pemF0aW9uRmFjdG9yID0gdGhpcy5fcmFuZG9taXphdGlvbkZhY3RvcjtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0FueVZhbHVlcyA/IGludGVybmFsVmFsdWVSZXN1bHQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGludGVybmFsVmFsdWUoXG4gICAgdmFsdWU6IFJlc291cmNlUmV0cnkgfCBjZGt0Zi5JUmVzb2x2YWJsZSB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaXNFbXB0eU9iamVjdCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNvbHZhYmxlVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9lcnJvck1lc3NhZ2VSZWdleCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2ludGVydmFsU2Vjb25kcyA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX21heEludGVydmFsU2Vjb25kcyA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX211bHRpcGxpZXIgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9yYW5kb21pemF0aW9uRmFjdG9yID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSBpZiAoY2RrdGYuVG9rZW5pemF0aW9uLmlzUmVzb2x2YWJsZSh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuaXNFbXB0eU9iamVjdCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNvbHZhYmxlVmFsdWUgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0VtcHR5T2JqZWN0ID0gT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMDtcbiAgICAgIHRoaXMucmVzb2x2YWJsZVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fZXJyb3JNZXNzYWdlUmVnZXggPSB2YWx1ZS5lcnJvck1lc3NhZ2VSZWdleDtcbiAgICAgIHRoaXMuX2ludGVydmFsU2Vjb25kcyA9IHZhbHVlLmludGVydmFsU2Vjb25kcztcbiAgICAgIHRoaXMuX21heEludGVydmFsU2Vjb25kcyA9IHZhbHVlLm1heEludGVydmFsU2Vjb25kcztcbiAgICAgIHRoaXMuX211bHRpcGxpZXIgPSB2YWx1ZS5tdWx0aXBsaWVyO1xuICAgICAgdGhpcy5fcmFuZG9taXphdGlvbkZhY3RvciA9IHZhbHVlLnJhbmRvbWl6YXRpb25GYWN0b3I7XG4gICAgfVxuICB9XG5cbiAgLy8gZXJyb3JfbWVzc2FnZV9yZWdleCAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF9lcnJvck1lc3NhZ2VSZWdleD86IHN0cmluZ1tdO1xuICBwdWJsaWMgZ2V0IGVycm9yTWVzc2FnZVJlZ2V4KCkge1xuICAgIHJldHVybiB0aGlzLmdldExpc3RBdHRyaWJ1dGUoXCJlcnJvcl9tZXNzYWdlX3JlZ2V4XCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgZXJyb3JNZXNzYWdlUmVnZXgodmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fZXJyb3JNZXNzYWdlUmVnZXggPSB2YWx1ZTtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgZXJyb3JNZXNzYWdlUmVnZXhJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JNZXNzYWdlUmVnZXg7XG4gIH1cblxuICAvLyBpbnRlcnZhbF9zZWNvbmRzIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfaW50ZXJ2YWxTZWNvbmRzPzogbnVtYmVyO1xuICBwdWJsaWMgZ2V0IGludGVydmFsU2Vjb25kcygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXROdW1iZXJBdHRyaWJ1dGUoXCJpbnRlcnZhbF9zZWNvbmRzXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgaW50ZXJ2YWxTZWNvbmRzKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9pbnRlcnZhbFNlY29uZHMgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRJbnRlcnZhbFNlY29uZHMoKSB7XG4gICAgdGhpcy5faW50ZXJ2YWxTZWNvbmRzID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBpbnRlcnZhbFNlY29uZHNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW50ZXJ2YWxTZWNvbmRzO1xuICB9XG5cbiAgLy8gbWF4X2ludGVydmFsX3NlY29uZHMgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9tYXhJbnRlcnZhbFNlY29uZHM/OiBudW1iZXI7XG4gIHB1YmxpYyBnZXQgbWF4SW50ZXJ2YWxTZWNvbmRzKCkge1xuICAgIHJldHVybiB0aGlzLmdldE51bWJlckF0dHJpYnV0ZShcIm1heF9pbnRlcnZhbF9zZWNvbmRzXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgbWF4SW50ZXJ2YWxTZWNvbmRzKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9tYXhJbnRlcnZhbFNlY29uZHMgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRNYXhJbnRlcnZhbFNlY29uZHMoKSB7XG4gICAgdGhpcy5fbWF4SW50ZXJ2YWxTZWNvbmRzID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBtYXhJbnRlcnZhbFNlY29uZHNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4SW50ZXJ2YWxTZWNvbmRzO1xuICB9XG5cbiAgLy8gbXVsdGlwbGllciAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX211bHRpcGxpZXI/OiBudW1iZXI7XG4gIHB1YmxpYyBnZXQgbXVsdGlwbGllcigpIHtcbiAgICByZXR1cm4gdGhpcy5nZXROdW1iZXJBdHRyaWJ1dGUoXCJtdWx0aXBsaWVyXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgbXVsdGlwbGllcih2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbXVsdGlwbGllciA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldE11bHRpcGxpZXIoKSB7XG4gICAgdGhpcy5fbXVsdGlwbGllciA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgbXVsdGlwbGllcklucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsaWVyO1xuICB9XG5cbiAgLy8gcmFuZG9taXphdGlvbl9mYWN0b3IgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9yYW5kb21pemF0aW9uRmFjdG9yPzogbnVtYmVyO1xuICBwdWJsaWMgZ2V0IHJhbmRvbWl6YXRpb25GYWN0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TnVtYmVyQXR0cmlidXRlKFwicmFuZG9taXphdGlvbl9mYWN0b3JcIik7XG4gIH1cbiAgcHVibGljIHNldCByYW5kb21pemF0aW9uRmFjdG9yKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9yYW5kb21pemF0aW9uRmFjdG9yID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0UmFuZG9taXphdGlvbkZhY3RvcigpIHtcbiAgICB0aGlzLl9yYW5kb21pemF0aW9uRmFjdG9yID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCByYW5kb21pemF0aW9uRmFjdG9ySW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmRvbWl6YXRpb25GYWN0b3I7XG4gIH1cbn1cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VJZGVudGl0eSB7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgVXNlciBNYW5hZ2VkIElkZW50aXR5IElEJ3Mgd2hpY2ggc2hvdWxkIGJlIGFzc2lnbmVkIHRvIHRoZSBhenVyZSByZXNvdXJjZS5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvcmVzb3VyY2UjaWRlbnRpdHlfaWRzIFJlc291cmNlI2lkZW50aXR5X2lkc31cbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5SWRzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgVHlwZSBvZiBJZGVudGl0eSB3aGljaCBzaG91bGQgYmUgdXNlZCBmb3IgdGhpcyBhenVyZSByZXNvdXJjZS4gUG9zc2libGUgdmFsdWVzIGFyZSBgU3lzdGVtQXNzaWduZWRgLCBgVXNlckFzc2lnbmVkYCBhbmQgYFN5c3RlbUFzc2lnbmVkLFVzZXJBc3NpZ25lZGBcbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvcmVzb3VyY2UjdHlwZSBSZXNvdXJjZSN0eXBlfVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb3VyY2VJZGVudGl0eVRvVGVycmFmb3JtKFxuICBzdHJ1Y3Q/OiBSZXNvdXJjZUlkZW50aXR5IHwgY2RrdGYuSVJlc29sdmFibGUsXG4pOiBhbnkge1xuICBpZiAoIWNka3RmLmNhbkluc3BlY3Qoc3RydWN0KSB8fCBjZGt0Zi5Ub2tlbml6YXRpb24uaXNSZXNvbHZhYmxlKHN0cnVjdCkpIHtcbiAgICByZXR1cm4gc3RydWN0O1xuICB9XG4gIGlmIChjZGt0Zi5pc0NvbXBsZXhFbGVtZW50KHN0cnVjdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIkEgY29tcGxleCBlbGVtZW50IHdhcyB1c2VkIGFzIGNvbmZpZ3VyYXRpb24sIHRoaXMgaXMgbm90IHN1cHBvcnRlZDogaHR0cHM6Ly9jZGsudGYvY29tcGxleC1vYmplY3QtYXMtY29uZmlndXJhdGlvblwiLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpZGVudGl0eV9pZHM6IGNka3RmLmxpc3RNYXBwZXIoXG4gICAgICBjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybSxcbiAgICAgIGZhbHNlLFxuICAgICkoc3RydWN0IS5pZGVudGl0eUlkcyksXG4gICAgdHlwZTogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0oc3RydWN0IS50eXBlKSxcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIFJlc291cmNlSWRlbnRpdHlPdXRwdXRSZWZlcmVuY2UgZXh0ZW5kcyBjZGt0Zi5Db21wbGV4T2JqZWN0IHtcbiAgcHJpdmF0ZSBpc0VtcHR5T2JqZWN0ID0gZmFsc2U7XG4gIHByaXZhdGUgcmVzb2x2YWJsZVZhbHVlPzogY2RrdGYuSVJlc29sdmFibGU7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB0ZXJyYWZvcm1SZXNvdXJjZSBUaGUgcGFyZW50IHJlc291cmNlXG4gICAqIEBwYXJhbSB0ZXJyYWZvcm1BdHRyaWJ1dGUgVGhlIGF0dHJpYnV0ZSBvbiB0aGUgcGFyZW50IHJlc291cmNlIHRoaXMgY2xhc3MgaXMgcmVmZXJlbmNpbmdcbiAgICogQHBhcmFtIGNvbXBsZXhPYmplY3RJbmRleCB0aGUgaW5kZXggb2YgdGhpcyBpdGVtIGluIHRoZSBsaXN0XG4gICAqIEBwYXJhbSBjb21wbGV4T2JqZWN0SXNGcm9tU2V0IHdoZXRoZXIgdGhlIGxpc3QgaXMgd3JhcHBpbmcgYSBzZXQgKHdpbGwgYWRkIHRvbGlzdCgpIHRvIGJlIGFibGUgdG8gYWNjZXNzIGFuIGl0ZW0gdmlhIGFuIGluZGV4KVxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHRlcnJhZm9ybVJlc291cmNlOiBjZGt0Zi5JSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyxcbiAgICBjb21wbGV4T2JqZWN0SW5kZXg6IG51bWJlcixcbiAgICBjb21wbGV4T2JqZWN0SXNGcm9tU2V0OiBib29sZWFuLFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIHRlcnJhZm9ybVJlc291cmNlLFxuICAgICAgdGVycmFmb3JtQXR0cmlidXRlLFxuICAgICAgY29tcGxleE9iamVjdElzRnJvbVNldCxcbiAgICAgIGNvbXBsZXhPYmplY3RJbmRleCxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnRlcm5hbFZhbHVlKCk6IFJlc291cmNlSWRlbnRpdHkgfCBjZGt0Zi5JUmVzb2x2YWJsZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMucmVzb2x2YWJsZVZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNvbHZhYmxlVmFsdWU7XG4gICAgfVxuICAgIGxldCBoYXNBbnlWYWx1ZXMgPSB0aGlzLmlzRW1wdHlPYmplY3Q7XG4gICAgY29uc3QgaW50ZXJuYWxWYWx1ZVJlc3VsdDogYW55ID0ge307XG4gICAgaWYgKHRoaXMuX2lkZW50aXR5SWRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0FueVZhbHVlcyA9IHRydWU7XG4gICAgICBpbnRlcm5hbFZhbHVlUmVzdWx0LmlkZW50aXR5SWRzID0gdGhpcy5faWRlbnRpdHlJZHM7XG4gICAgfVxuICAgIGlmICh0aGlzLl90eXBlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0FueVZhbHVlcyA9IHRydWU7XG4gICAgICBpbnRlcm5hbFZhbHVlUmVzdWx0LnR5cGUgPSB0aGlzLl90eXBlO1xuICAgIH1cbiAgICByZXR1cm4gaGFzQW55VmFsdWVzID8gaW50ZXJuYWxWYWx1ZVJlc3VsdCA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgaW50ZXJuYWxWYWx1ZShcbiAgICB2YWx1ZTogUmVzb3VyY2VJZGVudGl0eSB8IGNka3RmLklSZXNvbHZhYmxlIHwgdW5kZWZpbmVkLFxuICApIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pc0VtcHR5T2JqZWN0ID0gZmFsc2U7XG4gICAgICB0aGlzLnJlc29sdmFibGVWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2lkZW50aXR5SWRzID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fdHlwZSA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2UgaWYgKGNka3RmLlRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUodmFsdWUpKSB7XG4gICAgICB0aGlzLmlzRW1wdHlPYmplY3QgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzb2x2YWJsZVZhbHVlID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNFbXB0eU9iamVjdCA9IE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDA7XG4gICAgICB0aGlzLnJlc29sdmFibGVWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2lkZW50aXR5SWRzID0gdmFsdWUuaWRlbnRpdHlJZHM7XG4gICAgICB0aGlzLl90eXBlID0gdmFsdWUudHlwZTtcbiAgICB9XG4gIH1cblxuICAvLyBpZGVudGl0eV9pZHMgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfaWRlbnRpdHlJZHM/OiBzdHJpbmdbXTtcbiAgcHVibGljIGdldCBpZGVudGl0eUlkcygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRMaXN0QXR0cmlidXRlKFwiaWRlbnRpdHlfaWRzXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgaWRlbnRpdHlJZHModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5faWRlbnRpdHlJZHMgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRJZGVudGl0eUlkcygpIHtcbiAgICB0aGlzLl9pZGVudGl0eUlkcyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgaWRlbnRpdHlJZHNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5faWRlbnRpdHlJZHM7XG4gIH1cblxuICAvLyBwcmluY2lwYWxfaWQgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogZmFsc2VcbiAgcHVibGljIGdldCBwcmluY2lwYWxJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoXCJwcmluY2lwYWxfaWRcIik7XG4gIH1cblxuICAvLyB0ZW5hbnRfaWQgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogZmFsc2VcbiAgcHVibGljIGdldCB0ZW5hbnRJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoXCJ0ZW5hbnRfaWRcIik7XG4gIH1cblxuICAvLyB0eXBlIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiB0cnVlXG4gIHByaXZhdGUgX3R5cGU/OiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoXCJ0eXBlXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgdHlwZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdHlwZSA9IHZhbHVlO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCB0eXBlSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlc291cmNlSWRlbnRpdHlMaXN0IGV4dGVuZHMgY2RrdGYuQ29tcGxleExpc3Qge1xuICBwdWJsaWMgaW50ZXJuYWxWYWx1ZT86IFJlc291cmNlSWRlbnRpdHlbXSB8IGNka3RmLklSZXNvbHZhYmxlO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gdGVycmFmb3JtUmVzb3VyY2UgVGhlIHBhcmVudCByZXNvdXJjZVxuICAgKiBAcGFyYW0gdGVycmFmb3JtQXR0cmlidXRlIFRoZSBhdHRyaWJ1dGUgb24gdGhlIHBhcmVudCByZXNvdXJjZSB0aGlzIGNsYXNzIGlzIHJlZmVyZW5jaW5nXG4gICAqIEBwYXJhbSB3cmFwc1NldCB3aGV0aGVyIHRoZSBsaXN0IGlzIHdyYXBwaW5nIGEgc2V0ICh3aWxsIGFkZCB0b2xpc3QoKSB0byBiZSBhYmxlIHRvIGFjY2VzcyBhbiBpdGVtIHZpYSBhbiBpbmRleClcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogY2RrdGYuSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCB3cmFwc1NldDogYm9vbGVhbixcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSwgd3JhcHNTZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBpbmRleCB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gdG8gcmV0dXJuXG4gICAqL1xuICBwdWJsaWMgZ2V0KGluZGV4OiBudW1iZXIpOiBSZXNvdXJjZUlkZW50aXR5T3V0cHV0UmVmZXJlbmNlIHtcbiAgICByZXR1cm4gbmV3IFJlc291cmNlSWRlbnRpdHlPdXRwdXRSZWZlcmVuY2UoXG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLFxuICAgICAgdGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGUsXG4gICAgICBpbmRleCxcbiAgICAgIHRoaXMud3JhcHNTZXQsXG4gICAgKTtcbiAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVRpbWVvdXRzIHtcbiAgLyoqXG4gICAqIEEgc3RyaW5nIHRoYXQgY2FuIGJlIFtwYXJzZWQgYXMgYSBkdXJhdGlvbl0oaHR0cHM6Ly9wa2cuZ28uZGV2L3RpbWUjUGFyc2VEdXJhdGlvbikgY29uc2lzdGluZyBvZiBudW1iZXJzIGFuZCB1bml0IHN1ZmZpeGVzLCBzdWNoIGFzIFwiMzBzXCIgb3IgXCIyaDQ1bVwiLiBWYWxpZCB0aW1lIHVuaXRzIGFyZSBcInNcIiAoc2Vjb25kcyksIFwibVwiIChtaW51dGVzKSwgXCJoXCIgKGhvdXJzKS5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvcmVzb3VyY2UjY3JlYXRlIFJlc291cmNlI2NyZWF0ZX1cbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgc3RyaW5nIHRoYXQgY2FuIGJlIFtwYXJzZWQgYXMgYSBkdXJhdGlvbl0oaHR0cHM6Ly9wa2cuZ28uZGV2L3RpbWUjUGFyc2VEdXJhdGlvbikgY29uc2lzdGluZyBvZiBudW1iZXJzIGFuZCB1bml0IHN1ZmZpeGVzLCBzdWNoIGFzIFwiMzBzXCIgb3IgXCIyaDQ1bVwiLiBWYWxpZCB0aW1lIHVuaXRzIGFyZSBcInNcIiAoc2Vjb25kcyksIFwibVwiIChtaW51dGVzKSwgXCJoXCIgKGhvdXJzKS4gU2V0dGluZyBhIHRpbWVvdXQgZm9yIGEgRGVsZXRlIG9wZXJhdGlvbiBpcyBvbmx5IGFwcGxpY2FibGUgaWYgY2hhbmdlcyBhcmUgc2F2ZWQgaW50byBzdGF0ZSBiZWZvcmUgdGhlIGRlc3Ryb3kgb3BlcmF0aW9uIG9jY3Vycy5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvcmVzb3VyY2UjZGVsZXRlIFJlc291cmNlI2RlbGV0ZX1cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgc3RyaW5nIHRoYXQgY2FuIGJlIFtwYXJzZWQgYXMgYSBkdXJhdGlvbl0oaHR0cHM6Ly9wa2cuZ28uZGV2L3RpbWUjUGFyc2VEdXJhdGlvbikgY29uc2lzdGluZyBvZiBudW1iZXJzIGFuZCB1bml0IHN1ZmZpeGVzLCBzdWNoIGFzIFwiMzBzXCIgb3IgXCIyaDQ1bVwiLiBWYWxpZCB0aW1lIHVuaXRzIGFyZSBcInNcIiAoc2Vjb25kcyksIFwibVwiIChtaW51dGVzKSwgXCJoXCIgKGhvdXJzKS4gUmVhZCBvcGVyYXRpb25zIG9jY3VyIGR1cmluZyBhbnkgcmVmcmVzaCBvciBwbGFubmluZyBvcGVyYXRpb24gd2hlbiByZWZyZXNoIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3Jlc291cmNlI3JlYWQgUmVzb3VyY2UjcmVhZH1cbiAgICovXG4gIHJlYWRvbmx5IHJlYWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHN0cmluZyB0aGF0IGNhbiBiZSBbcGFyc2VkIGFzIGEgZHVyYXRpb25dKGh0dHBzOi8vcGtnLmdvLmRldi90aW1lI1BhcnNlRHVyYXRpb24pIGNvbnNpc3Rpbmcgb2YgbnVtYmVycyBhbmQgdW5pdCBzdWZmaXhlcywgc3VjaCBhcyBcIjMwc1wiIG9yIFwiMmg0NW1cIi4gVmFsaWQgdGltZSB1bml0cyBhcmUgXCJzXCIgKHNlY29uZHMpLCBcIm1cIiAobWludXRlcyksIFwiaFwiIChob3VycykuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3Jlc291cmNlI3VwZGF0ZSBSZXNvdXJjZSN1cGRhdGV9XG4gICAqL1xuICByZWFkb25seSB1cGRhdGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvdXJjZVRpbWVvdXRzVG9UZXJyYWZvcm0oXG4gIHN0cnVjdD86IFJlc291cmNlVGltZW91dHMgfCBjZGt0Zi5JUmVzb2x2YWJsZSxcbik6IGFueSB7XG4gIGlmICghY2RrdGYuY2FuSW5zcGVjdChzdHJ1Y3QpIHx8IGNka3RmLlRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUoc3RydWN0KSkge1xuICAgIHJldHVybiBzdHJ1Y3Q7XG4gIH1cbiAgaWYgKGNka3RmLmlzQ29tcGxleEVsZW1lbnQoc3RydWN0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiQSBjb21wbGV4IGVsZW1lbnQgd2FzIHVzZWQgYXMgY29uZmlndXJhdGlvbiwgdGhpcyBpcyBub3Qgc3VwcG9ydGVkOiBodHRwczovL2Nkay50Zi9jb21wbGV4LW9iamVjdC1hcy1jb25maWd1cmF0aW9uXCIsXG4gICAgKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGNyZWF0ZTogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0oc3RydWN0IS5jcmVhdGUpLFxuICAgIGRlbGV0ZTogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0oc3RydWN0IS5kZWxldGUpLFxuICAgIHJlYWQ6IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHN0cnVjdCEucmVhZCksXG4gICAgdXBkYXRlOiBjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybShzdHJ1Y3QhLnVwZGF0ZSksXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZVRpbWVvdXRzT3V0cHV0UmVmZXJlbmNlIGV4dGVuZHMgY2RrdGYuQ29tcGxleE9iamVjdCB7XG4gIHByaXZhdGUgaXNFbXB0eU9iamVjdCA9IGZhbHNlO1xuICBwcml2YXRlIHJlc29sdmFibGVWYWx1ZT86IGNka3RmLklSZXNvbHZhYmxlO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gdGVycmFmb3JtUmVzb3VyY2UgVGhlIHBhcmVudCByZXNvdXJjZVxuICAgKiBAcGFyYW0gdGVycmFmb3JtQXR0cmlidXRlIFRoZSBhdHRyaWJ1dGUgb24gdGhlIHBhcmVudCByZXNvdXJjZSB0aGlzIGNsYXNzIGlzIHJlZmVyZW5jaW5nXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgdGVycmFmb3JtUmVzb3VyY2U6IGNka3RmLklJbnRlcnBvbGF0aW5nUGFyZW50LFxuICAgIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlLCBmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGludGVybmFsVmFsdWUoKTogUmVzb3VyY2VUaW1lb3V0cyB8IGNka3RmLklSZXNvbHZhYmxlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5yZXNvbHZhYmxlVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlc29sdmFibGVWYWx1ZTtcbiAgICB9XG4gICAgbGV0IGhhc0FueVZhbHVlcyA9IHRoaXMuaXNFbXB0eU9iamVjdDtcbiAgICBjb25zdCBpbnRlcm5hbFZhbHVlUmVzdWx0OiBhbnkgPSB7fTtcbiAgICBpZiAodGhpcy5fY3JlYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0FueVZhbHVlcyA9IHRydWU7XG4gICAgICBpbnRlcm5hbFZhbHVlUmVzdWx0LmNyZWF0ZSA9IHRoaXMuX2NyZWF0ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2RlbGV0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBoYXNBbnlWYWx1ZXMgPSB0cnVlO1xuICAgICAgaW50ZXJuYWxWYWx1ZVJlc3VsdC5kZWxldGUgPSB0aGlzLl9kZWxldGU7XG4gICAgfVxuICAgIGlmICh0aGlzLl9yZWFkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0FueVZhbHVlcyA9IHRydWU7XG4gICAgICBpbnRlcm5hbFZhbHVlUmVzdWx0LnJlYWQgPSB0aGlzLl9yZWFkO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdXBkYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0FueVZhbHVlcyA9IHRydWU7XG4gICAgICBpbnRlcm5hbFZhbHVlUmVzdWx0LnVwZGF0ZSA9IHRoaXMuX3VwZGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0FueVZhbHVlcyA/IGludGVybmFsVmFsdWVSZXN1bHQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGludGVybmFsVmFsdWUoXG4gICAgdmFsdWU6IFJlc291cmNlVGltZW91dHMgfCBjZGt0Zi5JUmVzb2x2YWJsZSB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaXNFbXB0eU9iamVjdCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNvbHZhYmxlVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9jcmVhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9kZWxldGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9yZWFkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fdXBkYXRlID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSBpZiAoY2RrdGYuVG9rZW5pemF0aW9uLmlzUmVzb2x2YWJsZSh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuaXNFbXB0eU9iamVjdCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNvbHZhYmxlVmFsdWUgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0VtcHR5T2JqZWN0ID0gT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMDtcbiAgICAgIHRoaXMucmVzb2x2YWJsZVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fY3JlYXRlID0gdmFsdWUuY3JlYXRlO1xuICAgICAgdGhpcy5fZGVsZXRlID0gdmFsdWUuZGVsZXRlO1xuICAgICAgdGhpcy5fcmVhZCA9IHZhbHVlLnJlYWQ7XG4gICAgICB0aGlzLl91cGRhdGUgPSB2YWx1ZS51cGRhdGU7XG4gICAgfVxuICB9XG5cbiAgLy8gY3JlYXRlIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2NyZWF0ZT86IHN0cmluZztcbiAgcHVibGljIGdldCBjcmVhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKFwiY3JlYXRlXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgY3JlYXRlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jcmVhdGUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRDcmVhdGUoKSB7XG4gICAgdGhpcy5fY3JlYXRlID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBjcmVhdGVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlO1xuICB9XG5cbiAgLy8gZGVsZXRlIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2RlbGV0ZT86IHN0cmluZztcbiAgcHVibGljIGdldCBkZWxldGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKFwiZGVsZXRlXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgZGVsZXRlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kZWxldGUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXREZWxldGUoKSB7XG4gICAgdGhpcy5fZGVsZXRlID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBkZWxldGVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVsZXRlO1xuICB9XG5cbiAgLy8gcmVhZCAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9yZWFkPzogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IHJlYWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKFwicmVhZFwiKTtcbiAgfVxuICBwdWJsaWMgc2V0IHJlYWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3JlYWQgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRSZWFkKCkge1xuICAgIHRoaXMuX3JlYWQgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHJlYWRJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZDtcbiAgfVxuXG4gIC8vIHVwZGF0ZSAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF91cGRhdGU/OiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgdXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZShcInVwZGF0ZVwiKTtcbiAgfVxuICBwdWJsaWMgc2V0IHVwZGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdXBkYXRlID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0VXBkYXRlKCkge1xuICAgIHRoaXMuX3VwZGF0ZSA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgdXBkYXRlSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3VwZGF0ZTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3Jlc291cmNlIGF6YXBpX3Jlc291cmNlfVxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2UgZXh0ZW5kcyBjZGt0Zi5UZXJyYWZvcm1SZXNvdXJjZSB7XG4gIC8vID09PT09PT09PT09PT09PT09XG4gIC8vIFNUQVRJQyBQUk9QRVJUSUVTXG4gIC8vID09PT09PT09PT09PT09PT09XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdGZSZXNvdXJjZVR5cGUgPSBcImF6YXBpX3Jlc291cmNlXCI7XG5cbiAgLy8gPT09PT09PT09PT1cbiAgLy8gSU5JVElBTElaRVJcbiAgLy8gPT09PT09PT09PT1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvcmVzb3VyY2UgYXphcGlfcmVzb3VyY2V9IFJlc291cmNlXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0XG4gICAqIEBwYXJhbSBpZCBUaGUgc2NvcGVkIGNvbnN0cnVjdCBJRC4gTXVzdCBiZSB1bmlxdWUgYW1vbmdzdCBzaWJsaW5ncyBpbiB0aGUgc2FtZSBzY29wZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBSZXNvdXJjZUNvbmZpZ1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNvbmZpZzogUmVzb3VyY2VDb25maWcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHRlcnJhZm9ybVJlc291cmNlVHlwZTogXCJhemFwaV9yZXNvdXJjZVwiLFxuICAgICAgdGVycmFmb3JtR2VuZXJhdG9yTWV0YWRhdGE6IHtcbiAgICAgICAgcHJvdmlkZXJOYW1lOiBcImF6YXBpXCIsXG4gICAgICAgIHByb3ZpZGVyVmVyc2lvbjogXCIyLjcuMFwiLFxuICAgICAgICBwcm92aWRlclZlcnNpb25Db25zdHJhaW50OiBcIn4+IDIuNy4wXCIsXG4gICAgICB9LFxuICAgICAgcHJvdmlkZXI6IGNvbmZpZy5wcm92aWRlcixcbiAgICAgIGRlcGVuZHNPbjogY29uZmlnLmRlcGVuZHNPbixcbiAgICAgIGNvdW50OiBjb25maWcuY291bnQsXG4gICAgICBsaWZlY3ljbGU6IGNvbmZpZy5saWZlY3ljbGUsXG4gICAgICBwcm92aXNpb25lcnM6IGNvbmZpZy5wcm92aXNpb25lcnMsXG4gICAgICBjb25uZWN0aW9uOiBjb25maWcuY29ubmVjdGlvbixcbiAgICAgIGZvckVhY2g6IGNvbmZpZy5mb3JFYWNoLFxuICAgIH0pO1xuICAgIHRoaXMuX2JvZHkgPSBjb25maWcuYm9keTtcbiAgICB0aGlzLl9jcmVhdGVIZWFkZXJzID0gY29uZmlnLmNyZWF0ZUhlYWRlcnM7XG4gICAgdGhpcy5fY3JlYXRlUXVlcnlQYXJhbWV0ZXJzID0gY29uZmlnLmNyZWF0ZVF1ZXJ5UGFyYW1ldGVycztcbiAgICB0aGlzLl9kZWxldGVIZWFkZXJzID0gY29uZmlnLmRlbGV0ZUhlYWRlcnM7XG4gICAgdGhpcy5fZGVsZXRlUXVlcnlQYXJhbWV0ZXJzID0gY29uZmlnLmRlbGV0ZVF1ZXJ5UGFyYW1ldGVycztcbiAgICB0aGlzLl9pZ25vcmVDYXNpbmcgPSBjb25maWcuaWdub3JlQ2FzaW5nO1xuICAgIHRoaXMuX2lnbm9yZU1pc3NpbmdQcm9wZXJ0eSA9IGNvbmZpZy5pZ25vcmVNaXNzaW5nUHJvcGVydHk7XG4gICAgdGhpcy5faWdub3JlTnVsbFByb3BlcnR5ID0gY29uZmlnLmlnbm9yZU51bGxQcm9wZXJ0eTtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IGNvbmZpZy5sb2NhdGlvbjtcbiAgICB0aGlzLl9sb2NrcyA9IGNvbmZpZy5sb2NrcztcbiAgICB0aGlzLl9uYW1lID0gY29uZmlnLm5hbWU7XG4gICAgdGhpcy5fcGFyZW50SWQgPSBjb25maWcucGFyZW50SWQ7XG4gICAgdGhpcy5fcmVhZEhlYWRlcnMgPSBjb25maWcucmVhZEhlYWRlcnM7XG4gICAgdGhpcy5fcmVhZFF1ZXJ5UGFyYW1ldGVycyA9IGNvbmZpZy5yZWFkUXVlcnlQYXJhbWV0ZXJzO1xuICAgIHRoaXMuX3JlcGxhY2VUcmlnZ2Vyc0V4dGVybmFsVmFsdWVzID0gY29uZmlnLnJlcGxhY2VUcmlnZ2Vyc0V4dGVybmFsVmFsdWVzO1xuICAgIHRoaXMuX3JlcGxhY2VUcmlnZ2Vyc1JlZnMgPSBjb25maWcucmVwbGFjZVRyaWdnZXJzUmVmcztcbiAgICB0aGlzLl9yZXNwb25zZUV4cG9ydFZhbHVlcyA9IGNvbmZpZy5yZXNwb25zZUV4cG9ydFZhbHVlcztcbiAgICB0aGlzLl9yZXRyeS5pbnRlcm5hbFZhbHVlID0gY29uZmlnLnJldHJ5O1xuICAgIHRoaXMuX3NjaGVtYVZhbGlkYXRpb25FbmFibGVkID0gY29uZmlnLnNjaGVtYVZhbGlkYXRpb25FbmFibGVkO1xuICAgIHRoaXMuX3NlbnNpdGl2ZUJvZHkgPSBjb25maWcuc2Vuc2l0aXZlQm9keTtcbiAgICB0aGlzLl9zZW5zaXRpdmVCb2R5VmVyc2lvbiA9IGNvbmZpZy5zZW5zaXRpdmVCb2R5VmVyc2lvbjtcbiAgICB0aGlzLl90YWdzID0gY29uZmlnLnRhZ3M7XG4gICAgdGhpcy5fdHlwZSA9IGNvbmZpZy50eXBlO1xuICAgIHRoaXMuX3VwZGF0ZUhlYWRlcnMgPSBjb25maWcudXBkYXRlSGVhZGVycztcbiAgICB0aGlzLl91cGRhdGVRdWVyeVBhcmFtZXRlcnMgPSBjb25maWcudXBkYXRlUXVlcnlQYXJhbWV0ZXJzO1xuICAgIHRoaXMuX2lkZW50aXR5LmludGVybmFsVmFsdWUgPSBjb25maWcuaWRlbnRpdHk7XG4gICAgdGhpcy5fdGltZW91dHMuaW50ZXJuYWxWYWx1ZSA9IGNvbmZpZy50aW1lb3V0cztcbiAgfVxuXG4gIC8vID09PT09PT09PT1cbiAgLy8gQVRUUklCVVRFU1xuICAvLyA9PT09PT09PT09XG5cbiAgLy8gYm9keSAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2JvZHk/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICBwdWJsaWMgZ2V0IGJvZHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QW55TWFwQXR0cmlidXRlKFwiYm9keVwiKTtcbiAgfVxuICBwdWJsaWMgc2V0IGJvZHkodmFsdWU6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICB0aGlzLl9ib2R5ID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0Qm9keSgpIHtcbiAgICB0aGlzLl9ib2R5ID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBib2R5SW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2JvZHk7XG4gIH1cblxuICAvLyBjcmVhdGVfaGVhZGVycyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9jcmVhdGVIZWFkZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcHVibGljIGdldCBjcmVhdGVIZWFkZXJzKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ01hcEF0dHJpYnV0ZShcImNyZWF0ZV9oZWFkZXJzXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgY3JlYXRlSGVhZGVycyh2YWx1ZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIHRoaXMuX2NyZWF0ZUhlYWRlcnMgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRDcmVhdGVIZWFkZXJzKCkge1xuICAgIHRoaXMuX2NyZWF0ZUhlYWRlcnMgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGNyZWF0ZUhlYWRlcnNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlSGVhZGVycztcbiAgfVxuXG4gIC8vIGNyZWF0ZV9xdWVyeV9wYXJhbWV0ZXJzIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2NyZWF0ZVF1ZXJ5UGFyYW1ldGVycz86XG4gICAgfCB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH1cbiAgICB8IGNka3RmLklSZXNvbHZhYmxlO1xuICBwdWJsaWMgZ2V0IGNyZWF0ZVF1ZXJ5UGFyYW1ldGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFwiY3JlYXRlX3F1ZXJ5X3BhcmFtZXRlcnNcIik7XG4gIH1cbiAgcHVibGljIHNldCBjcmVhdGVRdWVyeVBhcmFtZXRlcnMoXG4gICAgdmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSB8IGNka3RmLklSZXNvbHZhYmxlLFxuICApIHtcbiAgICB0aGlzLl9jcmVhdGVRdWVyeVBhcmFtZXRlcnMgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRDcmVhdGVRdWVyeVBhcmFtZXRlcnMoKSB7XG4gICAgdGhpcy5fY3JlYXRlUXVlcnlQYXJhbWV0ZXJzID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBjcmVhdGVRdWVyeVBhcmFtZXRlcnNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlUXVlcnlQYXJhbWV0ZXJzO1xuICB9XG5cbiAgLy8gZGVsZXRlX2hlYWRlcnMgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfZGVsZXRlSGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHB1YmxpYyBnZXQgZGVsZXRlSGVhZGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdNYXBBdHRyaWJ1dGUoXCJkZWxldGVfaGVhZGVyc1wiKTtcbiAgfVxuICBwdWJsaWMgc2V0IGRlbGV0ZUhlYWRlcnModmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLl9kZWxldGVIZWFkZXJzID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0RGVsZXRlSGVhZGVycygpIHtcbiAgICB0aGlzLl9kZWxldGVIZWFkZXJzID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBkZWxldGVIZWFkZXJzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlbGV0ZUhlYWRlcnM7XG4gIH1cblxuICAvLyBkZWxldGVfcXVlcnlfcGFyYW1ldGVycyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9kZWxldGVRdWVyeVBhcmFtZXRlcnM/OlxuICAgIHwgeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9XG4gICAgfCBjZGt0Zi5JUmVzb2x2YWJsZTtcbiAgcHVibGljIGdldCBkZWxldGVRdWVyeVBhcmFtZXRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShcImRlbGV0ZV9xdWVyeV9wYXJhbWV0ZXJzXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgZGVsZXRlUXVlcnlQYXJhbWV0ZXJzKFxuICAgIHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gfCBjZGt0Zi5JUmVzb2x2YWJsZSxcbiAgKSB7XG4gICAgdGhpcy5fZGVsZXRlUXVlcnlQYXJhbWV0ZXJzID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0RGVsZXRlUXVlcnlQYXJhbWV0ZXJzKCkge1xuICAgIHRoaXMuX2RlbGV0ZVF1ZXJ5UGFyYW1ldGVycyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgZGVsZXRlUXVlcnlQYXJhbWV0ZXJzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlbGV0ZVF1ZXJ5UGFyYW1ldGVycztcbiAgfVxuXG4gIC8vIGlkIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHB1YmxpYyBnZXQgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKFwiaWRcIik7XG4gIH1cblxuICAvLyBpZ25vcmVfY2FzaW5nIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfaWdub3JlQ2FzaW5nPzogYm9vbGVhbiB8IGNka3RmLklSZXNvbHZhYmxlO1xuICBwdWJsaWMgZ2V0IGlnbm9yZUNhc2luZygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRCb29sZWFuQXR0cmlidXRlKFwiaWdub3JlX2Nhc2luZ1wiKTtcbiAgfVxuICBwdWJsaWMgc2V0IGlnbm9yZUNhc2luZyh2YWx1ZTogYm9vbGVhbiB8IGNka3RmLklSZXNvbHZhYmxlKSB7XG4gICAgdGhpcy5faWdub3JlQ2FzaW5nID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0SWdub3JlQ2FzaW5nKCkge1xuICAgIHRoaXMuX2lnbm9yZUNhc2luZyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgaWdub3JlQ2FzaW5nSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lnbm9yZUNhc2luZztcbiAgfVxuXG4gIC8vIGlnbm9yZV9taXNzaW5nX3Byb3BlcnR5IC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfaWdub3JlTWlzc2luZ1Byb3BlcnR5PzogYm9vbGVhbiB8IGNka3RmLklSZXNvbHZhYmxlO1xuICBwdWJsaWMgZ2V0IGlnbm9yZU1pc3NpbmdQcm9wZXJ0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRCb29sZWFuQXR0cmlidXRlKFwiaWdub3JlX21pc3NpbmdfcHJvcGVydHlcIik7XG4gIH1cbiAgcHVibGljIHNldCBpZ25vcmVNaXNzaW5nUHJvcGVydHkodmFsdWU6IGJvb2xlYW4gfCBjZGt0Zi5JUmVzb2x2YWJsZSkge1xuICAgIHRoaXMuX2lnbm9yZU1pc3NpbmdQcm9wZXJ0eSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldElnbm9yZU1pc3NpbmdQcm9wZXJ0eSgpIHtcbiAgICB0aGlzLl9pZ25vcmVNaXNzaW5nUHJvcGVydHkgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGlnbm9yZU1pc3NpbmdQcm9wZXJ0eUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9pZ25vcmVNaXNzaW5nUHJvcGVydHk7XG4gIH1cblxuICAvLyBpZ25vcmVfbnVsbF9wcm9wZXJ0eSAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2lnbm9yZU51bGxQcm9wZXJ0eT86IGJvb2xlYW4gfCBjZGt0Zi5JUmVzb2x2YWJsZTtcbiAgcHVibGljIGdldCBpZ25vcmVOdWxsUHJvcGVydHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Qm9vbGVhbkF0dHJpYnV0ZShcImlnbm9yZV9udWxsX3Byb3BlcnR5XCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgaWdub3JlTnVsbFByb3BlcnR5KHZhbHVlOiBib29sZWFuIHwgY2RrdGYuSVJlc29sdmFibGUpIHtcbiAgICB0aGlzLl9pZ25vcmVOdWxsUHJvcGVydHkgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRJZ25vcmVOdWxsUHJvcGVydHkoKSB7XG4gICAgdGhpcy5faWdub3JlTnVsbFByb3BlcnR5ID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBpZ25vcmVOdWxsUHJvcGVydHlJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5faWdub3JlTnVsbFByb3BlcnR5O1xuICB9XG5cbiAgLy8gbG9jYXRpb24gLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9sb2NhdGlvbj86IHN0cmluZztcbiAgcHVibGljIGdldCBsb2NhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoXCJsb2NhdGlvblwiKTtcbiAgfVxuICBwdWJsaWMgc2V0IGxvY2F0aW9uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldExvY2F0aW9uKCkge1xuICAgIHRoaXMuX2xvY2F0aW9uID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBsb2NhdGlvbklucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9sb2NhdGlvbjtcbiAgfVxuXG4gIC8vIGxvY2tzIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2xvY2tzPzogc3RyaW5nW107XG4gIHB1YmxpYyBnZXQgbG9ja3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGlzdEF0dHJpYnV0ZShcImxvY2tzXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgbG9ja3ModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fbG9ja3MgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRMb2NrcygpIHtcbiAgICB0aGlzLl9sb2NrcyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgbG9ja3NJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9ja3M7XG4gIH1cblxuICAvLyBuYW1lIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfbmFtZT86IHN0cmluZztcbiAgcHVibGljIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZShcIm5hbWVcIik7XG4gIH1cbiAgcHVibGljIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9uYW1lID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0TmFtZSgpIHtcbiAgICB0aGlzLl9uYW1lID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBuYW1lSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cblxuICAvLyBvdXRwdXQgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfb3V0cHV0ID0gbmV3IGNka3RmLkFueU1hcCh0aGlzLCBcIm91dHB1dFwiKTtcbiAgcHVibGljIGdldCBvdXRwdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX291dHB1dDtcbiAgfVxuXG4gIC8vIHBhcmVudF9pZCAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3BhcmVudElkPzogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IHBhcmVudElkKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZShcInBhcmVudF9pZFwiKTtcbiAgfVxuICBwdWJsaWMgc2V0IHBhcmVudElkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wYXJlbnRJZCA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFBhcmVudElkKCkge1xuICAgIHRoaXMuX3BhcmVudElkID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBwYXJlbnRJZElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnRJZDtcbiAgfVxuXG4gIC8vIHJlYWRfaGVhZGVycyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9yZWFkSGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHB1YmxpYyBnZXQgcmVhZEhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nTWFwQXR0cmlidXRlKFwicmVhZF9oZWFkZXJzXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgcmVhZEhlYWRlcnModmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLl9yZWFkSGVhZGVycyA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFJlYWRIZWFkZXJzKCkge1xuICAgIHRoaXMuX3JlYWRIZWFkZXJzID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCByZWFkSGVhZGVyc0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkSGVhZGVycztcbiAgfVxuXG4gIC8vIHJlYWRfcXVlcnlfcGFyYW1ldGVycyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9yZWFkUXVlcnlQYXJhbWV0ZXJzPzpcbiAgICB8IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfVxuICAgIHwgY2RrdGYuSVJlc29sdmFibGU7XG4gIHB1YmxpYyBnZXQgcmVhZFF1ZXJ5UGFyYW1ldGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFwicmVhZF9xdWVyeV9wYXJhbWV0ZXJzXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgcmVhZFF1ZXJ5UGFyYW1ldGVycyhcbiAgICB2YWx1ZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9IHwgY2RrdGYuSVJlc29sdmFibGUsXG4gICkge1xuICAgIHRoaXMuX3JlYWRRdWVyeVBhcmFtZXRlcnMgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRSZWFkUXVlcnlQYXJhbWV0ZXJzKCkge1xuICAgIHRoaXMuX3JlYWRRdWVyeVBhcmFtZXRlcnMgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHJlYWRRdWVyeVBhcmFtZXRlcnNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZFF1ZXJ5UGFyYW1ldGVycztcbiAgfVxuXG4gIC8vIHJlcGxhY2VfdHJpZ2dlcnNfZXh0ZXJuYWxfdmFsdWVzIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3JlcGxhY2VUcmlnZ2Vyc0V4dGVybmFsVmFsdWVzPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgcHVibGljIGdldCByZXBsYWNlVHJpZ2dlcnNFeHRlcm5hbFZhbHVlcygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbnlNYXBBdHRyaWJ1dGUoXCJyZXBsYWNlX3RyaWdnZXJzX2V4dGVybmFsX3ZhbHVlc1wiKTtcbiAgfVxuICBwdWJsaWMgc2V0IHJlcGxhY2VUcmlnZ2Vyc0V4dGVybmFsVmFsdWVzKHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgdGhpcy5fcmVwbGFjZVRyaWdnZXJzRXh0ZXJuYWxWYWx1ZXMgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRSZXBsYWNlVHJpZ2dlcnNFeHRlcm5hbFZhbHVlcygpIHtcbiAgICB0aGlzLl9yZXBsYWNlVHJpZ2dlcnNFeHRlcm5hbFZhbHVlcyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgcmVwbGFjZVRyaWdnZXJzRXh0ZXJuYWxWYWx1ZXNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVwbGFjZVRyaWdnZXJzRXh0ZXJuYWxWYWx1ZXM7XG4gIH1cblxuICAvLyByZXBsYWNlX3RyaWdnZXJzX3JlZnMgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfcmVwbGFjZVRyaWdnZXJzUmVmcz86IHN0cmluZ1tdO1xuICBwdWJsaWMgZ2V0IHJlcGxhY2VUcmlnZ2Vyc1JlZnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGlzdEF0dHJpYnV0ZShcInJlcGxhY2VfdHJpZ2dlcnNfcmVmc1wiKTtcbiAgfVxuICBwdWJsaWMgc2V0IHJlcGxhY2VUcmlnZ2Vyc1JlZnModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fcmVwbGFjZVRyaWdnZXJzUmVmcyA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFJlcGxhY2VUcmlnZ2Vyc1JlZnMoKSB7XG4gICAgdGhpcy5fcmVwbGFjZVRyaWdnZXJzUmVmcyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgcmVwbGFjZVRyaWdnZXJzUmVmc0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZXBsYWNlVHJpZ2dlcnNSZWZzO1xuICB9XG5cbiAgLy8gcmVzcG9uc2VfZXhwb3J0X3ZhbHVlcyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9yZXNwb25zZUV4cG9ydFZhbHVlcz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIHB1YmxpYyBnZXQgcmVzcG9uc2VFeHBvcnRWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QW55TWFwQXR0cmlidXRlKFwicmVzcG9uc2VfZXhwb3J0X3ZhbHVlc1wiKTtcbiAgfVxuICBwdWJsaWMgc2V0IHJlc3BvbnNlRXhwb3J0VmFsdWVzKHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgdGhpcy5fcmVzcG9uc2VFeHBvcnRWYWx1ZXMgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRSZXNwb25zZUV4cG9ydFZhbHVlcygpIHtcbiAgICB0aGlzLl9yZXNwb25zZUV4cG9ydFZhbHVlcyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgcmVzcG9uc2VFeHBvcnRWYWx1ZXNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VFeHBvcnRWYWx1ZXM7XG4gIH1cblxuICAvLyByZXRyeSAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9yZXRyeSA9IG5ldyBSZXNvdXJjZVJldHJ5T3V0cHV0UmVmZXJlbmNlKHRoaXMsIFwicmV0cnlcIik7XG4gIHB1YmxpYyBnZXQgcmV0cnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JldHJ5O1xuICB9XG4gIHB1YmxpYyBwdXRSZXRyeSh2YWx1ZTogUmVzb3VyY2VSZXRyeSkge1xuICAgIHRoaXMuX3JldHJ5LmludGVybmFsVmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRSZXRyeSgpIHtcbiAgICB0aGlzLl9yZXRyeS5pbnRlcm5hbFZhbHVlID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCByZXRyeUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZXRyeS5pbnRlcm5hbFZhbHVlO1xuICB9XG5cbiAgLy8gc2NoZW1hX3ZhbGlkYXRpb25fZW5hYmxlZCAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3NjaGVtYVZhbGlkYXRpb25FbmFibGVkPzogYm9vbGVhbiB8IGNka3RmLklSZXNvbHZhYmxlO1xuICBwdWJsaWMgZ2V0IHNjaGVtYVZhbGlkYXRpb25FbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmdldEJvb2xlYW5BdHRyaWJ1dGUoXCJzY2hlbWFfdmFsaWRhdGlvbl9lbmFibGVkXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgc2NoZW1hVmFsaWRhdGlvbkVuYWJsZWQodmFsdWU6IGJvb2xlYW4gfCBjZGt0Zi5JUmVzb2x2YWJsZSkge1xuICAgIHRoaXMuX3NjaGVtYVZhbGlkYXRpb25FbmFibGVkID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0U2NoZW1hVmFsaWRhdGlvbkVuYWJsZWQoKSB7XG4gICAgdGhpcy5fc2NoZW1hVmFsaWRhdGlvbkVuYWJsZWQgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHNjaGVtYVZhbGlkYXRpb25FbmFibGVkSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NjaGVtYVZhbGlkYXRpb25FbmFibGVkO1xuICB9XG5cbiAgLy8gc2Vuc2l0aXZlX2JvZHkgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfc2Vuc2l0aXZlQm9keT86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIHB1YmxpYyBnZXQgc2Vuc2l0aXZlQm9keSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbnlNYXBBdHRyaWJ1dGUoXCJzZW5zaXRpdmVfYm9keVwiKTtcbiAgfVxuICBwdWJsaWMgc2V0IHNlbnNpdGl2ZUJvZHkodmFsdWU6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICB0aGlzLl9zZW5zaXRpdmVCb2R5ID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0U2Vuc2l0aXZlQm9keSgpIHtcbiAgICB0aGlzLl9zZW5zaXRpdmVCb2R5ID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBzZW5zaXRpdmVCb2R5SW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbnNpdGl2ZUJvZHk7XG4gIH1cblxuICAvLyBzZW5zaXRpdmVfYm9keV92ZXJzaW9uIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3NlbnNpdGl2ZUJvZHlWZXJzaW9uPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcHVibGljIGdldCBzZW5zaXRpdmVCb2R5VmVyc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdNYXBBdHRyaWJ1dGUoXCJzZW5zaXRpdmVfYm9keV92ZXJzaW9uXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgc2Vuc2l0aXZlQm9keVZlcnNpb24odmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLl9zZW5zaXRpdmVCb2R5VmVyc2lvbiA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFNlbnNpdGl2ZUJvZHlWZXJzaW9uKCkge1xuICAgIHRoaXMuX3NlbnNpdGl2ZUJvZHlWZXJzaW9uID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBzZW5zaXRpdmVCb2R5VmVyc2lvbklucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9zZW5zaXRpdmVCb2R5VmVyc2lvbjtcbiAgfVxuXG4gIC8vIHRhZ3MgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF90YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcHVibGljIGdldCB0YWdzKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ01hcEF0dHJpYnV0ZShcInRhZ3NcIik7XG4gIH1cbiAgcHVibGljIHNldCB0YWdzKHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgdGhpcy5fdGFncyA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFRhZ3MoKSB7XG4gICAgdGhpcy5fdGFncyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgdGFnc0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl90YWdzO1xuICB9XG5cbiAgLy8gdHlwZSAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF90eXBlPzogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKFwidHlwZVwiKTtcbiAgfVxuICBwdWJsaWMgc2V0IHR5cGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3R5cGUgPSB2YWx1ZTtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgdHlwZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl90eXBlO1xuICB9XG5cbiAgLy8gdXBkYXRlX2hlYWRlcnMgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfdXBkYXRlSGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHB1YmxpYyBnZXQgdXBkYXRlSGVhZGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdNYXBBdHRyaWJ1dGUoXCJ1cGRhdGVfaGVhZGVyc1wiKTtcbiAgfVxuICBwdWJsaWMgc2V0IHVwZGF0ZUhlYWRlcnModmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLl91cGRhdGVIZWFkZXJzID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0VXBkYXRlSGVhZGVycygpIHtcbiAgICB0aGlzLl91cGRhdGVIZWFkZXJzID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCB1cGRhdGVIZWFkZXJzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3VwZGF0ZUhlYWRlcnM7XG4gIH1cblxuICAvLyB1cGRhdGVfcXVlcnlfcGFyYW1ldGVycyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF91cGRhdGVRdWVyeVBhcmFtZXRlcnM/OlxuICAgIHwgeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9XG4gICAgfCBjZGt0Zi5JUmVzb2x2YWJsZTtcbiAgcHVibGljIGdldCB1cGRhdGVRdWVyeVBhcmFtZXRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShcInVwZGF0ZV9xdWVyeV9wYXJhbWV0ZXJzXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgdXBkYXRlUXVlcnlQYXJhbWV0ZXJzKFxuICAgIHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gfCBjZGt0Zi5JUmVzb2x2YWJsZSxcbiAgKSB7XG4gICAgdGhpcy5fdXBkYXRlUXVlcnlQYXJhbWV0ZXJzID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0VXBkYXRlUXVlcnlQYXJhbWV0ZXJzKCkge1xuICAgIHRoaXMuX3VwZGF0ZVF1ZXJ5UGFyYW1ldGVycyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgdXBkYXRlUXVlcnlQYXJhbWV0ZXJzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3VwZGF0ZVF1ZXJ5UGFyYW1ldGVycztcbiAgfVxuXG4gIC8vIGlkZW50aXR5IC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2lkZW50aXR5ID0gbmV3IFJlc291cmNlSWRlbnRpdHlMaXN0KHRoaXMsIFwiaWRlbnRpdHlcIiwgZmFsc2UpO1xuICBwdWJsaWMgZ2V0IGlkZW50aXR5KCkge1xuICAgIHJldHVybiB0aGlzLl9pZGVudGl0eTtcbiAgfVxuICBwdWJsaWMgcHV0SWRlbnRpdHkodmFsdWU6IFJlc291cmNlSWRlbnRpdHlbXSB8IGNka3RmLklSZXNvbHZhYmxlKSB7XG4gICAgdGhpcy5faWRlbnRpdHkuaW50ZXJuYWxWYWx1ZSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldElkZW50aXR5KCkge1xuICAgIHRoaXMuX2lkZW50aXR5LmludGVybmFsVmFsdWUgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGlkZW50aXR5SW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lkZW50aXR5LmludGVybmFsVmFsdWU7XG4gIH1cblxuICAvLyB0aW1lb3V0cyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF90aW1lb3V0cyA9IG5ldyBSZXNvdXJjZVRpbWVvdXRzT3V0cHV0UmVmZXJlbmNlKHRoaXMsIFwidGltZW91dHNcIik7XG4gIHB1YmxpYyBnZXQgdGltZW91dHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RpbWVvdXRzO1xuICB9XG4gIHB1YmxpYyBwdXRUaW1lb3V0cyh2YWx1ZTogUmVzb3VyY2VUaW1lb3V0cykge1xuICAgIHRoaXMuX3RpbWVvdXRzLmludGVybmFsVmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRUaW1lb3V0cygpIHtcbiAgICB0aGlzLl90aW1lb3V0cy5pbnRlcm5hbFZhbHVlID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCB0aW1lb3V0c0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl90aW1lb3V0cy5pbnRlcm5hbFZhbHVlO1xuICB9XG5cbiAgLy8gPT09PT09PT09XG4gIC8vIFNZTlRIRVNJU1xuICAvLyA9PT09PT09PT1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiB7XG4gICAgICBib2R5OiBjZGt0Zi5oYXNoTWFwcGVyKGNka3RmLmFueVRvVGVycmFmb3JtKSh0aGlzLl9ib2R5KSxcbiAgICAgIGNyZWF0ZV9oZWFkZXJzOiBjZGt0Zi5oYXNoTWFwcGVyKGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKShcbiAgICAgICAgdGhpcy5fY3JlYXRlSGVhZGVycyxcbiAgICAgICksXG4gICAgICBjcmVhdGVfcXVlcnlfcGFyYW1ldGVyczogY2RrdGYuaGFzaE1hcHBlcihcbiAgICAgICAgY2RrdGYubGlzdE1hcHBlcihjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybSwgZmFsc2UpLFxuICAgICAgKSh0aGlzLl9jcmVhdGVRdWVyeVBhcmFtZXRlcnMpLFxuICAgICAgZGVsZXRlX2hlYWRlcnM6IGNka3RmLmhhc2hNYXBwZXIoY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0pKFxuICAgICAgICB0aGlzLl9kZWxldGVIZWFkZXJzLFxuICAgICAgKSxcbiAgICAgIGRlbGV0ZV9xdWVyeV9wYXJhbWV0ZXJzOiBjZGt0Zi5oYXNoTWFwcGVyKFxuICAgICAgICBjZGt0Zi5saXN0TWFwcGVyKGNka3RmLnN0cmluZ1RvVGVycmFmb3JtLCBmYWxzZSksXG4gICAgICApKHRoaXMuX2RlbGV0ZVF1ZXJ5UGFyYW1ldGVycyksXG4gICAgICBpZ25vcmVfY2FzaW5nOiBjZGt0Zi5ib29sZWFuVG9UZXJyYWZvcm0odGhpcy5faWdub3JlQ2FzaW5nKSxcbiAgICAgIGlnbm9yZV9taXNzaW5nX3Byb3BlcnR5OiBjZGt0Zi5ib29sZWFuVG9UZXJyYWZvcm0oXG4gICAgICAgIHRoaXMuX2lnbm9yZU1pc3NpbmdQcm9wZXJ0eSxcbiAgICAgICksXG4gICAgICBpZ25vcmVfbnVsbF9wcm9wZXJ0eTogY2RrdGYuYm9vbGVhblRvVGVycmFmb3JtKHRoaXMuX2lnbm9yZU51bGxQcm9wZXJ0eSksXG4gICAgICBsb2NhdGlvbjogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fbG9jYXRpb24pLFxuICAgICAgbG9ja3M6IGNka3RmLmxpc3RNYXBwZXIoY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0sIGZhbHNlKSh0aGlzLl9sb2NrcyksXG4gICAgICBuYW1lOiBjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9uYW1lKSxcbiAgICAgIHBhcmVudF9pZDogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fcGFyZW50SWQpLFxuICAgICAgcmVhZF9oZWFkZXJzOiBjZGt0Zi5oYXNoTWFwcGVyKGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKShcbiAgICAgICAgdGhpcy5fcmVhZEhlYWRlcnMsXG4gICAgICApLFxuICAgICAgcmVhZF9xdWVyeV9wYXJhbWV0ZXJzOiBjZGt0Zi5oYXNoTWFwcGVyKFxuICAgICAgICBjZGt0Zi5saXN0TWFwcGVyKGNka3RmLnN0cmluZ1RvVGVycmFmb3JtLCBmYWxzZSksXG4gICAgICApKHRoaXMuX3JlYWRRdWVyeVBhcmFtZXRlcnMpLFxuICAgICAgcmVwbGFjZV90cmlnZ2Vyc19leHRlcm5hbF92YWx1ZXM6IGNka3RmLmhhc2hNYXBwZXIoY2RrdGYuYW55VG9UZXJyYWZvcm0pKFxuICAgICAgICB0aGlzLl9yZXBsYWNlVHJpZ2dlcnNFeHRlcm5hbFZhbHVlcyxcbiAgICAgICksXG4gICAgICByZXBsYWNlX3RyaWdnZXJzX3JlZnM6IGNka3RmLmxpc3RNYXBwZXIoXG4gICAgICAgIGNka3RmLnN0cmluZ1RvVGVycmFmb3JtLFxuICAgICAgICBmYWxzZSxcbiAgICAgICkodGhpcy5fcmVwbGFjZVRyaWdnZXJzUmVmcyksXG4gICAgICByZXNwb25zZV9leHBvcnRfdmFsdWVzOiBjZGt0Zi5oYXNoTWFwcGVyKGNka3RmLmFueVRvVGVycmFmb3JtKShcbiAgICAgICAgdGhpcy5fcmVzcG9uc2VFeHBvcnRWYWx1ZXMsXG4gICAgICApLFxuICAgICAgcmV0cnk6IHJlc291cmNlUmV0cnlUb1RlcnJhZm9ybSh0aGlzLl9yZXRyeS5pbnRlcm5hbFZhbHVlKSxcbiAgICAgIHNjaGVtYV92YWxpZGF0aW9uX2VuYWJsZWQ6IGNka3RmLmJvb2xlYW5Ub1RlcnJhZm9ybShcbiAgICAgICAgdGhpcy5fc2NoZW1hVmFsaWRhdGlvbkVuYWJsZWQsXG4gICAgICApLFxuICAgICAgc2Vuc2l0aXZlX2JvZHk6IGNka3RmLmhhc2hNYXBwZXIoY2RrdGYuYW55VG9UZXJyYWZvcm0pKFxuICAgICAgICB0aGlzLl9zZW5zaXRpdmVCb2R5LFxuICAgICAgKSxcbiAgICAgIHNlbnNpdGl2ZV9ib2R5X3ZlcnNpb246IGNka3RmLmhhc2hNYXBwZXIoY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0pKFxuICAgICAgICB0aGlzLl9zZW5zaXRpdmVCb2R5VmVyc2lvbixcbiAgICAgICksXG4gICAgICB0YWdzOiBjZGt0Zi5oYXNoTWFwcGVyKGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKSh0aGlzLl90YWdzKSxcbiAgICAgIHR5cGU6IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX3R5cGUpLFxuICAgICAgdXBkYXRlX2hlYWRlcnM6IGNka3RmLmhhc2hNYXBwZXIoY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0pKFxuICAgICAgICB0aGlzLl91cGRhdGVIZWFkZXJzLFxuICAgICAgKSxcbiAgICAgIHVwZGF0ZV9xdWVyeV9wYXJhbWV0ZXJzOiBjZGt0Zi5oYXNoTWFwcGVyKFxuICAgICAgICBjZGt0Zi5saXN0TWFwcGVyKGNka3RmLnN0cmluZ1RvVGVycmFmb3JtLCBmYWxzZSksXG4gICAgICApKHRoaXMuX3VwZGF0ZVF1ZXJ5UGFyYW1ldGVycyksXG4gICAgICBpZGVudGl0eTogY2RrdGYubGlzdE1hcHBlcihcbiAgICAgICAgcmVzb3VyY2VJZGVudGl0eVRvVGVycmFmb3JtLFxuICAgICAgICB0cnVlLFxuICAgICAgKSh0aGlzLl9pZGVudGl0eS5pbnRlcm5hbFZhbHVlKSxcbiAgICAgIHRpbWVvdXRzOiByZXNvdXJjZVRpbWVvdXRzVG9UZXJyYWZvcm0odGhpcy5fdGltZW91dHMuaW50ZXJuYWxWYWx1ZSksXG4gICAgfTtcbiAgfVxufVxuIl19