@microsoft/windows-admin-center-sdk 4.123.0 → 4.232.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 (581) hide show
  1. package/angular/assets/strings/cs-CZ/strings.json +1 -1
  2. package/angular/assets/strings/de-DE/strings.json +1 -1
  3. package/angular/assets/strings/es-ES/strings.json +1 -1
  4. package/angular/assets/strings/fr-FR/strings.json +1 -1
  5. package/angular/assets/strings/hu-HU/strings.json +1 -1
  6. package/angular/assets/strings/id-ID/strings.json +1 -1
  7. package/angular/assets/strings/it-IT/strings.json +1 -1
  8. package/angular/assets/strings/ja-JP/strings.json +1 -1
  9. package/angular/assets/strings/ko-KR/strings.json +1 -1
  10. package/angular/assets/strings/nl-NL/strings.json +1 -1
  11. package/angular/assets/strings/pl-PL/strings.json +1 -1
  12. package/angular/assets/strings/pt-BR/strings.json +1 -1
  13. package/angular/assets/strings/pt-PT/strings.json +1 -1
  14. package/angular/assets/strings/ru-RU/strings.json +1 -1
  15. package/angular/assets/strings/strings.json +1 -1
  16. package/angular/assets/strings/sv-SE/strings.json +1 -1
  17. package/angular/assets/strings/tr-TR/strings.json +1 -1
  18. package/angular/assets/strings/zh-CN/strings.json +1 -1
  19. package/angular/assets/strings/zh-TW/strings.json +1 -1
  20. package/angular/esm2020/src/controls/accordion/accordion-panel/accordion-panel.component.mjs +36 -12
  21. package/angular/esm2020/src/controls/actions/containers/action-container.component.mjs +2 -3
  22. package/angular/esm2020/src/controls/alert-bar/alert-bar.component.mjs +2 -2
  23. package/angular/esm2020/src/controls/breadcrumb-header/breadcrumb-header.component.mjs +1 -1
  24. package/angular/esm2020/src/controls/common/base.component.mjs +1 -1
  25. package/angular/esm2020/src/controls/common/spacer-base.component.mjs +25 -1
  26. package/angular/esm2020/src/controls/context-menu/context-menu.component.mjs +2 -3
  27. package/angular/esm2020/src/controls/data-table/data-table.component.mjs +7 -7
  28. package/angular/esm2020/src/controls/dialog/base-dialog.component.mjs +2 -4
  29. package/angular/esm2020/src/controls/dialog/confirmation-list-dialog/confirmation-list-dialog.component.mjs +2 -2
  30. package/angular/esm2020/src/controls/dropdown/dropdown.component.mjs +1 -4
  31. package/angular/esm2020/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.mjs +59 -0
  32. package/angular/esm2020/src/controls/form/form-field/array/array-form-field.component.mjs +24 -35
  33. package/angular/esm2020/src/controls/form/form-field/clock/clock-form-field.component.mjs +10 -7
  34. package/angular/esm2020/src/controls/form/form-field/form-field-accessibility-manager-base.service.mjs +105 -0
  35. package/angular/esm2020/src/controls/form/form-field/form-field.component.mjs +1 -1
  36. package/angular/esm2020/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.mjs +38 -0
  37. package/angular/esm2020/src/controls/form/form-field/list/list-form-field.component.mjs +56 -38
  38. package/angular/esm2020/src/controls/form/form-field/number/number-form-field.component.mjs +22 -4
  39. package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.mjs +54 -0
  40. package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.mjs +67 -67
  41. package/angular/esm2020/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.mjs +5 -5
  42. package/angular/esm2020/src/controls/form/forms.module.mjs +19 -2
  43. package/angular/esm2020/src/controls/icon/icon-text/icon-text.component.mjs +6 -6
  44. package/angular/esm2020/src/controls/icon/layered-icon/status/status-icon.component.mjs +1 -1
  45. package/angular/esm2020/src/controls/layout/editable-layout.component.mjs +2 -3
  46. package/angular/esm2020/src/controls/node-credentials-form/node-credentials-form.component.mjs +2 -2
  47. package/angular/esm2020/src/controls/page-alert-bar/page-alert-bar.component.mjs +4 -4
  48. package/angular/esm2020/src/controls/property-grid/property-grid.component.mjs +33 -13
  49. package/angular/esm2020/src/controls/schema/tabbed-form-loader.component.mjs +2 -2
  50. package/angular/esm2020/src/controls/settings/common-settings/common-settings.component.mjs +5 -5
  51. package/angular/esm2020/src/controls/settings/settings-form.directive.mjs +3 -7
  52. package/angular/esm2020/src/controls/settings/settings-form.service.mjs +2 -4
  53. package/angular/esm2020/src/controls/snap-in-extension/snap-in-extension.component.mjs +1 -1
  54. package/angular/esm2020/src/controls/split-view/split-view.component.mjs +2 -2
  55. package/angular/esm2020/src/controls/wizard/models/wizard-step-snap-in-output.mjs +1 -1
  56. package/angular/esm2020/src/controls/wizard-lite/wizard-navigation-button/wizard-navigation-button.component.mjs +3 -3
  57. package/angular/esm2020/src/data/extension-broker/snap-in-listener.mjs +80 -0
  58. package/angular/esm2020/src/data/index.mjs +2 -1
  59. package/angular/esm2020/src/directives/router/router-link.directive.mjs +2 -2
  60. package/angular/esm2020/src/directives/svg/svg.directive.mjs +2 -3
  61. package/angular/esm2020/src/generated/strings.mjs +1 -1
  62. package/angular/esm2020/src/service/navigation.service.mjs +3 -8
  63. package/angular/esm2020/src/service/user-alive.service.mjs +2 -4
  64. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs +665 -239
  65. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
  66. package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs +636 -237
  67. package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
  68. package/angular/package.json +1 -1
  69. package/angular/src/controls/accordion/accordion-panel/accordion-panel.component.d.ts +13 -4
  70. package/angular/src/controls/common/spacer-base.component.d.ts +11 -2
  71. package/angular/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.d.ts +38 -0
  72. package/angular/src/controls/form/form-field/array/array-form-field.component.d.ts +3 -1
  73. package/angular/src/controls/form/form-field/form-field-accessibility-manager-base.service.d.ts +37 -0
  74. package/angular/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.d.ts +25 -0
  75. package/angular/src/controls/form/form-field/list/list-form-field.component.d.ts +12 -2
  76. package/angular/src/controls/form/form-field/number/number-form-field.component.d.ts +8 -0
  77. package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.d.ts +37 -0
  78. package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.d.ts +12 -8
  79. package/angular/src/controls/icon/icon-text/icon-text.component.d.ts +1 -1
  80. package/angular/src/controls/property-grid/property-grid.component.d.ts +2 -0
  81. package/angular/src/controls/wizard/models/wizard-step-snap-in-output.d.ts +1 -1
  82. package/{core → angular/src}/data/extension-broker/snap-in-listener.d.ts +49 -46
  83. package/angular/src/data/index.d.ts +1 -0
  84. package/angular/src/directives/svg/svg.directive.d.ts +1 -2
  85. package/angular/src/generated/strings.d.ts +12 -0
  86. package/core/async/cancellation.js +312 -0
  87. package/core/async/index.js +312 -0
  88. package/core/async/progress.js +312 -0
  89. package/core/azure/azure-constants.d.ts +2 -2
  90. package/core/azure/azure-constants.d.ts.map +1 -1
  91. package/core/azure/azure-constants.js +322 -3
  92. package/core/azure/azure-constants.js.map +1 -1
  93. package/core/azure/azure-logging.js +312 -0
  94. package/core/azure/azure-manager.js +312 -0
  95. package/core/azure/models/aadAppConfig-data.js +312 -0
  96. package/core/azure/models/azureArcStatusEnum.js +312 -0
  97. package/core/azure/models/azureTokenResult-data.js +312 -0
  98. package/core/azure/resources/deployment-operation-request-body.js +312 -0
  99. package/core/azure/resources/deployment-operation-response.js +312 -0
  100. package/core/azure/resources/location-data.js +315 -0
  101. package/core/azure/resources/resource-group-data.js +312 -0
  102. package/core/azure/resources/subscription-data.js +312 -0
  103. package/core/base/data-store/browser-storage-data-store.js +315 -0
  104. package/core/base/data-store/cached-data-store.js +312 -0
  105. package/core/base/data-store/data-store.js +312 -0
  106. package/core/base/data-store/local-data-store.js +312 -0
  107. package/core/base/data-store/memory-data-store.js +312 -0
  108. package/core/base/data-store/session-data-store.js +312 -0
  109. package/core/base/date/date-like.js +312 -0
  110. package/core/base/date/date-range.js +312 -0
  111. package/core/base/date/date-time.js +312 -0
  112. package/core/base/date/date-type.js +312 -0
  113. package/core/base/date/time-unit.js +312 -0
  114. package/core/base/decorators/base.js +312 -0
  115. package/core/base/decorators/debounce.decorators.js +312 -0
  116. package/core/base/decorators/delay.decorator.js +315 -0
  117. package/core/base/decorators/yield.decorator.js +312 -0
  118. package/core/base/environment.js +312 -0
  119. package/core/base/json.js +312 -0
  120. package/core/base/msft-sme.mock.js +316 -0
  121. package/core/base/polyfills/array.js +315 -0
  122. package/core/base/polyfills/string.js +312 -0
  123. package/core/base/rxjs-lifetime-manager.js +312 -0
  124. package/core/base/utilities.js +312 -0
  125. package/core/base/versioned-object.js +312 -0
  126. package/core/data/accessibility-manager.js +312 -0
  127. package/core/data/active-directory/active-directory.js +312 -0
  128. package/core/data/active-directory/models/account-info.js +312 -0
  129. package/core/data/active-directory/models/active-directory-search-options.js +312 -0
  130. package/core/data/active-directory/models/search-type.js +312 -0
  131. package/core/data/animation.js +312 -0
  132. package/core/data/app-context.js +312 -0
  133. package/core/data/asset-manager.js +315 -0
  134. package/core/data/base64-array-buffer.js +312 -0
  135. package/core/data/batch-connection.js +312 -0
  136. package/core/data/cim-connection.js +312 -0
  137. package/core/data/cim-stream.js +312 -0
  138. package/core/data/cim.js +312 -0
  139. package/core/data/column-picker.js +312 -0
  140. package/core/data/cookie.js +312 -0
  141. package/core/data/core-environment.js +315 -0
  142. package/core/data/crypto.js +312 -0
  143. package/core/data/deployment-share.js +312 -0
  144. package/core/data/disposable.js +312 -0
  145. package/core/data/electron.js +315 -0
  146. package/core/data/error-extended.js +312 -0
  147. package/core/data/extension-broker/dialog-listener.js +312 -0
  148. package/core/data/extension-broker/extension-broker.js +312 -0
  149. package/core/data/extension-broker/extension-listener.js +312 -0
  150. package/core/data/extension-broker/model/extension-broker-request-payload.js +312 -0
  151. package/core/data/extension-broker/model/extension-broker-response-error.js +312 -0
  152. package/core/data/extension-broker/model/extension-broker-response-payload.js +312 -0
  153. package/core/data/extension-broker/model/extension-entries.js +315 -0
  154. package/core/data/extension-broker/model/extension-instance.js +315 -0
  155. package/core/data/extension-broker/model/extension-rect.js +312 -0
  156. package/core/data/extension-broker/model/extension-search-options.js +312 -0
  157. package/core/data/extension-broker/service-listener.js +312 -0
  158. package/core/data/extension-broker/worker-listener.js +312 -0
  159. package/core/data/extension-broker/worker-set.js +312 -0
  160. package/core/data/file-transfer.js +312 -0
  161. package/core/data/gateway-connection.js +312 -0
  162. package/core/data/gateway-status.js +312 -0
  163. package/core/data/gateway-url-builder.js +312 -0
  164. package/core/data/gateway-url-translator.d.ts +1 -0
  165. package/core/data/gateway-url-translator.d.ts.map +1 -1
  166. package/core/data/gateway-url-translator.js +337 -6
  167. package/core/data/gateway-url-translator.js.map +1 -1
  168. package/core/data/gateway-urls.js +312 -0
  169. package/core/data/globalization.js +315 -0
  170. package/core/data/http-constants.js +315 -0
  171. package/core/data/http.js +312 -0
  172. package/core/data/jobs/jobs-manager.js +312 -0
  173. package/core/data/jobs/models/job-credentials.js +312 -0
  174. package/core/data/jobs/models/job-node.js +312 -0
  175. package/core/data/jobs/models/job-paginated-response.js +315 -0
  176. package/core/data/jobs/models/job-pagination-options.js +315 -0
  177. package/core/data/jobs/models/job.js +312 -0
  178. package/core/data/jobs/models/node-job.js +312 -0
  179. package/core/data/jobs/models/powershell-job.js +312 -0
  180. package/core/data/language.js +315 -0
  181. package/core/data/lifetime-data.js +312 -0
  182. package/core/data/localization-manager.js +312 -0
  183. package/core/data/native-q.js +312 -0
  184. package/core/data/net.d.ts.map +1 -1
  185. package/core/data/net.js +313 -1
  186. package/core/data/net.js.map +1 -1
  187. package/core/data/node-connection.d.ts.map +1 -1
  188. package/core/data/node-connection.js +312 -2
  189. package/core/data/node-connection.js.map +1 -1
  190. package/core/data/node-extension-install.js +312 -0
  191. package/core/data/powershell-alternate.js +312 -0
  192. package/core/data/powershell-batch.js +312 -0
  193. package/core/data/powershell-connection.js +312 -0
  194. package/core/data/powershell-crypto.js +312 -0
  195. package/core/data/powershell-stream.js +312 -0
  196. package/core/data/powershell.js +312 -0
  197. package/core/data/query-cache.js +312 -0
  198. package/core/data/resource-cache.js +312 -0
  199. package/core/data/schedule-reboot.js +312 -0
  200. package/core/data/settings-manager.js +312 -0
  201. package/core/data/settings-manger.mock.js +312 -0
  202. package/core/data/sme-extension.js +312 -0
  203. package/core/data/ssh-stream.js +312 -0
  204. package/core/data/units.js +312 -0
  205. package/core/data/uri-builder.js +315 -0
  206. package/core/data/wdac-operations.js +312 -0
  207. package/core/data/websocket-stream.js +312 -0
  208. package/core/diagnostics/error-monitor.js +312 -0
  209. package/core/diagnostics/log-level.js +312 -0
  210. package/core/diagnostics/log-record.js +312 -0
  211. package/core/diagnostics/logging-constants.js +312 -0
  212. package/core/diagnostics/logging.js +312 -0
  213. package/core/diagnostics/logging.mock.js +312 -0
  214. package/core/diagnostics/sme-web-telemetry-models.js +312 -0
  215. package/core/diagnostics/sme-web-telemetry.d.ts +1 -2
  216. package/core/diagnostics/sme-web-telemetry.d.ts.map +1 -1
  217. package/core/diagnostics/sme-web-telemetry.js +336 -15
  218. package/core/diagnostics/sme-web-telemetry.js.map +1 -1
  219. package/core/diagnostics/telemetry-control-type.js +312 -0
  220. package/core/diagnostics/telemetry-options.js +312 -0
  221. package/core/diagnostics/telemetry-record.js +312 -0
  222. package/core/dom/dom.js +312 -0
  223. package/core/frame/frame-connection.js +312 -0
  224. package/core/frame/frame-connection.mock.js +312 -0
  225. package/core/frame/shell-navigation-connection.js +312 -0
  226. package/core/generated/powershell-scripts.d.ts.map +1 -1
  227. package/core/generated/powershell-scripts.js +313 -1
  228. package/core/generated/powershell-scripts.js.map +1 -1
  229. package/core/generated/strings.js +312 -0
  230. package/core/host/host-core-manager.js +312 -0
  231. package/core/host/host-core-message-type.js +312 -0
  232. package/core/host/host-core-messages.js +312 -0
  233. package/core/index.d.ts +0 -1
  234. package/core/index.d.ts.map +1 -1
  235. package/core/index.js +312 -1
  236. package/core/index.js.map +1 -1
  237. package/core/manifest/environment-modules.js +312 -0
  238. package/core/manifest/manifest-loader.js +312 -0
  239. package/core/notification/client-notification-instance.js +312 -0
  240. package/core/notification/client-notification.js +312 -0
  241. package/core/notification/notification-connection.js +312 -0
  242. package/core/notification/notification-link-type.js +312 -0
  243. package/core/notification/notification-manager.js +312 -0
  244. package/core/notification/notification-message.js +312 -0
  245. package/core/notification/notification-state.js +312 -0
  246. package/core/notification/notification.js +312 -0
  247. package/core/notification/powershell-notification.js +312 -0
  248. package/core/notification/socket-signalr.js +312 -0
  249. package/core/notification/work-item-connection.js +312 -0
  250. package/core/notification/work-item-manager.js +312 -0
  251. package/core/notification/work-item-request.js +312 -0
  252. package/core/performance/performance-profile-data-type.js +312 -0
  253. package/core/performance/performance-profile-data.js +312 -0
  254. package/core/performance/performance-profile-database.js +312 -0
  255. package/core/performance/performance-profile-record.js +312 -0
  256. package/core/performance/performance-profile.d.ts.map +1 -1
  257. package/core/performance/performance-profile.js +321 -9
  258. package/core/performance/performance-profile.js.map +1 -1
  259. package/core/performance/performance-tracker.js +312 -0
  260. package/core/polyfills.js +312 -0
  261. package/core/resources/scripts/public/crypto/Get-DecryptedDataFromNode.ps1 +216 -0
  262. package/core/resources/scripts/public/crypto/Get-EncryptionJWKOnNode.ps1 +216 -0
  263. package/core/resources/scripts/public/inventory/Get-CimWin32LogicalDisk.ps1 +218 -0
  264. package/core/resources/scripts/public/inventory/Get-CimWin32NetworkAdapter.ps1 +216 -0
  265. package/core/resources/scripts/public/inventory/Get-CimWin32PhysicalMemory.ps1 +216 -0
  266. package/core/resources/scripts/public/inventory/Get-CimWin32Processor.ps1 +216 -0
  267. package/core/resources/scripts/public/inventory/Get-ClusterInventory.ps1 +216 -0
  268. package/core/resources/scripts/public/inventory/Get-ClusterNodes.ps1 +216 -0
  269. package/core/resources/scripts/public/inventory/Get-ServerInventory.ps1 +246 -8
  270. package/core/rpc/alive/rpc-alive-client.js +312 -0
  271. package/core/rpc/alive/rpc-alive-handler.js +312 -0
  272. package/core/rpc/alive/rpc-alive-model.js +315 -0
  273. package/core/rpc/alive/rpc-alive-subject-server.js +312 -0
  274. package/core/rpc/alive/rpc-observable-alive-client.js +312 -0
  275. package/core/rpc/alive/rpc-observable-alive-model.js +312 -0
  276. package/core/rpc/alive/rpc-observable-alive-server.js +312 -0
  277. package/core/rpc/azure/rpc-azure-model.js +312 -0
  278. package/core/rpc/azure/rpc-azure-request-client.js +312 -0
  279. package/core/rpc/azure/rpc-azure-request-handler.js +312 -0
  280. package/core/rpc/azure/rpc-azure-request-subject-server.js +312 -0
  281. package/core/rpc/azure/rpc-azure-response-client.js +312 -0
  282. package/core/rpc/azure/rpc-azure-response-handler.js +315 -0
  283. package/core/rpc/credssp/rpc-credssp-model.js +312 -0
  284. package/core/rpc/credssp/rpc-credssp-request-client.js +312 -0
  285. package/core/rpc/credssp/rpc-credssp-request-handler.js +315 -0
  286. package/core/rpc/credssp/rpc-credssp-request-subject-server.js +312 -0
  287. package/core/rpc/credssp/rpc-credssp-response-client.js +312 -0
  288. package/core/rpc/credssp/rpc-credssp-response-handler.js +315 -0
  289. package/core/rpc/dialog/rpc-dialog-client.js +312 -0
  290. package/core/rpc/dialog/rpc-dialog-handler.js +312 -0
  291. package/core/rpc/dialog/rpc-dialog-model.js +312 -0
  292. package/core/rpc/dialog/rpc-dialog-subject-server.js +315 -0
  293. package/core/rpc/electron/rpc-electron-model.js +312 -0
  294. package/core/rpc/electron/rpc-electron-request-client.js +312 -0
  295. package/core/rpc/electron/rpc-electron-request-handler.js +312 -0
  296. package/core/rpc/electron/rpc-electron-request-subject-server.js +312 -0
  297. package/core/rpc/electron/rpc-electron-response-client.js +312 -0
  298. package/core/rpc/electron/rpc-electron-response-handler.js +312 -0
  299. package/core/rpc/elevate/rpc-observable-elevate-client.js +312 -0
  300. package/core/rpc/elevate/rpc-observable-elevate-model.js +312 -0
  301. package/core/rpc/elevate/rpc-observable-elevate-server.js +312 -0
  302. package/core/rpc/error-monitor/rpc-observable-error-monitor-client.js +312 -0
  303. package/core/rpc/error-monitor/rpc-observable-error-monitor-model.js +315 -0
  304. package/core/rpc/error-monitor/rpc-observable-error-monitor-server.js +312 -0
  305. package/core/rpc/extension-broker/rpc-extension-broker-model.js +315 -0
  306. package/core/rpc/extension-broker/rpc-extension-broker-module-request-subject-server.js +315 -0
  307. package/core/rpc/extension-broker/rpc-extension-broker-request-client.js +312 -0
  308. package/core/rpc/extension-broker/rpc-extension-broker-request-handler.js +312 -0
  309. package/core/rpc/extension-broker/rpc-extension-broker-request-subject-server.js +312 -0
  310. package/core/rpc/extension-broker/rpc-extension-broker-response-client.js +312 -0
  311. package/core/rpc/extension-broker/rpc-extension-broker-response-handler.js +312 -0
  312. package/core/rpc/extension-data/rpc-observable-extension-data-client.js +312 -0
  313. package/core/rpc/extension-data/rpc-observable-extension-data-model.js +312 -0
  314. package/core/rpc/extension-data/rpc-observable-extension-data-server.js +312 -0
  315. package/core/rpc/forward/rpc-forward-auto-client.js +312 -0
  316. package/core/rpc/forward/rpc-forward-down-client.js +315 -0
  317. package/core/rpc/forward/rpc-forward-down-handler.js +312 -0
  318. package/core/rpc/forward/rpc-forward-model.js +312 -0
  319. package/core/rpc/forward/rpc-forward-up-client.js +312 -0
  320. package/core/rpc/forward/rpc-forward-up-handler.js +312 -0
  321. package/core/rpc/forward/rpc-forward-up-subject-server.js +312 -0
  322. package/core/rpc/log/rpc-log-client.js +312 -0
  323. package/core/rpc/log/rpc-log-handler.js +312 -0
  324. package/core/rpc/log/rpc-log-model.js +312 -0
  325. package/core/rpc/log/rpc-log-subject-server.js +312 -0
  326. package/core/rpc/notification/rpc-notification-client.js +312 -0
  327. package/core/rpc/notification/rpc-notification-handler.js +312 -0
  328. package/core/rpc/notification/rpc-notification-model.js +312 -0
  329. package/core/rpc/notification/rpc-notification-subject-server.js +312 -0
  330. package/core/rpc/overlay/rpc-overlay-close-client.js +312 -0
  331. package/core/rpc/overlay/rpc-overlay-close-handler.js +312 -0
  332. package/core/rpc/overlay/rpc-overlay-model.js +312 -0
  333. package/core/rpc/overlay/rpc-overlay-open-client.js +315 -0
  334. package/core/rpc/overlay/rpc-overlay-open-handler.js +312 -0
  335. package/core/rpc/overlay/rpc-overlay-open-subject-server.js +312 -0
  336. package/core/rpc/performance/rpc-observable-performance-client.js +312 -0
  337. package/core/rpc/performance/rpc-observable-performance-config-client.js +312 -0
  338. package/core/rpc/performance/rpc-observable-performance-config-server.js +312 -0
  339. package/core/rpc/performance/rpc-observable-performance-model.js +312 -0
  340. package/core/rpc/performance/rpc-observable-performance-server.js +312 -0
  341. package/core/rpc/report/rpc-report-client.js +312 -0
  342. package/core/rpc/report/rpc-report-handler.js +312 -0
  343. package/core/rpc/report/rpc-report-model.js +312 -0
  344. package/core/rpc/report/rpc-report-subject-server.js +315 -0
  345. package/core/rpc/rpc-base.js +312 -0
  346. package/core/rpc/rpc-channel.js +312 -0
  347. package/core/rpc/rpc-forwarder.js +312 -0
  348. package/core/rpc/rpc-inbound-client.js +312 -0
  349. package/core/rpc/rpc-inbound.js +312 -0
  350. package/core/rpc/rpc-manager.js +312 -0
  351. package/core/rpc/rpc-module-subject-server.js +315 -0
  352. package/core/rpc/rpc-observable-client.js +312 -0
  353. package/core/rpc/rpc-observable-request.js +312 -0
  354. package/core/rpc/rpc-observable-result.js +312 -0
  355. package/core/rpc/rpc-observable-server.js +312 -0
  356. package/core/rpc/rpc-outbound-client.js +312 -0
  357. package/core/rpc/rpc-outbound.js +312 -0
  358. package/core/rpc/rpc-subject-server.js +312 -0
  359. package/core/rpc/rpc.js +312 -0
  360. package/core/rpc/seek/rpc-seek-client.js +312 -0
  361. package/core/rpc/seek/rpc-seek-handler.js +315 -0
  362. package/core/rpc/seek/rpc-seek-model.js +312 -0
  363. package/core/rpc/settings/rpc-settings-client.js +315 -0
  364. package/core/rpc/settings/rpc-settings-handler.js +312 -0
  365. package/core/rpc/settings/rpc-settings-model.js +312 -0
  366. package/core/rpc/settings/rpc-settings-subject-server.js +312 -0
  367. package/core/rpc/shell-navigate/rpc-shell-navigate-client.js +312 -0
  368. package/core/rpc/shell-navigate/rpc-shell-navigate-handler.js +312 -0
  369. package/core/rpc/shell-navigate/rpc-shell-navigate-model.js +312 -0
  370. package/core/rpc/shell-navigate/rpc-shell-navigate-subject-server.js +312 -0
  371. package/core/rpc/sme-extension/rpc-sme-extension-model.js +315 -0
  372. package/core/rpc/sme-extension/rpc-sme-extension-request-client.js +312 -0
  373. package/core/rpc/sme-extension/rpc-sme-extension-request-handler.js +312 -0
  374. package/core/rpc/sme-extension/rpc-sme-extension-request-subject-server.js +312 -0
  375. package/core/rpc/sme-extension/rpc-sme-extension-response-client.js +312 -0
  376. package/core/rpc/sme-extension/rpc-sme-extension-response-handler.js +312 -0
  377. package/core/rpc/telemetry/rpc-telemetry-client.js +312 -0
  378. package/core/rpc/telemetry/rpc-telemetry-handler.js +315 -0
  379. package/core/rpc/telemetry/rpc-telemetry-model.js +312 -0
  380. package/core/rpc/telemetry/rpc-telemetry-subject-server.js +312 -0
  381. package/core/rpc/update-data/rpc-update-data-client.js +312 -0
  382. package/core/rpc/update-data/rpc-update-data-handler.js +312 -0
  383. package/core/rpc/update-data/rpc-update-data-model.js +312 -0
  384. package/core/rpc/update-data/rpc-update-data-subject-server.js +312 -0
  385. package/core/rpc/update-theme/rpc-observable-update-theme-client.js +312 -0
  386. package/core/rpc/update-theme/rpc-observable-update-theme-model.js +312 -0
  387. package/core/rpc/update-theme/rpc-observable-update-theme-server.js +312 -0
  388. package/core/rpc/work-item/rpc-work-item-client.js +312 -0
  389. package/core/rpc/work-item/rpc-work-item-handler.js +312 -0
  390. package/core/rpc/work-item/rpc-work-item-model.js +312 -0
  391. package/core/rpc/work-item/rpc-work-item-subject-server.js +312 -0
  392. package/core/rpc/work-item-find/rpc-work-item-find-client.js +312 -0
  393. package/core/rpc/work-item-find/rpc-work-item-find-handler.js +312 -0
  394. package/core/rpc/work-item-find/rpc-work-item-find-model.js +312 -0
  395. package/core/rpc/work-item-find/rpc-work-item-find-subject-server.js +312 -0
  396. package/core/security/active-connection.js +312 -0
  397. package/core/security/authorization-manager.js +312 -0
  398. package/core/security/connection-manager-settings/common-connection-settings.js +315 -0
  399. package/core/security/connection-manager-settings/connection-settings.js +312 -0
  400. package/core/security/connection-manager.js +312 -0
  401. package/core/security/connection-stream.js +312 -0
  402. package/core/security/connection.js +312 -0
  403. package/core/security/credssp-manager.js +312 -0
  404. package/core/security/sign-on-manager.js +312 -0
  405. package/core/security/tag-manager.js +312 -0
  406. package/core/security/tool-condition-validator.js +312 -0
  407. package/core/security/tool-connection-query.js +312 -0
  408. package/core/security/user-principal.js +312 -0
  409. package/core/shared/cluster-inventory/cluster-inventory-cache.js +312 -0
  410. package/core/shared/cluster-inventory/cluster-inventory.js +312 -0
  411. package/core/shared/cluster-inventory/cluster-node-inventory.js +312 -0
  412. package/core/shared/gateway-inventory/gateway-inventory-cache.js +312 -0
  413. package/core/shared/gateway-inventory/gateway-inventory-detail-cache.js +312 -0
  414. package/core/shared/gateway-inventory/gateway-inventory-detail.js +312 -0
  415. package/core/shared/gateway-inventory/gateway-inventory.js +312 -0
  416. package/core/shared/inventory-query-caches.js +312 -0
  417. package/core/shared/server-inventory/server-inventory-cache.js +312 -0
  418. package/core/shared/server-inventory/server-inventory-detail-cache.js +312 -0
  419. package/core/shared/server-inventory/server-inventory-detail.js +315 -0
  420. package/core/shared/server-inventory/server-inventory.js +312 -0
  421. package/core/shared/shared-cache.js +312 -0
  422. package/core/shared/tool-inventory/tool-inventory-cache.js +312 -0
  423. package/core/shared/tool-inventory/tool-inventory.js +312 -0
  424. package/core/special.js +315 -0
  425. package/core/test-utilities/accessibility-tester.js +312 -0
  426. package/core/test-utilities/console.mock.js +312 -0
  427. package/core/test-utilities/jasmine-axe-matcher.js +312 -0
  428. package/core/test-utilities/wait-async.js +312 -0
  429. package/core/test.js +312 -0
  430. package/core/testing.js +312 -0
  431. package/core/workflow/persistent-local-storage.js +312 -0
  432. package/core/workflow/persistent-work-item-apply-state.js +316 -0
  433. package/core/workflow/persistent-work-item-state.js +312 -0
  434. package/core/workflow/persistent-work-item.js +315 -0
  435. package/core/workflow/persistent-workflow-builder.js +312 -0
  436. package/core/workflow/persistent-workflow-context.js +312 -0
  437. package/core/workflow/persistent-workflow-runner.js +312 -0
  438. package/core/workflow/persistent-workflow-snapshot.js +312 -0
  439. package/core/workflow/persistent-workflow-store.js +312 -0
  440. package/core/workflow/persistent-workflow.js +312 -0
  441. package/package.json +11 -9
  442. package/styles/css/main-v2.css +1 -1
  443. package/styles/fonts/SegoeUI/Bold/SegoeUIBold-5.27.woff +0 -0
  444. package/styles/fonts/SegoeUI/Light/SegoeUILight-5.27.woff +0 -0
  445. package/styles/fonts/SegoeUI/Normal/SegoeUI-5.27.woff +0 -0
  446. package/styles/fonts/SegoeUI/SemiBold/SegoeUISemiBold-5.27.woff +0 -0
  447. package/styles/fonts/SegoeUI/SemiLight/SegoeUISemiLight-5.27.woff +0 -0
  448. package/styles/fonts/ServMDL2/ServMDL2-4.66.woff +0 -0
  449. package/tools/build/webpack/index-html.transform.js +312 -0
  450. package/tools/build/webpack/shell.index-html.transform.js +312 -0
  451. package/tools/build/webpack/shell.webpack.config.js +312 -0
  452. package/tools/build/webpack/webpack.config.js +312 -0
  453. package/tools/code-formatter/.eslintrc.base.json +3 -1
  454. package/tools/code-formatter/lint.d.ts.map +1 -1
  455. package/tools/code-formatter/lint.js +319 -1
  456. package/tools/code-formatter/lint.js.map +1 -1
  457. package/tools/code-formatter/utilities.d.ts +7 -0
  458. package/tools/code-formatter/utilities.d.ts.map +1 -0
  459. package/tools/code-formatter/utilities.js +395 -0
  460. package/tools/code-formatter/utilities.js.map +1 -0
  461. package/tools/gulp-doc-generator/index.js +312 -0
  462. package/tools/gulp-manifest-resource/index.js +312 -0
  463. package/tools/gulp-manifest-validator/index.js +312 -0
  464. package/tools/gulp-merge-json-in-folders/index.js +312 -0
  465. package/tools/gulp-merge-json-in-folders/json-merge.js +312 -0
  466. package/tools/gulp-ps-cim/index.js +315 -0
  467. package/tools/gulp-ps-code/index.d.ts.map +1 -1
  468. package/tools/gulp-ps-code/index.js +323 -2
  469. package/tools/gulp-ps-code/index.js.map +1 -1
  470. package/tools/gulp-ps-code/ps-code-convert.js +312 -0
  471. package/tools/gulp-ps-manifest/index.js +312 -0
  472. package/tools/gulp-ps-module/index.d.ts.map +1 -1
  473. package/tools/gulp-ps-module/index.js +327 -3
  474. package/tools/gulp-ps-module/index.js.map +1 -1
  475. package/tools/gulp-ps-resjson/index.js +315 -0
  476. package/tools/gulp-resjson/index.js +315 -0
  477. package/tools/gulp-resjson/resjson-convert.js +312 -0
  478. package/tools/gulp-schema-form/index.js +312 -0
  479. package/tools/gulp-svg-code/index.js +312 -0
  480. package/tools/gulp-svg-code/svg-code-convert.js +312 -0
  481. package/tools/gulp-update-notes-resource/index.d.ts.map +1 -1
  482. package/tools/gulp-update-notes-resource/index.js +316 -4
  483. package/tools/gulp-update-notes-resource/index.js.map +1 -1
  484. package/tools/module-template/.eslintrc.json +3 -0
  485. package/tools/module-template/build/increment-package-version.ps1 +216 -0
  486. package/tools/module-template/build/push-incremented-version.ps1 +216 -1
  487. package/tools/module-template/build/update-powershell-code.ps1 +216 -0
  488. package/tools/module-template/gulpfile.ts/common/clean.ts +2 -0
  489. package/tools/module-template/gulpfile.ts/common/pack.ts +17 -5
  490. package/tools/module-template/gulpfile.ts/common/powershell.ts +40 -2
  491. package/tools/module-template/gulpfile.ts/common/utilities.ts +1 -0
  492. package/tools/pack-nuget/index.d.ts.map +1 -1
  493. package/tools/pack-nuget/index.js +321 -3
  494. package/tools/pack-nuget/index.js.map +1 -1
  495. package/tools/scripts/Invoke-PesterTest.ps1 +216 -0
  496. package/tools/scripts/New-ExtensionPackage.ps1 +373 -6
  497. package/tools/scripts/Search-NonAsciiText.ps1 +216 -0
  498. package/tools/scripts/package-information/README.md +3 -0
  499. package/tools/scripts/package-information/ms-logo.png +0 -0
  500. package/tools/test-runner/index.js +312 -0
  501. package/tools/utilities/index.js +312 -0
  502. package/tools/wac-cli/src/angular15/configs/angular-json-config.js +312 -0
  503. package/tools/wac-cli/src/angular15/configs/ci-build-yml-config.js +315 -0
  504. package/tools/wac-cli/src/angular15/configs/config.js +312 -0
  505. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts +9 -0
  506. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts.map +1 -0
  507. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js +328 -0
  508. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js.map +1 -0
  509. package/tools/wac-cli/src/angular15/configs/git-ignore-config.js +312 -0
  510. package/tools/wac-cli/src/angular15/configs/jasmine-test-config.js +315 -0
  511. package/tools/wac-cli/src/angular15/configs/package-json-config.js +312 -0
  512. package/tools/wac-cli/src/angular15/configs/replace-config.js +315 -0
  513. package/tools/wac-cli/src/angular15/configs/tsconfig-config.js +312 -0
  514. package/tools/wac-cli/src/angular15/configs/ui-test-automation-lagacy-config.js +312 -0
  515. package/tools/wac-cli/src/angular15/main.d.ts +19 -3
  516. package/tools/wac-cli/src/angular15/main.d.ts.map +1 -1
  517. package/tools/wac-cli/src/angular15/main.js +353 -7
  518. package/tools/wac-cli/src/angular15/main.js.map +1 -1
  519. package/tools/wac-cli/src/angular15/upgrader/angular-json-upgrader.js +316 -0
  520. package/tools/wac-cli/src/angular15/upgrader/audit/ajax-response-updater.js +312 -0
  521. package/tools/wac-cli/src/angular15/upgrader/audit/css-syntax-error-updater.js +312 -0
  522. package/tools/wac-cli/src/angular15/upgrader/audit/declare-override-updater.js +312 -0
  523. package/tools/wac-cli/src/angular15/upgrader/audit/error-updater-angular15.js +312 -0
  524. package/tools/wac-cli/src/angular15/upgrader/audit/form-control-updater.js +312 -0
  525. package/tools/wac-cli/src/angular15/upgrader/audit/iif-updater-util.js +312 -0
  526. package/tools/wac-cli/src/angular15/upgrader/audit/load-children-callback-updater.js +315 -0
  527. package/tools/wac-cli/src/angular15/upgrader/audit/log-parser.js +312 -0
  528. package/tools/wac-cli/src/angular15/upgrader/audit/observable-throw-updater.js +312 -0
  529. package/tools/wac-cli/src/angular15/upgrader/audit/parameter-count-violation-updater.js +312 -0
  530. package/tools/wac-cli/src/angular15/upgrader/audit/string-replace-updater.js +312 -0
  531. package/tools/wac-cli/src/angular15/upgrader/audit/subjuct-next-updater-util.js +312 -0
  532. package/tools/wac-cli/src/angular15/upgrader/ci-build-yml-upgrader.js +312 -0
  533. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts +18 -0
  534. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts.map +1 -0
  535. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js +361 -0
  536. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js.map +1 -0
  537. package/tools/wac-cli/src/angular15/upgrader/file-replacement-upgrader.js +312 -0
  538. package/tools/wac-cli/src/angular15/upgrader/git-ignore-upgrader.js +312 -0
  539. package/tools/wac-cli/src/angular15/upgrader/jasmine-test-upgrader.js +312 -0
  540. package/tools/wac-cli/src/angular15/upgrader/package-json-upgrader.js +312 -0
  541. package/tools/wac-cli/src/angular15/upgrader/remove-upgrader.js +315 -0
  542. package/tools/wac-cli/src/angular15/upgrader/replace-upgrader.js +312 -0
  543. package/tools/wac-cli/src/angular15/upgrader/tsconfig-upgrader.js +312 -0
  544. package/tools/wac-cli/src/angular15/upgrader/ui-test-automation-legacy-upgrader.js +312 -0
  545. package/tools/wac-cli/src/angular15/upgrader/version-json-upgrader.js +312 -0
  546. package/tools/wac-cli/src/angular15/utils/add-item.js +312 -0
  547. package/tools/wac-cli/src/angular15/utils/command-runner.js +312 -0
  548. package/tools/wac-cli/src/angular15/utils/file-comparison.js +315 -0
  549. package/tools/wac-cli/src/angular15/utils/file-replacement.js +312 -0
  550. package/tools/wac-cli/src/angular15/utils/file-writer.js +312 -0
  551. package/tools/wac-cli/src/angular15/utils/logger.js +312 -0
  552. package/tools/wac-cli/src/angular15/utils/main-debugger.js +312 -0
  553. package/tools/wac-cli/src/angular15/utils/relative-path.js +312 -0
  554. package/tools/wac-cli/src/angular15/utils/remove-item.js +312 -0
  555. package/tools/wac-cli/src/angular15/utils/space-generator.js +312 -0
  556. package/tools/wac-cli/src/angular15/utils/update-shell-references.js +316 -0
  557. package/tools/wac-cli/src/common.js +312 -0
  558. package/tools/wac-cli/src/create/main.js +312 -0
  559. package/tools/wac-cli/src/eslint/main.js +312 -0
  560. package/tools/wac-cli/src/index.js +312 -0
  561. package/tools/wac-cli/src/upgrade/error-updater.js +312 -0
  562. package/tools/wac-cli/src/upgrade/error-updaters/component-selector-updater.js +315 -0
  563. package/tools/wac-cli/src/upgrade/error-updaters/only-arrow-functions-updater.js +315 -0
  564. package/tools/wac-cli/src/upgrade/error-updaters/updater-lookup.js +312 -0
  565. package/tools/wac-cli/src/upgrade/file-updater.js +312 -0
  566. package/tools/wac-cli/src/upgrade/get-files.js +312 -0
  567. package/tools/wac-cli/src/upgrade/main.js +312 -0
  568. package/tools/wac-cli/src/upgrade/models/error-result.js +312 -0
  569. package/tools/wac-cli/src/upgrade/models/updater-interface.js +312 -0
  570. package/tools/wac-cli/src/upgrade/package-updater.js +312 -0
  571. package/tools/wac-cli/templates/wac-template/src/favicon.ico +0 -0
  572. package/tools/wac-cli/templates/wac-template/src/karma.conf.js +312 -0
  573. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Error.ps1 +216 -0
  574. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Exception.ps1 +216 -0
  575. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Process.ps1 +216 -1
  576. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Service.ps1 +216 -1
  577. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-WinRmState.ps1 +216 -1
  578. package/core/data/extension-broker/snap-in-listener.d.ts.map +0 -1
  579. package/core/data/extension-broker/snap-in-listener.js +0 -73
  580. package/core/data/extension-broker/snap-in-listener.js.map +0 -1
  581. package/microsoft-windows-admin-center-sdk-4.123.0.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../packages/core/data/net.ts"],"names":[],"mappings":"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","file":"net.d.ts","sourcesContent":["import { Observable, of } from 'rxjs';\r\nimport { AjaxError } from 'rxjs/ajax';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { Strings } from '../generated/strings';\r\nimport { Crypto } from './crypto';\r\nimport { ErrorExtended } from './error-extended';\r\nimport { HttpStatusCode } from './http-constants';\r\n\r\n/**\r\n * Escape binary string code\r\n * @param data A value representing original binary string code\r\n */\r\ndeclare function escape(data: string): string;\r\n\r\n/**\r\n * Unescape non-binary string code\r\n * @param data A value representing original non-binary string code\r\n */\r\ndeclare function unescape(data: string): string;\r\n\r\n/**\r\n * The options interface of getErrorMessage function\r\n */\r\nexport interface ErrorMessageOptions {\r\n /**\r\n * adding additional error message\r\n * addNativeError: native error code\r\n */\r\n addNativeError?: boolean;\r\n\r\n /**\r\n * Add error prefix for output string.\r\n *\r\n * \"Error: {error message}\"\r\n */\r\n errorPrefix?: boolean;\r\n\r\n /**\r\n * Use the detailRecordremoteExceptionMessage on the error instead of detailRecord.message\r\n */\r\n useRemoteExceptionMessage?: boolean;\r\n}\r\n\r\ninterface Credentials {\r\n username: string;\r\n password: string;\r\n passwordEncryptedWith: string;\r\n domain: string;\r\n}\r\n\r\n/**\r\n * Net communication class.\r\n * @dynamic\r\n */\r\nexport class Net {\r\n private static cachedErrorCodeMap: { [index: number]: string };\r\n private static get errorCodeMap(): { [index: number]: string } {\r\n if (!Net.cachedErrorCodeMap) {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n Net.cachedErrorCodeMap = {\r\n // added from https://msdn.microsoft.com/en-us/library/aa392154(v=vs.85).aspx\r\n 0: strings.ErrorCode.Code0.message,\r\n 5: strings.ErrorCode.Code5.message,\r\n 50: strings.ErrorCode.Code50.message,\r\n 87: strings.ErrorCode.Code87.message,\r\n 110: strings.ErrorCode.Code110.message,\r\n 1323: strings.ErrorCode.Code1323.message,\r\n 1326: strings.ErrorCode.Code1326.message,\r\n 1355: strings.ErrorCode.Code1355.message,\r\n 2224: strings.ErrorCode.Code2224.message,\r\n 2691: strings.ErrorCode.Code2691.message,\r\n 2692: strings.ErrorCode.Code2692.message,\r\n 0x80041087: strings.ErrorCode.Code8004108.message\r\n };\r\n }\r\n\r\n return Net.cachedErrorCodeMap;\r\n }\r\n\r\n /**\r\n * The static definition of Web API URLs.\r\n */\r\n public static apiVersionParam = 'api-version';\r\n public static apiVersion20190201 = '2019-02-01';\r\n public static apiRoot = '/api/{0}';\r\n public static batch = '/batch';\r\n public static streamSocket = '{0}/api/streams/socket/{1}';\r\n public static downlevel = 'features/downlevelSupport';\r\n public static downlevelInstall = Net.downlevel + '/install';\r\n public static downlevelComponents = Net.downlevel + '/components';\r\n public static extensionsSettings = '/settings/extension';\r\n public static installedExtensions = '/settings/extension/installed';\r\n public static extensions = '/extensions';\r\n public static updatesSettings = '/settings/updates';\r\n public static isExtensionUpdateAvailable = Net.extensions + '/isUpdateAvailable';\r\n public static cimClass = 'features/cim/namespaces/{0}/classes/{1}';\r\n public static cimQuery = 'features/cim/query';\r\n public static cimInvoke = '/methods/{0}/invoke';\r\n public static powerShellApiInvokeCommand = 'features/powershellApi/invokeCommand';\r\n public static powerShellApiSessions = 'features/powershellApi/pssessions/{0}';\r\n public static powerShellApiExecuteCommand: string = Net.powerShellApiSessions + '/invokeCommand';\r\n public static powerShellApiRetrieveOutput: string = Net.powerShellApiSessions + '?$expand=output';\r\n public static powerShellApiCancelCommand: string = Net.powerShellApiSessions + '/cancel';\r\n public static powerShellConsoleSessions = 'features/powershellConsole/pssessions/{0}';\r\n public static powerShellConsoleExecuteCommand: string = Net.powerShellConsoleSessions + '/invokeCommand';\r\n public static powerShellConsoleRetrieveOutput: string = Net.powerShellConsoleSessions + '?$expand=output';\r\n public static stopCommand: string = Net.powerShellConsoleSessions + '/cancel';\r\n public static tabCommand: string = Net.powerShellConsoleSessions + '/tab';\r\n public static userProfile = '/settings/user';\r\n public static applicationSettings = '/settings/all';\r\n public static adminSettings = '/settings/admin';\r\n public static user = '/user';\r\n\r\n public static fileTransferFormat = 'features/fileTransfer/files/{0}';\r\n public static fileTransferDownloadPost: string = Net.fileTransferFormat + '/download';\r\n public static fileTransferUpload: string = Net.fileTransferFormat + '/uploadlink';\r\n\r\n public static jeaFeature = 'features/jea/endpoint';\r\n public static jeaExport = Net.jeaFeature + '/export';\r\n\r\n public static gateway = '/gateway';\r\n public static gatewayAccessCheck = Net.gateway + '/access/check';\r\n public static gatewayStatus = Net.gateway + '/status';\r\n\r\n // {HttpMethod} {relativeNodeUrl} HTTP/1.1\r\n public static multiPartCallBodyUrl = '{0} {1} HTTP/1.1';\r\n\r\n /**\r\n * Gateway version 2.0.0 Node API set.\r\n */\r\n /**\r\n * WinREST service on Windows platform.\r\n */\r\n public static serviceWinRest = 'WinREST';\r\n\r\n /**\r\n * WinStream service on Windows platform.\r\n */\r\n public static serviceWinStream = 'WinStream';\r\n\r\n /**\r\n * LinuxBase on Linux platform.\r\n */\r\n public static serviceLinuxBase = 'LinuxBase';\r\n\r\n /**\r\n * ActiveDirectory on WinREST.\r\n */\r\n public static controllerActiveDirectory = 'ActiveDirectory';\r\n\r\n /**\r\n * CIM on WinREST.\r\n */\r\n public static controllerCim = 'CIM';\r\n\r\n /**\r\n * Extensions on WinREST.\r\n */\r\n public static controllerExtensions = 'Extensions';\r\n\r\n /**\r\n * FileTransfer on WinREST.\r\n */\r\n public static controllerFileTransfer = 'FileTransfer';\r\n\r\n /**\r\n * JEA on WinREST.\r\n */\r\n public static controllerJea = 'JEA';\r\n\r\n /**\r\n * Nuget on WinREST.\r\n */\r\n public static controllerNuget = 'Nuget';\r\n\r\n /**\r\n * PerformanceCounter on WinREST.\r\n */\r\n public static controllerPerformanceCounter = 'PerformanceCounter';\r\n\r\n /**\r\n * PowerShell on WinREST.\r\n */\r\n public static controllerPowerShell = 'PowerShell';\r\n\r\n /**\r\n * PseudoConsole on WinStream.\r\n */\r\n public static controllerPseudoConsole = 'PseudoConsole';\r\n\r\n /**\r\n * Ssh on LinuxBase.\r\n */\r\n public static controllerSsh = 'Ssh';\r\n\r\n /**\r\n * SshFile on LinuxBase.\r\n */\r\n public static controllerSshFile = 'SshFile';\r\n\r\n /**\r\n * State on WinREST.\r\n */\r\n public static controllerState = 'State';\r\n\r\n /**\r\n * Stream on WinStream.\r\n */\r\n public static controllerStream = 'Stream';\r\n\r\n /**\r\n * Stream on LinuxBase.\r\n */\r\n public static controllerStreamSsh = 'StreamSsh';\r\n\r\n /**\r\n * Tcp on WinStream and LinuxBase.\r\n */\r\n public static controllerTcp = 'Tcp';\r\n\r\n /**\r\n * Wdac on WinREST.\r\n */\r\n public static controllerWdac = 'Wdac';\r\n\r\n /**\r\n * Socket URL on WinStream.\r\n */\r\n public static streamSocketV200 = '{0}/api/services/' + Net.serviceWinStream + '/' + Net.controllerStream + '/socket/{1}';\r\n\r\n /**\r\n * Socket URL on LinuxBase.\r\n */\r\n public static sshStreamSocket = '{0}/api/services/' + Net.serviceLinuxBase + '/' + Net.controllerStreamSsh + '/socket';\r\n\r\n /**\r\n * Encodes the specified data as Base64-encoded URL.\r\n *\r\n * If the resultant URL is longer than 260 characters, it is converted to a\r\n * relative path where each segment (e.g. '/') defines the character length boundary.\r\n * The HTTP.SYS subsystem in Windows does now allow a URL segment larger than 260\r\n * characters without changing a Registry key and restarting the OS.\r\n * @param data The data to be encoded.\r\n * @return An encoded Base64 URL, potentially segmented by '/' every 260 characters.\r\n */\r\n public static toSegmentedBase64Url(data: string): string {\r\n const MAX_HTTP_SYS_URL_SEGMENT_LENGTH = 260;\r\n const base64Url = Net.utf8Base64UrlEncode(data);\r\n const parts = Net.splitByLength(base64Url, MAX_HTTP_SYS_URL_SEGMENT_LENGTH);\r\n return parts.join('/');\r\n }\r\n\r\n /**\r\n * Update URL with api-version=20190201.\r\n * @param url the original URL\r\n * @returns new url string added version parameter.\r\n */\r\n public static updateApiVersion20190201(url: string): string {\r\n const index = url.indexOf('?');\r\n const prefix = index > 0 ? '&' : '?';\r\n if (index > 0 && url.indexOf(`${Net.apiVersionParam}=`) > 0) {\r\n return url;\r\n }\r\n\r\n return `${url}${prefix}${Net.apiVersionParam}=${Net.apiVersion20190201}`;\r\n }\r\n\r\n /**\r\n * Convert IPV6 address to literal format.\r\n *\r\n * @param ipv6Address the ipv6 address format.\r\n */\r\n public static convertIPv6ToLiteral(ipv6Address: string): string {\r\n let data = '';\r\n for (let i = 0; i < ipv6Address.length; i++) {\r\n let ch = ipv6Address.charAt(i);\r\n if (ch === ':') {\r\n ch = '-';\r\n } else if (ch === '%') {\r\n ch = 's';\r\n }\r\n\r\n data += ch;\r\n }\r\n\r\n return `${data}.ipv6-literal.net`;\r\n }\r\n\r\n /**\r\n * Convert IPV6 address to literal format.\r\n *\r\n * @param ipv6Address the ipv6 address format.\r\n */\r\n public static convertLiteralToIPv6(literal: string): string {\r\n const firstSegment = literal.split('.ipv6-literal.net')[0];\r\n if (!firstSegment) {\r\n throw new Error('Not recognized as an IPv6 literal format: \\'{0}\\'!'.format(literal || 'null'));\r\n }\r\n\r\n let data = '';\r\n for (let i = 0; i < firstSegment.length; i++) {\r\n let ch = firstSegment.charAt(i);\r\n if (ch === '-') {\r\n ch = ':';\r\n } else if (ch === 's') {\r\n ch = '%';\r\n }\r\n\r\n data += ch;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Encode a string with base64url.\r\n *\r\n * @param data the input string.\r\n * @return string the encoded string.\r\n */\r\n public static base64urlEncode(data: string): string {\r\n // REF: https://tools.ietf.org/html/rfc4648#section-5\r\n const base64 = window.btoa(data);\r\n let base64Url = '';\r\n\r\n for (let i = 0; i < base64.length; i++) {\r\n const ch = base64.charAt(i);\r\n\r\n switch (ch) {\r\n case '+':\r\n base64Url += '-';\r\n break;\r\n case '/':\r\n base64Url += '_';\r\n break;\r\n case '=':\r\n return base64Url;\r\n default:\r\n base64Url += ch;\r\n break;\r\n }\r\n }\r\n\r\n return base64Url;\r\n }\r\n\r\n /**\r\n * Decode a base64 url string.\r\n *\r\n * @param data the string to decode.\r\n * @return string the decoded string.\r\n */\r\n public static base64urlDecode(data: string): string {\r\n while (data.length % 4 !== 0) {\r\n data += '=';\r\n }\r\n\r\n data = data.replaceAll('-', '+').replaceAll('_', '/');\r\n return window.atob(data);\r\n }\r\n\r\n /**\r\n * Encode utf8 string.\r\n *\r\n * @param data the unencoded string.\r\n */\r\n public static utf8Encode(data: string): string {\r\n return unescape(encodeURIComponent(data));\r\n }\r\n\r\n /**\r\n * Decode utf8 string.\r\n *\r\n * @param data the encoded UTF8 string.\r\n */\r\n public static utf8Decode(data: string): string {\r\n return decodeURIComponent(escape(data));\r\n }\r\n\r\n /**\r\n * Encode with utf8 (first) and base64url (second).\r\n *\r\n * @param data data the original string to encode. The string can be full unicode character string.\r\n * @return string the encoded string used on a part of URL.\r\n */\r\n public static utf8Base64UrlEncode(data: string): string {\r\n const utf8: string = Net.utf8Encode(data);\r\n return Net.base64urlEncode(utf8);\r\n }\r\n\r\n /**\r\n * Decode with utf8 (second) and base64url (first).\r\n *\r\n * @param data data the encoded URL string to decode.\r\n * @return string the decoded unicode string.\r\n */\r\n public static utf8Base64UrlDecode(data: string): string {\r\n const utf8: string = Net.base64urlDecode(data);\r\n return Net.utf8Decode(utf8);\r\n }\r\n\r\n /**\r\n * Create a key name from key value pairs.\r\n *\r\n * @param properties the key value pairs.\r\n * @return string the key name.\r\n */\r\n public static cimCreateName(properties: any): string {\r\n const data: string = JSON.stringify(properties);\r\n const utf8: string = Net.utf8Encode(data);\r\n return Net.base64urlEncode(utf8);\r\n }\r\n\r\n /**\r\n * Get properties of the item from the response.\r\n *\r\n * @param data the item in the response object.\r\n * @return any the properties.\r\n */\r\n public static getItemProperties(data: any): any {\r\n if (data && data.properties) {\r\n return data.properties;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Get properties of first item from the response.\r\n *\r\n * @param data the response object.\r\n * @return any the properties.\r\n */\r\n public static getFirstProperties(data: any): any {\r\n if (data && data.value && data.value.length) {\r\n if (data.value[0].properties) {\r\n return data.value[0].properties;\r\n }\r\n } else if (data && data.length) {\r\n return data[0];\r\n }\r\n\r\n return Net.getItemProperties(data);\r\n }\r\n\r\n /**\r\n * Get array of items from the response.\r\n *\r\n * @param data the response object.\r\n * @return any the item array.\r\n */\r\n public static getItemArray(data: any): any {\r\n if (data && data.value) {\r\n return data.value;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Create JSON string with properties.\r\n *\r\n * @param data the input data.\r\n * @return string the JSON string with properties.\r\n */\r\n public static createPropertiesJSONString(data: any): string {\r\n return JSON.stringify({\r\n properties: data\r\n });\r\n }\r\n\r\n /**\r\n * Creates an encoded authentication header.\r\n *\r\n * @param usersName name of user.\r\n * @param password the password.\r\n * @return the token string.\r\n */\r\n public static createEncodedAuthenticationHeader(userNames: string[], password: string, passwordEncryptedWith: string = null): string {\r\n const credentials: any = {\r\n ...Net.toUsernameAndDomain(userNames),\r\n password: password\r\n };\r\n if (!MsftSme.isNullOrWhiteSpace(passwordEncryptedWith)) {\r\n credentials.passwordEncryptedWith = passwordEncryptedWith;\r\n }\r\n return window.btoa(Net.utf8Encode(JSON.stringify(credentials)));\r\n }\r\n\r\n public static toUsernameAndDomain(value: string): { domain: string, username: string };\r\n public static toUsernameAndDomain(value: string[]): { domain: string, username: string };\r\n public static toUsernameAndDomain(value: string | string[]): { domain: string, username: string } {\r\n let username: string[];\r\n if (Array.isArray(value)) {\r\n username = value;\r\n } else if (value.indexOf('@') >= 0) {\r\n // domain is empty if UPN is used.\r\n username = [\"\", value];\r\n } else {\r\n username = value.split('\\\\');\r\n }\r\n\r\n return {\r\n // if only a username was provided, use '.' (shorthand for the locale machine hostname)\r\n domain: username.length === 1 ? '.' : username[0],\r\n username: username.length === 1 ? username[0] : username[1]\r\n };\r\n }\r\n\r\n /**\r\n * Creates an encrypted authentication header value.\r\n *\r\n * @param jwk the JWK (Json Web Key)\r\n * @param usersName name of user.\r\n * @param password the password.\r\n * @param logonUser the gateway user\r\n * @param expirationTimeInMs manage as token expiration time in milliseconds\r\n * @return the token string.\r\n */\r\n public static createEncryptedAuthenticationHeader(\r\n jwk: string,\r\n userNames: string[],\r\n password: string,\r\n logonUser: string,\r\n expirationTimeInMs: number\r\n ): Observable<string> {\r\n const credentials: Credentials = {\r\n ...Net.toUsernameAndDomain(userNames),\r\n password: password,\r\n passwordEncryptedWith: undefined\r\n };\r\n const passwordData = Net.createPasswordData(credentials, logonUser, expirationTimeInMs);\r\n return Crypto.encryptRsaSha1(jwk, passwordData)\r\n .pipe(\r\n map(encryptedPassword => {\r\n credentials.password = encryptedPassword;\r\n credentials.passwordEncryptedWith = 'JWK2';\r\n return window.btoa(Net.utf8Encode(JSON.stringify(credentials)));\r\n }),\r\n catchError(() => of(\r\n window.btoa(Net.utf8Encode(JSON.stringify(credentials)))\r\n ))\r\n );\r\n }\r\n\r\n private static createPasswordData(\r\n credentials: Credentials,\r\n logOnUser: string,\r\n expirationTimeInMs: number\r\n ): string {\r\n const millisecondsInHour = 60 * 60 * 1000;\r\n const hoursInYear = 365 * 24;\r\n\r\n const currentTimeStamp = Date.now();\r\n const expirationOffsetInMilliseconds = expirationTimeInMs || (hoursInYear * millisecondsInHour);\r\n\r\n const passwordData = {\r\n p: credentials.password,\r\n l: logOnUser,\r\n t: currentTimeStamp,\r\n e: currentTimeStamp + expirationOffsetInMilliseconds\r\n };\r\n\r\n return JSON.stringify(passwordData);\r\n }\r\n\r\n /**\r\n * Creates encrypted data for auth header\r\n * @param jwk the JSON web key to be used to encrypt data\r\n * @param data the data to be encrypted\r\n * @returns an encrypted string\r\n */\r\n public static createEncryptedExtensionDataHeader(jwk: string, data: string) {\r\n return Crypto.encryptRsaSha1(jwk, data)\r\n .pipe(map(encryptedData => window.btoa(Net.utf8Encode(encryptedData))));\r\n }\r\n\r\n /**\r\n * Create /api/nodes URL with relativeUrl.\r\n *\r\n * @param gatewayName The name of gateway.\r\n * @param nodeName The name of node.\r\n * @param relativeUrl The relative Url.\r\n */\r\n public static gatewayNodeApi(gatewayName: string, nodeName: string, relativeUrl?: string): string {\r\n\r\n if (!relativeUrl) {\r\n relativeUrl = '';\r\n }\r\n\r\n if (!relativeUrl.startsWith('/')) {\r\n relativeUrl = '/' + relativeUrl;\r\n }\r\n\r\n if (!nodeName) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.ArgumentNullError.message;\r\n throw new Error(message.format('Net/gatewayNodeApi', 'nodeName'));\r\n }\r\n\r\n return Net.gatewayApi(gatewayName, `/nodes/${nodeName}${relativeUrl}`);\r\n }\r\n\r\n /**\r\n * Create /api URL with relativeUrl.\r\n *\r\n * @param gatewayName The name of gateway.\r\n * @param nodeName The name of node.\r\n * @param relativeUrl The relative Url.\r\n */\r\n public static gatewayApi(gatewayName: string, relativeUrl?: string): string {\r\n if (!gatewayName) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.ArgumentNullError.message;\r\n throw new Error(message.format('Net/gatewayApi', 'gatewayName'));\r\n }\r\n\r\n if (!relativeUrl) {\r\n relativeUrl = '';\r\n }\r\n\r\n if (!relativeUrl.startsWith('/')) {\r\n relativeUrl = '/' + relativeUrl;\r\n }\r\n\r\n gatewayName = gatewayName.toLowerCase();\r\n if (!gatewayName.startsWith('http://') && !gatewayName.startsWith('https://')) {\r\n gatewayName = 'https://' + gatewayName;\r\n }\r\n\r\n return `${gatewayName}/api${relativeUrl}`;\r\n }\r\n\r\n /**\r\n * Get error message from ajax result or any other error result and optionally includes native error message.\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @param options add additional optional error message: such as native error messages if possible\r\n * @return string the error message.\r\n */\r\n public static getErrorMessage(error: any, options?: ErrorMessageOptions): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const prefixFormat = strings.Error.PrefixFormat.message;\r\n const errorPrefix = options && options.errorPrefix;\r\n const xhr = error && error.xhr;\r\n const exception = error && error.exception;\r\n\r\n if (typeof error === 'string') {\r\n return errorPrefix ? prefixFormat.format(error) : error;\r\n }\r\n\r\n if (xhr && xhr.response) {\r\n const message = Net.parseErrorResponse(xhr.response, options);\r\n if (message) {\r\n return errorPrefix ? prefixFormat.format(message) : message;\r\n }\r\n }\r\n\r\n if (error && error.message) {\r\n const errorMessage = errorPrefix ? prefixFormat.format(error.message) : error.message;\r\n if(error.details && Array.isArray(error.details)) {\r\n // Add details to error message.\r\n return this.parseErrorDetails(error.details, errorMessage);\r\n }\r\n return errorMessage;\r\n }\r\n\r\n if (exception && exception.message) {\r\n return errorPrefix ? prefixFormat.format(exception.message) : exception.message;\r\n }\r\n\r\n const statusText = xhr && xhr.statusText;\r\n if (statusText) {\r\n return errorPrefix ? prefixFormat.format(statusText) : statusText;\r\n }\r\n\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n private static parseErrorDetails(details: any, message: string): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const detailsText = strings.Error.Details.text;\r\n const errorMessages = details.map((detail) => {\r\n try {\r\n const parsedDetail = JSON.parse(detail.message);\r\n if (parsedDetail?.error?.message) {\r\n return parsedDetail.error.message;\r\n }\r\n } catch (error) {\r\n // The message is not valid JSON\r\n return detail.message;\r\n }\r\n });\r\n // Joining the error messages with newline characters\r\n const detailsMessage = `${detailsText}\\n${errorMessages.join('\\n\\n')}`;\r\n // Joining the actual error message with details\r\n return `${message}\\n\\n${detailsMessage}`;\r\n }\r\n\r\n /**\r\n * Get error message from PowerShell ajax response.\r\n * Can be used by a PowerShell batch consumer to get error message in batch response.\r\n *\r\n * @param response the ajax response.\r\n * @return string the error message.\r\n */\r\n public static getPowerShellErrorMessage(response: any): string {\r\n const message = Net.parseErrorResponse(response);\r\n if (message) {\r\n return message;\r\n }\r\n\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n /**\r\n * Get error code from ajax result.\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @return string the error code.\r\n */\r\n public static getErrorCode(error: any): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const err = error && error.xhr && error.xhr.response && error.xhr.response.error;\r\n if (!err) {\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n if (err.code) {\r\n return err.code;\r\n }\r\n\r\n throw new Error(strings.Error.NoCode.message);\r\n }\r\n\r\n /**\r\n * Get error message from ajax result excluding error stackTrace\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @return string the error.\r\n */\r\n public static getErrorMessageWithoutStacktrace(error: any): string {\r\n let errorMessage: string = Net.getErrorMessage(error);\r\n if (errorMessage) {\r\n const stackTraceIndex: number = errorMessage.toLowerCase().indexOf('stacktrace');\r\n if (stackTraceIndex > 0) {\r\n errorMessage = errorMessage.substring(0, stackTraceIndex);\r\n }\r\n }\r\n\r\n return errorMessage;\r\n }\r\n\r\n /**\r\n * Translates error code to string\r\n *\r\n * @param code the error code\r\n * @return string the related error string.\r\n */\r\n public static translateErrorCode(code: number): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const message: string = Net.errorCodeMap[code];\r\n if (message) {\r\n return strings.ErrorCode.Translated.message.format(message, code);\r\n }\r\n\r\n return strings.ErrorCode.Generic.message.format(code);\r\n }\r\n\r\n /**\r\n * Determine if this is an authorization login error. This code never work if it uses NTLM or Kerberos.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isUnauthorizedLogin(error: AjaxError): boolean {\r\n // new login 401 handling.\r\n const forbidden = error?.xhr?.response?.error?.forbidden;\r\n return error.status === HttpStatusCode.Unauthorized && forbidden && forbidden === 'UnauthorizedLogin';\r\n }\r\n\r\n /**\r\n * Determine if this is an authorization error.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isUnauthorized(error: AjaxError): boolean {\r\n const errorObject = error?.xhr?.response?.error;\r\n const forbidden = errorObject?.forbidden;\r\n if (forbidden) {\r\n // new 403 handling.\r\n return error.status === HttpStatusCode.Forbidden && forbidden === 'Unauthorized';\r\n } else {\r\n // legacy 401 handling. (this should be obsolete now)\r\n const unauthorized = errorObject?.unauthorized;\r\n return error.status === HttpStatusCode.Unauthorized && !(unauthorized && unauthorized === 'UnauthorizedLogin');\r\n }\r\n }\r\n\r\n /**\r\n * Determine if this is an forbidden error.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isForbidden(error: AjaxError): boolean {\r\n const forbidden = error?.xhr?.response?.error?.forbidden;\r\n if (forbidden) {\r\n // new forbidden.\r\n return error.status === HttpStatusCode.BadRequest && forbidden === 'Forbidden';\r\n } else {\r\n // legacy 403 handling.\r\n return error.status === HttpStatusCode.Forbidden;\r\n }\r\n }\r\n\r\n /**\r\n * Get property from an ErrorExtended error object\r\n *\r\n * @param error The ErrorExtended error object.\r\n * @param sourceName The source of the error.\r\n * @param propertyName The property to get from the error object.\r\n * @return The value of the property or null if the source doesn't match.\r\n */\r\n public static getErrorExtendedProperty<T1, T2>(error: ErrorExtended<T1>, sourceName: string, propertyName: string): T2 {\r\n if (error.extendedSource &&\r\n (error.extendedSource === sourceName || error.extendedSource.includes(sourceName))) {\r\n return <T2>error?.extended[propertyName];\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Parse error message from standard ajax error and PowerShell errors.\r\n *\r\n * @param response the ajax response.\r\n * @return string the error message.\r\n */\r\n private static parseErrorResponse(response: any, options?: ErrorMessageOptions): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const err = response && response.error;\r\n if (err && err.message) {\r\n const errorMessage = err.message;\r\n\r\n if (options && options.addNativeError && err.detailRecord) {\r\n return strings.Error.AddNativeErrorCode.message.format(errorMessage, err.detailRecord.nativeErrorCode);\r\n }\r\n\r\n return errorMessage;\r\n }\r\n\r\n const psErrors: any[] = response && response.errors;\r\n if (psErrors && psErrors.length > 0) {\r\n if (psErrors.length === 1) {\r\n if (options && options.addNativeError && psErrors[0].detailRecord) {\r\n\r\n if (options && options.useRemoteExceptionMessage) {\r\n return strings.ErrorFormat.Single.Details.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].detailRecord.remoteExceptionMessage,\r\n psErrors[0].detailRecord.nativeErrorCode);\r\n }\r\n\r\n return strings.ErrorFormat.Single.Details.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].message,\r\n psErrors[0].detailRecord.nativeErrorCode);\r\n }\r\n\r\n if (options && options.useRemoteExceptionMessage && psErrors[0].detailRecord) {\r\n return strings.ErrorFormat.Single.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].detailRecord.remoteExceptionMessage);\r\n }\r\n return strings.ErrorFormat.Single.message.format(psErrors[0].errorType, psErrors[0].message);\r\n }\r\n\r\n let joinedMessage = '';\r\n for (let i = 0; i < psErrors.length; i++) {\r\n if (options && options.addNativeError && psErrors[i].detailRecord) {\r\n joinedMessage += strings.ErrorFormat.Multiple.Details.message.format(\r\n i + 1,\r\n psErrors[i].errorType,\r\n psErrors[i].message,\r\n psErrors[i].detailRecord.nativeErrorCode);\r\n } else if (options && options.useRemoteExceptionMessage && psErrors[i].detailRecord) {\r\n joinedMessage += strings.ErrorFormat.Multiple.message.format(\r\n i + 1,\r\n psErrors[i].errorType,\r\n psErrors[i].detailRecord.remoteExceptionMessage);\r\n } else {\r\n joinedMessage += strings.ErrorFormat.Multiple.message.format(i + 1, psErrors[i].errorType, psErrors[i].message);\r\n }\r\n }\r\n\r\n return joinedMessage;\r\n }\r\n\r\n if (response && response.exception) {\r\n return response.exception;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private static splitByLength(text: string, length: number): string[] {\r\n const parts = new Array<string>();\r\n\r\n if (text === null) {\r\n return parts;\r\n }\r\n\r\n const totalLength = text.length;\r\n const count = Math.ceil(totalLength / length);\r\n\r\n if (count < 2) {\r\n parts.push(text);\r\n return parts;\r\n }\r\n\r\n const lastPart = count - 1;\r\n let position = 0;\r\n\r\n for (let i = 0; i < lastPart; i++, position += length) {\r\n parts.push(text.substring(position, length));\r\n }\r\n\r\n parts.push(text.substring(position));\r\n\r\n return parts;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../packages/core/data/net.ts"],"names":[],"mappings":"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","file":"net.d.ts","sourcesContent":["import { Observable, of } from 'rxjs';\r\nimport { AjaxError } from 'rxjs/ajax';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { Strings } from '../generated/strings';\r\nimport { Crypto } from './crypto';\r\nimport { ErrorExtended } from './error-extended';\r\nimport { HttpStatusCode } from './http-constants';\r\n\r\n/**\r\n * Escape binary string code\r\n * @param data A value representing original binary string code\r\n */\r\ndeclare function escape(data: string): string;\r\n\r\n/**\r\n * Unescape non-binary string code\r\n * @param data A value representing original non-binary string code\r\n */\r\ndeclare function unescape(data: string): string;\r\n\r\n/**\r\n * The options interface of getErrorMessage function\r\n */\r\nexport interface ErrorMessageOptions {\r\n /**\r\n * adding additional error message\r\n * addNativeError: native error code\r\n */\r\n addNativeError?: boolean;\r\n\r\n /**\r\n * Add error prefix for output string.\r\n *\r\n * \"Error: {error message}\"\r\n */\r\n errorPrefix?: boolean;\r\n\r\n /**\r\n * Use the detailRecordremoteExceptionMessage on the error instead of detailRecord.message\r\n */\r\n useRemoteExceptionMessage?: boolean;\r\n}\r\n\r\ninterface Credentials {\r\n username: string;\r\n password: string;\r\n passwordEncryptedWith: string;\r\n domain: string;\r\n}\r\n\r\n/**\r\n * Net communication class.\r\n * @dynamic\r\n */\r\nexport class Net {\r\n private static cachedErrorCodeMap: { [index: number]: string };\r\n private static get errorCodeMap(): { [index: number]: string } {\r\n if (!Net.cachedErrorCodeMap) {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n Net.cachedErrorCodeMap = {\r\n // added from https://msdn.microsoft.com/en-us/library/aa392154(v=vs.85).aspx\r\n 0: strings.ErrorCode.Code0.message,\r\n 5: strings.ErrorCode.Code5.message,\r\n 50: strings.ErrorCode.Code50.message,\r\n 87: strings.ErrorCode.Code87.message,\r\n 110: strings.ErrorCode.Code110.message,\r\n 1323: strings.ErrorCode.Code1323.message,\r\n 1326: strings.ErrorCode.Code1326.message,\r\n 1355: strings.ErrorCode.Code1355.message,\r\n 2224: strings.ErrorCode.Code2224.message,\r\n 2691: strings.ErrorCode.Code2691.message,\r\n 2692: strings.ErrorCode.Code2692.message,\r\n 0x80041087: strings.ErrorCode.Code8004108.message\r\n };\r\n }\r\n\r\n return Net.cachedErrorCodeMap;\r\n }\r\n\r\n /**\r\n * The static definition of Web API URLs.\r\n */\r\n public static apiVersionParam = 'api-version';\r\n public static apiVersion20190201 = '2019-02-01';\r\n public static apiRoot = '/api/{0}';\r\n public static batch = '/batch';\r\n public static streamSocket = '{0}/api/streams/socket/{1}';\r\n public static downlevel = 'features/downlevelSupport';\r\n public static downlevelInstall = Net.downlevel + '/install';\r\n public static downlevelComponents = Net.downlevel + '/components';\r\n public static extensionsSettings = '/settings/extension';\r\n public static installedExtensions = '/settings/extension/installed';\r\n public static extensions = '/extensions';\r\n public static updatesSettings = '/settings/updates';\r\n public static isExtensionUpdateAvailable = Net.extensions + '/isUpdateAvailable';\r\n public static cimClass = 'features/cim/namespaces/{0}/classes/{1}';\r\n public static cimQuery = 'features/cim/query';\r\n public static cimInvoke = '/methods/{0}/invoke';\r\n public static powerShellApiInvokeCommand = 'features/powershellApi/invokeCommand';\r\n public static powerShellApiSessions = 'features/powershellApi/pssessions/{0}';\r\n public static powerShellApiExecuteCommand: string = Net.powerShellApiSessions + '/invokeCommand';\r\n public static powerShellApiRetrieveOutput: string = Net.powerShellApiSessions + '?$expand=output';\r\n public static powerShellApiCancelCommand: string = Net.powerShellApiSessions + '/cancel';\r\n public static powerShellConsoleSessions = 'features/powershellConsole/pssessions/{0}';\r\n public static powerShellConsoleExecuteCommand: string = Net.powerShellConsoleSessions + '/invokeCommand';\r\n public static powerShellConsoleRetrieveOutput: string = Net.powerShellConsoleSessions + '?$expand=output';\r\n public static stopCommand: string = Net.powerShellConsoleSessions + '/cancel';\r\n public static tabCommand: string = Net.powerShellConsoleSessions + '/tab';\r\n public static userProfile = '/settings/user';\r\n public static applicationSettings = '/settings/all';\r\n public static adminSettings = '/settings/admin';\r\n public static user = '/user';\r\n\r\n public static fileTransferFormat = 'features/fileTransfer/files/{0}';\r\n public static fileTransferDownloadPost: string = Net.fileTransferFormat + '/download';\r\n public static fileTransferUpload: string = Net.fileTransferFormat + '/uploadlink';\r\n\r\n public static jeaFeature = 'features/jea/endpoint';\r\n public static jeaExport = Net.jeaFeature + '/export';\r\n\r\n public static gateway = '/gateway';\r\n public static gatewayAccessCheck = Net.gateway + '/access/check';\r\n public static gatewayStatus = Net.gateway + '/status';\r\n\r\n // {HttpMethod} {relativeNodeUrl} HTTP/1.1\r\n public static multiPartCallBodyUrl = '{0} {1} HTTP/1.1';\r\n\r\n /**\r\n * Gateway version 2.0.0 Node API set.\r\n */\r\n /**\r\n * WinREST service on Windows platform.\r\n */\r\n public static serviceWinRest = 'WinREST';\r\n\r\n /**\r\n * WinStream service on Windows platform.\r\n */\r\n public static serviceWinStream = 'WinStream';\r\n\r\n /**\r\n * LinuxBase on Linux platform.\r\n */\r\n public static serviceLinuxBase = 'LinuxBase';\r\n\r\n /**\r\n * ActiveDirectory on WinREST.\r\n */\r\n public static controllerActiveDirectory = 'ActiveDirectory';\r\n\r\n /**\r\n * CIM on WinREST.\r\n */\r\n public static controllerCim = 'CIM';\r\n\r\n /**\r\n * Extensions on WinREST.\r\n */\r\n public static controllerExtensions = 'Extensions';\r\n\r\n /**\r\n * FileTransfer on WinREST.\r\n */\r\n public static controllerFileTransfer = 'FileTransfer';\r\n\r\n /**\r\n * JEA on WinREST.\r\n */\r\n public static controllerJea = 'JEA';\r\n\r\n /**\r\n * Nuget on WinREST.\r\n */\r\n public static controllerNuget = 'Nuget';\r\n\r\n /**\r\n * PerformanceCounter on WinREST.\r\n */\r\n public static controllerPerformanceCounter = 'PerformanceCounter';\r\n\r\n /**\r\n * PowerShell on WinREST.\r\n */\r\n public static controllerPowerShell = 'PowerShell';\r\n\r\n /**\r\n * PseudoConsole on WinStream.\r\n */\r\n public static controllerPseudoConsole = 'PseudoConsole';\r\n\r\n /**\r\n * Ssh on LinuxBase.\r\n */\r\n public static controllerSsh = 'Ssh';\r\n\r\n /**\r\n * SshFile on LinuxBase.\r\n */\r\n public static controllerSshFile = 'SshFile';\r\n\r\n /**\r\n * State on WinREST.\r\n */\r\n public static controllerState = 'State';\r\n\r\n /**\r\n * Stream on WinStream.\r\n */\r\n public static controllerStream = 'Stream';\r\n\r\n /**\r\n * Stream on LinuxBase.\r\n */\r\n public static controllerStreamSsh = 'StreamSsh';\r\n\r\n /**\r\n * Tcp on WinStream and LinuxBase.\r\n */\r\n public static controllerTcp = 'Tcp';\r\n\r\n /**\r\n * Wdac on WinREST.\r\n */\r\n public static controllerWdac = 'Wdac';\r\n\r\n /**\r\n * Socket URL on WinStream.\r\n */\r\n public static streamSocketV200 = '{0}/api/services/' + Net.serviceWinStream + '/' + Net.controllerStream + '/socket/{1}';\r\n\r\n /**\r\n * Socket URL on LinuxBase.\r\n */\r\n public static sshStreamSocket = '{0}/api/services/' + Net.serviceLinuxBase + '/' + Net.controllerStreamSsh + '/socket';\r\n\r\n /**\r\n * Encodes the specified data as Base64-encoded URL.\r\n *\r\n * If the resultant URL is longer than 260 characters, it is converted to a\r\n * relative path where each segment (e.g. '/') defines the character length boundary.\r\n * The HTTP.SYS subsystem in Windows does now allow a URL segment larger than 260\r\n * characters without changing a Registry key and restarting the OS.\r\n * @param data The data to be encoded.\r\n * @return An encoded Base64 URL, potentially segmented by '/' every 260 characters.\r\n */\r\n public static toSegmentedBase64Url(data: string): string {\r\n const MAX_HTTP_SYS_URL_SEGMENT_LENGTH = 260;\r\n const base64Url = Net.utf8Base64UrlEncode(data);\r\n const parts = Net.splitByLength(base64Url, MAX_HTTP_SYS_URL_SEGMENT_LENGTH);\r\n return parts.join('/');\r\n }\r\n\r\n /**\r\n * Update URL with api-version=20190201.\r\n * @param url the original URL\r\n * @returns new url string added version parameter.\r\n */\r\n public static updateApiVersion20190201(url: string): string {\r\n const index = url.indexOf('?');\r\n const prefix = index > 0 ? '&' : '?';\r\n if (index > 0 && url.indexOf(`${Net.apiVersionParam}=`) > 0) {\r\n return url;\r\n }\r\n\r\n return `${url}${prefix}${Net.apiVersionParam}=${Net.apiVersion20190201}`;\r\n }\r\n\r\n /**\r\n * Convert IPV6 address to literal format.\r\n *\r\n * @param ipv6Address the ipv6 address format.\r\n */\r\n public static convertIPv6ToLiteral(ipv6Address: string): string {\r\n let data = '';\r\n for (let i = 0; i < ipv6Address.length; i++) {\r\n let ch = ipv6Address.charAt(i);\r\n if (ch === ':') {\r\n ch = '-';\r\n } else if (ch === '%') {\r\n ch = 's';\r\n }\r\n\r\n data += ch;\r\n }\r\n\r\n return `${data}.ipv6-literal.net`;\r\n }\r\n\r\n /**\r\n * Convert IPV6 address to literal format.\r\n *\r\n * @param ipv6Address the ipv6 address format.\r\n */\r\n public static convertLiteralToIPv6(literal: string): string {\r\n const firstSegment = literal.split('.ipv6-literal.net')[0];\r\n if (!firstSegment) {\r\n throw new Error('Not recognized as an IPv6 literal format: \\'{0}\\'!'.format(literal || 'null'));\r\n }\r\n\r\n let data = '';\r\n for (let i = 0; i < firstSegment.length; i++) {\r\n let ch = firstSegment.charAt(i);\r\n if (ch === '-') {\r\n ch = ':';\r\n } else if (ch === 's') {\r\n ch = '%';\r\n }\r\n\r\n data += ch;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Encode a string with base64url.\r\n *\r\n * @param data the input string.\r\n * @return string the encoded string.\r\n */\r\n public static base64urlEncode(data: string): string {\r\n // REF: https://tools.ietf.org/html/rfc4648#section-5\r\n const base64 = window.btoa(data);\r\n let base64Url = '';\r\n\r\n for (let i = 0; i < base64.length; i++) {\r\n const ch = base64.charAt(i);\r\n\r\n switch (ch) {\r\n case '+':\r\n base64Url += '-';\r\n break;\r\n case '/':\r\n base64Url += '_';\r\n break;\r\n case '=':\r\n return base64Url;\r\n default:\r\n base64Url += ch;\r\n break;\r\n }\r\n }\r\n\r\n return base64Url;\r\n }\r\n\r\n /**\r\n * Decode a base64 url string.\r\n *\r\n * @param data the string to decode.\r\n * @return string the decoded string.\r\n */\r\n public static base64urlDecode(data: string): string {\r\n while (data.length % 4 !== 0) {\r\n data += '=';\r\n }\r\n\r\n data = data.replaceAll('-', '+').replaceAll('_', '/');\r\n return window.atob(data);\r\n }\r\n\r\n /**\r\n * Encode utf8 string.\r\n *\r\n * @param data the unencoded string.\r\n */\r\n public static utf8Encode(data: string): string {\r\n return unescape(encodeURIComponent(data));\r\n }\r\n\r\n /**\r\n * Decode utf8 string.\r\n *\r\n * @param data the encoded UTF8 string.\r\n */\r\n public static utf8Decode(data: string): string {\r\n return decodeURIComponent(escape(data));\r\n }\r\n\r\n /**\r\n * Encode with utf8 (first) and base64url (second).\r\n *\r\n * @param data data the original string to encode. The string can be full unicode character string.\r\n * @return string the encoded string used on a part of URL.\r\n */\r\n public static utf8Base64UrlEncode(data: string): string {\r\n const utf8: string = Net.utf8Encode(data);\r\n return Net.base64urlEncode(utf8);\r\n }\r\n\r\n /**\r\n * Decode with utf8 (second) and base64url (first).\r\n *\r\n * @param data data the encoded URL string to decode.\r\n * @return string the decoded unicode string.\r\n */\r\n public static utf8Base64UrlDecode(data: string): string {\r\n const utf8: string = Net.base64urlDecode(data);\r\n return Net.utf8Decode(utf8);\r\n }\r\n\r\n /**\r\n * Create a key name from key value pairs.\r\n *\r\n * @param properties the key value pairs.\r\n * @return string the key name.\r\n */\r\n public static cimCreateName(properties: any): string {\r\n const data: string = JSON.stringify(properties);\r\n const utf8: string = Net.utf8Encode(data);\r\n return Net.base64urlEncode(utf8);\r\n }\r\n\r\n /**\r\n * Get properties of the item from the response.\r\n *\r\n * @param data the item in the response object.\r\n * @return any the properties.\r\n */\r\n public static getItemProperties(data: any): any {\r\n if (data && data.properties) {\r\n return data.properties;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Get properties of first item from the response.\r\n *\r\n * @param data the response object.\r\n * @return any the properties.\r\n */\r\n public static getFirstProperties(data: any): any {\r\n if (data && data.value && data.value.length) {\r\n if (data.value[0].properties) {\r\n return data.value[0].properties;\r\n }\r\n } else if (data && data.length) {\r\n return data[0];\r\n }\r\n\r\n return Net.getItemProperties(data);\r\n }\r\n\r\n /**\r\n * Get array of items from the response.\r\n *\r\n * @param data the response object.\r\n * @return any the item array.\r\n */\r\n public static getItemArray(data: any): any {\r\n if (data && data.value) {\r\n return data.value;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Create JSON string with properties.\r\n *\r\n * @param data the input data.\r\n * @return string the JSON string with properties.\r\n */\r\n public static createPropertiesJSONString(data: any): string {\r\n return JSON.stringify({\r\n properties: data\r\n });\r\n }\r\n\r\n /**\r\n * Creates an encoded authentication header.\r\n *\r\n * @param usersName name of user.\r\n * @param password the password.\r\n * @return the token string.\r\n */\r\n public static createEncodedAuthenticationHeader(userNames: string[], password: string, passwordEncryptedWith: string = null): string {\r\n const credentials: any = {\r\n ...Net.toUsernameAndDomain(userNames),\r\n password: password\r\n };\r\n if (!MsftSme.isNullOrWhiteSpace(passwordEncryptedWith)) {\r\n credentials.passwordEncryptedWith = passwordEncryptedWith;\r\n }\r\n return window.btoa(Net.utf8Encode(JSON.stringify(credentials)));\r\n }\r\n\r\n public static toUsernameAndDomain(value: string): { domain: string, username: string };\r\n public static toUsernameAndDomain(value: string[]): { domain: string, username: string };\r\n public static toUsernameAndDomain(value: string | string[]): { domain: string, username: string } {\r\n let username: string[];\r\n if (Array.isArray(value)) {\r\n username = value;\r\n } else if (value.indexOf('@') >= 0) {\r\n // domain is empty if UPN is used.\r\n username = [\"\", value];\r\n } else {\r\n username = value.split('\\\\');\r\n }\r\n\r\n return {\r\n // if only a username was provided, use '.' (shorthand for the locale machine hostname)\r\n domain: username.length === 1 ? '.' : username[0],\r\n username: username.length === 1 ? username[0] : username[1]\r\n };\r\n }\r\n\r\n /**\r\n * Creates an encrypted authentication header value.\r\n *\r\n * @param jwk the JWK (Json Web Key)\r\n * @param usersName name of user.\r\n * @param password the password.\r\n * @param logonUser the gateway user\r\n * @param expirationTimeInMs manage as token expiration time in milliseconds\r\n * @return the token string.\r\n */\r\n public static createEncryptedAuthenticationHeader(\r\n jwk: string,\r\n userNames: string[],\r\n password: string,\r\n logonUser: string,\r\n expirationTimeInMs: number\r\n ): Observable<string> {\r\n const credentials: Credentials = {\r\n ...Net.toUsernameAndDomain(userNames),\r\n password: password,\r\n passwordEncryptedWith: undefined\r\n };\r\n const passwordData = Net.createPasswordData(credentials, logonUser, expirationTimeInMs);\r\n return Crypto.encryptRsaSha1(jwk, passwordData)\r\n .pipe(\r\n map(encryptedPassword => {\r\n credentials.password = encryptedPassword;\r\n credentials.passwordEncryptedWith = 'JWK2';\r\n return window.btoa(Net.utf8Encode(JSON.stringify(credentials)));\r\n }),\r\n catchError(() => of(\r\n window.btoa(Net.utf8Encode(JSON.stringify(credentials)))\r\n ))\r\n );\r\n }\r\n\r\n private static createPasswordData(\r\n credentials: Credentials,\r\n logOnUser: string,\r\n expirationTimeInMs: number\r\n ): string {\r\n const millisecondsInHour = 60 * 60 * 1000;\r\n const hoursInYear = 365 * 24;\r\n\r\n const currentTimeStamp = Date.now();\r\n const expirationOffsetInMilliseconds = expirationTimeInMs || (hoursInYear * millisecondsInHour);\r\n\r\n const passwordData = {\r\n p: credentials.password,\r\n l: logOnUser,\r\n t: currentTimeStamp,\r\n e: currentTimeStamp + expirationOffsetInMilliseconds\r\n };\r\n\r\n return JSON.stringify(passwordData);\r\n }\r\n\r\n /**\r\n * Creates encrypted data for auth header\r\n * @param jwk the JSON web key to be used to encrypt data\r\n * @param data the data to be encrypted\r\n * @returns an encrypted string\r\n */\r\n public static createEncryptedExtensionDataHeader(jwk: string, data: string) {\r\n return Crypto.encryptRsaSha1(jwk, data)\r\n .pipe(map(encryptedData => window.btoa(Net.utf8Encode(encryptedData))));\r\n }\r\n\r\n /**\r\n * Create /api/nodes URL with relativeUrl.\r\n *\r\n * @param gatewayName The name of gateway.\r\n * @param nodeName The name of node.\r\n * @param relativeUrl The relative Url.\r\n */\r\n public static gatewayNodeApi(gatewayName: string, nodeName: string, relativeUrl?: string): string {\r\n\r\n if (!relativeUrl) {\r\n relativeUrl = '';\r\n }\r\n\r\n if (!relativeUrl.startsWith('/')) {\r\n relativeUrl = '/' + relativeUrl;\r\n }\r\n\r\n if (!nodeName) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.ArgumentNullError.message;\r\n throw new Error(message.format('Net/gatewayNodeApi', 'nodeName'));\r\n }\r\n\r\n return Net.gatewayApi(gatewayName, `/nodes/${nodeName}${relativeUrl}`);\r\n }\r\n\r\n /**\r\n * Create /api URL with relativeUrl.\r\n *\r\n * @param gatewayName The name of gateway.\r\n * @param nodeName The name of node.\r\n * @param relativeUrl The relative Url.\r\n */\r\n public static gatewayApi(gatewayName: string, relativeUrl?: string): string {\r\n if (!gatewayName) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.ArgumentNullError.message;\r\n throw new Error(message.format('Net/gatewayApi', 'gatewayName'));\r\n }\r\n\r\n if (!relativeUrl) {\r\n relativeUrl = '';\r\n }\r\n\r\n if (!relativeUrl.startsWith('/')) {\r\n relativeUrl = '/' + relativeUrl;\r\n }\r\n\r\n gatewayName = gatewayName.toLowerCase();\r\n if (!gatewayName.startsWith('http://') && !gatewayName.startsWith('https://')) {\r\n gatewayName = 'https://' + gatewayName;\r\n }\r\n\r\n return `${gatewayName}/api${relativeUrl}`;\r\n }\r\n\r\n /**\r\n * Get error message from ajax result or any other error result and optionally includes native error message.\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @param options add additional optional error message: such as native error messages if possible\r\n * @return string the error message.\r\n */\r\n public static getErrorMessage(error: any, options?: ErrorMessageOptions): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const prefixFormat = strings.Error.PrefixFormat.message;\r\n const errorPrefix = options && options.errorPrefix;\r\n const xhr = error && error.xhr;\r\n const exception = error && error.exception;\r\n\r\n if (typeof error === 'string') {\r\n return errorPrefix ? prefixFormat.format(error) : error;\r\n }\r\n\r\n if (xhr && xhr.response) {\r\n const message = Net.parseErrorResponse(xhr.response, options);\r\n if (message) {\r\n return errorPrefix ? prefixFormat.format(message) : message;\r\n }\r\n }\r\n\r\n if (error && error.message) {\r\n const errorMessage = errorPrefix ? prefixFormat.format(error.message) : error.message;\r\n if(error.details && Array.isArray(error.details)) {\r\n // Add details to error message.\r\n return this.parseErrorDetails(error.details, errorMessage);\r\n }\r\n return errorMessage;\r\n }\r\n\r\n if (exception && exception.message) {\r\n return errorPrefix ? prefixFormat.format(exception.message) : exception.message;\r\n }\r\n\r\n const statusText = xhr && xhr.statusText;\r\n if (statusText) {\r\n return errorPrefix ? prefixFormat.format(statusText) : statusText;\r\n }\r\n\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n private static parseErrorDetails(details: any, message: string): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const detailsText = strings.Error.Details.text;\r\n const errorMessages = details.map((detail) => {\r\n try {\r\n const parsedDetail = JSON.parse(detail.message);\r\n if (parsedDetail?.error?.message) {\r\n return parsedDetail.error.message;\r\n }\r\n } catch (error) {\r\n // The message is not valid JSON\r\n return detail.message;\r\n }\r\n });\r\n // Joining the error messages with newline characters\r\n const detailsMessage = `${detailsText}\\n${errorMessages.join('\\n\\n')}`;\r\n // Joining the actual error message with details\r\n return `${message}\\n\\n${detailsMessage}`;\r\n }\r\n\r\n /**\r\n * Get error message from PowerShell ajax response.\r\n * Can be used by a PowerShell batch consumer to get error message in batch response.\r\n *\r\n * @param response the ajax response.\r\n * @return string the error message.\r\n */\r\n public static getPowerShellErrorMessage(response: any): string {\r\n const message = Net.parseErrorResponse(response);\r\n if (message) {\r\n return message;\r\n }\r\n\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n /**\r\n * Get error code from ajax result.\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @return string the error code.\r\n */\r\n public static getErrorCode(error: any): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const err = error && error.xhr && error.xhr.response && error.xhr.response.error;\r\n if (!err) {\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n if (err.code) {\r\n return err.code;\r\n }\r\n\r\n throw new Error(strings.Error.NoCode.message);\r\n }\r\n\r\n /**\r\n * Get error message from ajax result excluding error stackTrace\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @return string the error.\r\n */\r\n public static getErrorMessageWithoutStacktrace(error: any): string {\r\n let errorMessage: string = Net.getErrorMessage(error);\r\n if (errorMessage) {\r\n const stackTraceIndex: number = errorMessage.toLowerCase().indexOf('stacktrace');\r\n if (stackTraceIndex > 0) {\r\n errorMessage = errorMessage.substring(0, stackTraceIndex);\r\n }\r\n }\r\n\r\n return errorMessage;\r\n }\r\n\r\n /**\r\n * Translates error code to string\r\n *\r\n * @param code the error code\r\n * @return string the related error string.\r\n */\r\n public static translateErrorCode(code: number): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const message: string = Net.errorCodeMap[code];\r\n if (message) {\r\n return strings.ErrorCode.Translated.message.format(message, code);\r\n }\r\n\r\n return strings.ErrorCode.Generic.message.format(code);\r\n }\r\n\r\n /**\r\n * Determine if this is an authorization login error. This code never work if it uses NTLM or Kerberos.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isUnauthorizedLogin(error: AjaxError): boolean {\r\n // new login 401 handling.\r\n const forbidden = error?.xhr?.response?.error?.forbidden;\r\n return error.status === HttpStatusCode.Unauthorized && forbidden && forbidden === 'UnauthorizedLogin';\r\n }\r\n\r\n /**\r\n * Determine if this is an authorization error.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isUnauthorized(error: AjaxError): boolean {\r\n const errorObject = error?.xhr?.response?.error;\r\n const forbidden = errorObject?.forbidden;\r\n if (forbidden) {\r\n // new 403 handling.\r\n return error.status === HttpStatusCode.Forbidden && forbidden === 'Unauthorized';\r\n } else {\r\n // legacy 401 handling. (this should be obsolete now)\r\n const unauthorized = errorObject?.unauthorized;\r\n return error.status === HttpStatusCode.Unauthorized && !(unauthorized && unauthorized === 'UnauthorizedLogin');\r\n }\r\n }\r\n\r\n /**\r\n * Determine if this is an forbidden error.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isForbidden(error: AjaxError): boolean {\r\n const forbidden = error?.xhr?.response?.error?.forbidden;\r\n if (forbidden) {\r\n // new forbidden.\r\n return error.status === HttpStatusCode.BadRequest && forbidden === 'Forbidden';\r\n } else {\r\n // legacy 403 handling.\r\n return error.status === HttpStatusCode.Forbidden;\r\n }\r\n }\r\n\r\n /**\r\n * Get property from an ErrorExtended error object\r\n *\r\n * @param error The ErrorExtended error object.\r\n * @param sourceName The source of the error.\r\n * @param propertyName The property to get from the error object.\r\n * @return The value of the property or null if the source doesn't match.\r\n */\r\n public static getErrorExtendedProperty<T1, T2>(error: ErrorExtended<T1>, sourceName: string, propertyName: string): T2 {\r\n if (error.extendedSource &&\r\n (error.extendedSource === sourceName || error.extendedSource.includes(sourceName))) {\r\n return <T2>error?.extended[propertyName];\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Parse error message from standard ajax error and PowerShell errors.\r\n *\r\n * @param response the ajax response.\r\n * @return string the error message.\r\n */\r\n private static parseErrorResponse(response: any, options?: ErrorMessageOptions): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const err = response && response.error;\r\n if (err && err.message) {\r\n const errorMessage = err.message;\r\n\r\n if (options && options.addNativeError && err.detailRecord) {\r\n return strings.Error.AddNativeErrorCode.message.format(errorMessage, err.detailRecord.nativeErrorCode);\r\n }\r\n\r\n return errorMessage;\r\n }\r\n\r\n const psErrors: any[] = response && response.errors;\r\n if (psErrors && psErrors.length > 0) {\r\n if (psErrors.length === 1) {\r\n if (options && options.addNativeError && psErrors[0].detailRecord) {\r\n\r\n if (options && options.useRemoteExceptionMessage) {\r\n return strings.ErrorFormat.Single.Details.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].detailRecord.remoteExceptionMessage,\r\n psErrors[0].detailRecord.nativeErrorCode);\r\n }\r\n\r\n return strings.ErrorFormat.Single.Details.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].message,\r\n psErrors[0].detailRecord.nativeErrorCode);\r\n }\r\n\r\n if (options && options.useRemoteExceptionMessage && psErrors[0].detailRecord) {\r\n return strings.ErrorFormat.Single.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].detailRecord.remoteExceptionMessage);\r\n }\r\n return strings.ErrorFormat.Single.message.format(psErrors[0].errorType, psErrors[0].message);\r\n }\r\n\r\n let joinedMessage = '';\r\n for (let i = 0; i < psErrors.length; i++) {\r\n if (options && options.addNativeError && psErrors[i].detailRecord) {\r\n joinedMessage += strings.ErrorFormat.Multiple.Details.message.format(\r\n i + 1,\r\n psErrors[i].errorType,\r\n psErrors[i].message,\r\n psErrors[i].detailRecord.nativeErrorCode);\r\n } else if (options && options.useRemoteExceptionMessage && psErrors[i].detailRecord) {\r\n joinedMessage += strings.ErrorFormat.Multiple.message.format(\r\n i + 1,\r\n psErrors[i].errorType,\r\n psErrors[i].detailRecord.remoteExceptionMessage);\r\n } else {\r\n joinedMessage += strings.ErrorFormat.Multiple.message.format(i + 1, psErrors[i].errorType, psErrors[i].message);\r\n }\r\n }\r\n\r\n return joinedMessage;\r\n }\r\n\r\n if (response && response.exception) {\r\n return response.exception;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private static splitByLength(text: string, length: number): string[] {\r\n const parts = new Array<string>();\r\n\r\n if (text === null) {\r\n return parts;\r\n }\r\n\r\n const totalLength = text.length;\r\n const count = Math.ceil(totalLength / length);\r\n\r\n if (count < 2) {\r\n parts.push(text);\r\n return parts;\r\n }\r\n\r\n const lastPart = count - 1;\r\n let position = 0;\r\n\r\n for (let i = 0; i < lastPart; i++, position += length) {\r\n parts.push(text.substring(position, position + length));\r\n }\r\n\r\n parts.push(text.substring(position));\r\n\r\n return parts;\r\n }\r\n}\r\n"]}
package/core/data/net.js CHANGED
@@ -738,7 +738,7 @@ export class Net {
738
738
  const lastPart = count - 1;
739
739
  let position = 0;
740
740
  for (let i = 0; i < lastPart; i++, position += length) {
741
- parts.push(text.substring(position, length));
741
+ parts.push(text.substring(position, position + length));
742
742
  }
743
743
  parts.push(text.substring(position));
744
744
  return parts;
@@ -746,3 +746,315 @@ export class Net {
746
746
  }
747
747
 
748
748
  //# sourceMappingURL=net.js.map
749
+
750
+ // SIG // Begin signature block
751
+ // SIG // MIInzwYJKoZIhvcNAQcCoIInwDCCJ7wCAQExDzANBglg
752
+ // SIG // hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
753
+ // SIG // BgEEAYI3AgEeMCQCAQEEEBDgyQbOONQRoqMAEEvTUJAC
754
+ // SIG // AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
755
+ // SIG // 4ngYDGhavZNjD3TiQMRcNIU67vpaTjZNJYyzsfeljAyg
756
+ // SIG // gg2FMIIGAzCCA+ugAwIBAgITMwAAA64tNVHIU49VHQAA
757
+ // SIG // AAADrjANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV
758
+ // SIG // UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
759
+ // SIG // UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
760
+ // SIG // cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT
761
+ // SIG // aWduaW5nIFBDQSAyMDExMB4XDTIzMTExNjE5MDg1OVoX
762
+ // SIG // DTI0MTExNDE5MDg1OVowdDELMAkGA1UEBhMCVVMxEzAR
763
+ // SIG // BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
764
+ // SIG // bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
765
+ // SIG // bjEeMBwGA1UEAxMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
766
+ // SIG // MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
767
+ // SIG // 9CD8pjY3wxCoPmMhOkow7ycCltfqYnqk4wGNApzh2dTY
768
+ // SIG // +YqxozWTzJUOB38VxsgFQmXBFhOMdrGYGpvO9kdbNPkw
769
+ // SIG // HpTrW6hZqFuLLiRwGKEx4ZM5zVSqbHJuX2fPfUJ0Xmb+
770
+ // SIG // VrVsGw/BwBV2zz0rVtiSgqj3GeeGOsG7llfWyrSjyJqm
771
+ // SIG // 5DHE3o04BAI/NuhkHOv04euiqJGvHFCL8+fXvyD9OAxq
772
+ // SIG // 4fcJKtoyBb0PBA3oMNQeCsiUyLO+voZqVTOUsAWY0bN5
773
+ // SIG // YjkK4nq5DVaNdVrrowd5AX9gmz6D/TJTssns6pDCG00Y
774
+ // SIG // +Dh3ipWpnVmkhYcByyUSEKX3PLC8DkiAQQIDAQABo4IB
775
+ // SIG // gjCCAX4wHwYDVR0lBBgwFgYKKwYBBAGCN0wIAQYIKwYB
776
+ // SIG // BQUHAwMwHQYDVR0OBBYEFIcf73Spl4cHOFoll27H9COd
777
+ // SIG // 4fE/MFQGA1UdEQRNMEukSTBHMS0wKwYDVQQLEyRNaWNy
778
+ // SIG // b3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQx
779
+ // SIG // FjAUBgNVBAUTDTIzMDAxMis1MDE4MzYwHwYDVR0jBBgw
780
+ // SIG // FoAUSG5k5VAF04KqFzc3IrVtqMp1ApUwVAYDVR0fBE0w
781
+ // SIG // SzBJoEegRYZDaHR0cDovL3d3dy5taWNyb3NvZnQuY29t
782
+ // SIG // L3BraW9wcy9jcmwvTWljQ29kU2lnUENBMjAxMV8yMDEx
783
+ // SIG // LTA3LTA4LmNybDBhBggrBgEFBQcBAQRVMFMwUQYIKwYB
784
+ // SIG // BQUHMAKGRWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w
785
+ // SIG // a2lvcHMvY2VydHMvTWljQ29kU2lnUENBMjAxMV8yMDEx
786
+ // SIG // LTA3LTA4LmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3
787
+ // SIG // DQEBCwUAA4ICAQBqyWA1Eu7PKNMjaaxl0V7gJ0XBysUo
788
+ // SIG // xZluMHJXFE2LEGZIZ2zMLYVjOnAGG/4dluRjSrZZo/8v
789
+ // SIG // wk4Xt8v6NBB9ofo8H1P/XidHytWTv9lg9MYu++6lPmu5
790
+ // SIG // fCozD3cI2NLZPW2BBhGX2D0R8tQBj0FbmZRuIucpiQ7D
791
+ // SIG // K3CHKlfKcc7MP8pPzuMv55Tox8+KFQD1NG6+bfbYA/BN
792
+ // SIG // PBkg4tyOh+exbaHfcNuodDJUIjq9dF6oa+Yjy0u0pUMI
793
+ // SIG // /B1t+8m6rJo0KSoZlrpesYl0jRhpt+hmqx8uENXoGJcY
794
+ // SIG // ZVJ5N2Skq90LViKNRhi9N4U+e8c4y9uXyomUF/6viCPJ
795
+ // SIG // 7huTNEJo75ehIJba+IWd3txUEc0R3y6DT6txC6cW1nR/
796
+ // SIG // LTbo9I/8fQq538G5IvJ+e5iSiOSVVkVk0i5m03Awy5E2
797
+ // SIG // ZSS4PVdQSCcFxmN4tpEfYuR7AAy/GJVtIDFlUpSgdXok
798
+ // SIG // pSui5hYtK1R9enXXvo+U/xGkLRc+qp4De3dZbzu7pOq7
799
+ // SIG // V/jCyhuCw0bEIAU4urCGIip7TI6GBRzD7yPzjFIqeZY7
800
+ // SIG // S4rVW5BRn2oEqpm8Su6yTIQvMIk8x2pwYNUa2339Z4gW
801
+ // SIG // 5xW21eFA5mLpo7NRSKRQms5OgAA18aCgqOU7Ds0h6q/Y
802
+ // SIG // B4BmEAtoTMl/TBiyKaMGAlEcdy+5FIhmzojMGjCCB3ow
803
+ // SIG // ggVioAMCAQICCmEOkNIAAAAAAAMwDQYJKoZIhvcNAQEL
804
+ // SIG // BQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo
805
+ // SIG // aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK
806
+ // SIG // ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMT
807
+ // SIG // KU1pY3Jvc29mdCBSb290IENlcnRpZmljYXRlIEF1dGhv
808
+ // SIG // cml0eSAyMDExMB4XDTExMDcwODIwNTkwOVoXDTI2MDcw
809
+ // SIG // ODIxMDkwOVowfjELMAkGA1UEBhMCVVMxEzARBgNVBAgT
810
+ // SIG // Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc
811
+ // SIG // BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYG
812
+ // SIG // A1UEAxMfTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQQ0Eg
813
+ // SIG // MjAxMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
814
+ // SIG // ggIBAKvw+nIQHC6t2G6qghBNNLrytlghn0IbKmvpWlCq
815
+ // SIG // uAY4GgRJun/DDB7dN2vGEtgL8DjCmQawyDnVARQxQtOJ
816
+ // SIG // DXlkh36UYCRsr55JnOloXtLfm1OyCizDr9mpK656Ca/X
817
+ // SIG // llnKYBoF6WZ26DJSJhIv56sIUM+zRLdd2MQuA3WraPPL
818
+ // SIG // bfM6XKEW9Ea64DhkrG5kNXimoGMPLdNAk/jj3gcN1Vx5
819
+ // SIG // pUkp5w2+oBN3vpQ97/vjK1oQH01WKKJ6cuASOrdJXtjt
820
+ // SIG // 7UORg9l7snuGG9k+sYxd6IlPhBryoS9Z5JA7La4zWMW3
821
+ // SIG // Pv4y07MDPbGyr5I4ftKdgCz1TlaRITUlwzluZH9TupwP
822
+ // SIG // rRkjhMv0ugOGjfdf8NBSv4yUh7zAIXQlXxgotswnKDgl
823
+ // SIG // mDlKNs98sZKuHCOnqWbsYR9q4ShJnV+I4iVd0yFLPlLE
824
+ // SIG // tVc/JAPw0XpbL9Uj43BdD1FGd7P4AOG8rAKCX9vAFbO9
825
+ // SIG // G9RVS+c5oQ/pI0m8GLhEfEXkwcNyeuBy5yTfv0aZxe/C
826
+ // SIG // HFfbg43sTUkwp6uO3+xbn6/83bBm4sGXgXvt1u1L50kp
827
+ // SIG // pxMopqd9Z4DmimJ4X7IvhNdXnFy/dygo8e1twyiPLI9A
828
+ // SIG // N0/B4YVEicQJTMXUpUMvdJX3bvh4IFgsE11glZo+TzOE
829
+ // SIG // 2rCIF96eTvSWsLxGoGyY0uDWiIwLAgMBAAGjggHtMIIB
830
+ // SIG // 6TAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQUSG5k
831
+ // SIG // 5VAF04KqFzc3IrVtqMp1ApUwGQYJKwYBBAGCNxQCBAwe
832
+ // SIG // CgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB
833
+ // SIG // /wQFMAMBAf8wHwYDVR0jBBgwFoAUci06AjGQQ7kUBU7h
834
+ // SIG // 6qfHMdEjiTQwWgYDVR0fBFMwUTBPoE2gS4ZJaHR0cDov
835
+ // SIG // L2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVj
836
+ // SIG // dHMvTWljUm9vQ2VyQXV0MjAxMV8yMDExXzAzXzIyLmNy
837
+ // SIG // bDBeBggrBgEFBQcBAQRSMFAwTgYIKwYBBQUHMAKGQmh0
838
+ // SIG // dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMv
839
+ // SIG // TWljUm9vQ2VyQXV0MjAxMV8yMDExXzAzXzIyLmNydDCB
840
+ // SIG // nwYDVR0gBIGXMIGUMIGRBgkrBgEEAYI3LgMwgYMwPwYI
841
+ // SIG // KwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNv
842
+ // SIG // bS9wa2lvcHMvZG9jcy9wcmltYXJ5Y3BzLmh0bTBABggr
843
+ // SIG // BgEFBQcCAjA0HjIgHQBMAGUAZwBhAGwAXwBwAG8AbABp
844
+ // SIG // AGMAeQBfAHMAdABhAHQAZQBtAGUAbgB0AC4gHTANBgkq
845
+ // SIG // hkiG9w0BAQsFAAOCAgEAZ/KGpZjgVHkaLtPYdGcimwuW
846
+ // SIG // EeFjkplCln3SeQyQwWVfLiw++MNy0W2D/r4/6ArKO79H
847
+ // SIG // qaPzadtjvyI1pZddZYSQfYtGUFXYDJJ80hpLHPM8QotS
848
+ // SIG // 0LD9a+M+By4pm+Y9G6XUtR13lDni6WTJRD14eiPzE32m
849
+ // SIG // kHSDjfTLJgJGKsKKELukqQUMm+1o+mgulaAqPyprWElj
850
+ // SIG // HwlpblqYluSD9MCP80Yr3vw70L01724lruWvJ+3Q3fMO
851
+ // SIG // r5kol5hNDj0L8giJ1h/DMhji8MUtzluetEk5CsYKwsat
852
+ // SIG // ruWy2dsViFFFWDgycScaf7H0J/jeLDogaZiyWYlobm+n
853
+ // SIG // t3TDQAUGpgEqKD6CPxNNZgvAs0314Y9/HG8VfUWnduVA
854
+ // SIG // KmWjw11SYobDHWM2l4bf2vP48hahmifhzaWX0O5dY0Hj
855
+ // SIG // Wwechz4GdwbRBrF1HxS+YWG18NzGGwS+30HHDiju3mUv
856
+ // SIG // 7Jf2oVyW2ADWoUa9WfOXpQlLSBCZgB/QACnFsZulP0V3
857
+ // SIG // HjXG0qKin3p6IvpIlR+r+0cjgPWe+L9rt0uX4ut1eBrs
858
+ // SIG // 6jeZeRhL/9azI2h15q/6/IvrC4DqaTuv/DDtBEyO3991
859
+ // SIG // bWORPdGdVk5Pv4BXIqF4ETIheu9BCrE/+6jMpF3BoYib
860
+ // SIG // V3FWTkhFwELJm3ZbCoBIa/15n8G9bW1qyVJzEw16UM0x
861
+ // SIG // ghmiMIIZngIBATCBlTB+MQswCQYDVQQGEwJVUzETMBEG
862
+ // SIG // A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u
863
+ // SIG // ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
864
+ // SIG // MSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5n
865
+ // SIG // IFBDQSAyMDExAhMzAAADri01UchTj1UdAAAAAAOuMA0G
866
+ // SIG // CWCGSAFlAwQCAQUAoIGuMBkGCSqGSIb3DQEJAzEMBgor
867
+ // SIG // BgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEE
868
+ // SIG // AYI3AgEVMC8GCSqGSIb3DQEJBDEiBCAqcbIwMJa6o0Us
869
+ // SIG // qqEvDAkmFT/vClhnXShOZAMVKZWN0TBCBgorBgEEAYI3
870
+ // SIG // AgEMMTQwMqAUgBIATQBpAGMAcgBvAHMAbwBmAHShGoAY
871
+ // SIG // aHR0cDovL3d3dy5taWNyb3NvZnQuY29tMA0GCSqGSIb3
872
+ // SIG // DQEBAQUABIIBAGFCxc2bfOc9MtgdwR3piSBZJOt1HadS
873
+ // SIG // dkGnrm549/Zq1hcIoZAMdOO9etnrkIzoXgU+z/qdOhRE
874
+ // SIG // D1lV9yCeEDZeSnuA1Uf+T3QpxChUQy2ZFJq0ifJ2QcJu
875
+ // SIG // 89QP2AwTK0QuiJnqWF5ZHLbV1qR0mWNNBgpgidaDVngz
876
+ // SIG // Coe3d1/zY8RFyk0qqZXIWM+5SkzLq+lEyjexZhz+mvlK
877
+ // SIG // mvEBS3UMuOpN4OLdlQ/+5fyjJf8I3KsgGSJpRWO5K47d
878
+ // SIG // 1qyPMEIvSAlV+qJnMeUNFLQnL0PY/5xHqkoQbDQ8c8ux
879
+ // SIG // 0DHLdSEK7ZGPTOrkVF69GmO7LMv3XOHBgScfL2kSDUdf
880
+ // SIG // UAehghcsMIIXKAYKKwYBBAGCNwMDATGCFxgwghcUBgkq
881
+ // SIG // hkiG9w0BBwKgghcFMIIXAQIBAzEPMA0GCWCGSAFlAwQC
882
+ // SIG // AQUAMIIBWQYLKoZIhvcNAQkQAQSgggFIBIIBRDCCAUAC
883
+ // SIG // AQEGCisGAQQBhFkKAwEwMTANBglghkgBZQMEAgEFAAQg
884
+ // SIG // A0YFDYb+EzmJJKUlvOnhYbuBYR/12btSPrNq9Mr/rYsC
885
+ // SIG // BmZy3KTIXRgTMjAyNDA2MjcwNjI0NDQuMzI2WjAEgAIB
886
+ // SIG // 9KCB2KSB1TCB0jELMAkGA1UEBhMCVVMxEzARBgNVBAgT
887
+ // SIG // Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc
888
+ // SIG // BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEtMCsG
889
+ // SIG // A1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9u
890
+ // SIG // cyBMaW1pdGVkMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVT
891
+ // SIG // TjoxNzlFLTRCQjAtODI0NjElMCMGA1UEAxMcTWljcm9z
892
+ // SIG // b2Z0IFRpbWUtU3RhbXAgU2VydmljZaCCEXswggcnMIIF
893
+ // SIG // D6ADAgECAhMzAAAB4NT8HxMVH35dAAEAAAHgMA0GCSqG
894
+ // SIG // SIb3DQEBCwUAMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
895
+ // SIG // EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w
896
+ // SIG // HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAk
897
+ // SIG // BgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAy
898
+ // SIG // MDEwMB4XDTIzMTAxMjE5MDcxOVoXDTI1MDExMDE5MDcx
899
+ // SIG // OVowgdIxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo
900
+ // SIG // aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK
901
+ // SIG // ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLTArBgNVBAsT
902
+ // SIG // JE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGlt
903
+ // SIG // aXRlZDEmMCQGA1UECxMdVGhhbGVzIFRTUyBFU046MTc5
904
+ // SIG // RS00QkIwLTgyNDYxJTAjBgNVBAMTHE1pY3Jvc29mdCBU
905
+ // SIG // aW1lLVN0YW1wIFNlcnZpY2UwggIiMA0GCSqGSIb3DQEB
906
+ // SIG // AQUAA4ICDwAwggIKAoICAQCsh5zzocW70QE5xo2/+n7g
907
+ // SIG // YYd2S86LQMQIHS2mf85ERVHXkis8jbd7aqKzCuxg73F3
908
+ // SIG // SrPqiDFG73p5R/sOd7LD2uq2D++tGbhawAa37Hq39JBW
909
+ // SIG // sjV1c8E+42qyThI5xTAafsovrsENk5ybsXM3HhuRQx6y
910
+ // SIG // COrBehfO/ZT+snWNAQWZGfbd/Xv7LzUYngOYFJ7/2HDP
911
+ // SIG // 2yDGP0GJnfRdAfnmxWIvjx+AJF2oTZBYCvOTiGkawxr4
912
+ // SIG // Z8Tmv+cxi+zooou/iff0B5HSRpX50X20N0FzP+f7pgTi
913
+ // SIG // huCaBWNZ4meUVR+T09Prgo8HKoU2571LXyvjfsgdm/ax
914
+ // SIG // Gb6dk7+GcGMxHfQPVbGDLmYgkm2hTJO+y8FW5JaZ8OGh
915
+ // SIG // 1iVyZBGJib8UW3E4RPBUMjqFZErinOTlmdvljP4+dKG5
916
+ // SIG // QNLQlOdwGrr1DmUaEAYfPZxyvpuaTlyl3WDCfnHri2Bf
917
+ // SIG // Iecv3Fy0DDpqiyc+ZezC6hsFNMx1fjBDvC9RaNsxBEOI
918
+ // SIG // i+AV/GJJyl6JxxkGnEgmi2aLdpMiVUbBUsZ9D5T7x1ad
919
+ // SIG // GHbAjM3XosPYwGeyvbNVsbGRhAayv6G4qV+rsYxKclAP
920
+ // SIG // Zm1T5Y5W90eDFiNBNsSPzTOheAHPAnmsd2Fi0/mlgmXq
921
+ // SIG // oiDC8cslmYPotSmPGRMzHjUyghCOcBdcMaq+k9fzEKPv
922
+ // SIG // LQIDAQABo4IBSTCCAUUwHQYDVR0OBBYEFHBeFz9unVfv
923
+ // SIG // ErrKANV10Nkw0pnSMB8GA1UdIwQYMBaAFJ+nFV0AXmJd
924
+ // SIG // g/Tl0mWnG1M1GelyMF8GA1UdHwRYMFYwVKBSoFCGTmh0
925
+ // SIG // dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3Js
926
+ // SIG // L01pY3Jvc29mdCUyMFRpbWUtU3RhbXAlMjBQQ0ElMjAy
927
+ // SIG // MDEwKDEpLmNybDBsBggrBgEFBQcBAQRgMF4wXAYIKwYB
928
+ // SIG // BQUHMAKGUGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w
929
+ // SIG // a2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwVGltZS1TdGFt
930
+ // SIG // cCUyMFBDQSUyMDIwMTAoMSkuY3J0MAwGA1UdEwEB/wQC
931
+ // SIG // MAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwDgYDVR0P
932
+ // SIG // AQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4ICAQDAE84O
933
+ // SIG // kfwNJXTuzKhsQ9VSY4uclQNYR29B3NGI7b+1pMUPIsH3
934
+ // SIG // 5bpV+VLOuLQ9/tzU9SZKYVs2gFn9sCnQMN+UcbUBtYjj
935
+ // SIG // dxxGdF9t53XuCoP1n28eaxB5GfW8yp0f9jeQNevsP9aW
936
+ // SIG // 8Cc3X0XJyU93C8msK/5GIzFnetzj9Bpau9LmuFlBPz6O
937
+ // SIG // aVO60EW1hKEKM2NuIQKjnMLkXJugm9CQXkzgnkQZ7RCo
938
+ // SIG // IynqeKUWkLe2/b7rE/e1niXH2laLJpj7bGbGsIJ6SI2w
939
+ // SIG // WuebR37pNLw5GbWyF41OJq+XZ7PXZ2pwXQUtj2Nzd4SH
940
+ // SIG // wjxDrM6rsBy5H5BWf/W8cPP3kSZXbaLpB6NemnxPwKj/
941
+ // SIG // 7JphiYeWUdKZoFukHF/uta3YuZAyU8whWqDMmM1EtEhG
942
+ // SIG // 8qw2f6dijrigGDZ4JY4jpZZXLdLiVc9moH3Mxo47Cotg
943
+ // SIG // EtVml7zoYGTZhsONkhQdampaGvCmrsfUNhxyxPIHnv+a
944
+ // SIG // 4Dp8fc0m31VHOyHETaHauke7/kc/j+lyrToMgqlv/q4T
945
+ // SIG // 5qf5+xatgRk0ZHMv/4Zkt9qeqsoJa9iuDqCQyV8RbOpc
946
+ // SIG // HPA/OqpVHho1MqO4VcuVb8gPstJhpxALgPObbDnFD5c8
947
+ // SIG // FhebL/geX89+Tlt1+EqZOUojbpZyxUTzOVwrEh6r3Gwv
948
+ // SIG // Ed6sI9sNXrz4WcQ7jTCCB3EwggVZoAMCAQICEzMAAAAV
949
+ // SIG // xedrngKbSZkAAAAAABUwDQYJKoZIhvcNAQELBQAwgYgx
950
+ // SIG // CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u
951
+ // SIG // MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
952
+ // SIG // b3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jv
953
+ // SIG // c29mdCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAy
954
+ // SIG // MDEwMB4XDTIxMDkzMDE4MjIyNVoXDTMwMDkzMDE4MzIy
955
+ // SIG // NVowfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
956
+ // SIG // bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
957
+ // SIG // FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMd
958
+ // SIG // TWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwggIi
959
+ // SIG // MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDk4aZM
960
+ // SIG // 57RyIQt5osvXJHm9DtWC0/3unAcH0qlsTnXIyjVX9gF/
961
+ // SIG // bErg4r25PhdgM/9cT8dm95VTcVrifkpa/rg2Z4VGIwy1
962
+ // SIG // jRPPdzLAEBjoYH1qUoNEt6aORmsHFPPFdvWGUNzBRMhx
963
+ // SIG // XFExN6AKOG6N7dcP2CZTfDlhAnrEqv1yaa8dq6z2Nr41
964
+ // SIG // JmTamDu6GnszrYBbfowQHJ1S/rboYiXcag/PXfT+jlPP
965
+ // SIG // 1uyFVk3v3byNpOORj7I5LFGc6XBpDco2LXCOMcg1KL3j
966
+ // SIG // tIckw+DJj361VI/c+gVVmG1oO5pGve2krnopN6zL64NF
967
+ // SIG // 50ZuyjLVwIYwXE8s4mKyzbnijYjklqwBSru+cakXW2dg
968
+ // SIG // 3viSkR4dPf0gz3N9QZpGdc3EXzTdEonW/aUgfX782Z5F
969
+ // SIG // 37ZyL9t9X4C626p+Nuw2TPYrbqgSUei/BQOj0XOmTTd0
970
+ // SIG // lBw0gg/wEPK3Rxjtp+iZfD9M269ewvPV2HM9Q07BMzlM
971
+ // SIG // jgK8QmguEOqEUUbi0b1qGFphAXPKZ6Je1yh2AuIzGHLX
972
+ // SIG // pyDwwvoSCtdjbwzJNmSLW6CmgyFdXzB0kZSU2LlQ+QuJ
973
+ // SIG // YfM2BjUYhEfb3BvR/bLUHMVr9lxSUV0S2yW6r1AFemzF
974
+ // SIG // ER1y7435UsSFF5PAPBXbGjfHCBUYP3irRbb1Hode2o+e
975
+ // SIG // FnJpxq57t7c+auIurQIDAQABo4IB3TCCAdkwEgYJKwYB
976
+ // SIG // BAGCNxUBBAUCAwEAATAjBgkrBgEEAYI3FQIEFgQUKqdS
977
+ // SIG // /mTEmr6CkTxGNSnPEP8vBO4wHQYDVR0OBBYEFJ+nFV0A
978
+ // SIG // XmJdg/Tl0mWnG1M1GelyMFwGA1UdIARVMFMwUQYMKwYB
979
+ // SIG // BAGCN0yDfQEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly93
980
+ // SIG // d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9jcy9SZXBv
981
+ // SIG // c2l0b3J5Lmh0bTATBgNVHSUEDDAKBggrBgEFBQcDCDAZ
982
+ // SIG // BgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8E
983
+ // SIG // BAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAW
984
+ // SIG // gBTV9lbLj+iiXGJo0T2UkFvXzpoYxDBWBgNVHR8ETzBN
985
+ // SIG // MEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20v
986
+ // SIG // cGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXRfMjAx
987
+ // SIG // MC0wNi0yMy5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsG
988
+ // SIG // AQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20v
989
+ // SIG // cGtpL2NlcnRzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIz
990
+ // SIG // LmNydDANBgkqhkiG9w0BAQsFAAOCAgEAnVV9/Cqt4Swf
991
+ // SIG // ZwExJFvhnnJL/Klv6lwUtj5OR2R4sQaTlz0xM7U518Jx
992
+ // SIG // Nj/aZGx80HU5bbsPMeTCj/ts0aGUGCLu6WZnOlNN3Zi6
993
+ // SIG // th542DYunKmCVgADsAW+iehp4LoJ7nvfam++Kctu2D9I
994
+ // SIG // dQHZGN5tggz1bSNU5HhTdSRXud2f8449xvNo32X2pFaq
995
+ // SIG // 95W2KFUn0CS9QKC/GbYSEhFdPSfgQJY4rPf5KYnDvBew
996
+ // SIG // VIVCs/wMnosZiefwC2qBwoEZQhlSdYo2wh3DYXMuLGt7
997
+ // SIG // bj8sCXgU6ZGyqVvfSaN0DLzskYDSPeZKPmY7T7uG+jIa
998
+ // SIG // 2Zb0j/aRAfbOxnT99kxybxCrdTDFNLB62FD+CljdQDzH
999
+ // SIG // VG2dY3RILLFORy3BFARxv2T5JL5zbcqOCb2zAVdJVGTZ
1000
+ // SIG // c9d/HltEAY5aGZFrDZ+kKNxnGSgkujhLmm77IVRrakUR
1001
+ // SIG // R6nxt67I6IleT53S0Ex2tVdUCbFpAUR+fKFhbHP+Crvs
1002
+ // SIG // QWY9af3LwUFJfn6Tvsv4O+S3Fb+0zj6lMVGEvL8CwYKi
1003
+ // SIG // excdFYmNcP7ntdAoGokLjzbaukz5m/8K6TT4JDVnK+AN
1004
+ // SIG // uOaMmdbhIurwJ0I9JZTmdHRbatGePu1+oDEzfbzL6Xu/
1005
+ // SIG // OHBE0ZDxyKs6ijoIYn/ZcGNTTY3ugm2lBRDBcQZqELQd
1006
+ // SIG // VTNYs6FwZvKhggLXMIICQAIBATCCAQChgdikgdUwgdIx
1007
+ // SIG // CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u
1008
+ // SIG // MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
1009
+ // SIG // b3NvZnQgQ29ycG9yYXRpb24xLTArBgNVBAsTJE1pY3Jv
1010
+ // SIG // c29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGltaXRlZDEm
1011
+ // SIG // MCQGA1UECxMdVGhhbGVzIFRTUyBFU046MTc5RS00QkIw
1012
+ // SIG // LTgyNDYxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0
1013
+ // SIG // YW1wIFNlcnZpY2WiIwoBATAHBgUrDgMCGgMVAG3z0dXw
1014
+ // SIG // V+h8WH8j8fM2MyVOXyEMoIGDMIGApH4wfDELMAkGA1UE
1015
+ // SIG // BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
1016
+ // SIG // BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
1017
+ // SIG // b3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp
1018
+ // SIG // bWUtU3RhbXAgUENBIDIwMTAwDQYJKoZIhvcNAQEFBQAC
1019
+ // SIG // BQDqJz2iMCIYDzIwMjQwNjI3MDkyMzQ2WhgPMjAyNDA2
1020
+ // SIG // MjgwOTIzNDZaMHcwPQYKKwYBBAGEWQoEATEvMC0wCgIF
1021
+ // SIG // AOonPaICAQAwCgIBAAICB20CAf8wBwIBAAICEfAwCgIF
1022
+ // SIG // AOoojyICAQAwNgYKKwYBBAGEWQoEAjEoMCYwDAYKKwYB
1023
+ // SIG // BAGEWQoDAqAKMAgCAQACAwehIKEKMAgCAQACAwGGoDAN
1024
+ // SIG // BgkqhkiG9w0BAQUFAAOBgQB/zwvhVQ854BnL5dxTiyuc
1025
+ // SIG // VgERG0ItS3dFFQhq6ycUIebp/EwjsUAYs85t5He2w7sI
1026
+ // SIG // MaJiqRWt3ZKwwDyiZsw8wGZ3ROPvCEIyAf/6OK3IQFKw
1027
+ // SIG // 3HA+FMWcFdUp/8gvU2aDjxDIvrfIT5OhyzdRBZackjfn
1028
+ // SIG // l4LHsfPFMCs+HtbgUjGCBA0wggQJAgEBMIGTMHwxCzAJ
1029
+ // SIG // BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAw
1030
+ // SIG // DgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv
1031
+ // SIG // ZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29m
1032
+ // SIG // dCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAAB4NT8HxMV
1033
+ // SIG // H35dAAEAAAHgMA0GCWCGSAFlAwQCAQUAoIIBSjAaBgkq
1034
+ // SIG // hkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwLwYJKoZIhvcN
1035
+ // SIG // AQkEMSIEINV2SwSTyM5IOYiZxPZ4q7InH7KLB2UjxIgP
1036
+ // SIG // xq3jBbepMIH6BgsqhkiG9w0BCRACLzGB6jCB5zCB5DCB
1037
+ // SIG // vQQg4+5Sv/I55W04z73O+wwgkm+E2QKWPZyZucIbCv9p
1038
+ // SIG // CsEwgZgwgYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UE
1039
+ // SIG // CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe
1040
+ // SIG // MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYw
1041
+ // SIG // JAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0Eg
1042
+ // SIG // MjAxMAITMwAAAeDU/B8TFR9+XQABAAAB4DAiBCA80Iwg
1043
+ // SIG // 2cOOKe6jTsQy25iplmFwpqjS8EYQ0OuEapEsfzANBgkq
1044
+ // SIG // hkiG9w0BAQsFAASCAgAHi8oXVrmpDQc0KUKNyEuCK1zD
1045
+ // SIG // FHW0pYE4eUTyOUhPyu0URA9KCvscXKuLI51A0iLUimlN
1046
+ // SIG // sPo8lmF60gR6VI5mw0Y/9xfNf/MCsM9Gi8ED+PsbQZGR
1047
+ // SIG // wj9MIZ/xGXYNctdNp6Kqrr/62wiSbKCrXENfVo3ddxYm
1048
+ // SIG // ws/68+9vHcbYuwjyKlsRw70LAqna2Zd4NuFPrg+nG/1q
1049
+ // SIG // i80KTBhqeq63W0u+AxZ7f4gvZqrjFKS0MVBVrfPCDCWi
1050
+ // SIG // Uy1O40Zl+BprQNw5Yq+LX3LHbkH5HLJ65t5fDNUiiXBW
1051
+ // SIG // RxhxNt/m9Cu7DG0hYxsWdfJ7J9t1ZViNDV3ds9wrcYyv
1052
+ // SIG // uyqbYoJwOFX8sgkRdU4yRwZS8XGwMDwEx9dHA1CgagJ7
1053
+ // SIG // r37BxIGdf5M2IxopoMw9XLlHZhhOyZ2Cv7eFvlpl8eyH
1054
+ // SIG // JEB64/XJkVYPfcyQ1wYn9Si8rCnrh9ciRRZ2Y5A57YNG
1055
+ // SIG // u/2y5fiEfs96DpH9YSg3NTHXERZDLTvxyNQaN8dDKoNg
1056
+ // SIG // 3QCzqRKIdnsmuG9VNrkQj7vP47Y3Zbg/FaZiYHwHO4oY
1057
+ // SIG // S+UPUa2g4CsKlJEgR0UCESds5UFG0TAih3XPLxX49OQP
1058
+ // SIG // WkRErg+YZpaGU3yPI8L/Cy7ZoYiVEXDFCyYLx+TFdYfd
1059
+ // SIG // YR1UZUQ9J7lSTSjl4pq8ERpdTBC30YwpoBTG/zd9XQ==
1060
+ // SIG // End signature block