@bnsights/bbsf-utilities 1.0.36 → 1.0.38

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 (174) hide show
  1. package/README.md +4 -0
  2. package/bnsights-bbsf-utilities-1.0.38.tgz +0 -0
  3. package/bnsights-bbsf-utilities.d.ts +4 -0
  4. package/bnsights-bbsf-utilities.metadata.json +1 -0
  5. package/bundles/bnsights-bbsf-utilities.umd.js +4782 -0
  6. package/bundles/bnsights-bbsf-utilities.umd.js.map +1 -0
  7. package/esm2015/bnsights-bbsf-utilities.js +5 -0
  8. package/esm2015/lib/bbsf-utilities.module.js +54 -0
  9. package/esm2015/lib/shared/authentication/auth.service.js +204 -0
  10. package/esm2015/lib/shared/config/environment.js +12 -0
  11. package/esm2015/lib/shared/config/word/constants.js +105 -0
  12. package/esm2015/lib/shared/config/word/docx-document.js +351 -0
  13. package/esm2015/lib/shared/config/word/helpers/index.js +4 -0
  14. package/esm2015/lib/shared/config/word/helpers/render-document-file.js +278 -0
  15. package/esm2015/lib/shared/config/word/helpers/xml-builder.js +1765 -0
  16. package/esm2015/lib/shared/config/word/html-to-docx.js +195 -0
  17. package/esm2015/lib/shared/config/word/index.js +55 -0
  18. package/esm2015/lib/shared/config/word/namespaces.js +37 -0
  19. package/esm2015/lib/shared/config/word/schemas/content-types.js +26 -0
  20. package/esm2015/lib/shared/config/word/schemas/core.js +29 -0
  21. package/esm2015/lib/shared/config/word/schemas/document-rels.js +16 -0
  22. package/esm2015/lib/shared/config/word/schemas/document.template.js +109 -0
  23. package/esm2015/lib/shared/config/word/schemas/font-table.js +40 -0
  24. package/esm2015/lib/shared/config/word/schemas/generic-rels.js +11 -0
  25. package/esm2015/lib/shared/config/word/schemas/index.js +13 -0
  26. package/esm2015/lib/shared/config/word/schemas/numbering.js +19 -0
  27. package/esm2015/lib/shared/config/word/schemas/rels.js +11 -0
  28. package/esm2015/lib/shared/config/word/schemas/settings.js +13 -0
  29. package/esm2015/lib/shared/config/word/schemas/styles.js +149 -0
  30. package/esm2015/lib/shared/config/word/schemas/theme.js +200 -0
  31. package/esm2015/lib/shared/config/word/schemas/web-settings.js +9 -0
  32. package/esm2015/lib/shared/config/word/utils/color-conversion.js +60 -0
  33. package/esm2015/lib/shared/config/word/utils/list.js +51 -0
  34. package/esm2015/lib/shared/config/word/utils/unit-conversion.js +30 -0
  35. package/esm2015/lib/shared/config/word/utils/url.js +9 -0
  36. package/esm2015/lib/shared/config/word/utils/vnode.js +3 -0
  37. package/esm2015/lib/shared/config/word/word-work/templates/documentTemplate.js +54 -0
  38. package/esm2015/lib/shared/config/word/word-work/templates/index.js +4 -0
  39. package/esm2015/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.js +22 -0
  40. package/esm2015/lib/shared/config/word/word-work/templates/mhtPartTemplate.js +10 -0
  41. package/esm2015/lib/shared/config/word/word-work/utils.js +26 -0
  42. package/esm2015/lib/shared/models/AreaModel.js +3 -0
  43. package/esm2015/lib/shared/models/ErrorModel.js +3 -0
  44. package/esm2015/lib/shared/models/RequestOptionsModel.js +11 -0
  45. package/esm2015/lib/shared/models/UserModel.js +3 -0
  46. package/esm2015/lib/shared/models/WordDocumentModel.js +8 -0
  47. package/esm2015/lib/shared/services/AppearanceConfiguration.service.js +37 -0
  48. package/esm2015/lib/shared/services/configuration.service.js +26 -0
  49. package/esm2015/lib/shared/services/controlvalidation.service.js +175 -0
  50. package/esm2015/lib/shared/services/environment.service.js +48 -0
  51. package/esm2015/lib/shared/services/masterlayout.service.js +89 -0
  52. package/esm2015/lib/shared/services/requesthandler.service.js +206 -0
  53. package/esm2015/lib/shared/services/stylesbundle.service.js +56 -0
  54. package/esm2015/lib/shared/services/translate.service.js +13 -0
  55. package/esm2015/lib/shared/services/translationresolver.service.js +20 -0
  56. package/esm2015/lib/shared/services/utility.service.js +96 -0
  57. package/esm2015/lib/shared/services/word-document.service.js +39 -0
  58. package/esm2015/public-api.js +20 -0
  59. package/fesm2015/bnsights-bbsf-utilities.js +4606 -0
  60. package/fesm2015/bnsights-bbsf-utilities.js.map +1 -0
  61. package/lib/bbsf-utilities.module.d.ts +6 -0
  62. package/lib/shared/authentication/auth.service.d.ts +47 -0
  63. package/lib/shared/config/environment.d.ts +1 -0
  64. package/lib/shared/config/word/constants.d.ts +124 -0
  65. package/lib/shared/config/word/docx-document.d.ts +73 -0
  66. package/lib/shared/config/word/helpers/index.d.ts +1 -0
  67. package/lib/shared/config/word/helpers/render-document-file.d.ts +4 -0
  68. package/lib/shared/config/word/helpers/xml-builder.d.ts +14 -0
  69. package/lib/shared/config/word/html-to-docx.d.ts +1 -0
  70. package/lib/shared/config/word/index.d.ts +1 -0
  71. package/lib/shared/config/word/namespaces.d.ts +36 -0
  72. package/lib/shared/config/word/schemas/content-types.d.ts +1 -0
  73. package/lib/shared/config/word/schemas/core.d.ts +1 -0
  74. package/lib/shared/config/word/schemas/document-rels.d.ts +1 -0
  75. package/lib/shared/config/word/schemas/document.template.d.ts +4 -0
  76. package/lib/shared/config/word/schemas/font-table.d.ts +1 -0
  77. package/lib/shared/config/word/schemas/generic-rels.d.ts +1 -0
  78. package/lib/shared/config/word/schemas/index.d.ts +12 -0
  79. package/lib/shared/config/word/schemas/numbering.d.ts +1 -0
  80. package/lib/shared/config/word/schemas/rels.d.ts +1 -0
  81. package/lib/shared/config/word/schemas/settings.d.ts +1 -0
  82. package/lib/shared/config/word/schemas/styles.d.ts +1 -0
  83. package/lib/shared/config/word/schemas/theme.d.ts +1 -0
  84. package/lib/shared/config/word/schemas/web-settings.d.ts +1 -0
  85. package/lib/shared/config/word/utils/color-conversion.d.ts +7 -0
  86. package/lib/shared/config/word/utils/list.d.ts +6 -0
  87. package/lib/shared/config/word/utils/unit-conversion.d.ts +29 -0
  88. package/lib/shared/config/word/utils/url.d.ts +1 -0
  89. package/lib/shared/config/word/utils/vnode.d.ts +1 -0
  90. package/lib/shared/config/word/word-work/templates/documentTemplate.d.ts +12 -0
  91. package/lib/shared/config/word/word-work/templates/index.d.ts +3 -0
  92. package/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.d.ts +1 -0
  93. package/lib/shared/config/word/word-work/templates/mhtPartTemplate.d.ts +1 -0
  94. package/lib/shared/config/word/word-work/utils.d.ts +1 -0
  95. package/lib/shared/models/AreaModel.d.ts +4 -0
  96. package/{src/lib/shared/models/ErrorModel.ts → lib/shared/models/ErrorModel.d.ts} +2 -5
  97. package/lib/shared/models/RequestOptionsModel.d.ts +11 -0
  98. package/lib/shared/models/UserModel.d.ts +6 -0
  99. package/lib/shared/models/WordDocumentModel.d.ts +16 -0
  100. package/lib/shared/services/AppearanceConfiguration.service.d.ts +11 -0
  101. package/lib/shared/services/configuration.service.d.ts +7 -0
  102. package/lib/shared/services/controlvalidation.service.d.ts +20 -0
  103. package/lib/shared/services/environment.service.d.ts +13 -0
  104. package/lib/shared/services/masterlayout.service.d.ts +24 -0
  105. package/lib/shared/services/requesthandler.service.d.ts +32 -0
  106. package/lib/shared/services/stylesbundle.service.d.ts +9 -0
  107. package/lib/shared/services/translate.service.d.ts +3 -0
  108. package/lib/shared/services/translationresolver.service.d.ts +8 -0
  109. package/lib/shared/services/utility.service.d.ts +21 -0
  110. package/lib/shared/services/word-document.service.d.ts +5 -0
  111. package/package.json +30 -20
  112. package/public-api.d.ts +16 -0
  113. package/karma.conf.js +0 -44
  114. package/ng-package.json +0 -10
  115. package/src/lib/bbsf-utilities.module.ts +0 -52
  116. package/src/lib/shared/authentication/auth.service.ts +0 -242
  117. package/src/lib/shared/config/environment.ts +0 -16
  118. package/src/lib/shared/config/word/constants.js +0 -133
  119. package/src/lib/shared/config/word/docx-document.js +0 -482
  120. package/src/lib/shared/config/word/helpers/index.js +0 -3
  121. package/src/lib/shared/config/word/helpers/render-document-file.js +0 -334
  122. package/src/lib/shared/config/word/helpers/xml-builder.js +0 -2165
  123. package/src/lib/shared/config/word/html-to-docx.js +0 -259
  124. package/src/lib/shared/config/word/index.js +0 -63
  125. package/src/lib/shared/config/word/namespaces.js +0 -40
  126. package/src/lib/shared/config/word/schemas/content-types.js +0 -26
  127. package/src/lib/shared/config/word/schemas/core.js +0 -44
  128. package/src/lib/shared/config/word/schemas/document-rels.js +0 -17
  129. package/src/lib/shared/config/word/schemas/document.template.js +0 -119
  130. package/src/lib/shared/config/word/schemas/font-table.js +0 -41
  131. package/src/lib/shared/config/word/schemas/generic-rels.js +0 -11
  132. package/src/lib/shared/config/word/schemas/index.js +0 -12
  133. package/src/lib/shared/config/word/schemas/numbering.js +0 -18
  134. package/src/lib/shared/config/word/schemas/rels.js +0 -12
  135. package/src/lib/shared/config/word/schemas/settings.js +0 -14
  136. package/src/lib/shared/config/word/schemas/styles.js +0 -152
  137. package/src/lib/shared/config/word/schemas/theme.js +0 -199
  138. package/src/lib/shared/config/word/schemas/web-settings.js +0 -10
  139. package/src/lib/shared/config/word/utils/color-conversion.js +0 -60
  140. package/src/lib/shared/config/word/utils/list.js +0 -55
  141. package/src/lib/shared/config/word/utils/unit-conversion.js +0 -53
  142. package/src/lib/shared/config/word/utils/url.js +0 -8
  143. package/src/lib/shared/config/word/utils/vnode.js +0 -3
  144. package/src/lib/shared/config/word/word-work/assets/contentTypesXml.ts +0 -1
  145. package/src/lib/shared/config/word/word-work/assets/documentXmlRels.ts +0 -1
  146. package/src/lib/shared/config/word/word-work/assets/index.ts +0 -3
  147. package/src/lib/shared/config/word/word-work/assets/relsXml.ts +0 -1
  148. package/src/lib/shared/config/word/word-work/index.ts +0 -8
  149. package/src/lib/shared/config/word/word-work/internal.ts +0 -69
  150. package/src/lib/shared/config/word/word-work/templates/documentTemplate.ts +0 -58
  151. package/src/lib/shared/config/word/word-work/templates/index.ts +0 -3
  152. package/src/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.ts +0 -21
  153. package/src/lib/shared/config/word/word-work/templates/mhtPartTemplate.ts +0 -14
  154. package/src/lib/shared/config/word/word-work/utils.ts +0 -27
  155. package/src/lib/shared/models/AreaModel.ts +0 -5
  156. package/src/lib/shared/models/RequestOptionsModel.ts +0 -13
  157. package/src/lib/shared/models/WordDocumentModel.ts +0 -19
  158. package/src/lib/shared/services/AppearanceConfiguration.service.ts +0 -30
  159. package/src/lib/shared/services/configuration.service.ts +0 -18
  160. package/src/lib/shared/services/controlvalidation.service.ts +0 -194
  161. package/src/lib/shared/services/environment.service.ts +0 -56
  162. package/src/lib/shared/services/masterlayout.service.ts +0 -89
  163. package/src/lib/shared/services/requesthandler.service.ts +0 -241
  164. package/src/lib/shared/services/stylesbundle.service.ts +0 -52
  165. package/src/lib/shared/services/translate.service.ts +0 -8
  166. package/src/lib/shared/services/translationresolver.service.ts +0 -16
  167. package/src/lib/shared/services/utility.service.ts +0 -94
  168. package/src/lib/shared/services/word-document.service.ts +0 -36
  169. package/src/public-api.ts +0 -27
  170. package/src/test.ts +0 -26
  171. package/tsconfig.lib.json +0 -39
  172. package/tsconfig.lib.prod.json +0 -11
  173. package/tsconfig.spec.json +0 -17
  174. package/tslint.json +0 -17
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm5zaWdodHMtYmJzZi11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvYm5zaWdodHMtYmJzZi11dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,54 @@
1
+ import { Injector, NgModule } from '@angular/core';
2
+ import { RouterModule } from '@angular/router';
3
+ import { TranslateService } from '@ngx-translate/core';
4
+ import { BlockUIModule } from 'ng-block-ui';
5
+ import { ToastrModule } from 'ngx-toastr';
6
+ import { HttpModule } from '@angular/http';
7
+ import { UtilityService } from './shared/services/utility.service';
8
+ import { EnvironmentService } from './shared/services/environment.service';
9
+ import { AuthService } from './shared/authentication/auth.service';
10
+ import { RequestHandlerService } from './shared/services/requesthandler.service';
11
+ import { StylesBundleService } from './shared/services/stylesbundle.service';
12
+ import { BBSFTranslateService } from './shared/services/translate.service';
13
+ import { ControlValidationService } from './shared/services/controlvalidation.service';
14
+ import { MasterLayoutService } from './shared/services/masterlayout.service';
15
+ import { ConfigurationService } from './shared/services/configuration.service';
16
+ import { CommonModule } from '@angular/common';
17
+ import { CookieService } from 'ngx-cookie-service';
18
+ export let AppInjector;
19
+ export class BBSFUtilitiesModule {
20
+ constructor(injector) {
21
+ this.injector = injector;
22
+ AppInjector = this.injector;
23
+ }
24
+ }
25
+ BBSFUtilitiesModule.decorators = [
26
+ { type: NgModule, args: [{
27
+ declarations: [],
28
+ imports: [
29
+ CommonModule,
30
+ BlockUIModule.forRoot(),
31
+ HttpModule,
32
+ RouterModule,
33
+ ToastrModule.forRoot(),
34
+ ],
35
+ exports: [],
36
+ providers: [
37
+ UtilityService,
38
+ EnvironmentService,
39
+ AuthService,
40
+ RequestHandlerService,
41
+ StylesBundleService,
42
+ TranslateService,
43
+ BBSFTranslateService,
44
+ ControlValidationService,
45
+ MasterLayoutService,
46
+ ConfigurationService,
47
+ CookieService
48
+ ]
49
+ },] }
50
+ ];
51
+ BBSFUtilitiesModule.ctorParameters = () => [
52
+ { type: Injector }
53
+ ];
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJzZi11dGlsaXRpZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9iYnNmLXV0aWxpdGllcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxNQUFNLENBQUMsSUFBSSxXQUFxQixDQUFDO0FBOEJqQyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDcEMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFFOUIsQ0FBQzs7O1lBaENGLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsRUFDYjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixhQUFhLENBQUMsT0FBTyxFQUFFO29CQUN2QixVQUFVO29CQUNWLFlBQVk7b0JBQ1osWUFBWSxDQUFDLE9BQU8sRUFBRTtpQkFFdkI7Z0JBQ0QsT0FBTyxFQUFFLEVBQ1I7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULGNBQWM7b0JBQ2Qsa0JBQWtCO29CQUNsQixXQUFXO29CQUNYLHFCQUFxQjtvQkFDckIsbUJBQW1CO29CQUNuQixnQkFBZ0I7b0JBQ2hCLG9CQUFvQjtvQkFDcEIsd0JBQXdCO29CQUN4QixtQkFBbUI7b0JBQ25CLG9CQUFvQjtvQkFDcEIsYUFBYTtpQkFFZDthQUNGOzs7WUE5Q1EsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdG9yLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEJsb2NrVUlNb2R1bGUgfSBmcm9tICduZy1ibG9jay11aSc7XHJcbmltcG9ydCB7IFRvYXN0ck1vZHVsZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBIdHRwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvaHR0cCc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvYXV0aGVudGljYXRpb24vYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvcmVxdWVzdGhhbmRsZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0eWxlc0J1bmRsZVNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9zdHlsZXNidW5kbGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9jb250cm9sdmFsaWRhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFzdGVyTGF5b3V0U2VydmljZSB9IGZyb20gJy4vc2hhcmVkL3NlcnZpY2VzL21hc3RlcmxheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcclxuZXhwb3J0IGxldCBBcHBJbmplY3RvcjogSW5qZWN0b3I7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQmxvY2tVSU1vZHVsZS5mb3JSb290KCksXHJcbiAgICBIdHRwTW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLFxyXG4gICAgVG9hc3RyTW9kdWxlLmZvclJvb3QoKSxcclxuXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgQXV0aFNlcnZpY2UsXHJcbiAgICBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsXHJcbiAgICBTdHlsZXNCdW5kbGVTZXJ2aWNlLFxyXG4gICAgVHJhbnNsYXRlU2VydmljZSxcclxuICAgIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgTWFzdGVyTGF5b3V0U2VydmljZSxcclxuICAgIENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgQ29va2llU2VydmljZVxyXG5cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCQlNGVXRpbGl0aWVzTW9kdWxlIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgQXBwSW5qZWN0b3IgPSB0aGlzLmluamVjdG9yO1xyXG5cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,204 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Injectable, Injector } from '@angular/core';
3
+ import { HttpClient, HttpHeaders } from '@angular/common/http';
4
+ import { BehaviorSubject } from 'rxjs';
5
+ import { EnvironmentService } from '../services/environment.service';
6
+ import { BBSFTranslateService } from '../services/translate.service';
7
+ import { Router } from '@angular/router';
8
+ import { JwtHelperService } from '@auth0/angular-jwt';
9
+ import { User } from '../models/UserModel';
10
+ import { CookieService } from 'ngx-cookie-service';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/common/http";
13
+ import * as i2 from "../services/environment.service";
14
+ import * as i3 from "../services/translate.service";
15
+ import * as i4 from "@angular/router";
16
+ import * as i5 from "ngx-cookie-service";
17
+ const TOKEN_KEY = 'access_token';
18
+ export class AuthService {
19
+ constructor(injector, http, environmentService, translateService, router, cookieService) {
20
+ this.injector = injector;
21
+ this.http = http;
22
+ this.environmentService = environmentService;
23
+ this.translateService = translateService;
24
+ this.router = router;
25
+ this.cookieService = cookieService;
26
+ this.redirectUrl = '';
27
+ this.jwtHelper = new JwtHelperService();
28
+ this.isAuthenticatedSubject = new BehaviorSubject(this.hasToken());
29
+ this.isAuthenticate$ = this.isAuthenticatedSubject.asObservable();
30
+ this.user = this.getUserManager();
31
+ }
32
+ hasToken() {
33
+ const token = this.cookieService.get(TOKEN_KEY);
34
+ return token && !this.jwtHelper.isTokenExpired(token);
35
+ }
36
+ getUserManager() {
37
+ const token = this.cookieService.get(TOKEN_KEY);
38
+ if (token)
39
+ this.handleAccessTokenWithoutLanguage(token);
40
+ return AuthService.user;
41
+ }
42
+ getUser() {
43
+ this.user = AuthService.user;
44
+ }
45
+ storUser(User) {
46
+ AuthService.user = this.user = this.user;
47
+ }
48
+ getCurrentUser() {
49
+ return AuthService.user;
50
+ }
51
+ isAuthenticated() {
52
+ return __awaiter(this, void 0, void 0, function* () {
53
+ return AuthService.user != null && !this.jwtHelper.isTokenExpired(AuthService.user.access_token);
54
+ });
55
+ }
56
+ isUserInRole(allowedPermission) {
57
+ let selectedPermissionSetID = Number.parseInt(this.user.profile['selectedpermissionsetid']);
58
+ return allowedPermission.includes(selectedPermissionSetID);
59
+ }
60
+ authorizationHeaderValue() {
61
+ return AuthService.user
62
+ ? `${AuthService.user.token_type} ${AuthService.user.access_token}`
63
+ : '';
64
+ }
65
+ name() {
66
+ return AuthService.user != null ? AuthService.user.profile.given_name : '';
67
+ }
68
+ setUrl(url) {
69
+ localStorage.setItem('redirectUrl', url);
70
+ }
71
+ getUrl() {
72
+ var _a;
73
+ return (_a = localStorage.getItem('redirectUrl')) !== null && _a !== void 0 ? _a : "/";
74
+ }
75
+ signout() {
76
+ AuthService.timers.map(t => clearInterval(t));
77
+ AuthService.timers = [];
78
+ if (!this.isAuthenticated()) {
79
+ this.cookieService.delete(TOKEN_KEY);
80
+ this.router.navigate(['/Admin/account/login']);
81
+ }
82
+ this.logout().subscribe(res => {
83
+ this.cookieService.delete(TOKEN_KEY);
84
+ this.router.navigate(['/Admin/account/login']);
85
+ });
86
+ }
87
+ logout() {
88
+ const httpOptions = {
89
+ headers: new HttpHeaders({
90
+ 'Content-Type': 'application/json',
91
+ }),
92
+ };
93
+ let ApiUrl = '/Account/';
94
+ return this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'Logout', httpOptions);
95
+ }
96
+ clearUserSessionClaims() {
97
+ const httpOptions = {
98
+ headers: new HttpHeaders({
99
+ 'Content-Type': 'application/json',
100
+ }),
101
+ };
102
+ let ApiUrl = '/api/Home/';
103
+ return this.http.get(this.environmentService.getBaseUrl() + ApiUrl + 'ClearCurrentUserSession', httpOptions);
104
+ }
105
+ loginForm(model) {
106
+ const httpOptions = {
107
+ headers: new HttpHeaders({
108
+ 'Content-Type': 'application/json',
109
+ }),
110
+ };
111
+ let ApiUrl = '/Account/';
112
+ return this.http.post(this.environmentService.getApiUrl() + ApiUrl + 'Authenticate', model, httpOptions);
113
+ }
114
+ handleAccessToken(response) {
115
+ return __awaiter(this, void 0, void 0, function* () {
116
+ const token = response;
117
+ AuthService.user = new User();
118
+ AuthService.user.token_type = "Bearer";
119
+ AuthService.user.access_token = token;
120
+ AuthService.user.profile = this.jwtHelper.decodeToken(token);
121
+ AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);
122
+ AuthService.timers.map(t => clearInterval(t));
123
+ AuthService.timers = [];
124
+ this.setTokenSeconds();
125
+ AuthService.timers.push(this.checkRefreshToken());
126
+ this.user = AuthService.user;
127
+ yield this.updateLanguage();
128
+ this.cookieService.set(TOKEN_KEY, token, null, null, null, true, 'Strict');
129
+ this.isAuthenticatedSubject.next(true);
130
+ });
131
+ }
132
+ handleAccessTokenWithoutLanguage(response) {
133
+ const token = response;
134
+ AuthService.user = new User();
135
+ AuthService.user.token_type = "Bearer";
136
+ AuthService.user.access_token = token;
137
+ AuthService.user.profile = this.jwtHelper.decodeToken(token);
138
+ AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);
139
+ this.setTokenSeconds();
140
+ this.user = AuthService.user;
141
+ this.cookieService.set(TOKEN_KEY, token, null, null, null, true, 'Strict');
142
+ this.isAuthenticatedSubject.next(true);
143
+ }
144
+ updateLanguage() {
145
+ return __awaiter(this, void 0, void 0, function* () {
146
+ if (!localStorage.getItem('language') ||
147
+ localStorage.getItem('language') == this.user.profile.locale)
148
+ localStorage.setItem('language', this.user.profile.locale);
149
+ if (this.translateService.currentLang != localStorage.getItem('language')) {
150
+ this.translateService.resetLang(this.translateService.currentLang);
151
+ yield this.translateService
152
+ .reloadLang(localStorage.getItem('language'))
153
+ .subscribe((res) => {
154
+ console.log(res);
155
+ });
156
+ }
157
+ });
158
+ }
159
+ checkRefreshToken() {
160
+ let date = new Date();
161
+ return setInterval(() => {
162
+ if (Math.floor(AuthService.seconds) < 120 && this.isAuthenticated())
163
+ this.refresh();
164
+ AuthService.seconds--;
165
+ }, 1000);
166
+ }
167
+ setTokenSeconds() {
168
+ let date = new Date();
169
+ AuthService.seconds = (AuthService.user.expires_at - date) / 1000;
170
+ }
171
+ refresh() {
172
+ const httpOptions = {
173
+ headers: new HttpHeaders({
174
+ 'Content-Type': 'application/json',
175
+ 'Authorization': this.authorizationHeaderValue(),
176
+ }),
177
+ };
178
+ let ApiUrl = '/api/Home/';
179
+ this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'RefreshAccessToken', httpOptions).subscribe((res) => {
180
+ this.cookieService.delete(TOKEN_KEY);
181
+ this.handleAccessTokenWithoutLanguage(res);
182
+ });
183
+ }
184
+ }
185
+ AuthService.user = null;
186
+ AuthService.UserClaims = null;
187
+ //refresh
188
+ AuthService.timers = [];
189
+ AuthService.seconds = 0;
190
+ AuthService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthService_Factory() { return new AuthService(i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.EnvironmentService), i0.ɵɵinject(i3.BBSFTranslateService), i0.ɵɵinject(i4.Router), i0.ɵɵinject(i5.CookieService)); }, token: AuthService, providedIn: "root" });
191
+ AuthService.decorators = [
192
+ { type: Injectable, args: [{
193
+ providedIn: 'root',
194
+ },] }
195
+ ];
196
+ AuthService.ctorParameters = () => [
197
+ { type: Injector },
198
+ { type: HttpClient },
199
+ { type: EnvironmentService },
200
+ { type: BBSFTranslateService },
201
+ { type: Router },
202
+ { type: CookieService }
203
+ ];
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvYXV0aGVudGljYXRpb24vYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQVcsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7QUFDbkQsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDO0FBS2pDLE1BQU0sT0FBTyxXQUFXO0lBWXRCLFlBQW9CLFFBQWtCLEVBQVUsSUFBZ0IsRUFBVSxrQkFBc0MsRUFBVSxnQkFBc0MsRUFBVSxNQUFjLEVBQVUsYUFBNEI7UUFBMU0sYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFzQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVh2TixnQkFBVyxHQUFX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RTthQUNqRCxDQUFDO1NBQ0gsQ0FBQztRQUNGLElBQUksTUFBTSxHQUFHLFlBQVksQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLEdBQUcsTUFBTSxHQUFHLG9CQUFvQixFQUFFLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2hILElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM1QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7O0FBaExNLGdCQUFJLEdBQWdCLElBQUksQ0FBQztBQUV6QixzQkFBVSxHQUFRLElBQUksQ0FBQztBQUk5QixTQUFTO0FBQ0Ysa0JBQU0sR0FBRyxFQUFFLENBQUM7QUFDWixtQkFBTyxHQUFHLENBQUMsQ0FBQzs7O1lBYnBCLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBZG9CLFFBQVE7WUFDcEIsVUFBVTtZQUVWLGtCQUFrQjtZQUNsQixvQkFBb0I7WUFDcEIsTUFBTTtZQUlOLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Vudmlyb25tZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCQlNGVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTWFzdGVyTGF5b3V0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL21hc3RlcmxheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSnd0SGVscGVyU2VydmljZSB9IGZyb20gJ0BhdXRoMC9hbmd1bGFyLWp3dCc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi9tb2RlbHMvVXNlck1vZGVsJztcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XHJcbmNvbnN0IFRPS0VOX0tFWSA9ICdhY2Nlc3NfdG9rZW4nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcclxuICBwdWJsaWMgcmVkaXJlY3RVcmw6IHN0cmluZyA9ICcnO1xyXG4gIHN0YXRpYyB1c2VyOiBVc2VyIHwgbnVsbCA9IG51bGw7XHJcbiAgdXNlcjogVXNlciB8IG51bGw7XHJcbiAgc3RhdGljIFVzZXJDbGFpbXM6IGFueSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBqd3RIZWxwZXI6IEp3dEhlbHBlclNlcnZpY2UgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpO1xyXG4gIHByaXZhdGUgaXNBdXRoZW50aWNhdGVkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odGhpcy5oYXNUb2tlbigpKTtcclxuICBpc0F1dGhlbnRpY2F0ZSQgPSB0aGlzLmlzQXV0aGVudGljYXRlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgLy9yZWZyZXNoXHJcbiAgc3RhdGljIHRpbWVycyA9IFtdO1xyXG4gIHN0YXRpYyBzZWNvbmRzID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLnVzZXIgPSB0aGlzLmdldFVzZXJNYW5hZ2VyKClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzVG9rZW4oKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuY29va2llU2VydmljZS5nZXQoVE9LRU5fS0VZKTtcclxuICAgIHJldHVybiB0b2tlbiAmJiAhdGhpcy5qd3RIZWxwZXIuaXNUb2tlbkV4cGlyZWQodG9rZW4pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlck1hbmFnZXIoKSB7XHJcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuY29va2llU2VydmljZS5nZXQoVE9LRU5fS0VZKTtcclxuICAgIGlmICh0b2tlbilcclxuICAgICAgdGhpcy5oYW5kbGVBY2Nlc3NUb2tlbldpdGhvdXRMYW5ndWFnZSh0b2tlbilcclxuICAgIHJldHVybiBBdXRoU2VydmljZS51c2VyO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldFVzZXIoKSB7XHJcbiAgICB0aGlzLnVzZXIgPSBBdXRoU2VydmljZS51c2VyO1xyXG4gIH1cclxuICBzdG9yVXNlcihVc2VyOiBhbnkpIHtcclxuICAgIEF1dGhTZXJ2aWNlLnVzZXIgPSB0aGlzLnVzZXIgPSB0aGlzLnVzZXI7XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50VXNlcigpIHtcclxuICAgIHJldHVybiBBdXRoU2VydmljZS51c2VyXHJcbiAgfVxyXG5cclxuICBhc3luYyBpc0F1dGhlbnRpY2F0ZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gQXV0aFNlcnZpY2UudXNlciAhPSBudWxsICYmICF0aGlzLmp3dEhlbHBlci5pc1Rva2VuRXhwaXJlZChBdXRoU2VydmljZS51c2VyLmFjY2Vzc190b2tlbik7XHJcbiAgfVxyXG4gIGlzVXNlckluUm9sZShhbGxvd2VkUGVybWlzc2lvbjogbnVtYmVyW10pIHtcclxuICAgIGxldCBzZWxlY3RlZFBlcm1pc3Npb25TZXRJRDogbnVtYmVyID0gTnVtYmVyLnBhcnNlSW50KFxyXG4gICAgICB0aGlzLnVzZXIucHJvZmlsZVsnc2VsZWN0ZWRwZXJtaXNzaW9uc2V0aWQnXVxyXG4gICAgKTtcclxuICAgIHJldHVybiBhbGxvd2VkUGVybWlzc2lvbi5pbmNsdWRlcyhzZWxlY3RlZFBlcm1pc3Npb25TZXRJRCk7XHJcbiAgfVxyXG5cclxuICBhdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBBdXRoU2VydmljZS51c2VyXHJcbiAgICAgID8gYCR7QXV0aFNlcnZpY2UudXNlci50b2tlbl90eXBlfSAke0F1dGhTZXJ2aWNlLnVzZXIuYWNjZXNzX3Rva2VufWBcclxuICAgICAgOiAnJztcclxuICB9XHJcblxyXG4gIG5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBBdXRoU2VydmljZS51c2VyICE9IG51bGwgPyBBdXRoU2VydmljZS51c2VyLnByb2ZpbGUuZ2l2ZW5fbmFtZSA6ICcnO1xyXG4gIH1cclxuICBzZXRVcmwodXJsKSB7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncmVkaXJlY3RVcmwnLCB1cmwpO1xyXG4gIH1cclxuICBnZXRVcmwoKSB7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JlZGlyZWN0VXJsJykgPz8gXCIvXCI7XHJcbiAgfVxyXG4gIHNpZ25vdXQoKSB7XHJcbiAgICBBdXRoU2VydmljZS50aW1lcnMubWFwKHQgPT4gY2xlYXJJbnRlcnZhbCh0KSk7XHJcbiAgICBBdXRoU2VydmljZS50aW1lcnMgPSBbXTtcclxuICAgIGlmICghdGhpcy5pc0F1dGhlbnRpY2F0ZWQoKSkge1xyXG4gICAgICB0aGlzLmNvb2tpZVNlcnZpY2UuZGVsZXRlKFRPS0VOX0tFWSk7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL0FkbWluL2FjY291bnQvbG9naW4nXSlcclxuICAgIH1cclxuICAgIHRoaXMubG9nb3V0KCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUoVE9LRU5fS0VZKTtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvQWRtaW4vYWNjb3VudC9sb2dpbiddKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2dvdXQoKSB7XHJcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICB9KSxcclxuICAgIH07XHJcbiAgICBsZXQgQXBpVXJsID0gJy9BY2NvdW50Lyc7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRBcGlVcmwoKSArIEFwaVVybCArICdMb2dvdXQnLCBodHRwT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgY2xlYXJVc2VyU2Vzc2lvbkNsYWltcygpIHtcclxuICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgIH0pLFxyXG4gICAgfTtcclxuICAgIGxldCBBcGlVcmwgPSAnL2FwaS9Ib21lLyc7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRCYXNlVXJsKCkgKyBBcGlVcmwgKyAnQ2xlYXJDdXJyZW50VXNlclNlc3Npb24nLCBodHRwT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBsb2dpbkZvcm0obW9kZWw6IGFueSkge1xyXG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgfSksXHJcbiAgICB9O1xyXG4gICAgbGV0IEFwaVVybCA9ICcvQWNjb3VudC8nO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFwaVVybCgpICsgQXBpVXJsICsgJ0F1dGhlbnRpY2F0ZScsIG1vZGVsLCBodHRwT3B0aW9ucyk7XHJcbiAgfVxyXG4gIGFzeW5jIGhhbmRsZUFjY2Vzc1Rva2VuKHJlc3BvbnNlOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHRva2VuID0gcmVzcG9uc2U7XHJcbiAgICBBdXRoU2VydmljZS51c2VyID0gbmV3IFVzZXIoKTtcclxuICAgIEF1dGhTZXJ2aWNlLnVzZXIudG9rZW5fdHlwZSA9IFwiQmVhcmVyXCJcclxuICAgIEF1dGhTZXJ2aWNlLnVzZXIuYWNjZXNzX3Rva2VuID0gdG9rZW47XHJcbiAgICBBdXRoU2VydmljZS51c2VyLnByb2ZpbGUgPSB0aGlzLmp3dEhlbHBlci5kZWNvZGVUb2tlbih0b2tlbik7XHJcbiAgICBBdXRoU2VydmljZS51c2VyLmV4cGlyZXNfYXQgPSB0aGlzLmp3dEhlbHBlci5nZXRUb2tlbkV4cGlyYXRpb25EYXRlKHRva2VuKTtcclxuICAgIEF1dGhTZXJ2aWNlLnRpbWVycy5tYXAodCA9PiBjbGVhckludGVydmFsKHQpKTtcclxuICAgIEF1dGhTZXJ2aWNlLnRpbWVycyA9IFtdO1xyXG4gICAgdGhpcy5zZXRUb2tlblNlY29uZHMoKVxyXG4gICAgQXV0aFNlcnZpY2UudGltZXJzLnB1c2godGhpcy5jaGVja1JlZnJlc2hUb2tlbigpKTtcclxuICAgIHRoaXMudXNlciA9IEF1dGhTZXJ2aWNlLnVzZXJcclxuICAgIGF3YWl0IHRoaXMudXBkYXRlTGFuZ3VhZ2UoKVxyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChUT0tFTl9LRVksIHRva2VuLCBudWxsLCBudWxsLCBudWxsLCB0cnVlLCAnU3RyaWN0Jyk7XHJcbiAgICB0aGlzLmlzQXV0aGVudGljYXRlZFN1YmplY3QubmV4dCh0cnVlKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUFjY2Vzc1Rva2VuV2l0aG91dExhbmd1YWdlKHJlc3BvbnNlOiBhbnkpIHtcclxuICAgIGNvbnN0IHRva2VuID0gcmVzcG9uc2U7XHJcbiAgICBBdXRoU2VydmljZS51c2VyID0gbmV3IFVzZXIoKTtcclxuICAgIEF1dGhTZXJ2aWNlLnVzZXIudG9rZW5fdHlwZSA9IFwiQmVhcmVyXCJcclxuICAgIEF1dGhTZXJ2aWNlLnVzZXIuYWNjZXNzX3Rva2VuID0gdG9rZW47XHJcbiAgICBBdXRoU2VydmljZS51c2VyLnByb2ZpbGUgPSB0aGlzLmp3dEhlbHBlci5kZWNvZGVUb2tlbih0b2tlbik7XHJcbiAgICBBdXRoU2VydmljZS51c2VyLmV4cGlyZXNfYXQgPSB0aGlzLmp3dEhlbHBlci5nZXRUb2tlbkV4cGlyYXRpb25EYXRlKHRva2VuKTtcclxuICAgIHRoaXMuc2V0VG9rZW5TZWNvbmRzKClcclxuICAgIHRoaXMudXNlciA9IEF1dGhTZXJ2aWNlLnVzZXJcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoVE9LRU5fS0VZLCB0b2tlbiwgbnVsbCwgbnVsbCwgbnVsbCwgdHJ1ZSwgJ1N0cmljdCcpO1xyXG4gICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWRTdWJqZWN0Lm5leHQodHJ1ZSk7XHJcbiAgfVxyXG4gIGFzeW5jIHVwZGF0ZUxhbmd1YWdlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgfHxcclxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgPT0gdGhpcy51c2VyLnByb2ZpbGUubG9jYWxlXHJcbiAgICApXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5ndWFnZScsIHRoaXMudXNlci5wcm9maWxlLmxvY2FsZSk7XHJcblxyXG4gICAgaWYgKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyAhPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSkge1xyXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UucmVzZXRMYW5nKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyk7XHJcbiAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZVxyXG4gICAgICAgIC5yZWxvYWRMYW5nKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrUmVmcmVzaFRva2VuKCkge1xyXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSgpIGFzIGFueTtcclxuICAgIHJldHVybiBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGlmIChNYXRoLmZsb29yKEF1dGhTZXJ2aWNlLnNlY29uZHMpIDwgMTIwICYmIHRoaXMuaXNBdXRoZW50aWNhdGVkKCkpXHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKClcclxuICAgICAgQXV0aFNlcnZpY2Uuc2Vjb25kcy0tO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG4gIHNldFRva2VuU2Vjb25kcygpIHtcclxuICAgIGxldCBkYXRlID0gbmV3IERhdGUoKSBhcyBhbnk7XHJcbiAgICBBdXRoU2VydmljZS5zZWNvbmRzID0gKEF1dGhTZXJ2aWNlLnVzZXIuZXhwaXJlc19hdCAtIGRhdGUpIC8gMTAwMFxyXG4gIH1cclxuICByZWZyZXNoKCkge1xyXG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAnQXV0aG9yaXphdGlvbic6IHRoaXMuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKCksXHJcbiAgICAgIH0pLFxyXG4gICAgfTtcclxuICAgIGxldCBBcGlVcmwgPSAnL2FwaS9Ib21lLyc7XHJcbiAgICB0aGlzLmh0dHAuZ2V0KHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFwaVVybCgpICsgQXBpVXJsICsgJ1JlZnJlc2hBY2Nlc3NUb2tlbicsIGh0dHBPcHRpb25zKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLmNvb2tpZVNlcnZpY2UuZGVsZXRlKFRPS0VOX0tFWSk7XHJcbiAgICAgIHRoaXMuaGFuZGxlQWNjZXNzVG9rZW5XaXRob3V0TGFuZ3VhZ2UocmVzKVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,12 @@
1
+ // This file can be replaced during build by using the `fileReplacements` array.
2
+ // `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.
3
+ // The list of file replacements can be found in `angular.json`.
4
+ export const environment = Object.assign({}, window.Environment);
5
+ /*
6
+ * In development mode, to ignore zone related error stack frames such as
7
+ * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can
8
+ * import the following file, but please comment it out in production mode
9
+ * because it will have performance impact when throw error
10
+ */
11
+ // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9jb25maWcvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0ZBQWdGO0FBQ2hGLDJFQUEyRTtBQUMzRSxnRUFBZ0U7QUFFaEUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFDeEMsRUFDQSxNQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7QUFHN0I7Ozs7O0dBS0c7QUFDSCxtRUFBbUUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgY2FuIGJlIHJlcGxhY2VkIGR1cmluZyBidWlsZCBieSB1c2luZyB0aGUgYGZpbGVSZXBsYWNlbWVudHNgIGFycmF5LlxyXG4vLyBgbmcgYnVpbGQgLS0tcHJvZGAgcmVwbGFjZXMgYGVudmlyb25tZW50LnRzYCB3aXRoIGBlbnZpcm9ubWVudC5wcm9kLnRzYC5cclxuLy8gVGhlIGxpc3Qgb2YgZmlsZSByZXBsYWNlbWVudHMgY2FuIGJlIGZvdW5kIGluIGBhbmd1bGFyLmpzb25gLlxyXG5cclxuZXhwb3J0IGNvbnN0IGVudmlyb25tZW50ID0gT2JqZWN0LmFzc2lnbih7XHJcbn0sXHJcbih3aW5kb3cgYXMgYW55KS5FbnZpcm9ubWVudCk7XHJcblxyXG5cclxuLypcclxuICogSW4gZGV2ZWxvcG1lbnQgbW9kZSwgdG8gaWdub3JlIHpvbmUgcmVsYXRlZCBlcnJvciBzdGFjayBmcmFtZXMgc3VjaCBhc1xyXG4gKiBgem9uZS5ydW5gLCBgem9uZURlbGVnYXRlLmludm9rZVRhc2tgIGZvciBlYXNpZXIgZGVidWdnaW5nLCB5b3UgY2FuXHJcbiAqIGltcG9ydCB0aGUgZm9sbG93aW5nIGZpbGUsIGJ1dCBwbGVhc2UgY29tbWVudCBpdCBvdXQgaW4gcHJvZHVjdGlvbiBtb2RlXHJcbiAqIGJlY2F1c2UgaXQgd2lsbCBoYXZlIHBlcmZvcm1hbmNlIGltcGFjdCB3aGVuIHRocm93IGVycm9yXHJcbiAqL1xyXG4vLyBpbXBvcnQgJ3pvbmUuanMvZGlzdC96b25lLWVycm9yJzsgIC8vIEluY2x1ZGVkIHdpdGggQW5ndWxhciBDTEkuXHJcbiJdfQ==
@@ -0,0 +1,105 @@
1
+ import { cloneDeep } from 'lodash';
2
+ const applicationName = 'html-to-docx';
3
+ const defaultOrientation = 'portrait';
4
+ const landscapeWidth = 15840;
5
+ const landscapeHeight = 12240;
6
+ const landscapeMargins = {
7
+ top: 1800,
8
+ right: 1440,
9
+ bottom: 1800,
10
+ left: 1440,
11
+ header: 720,
12
+ footer: 720,
13
+ gutter: 0,
14
+ };
15
+ const portraitMargins = {
16
+ top: 1440,
17
+ right: 1800,
18
+ bottom: 1440,
19
+ left: 1800,
20
+ header: 720,
21
+ footer: 720,
22
+ gutter: 0,
23
+ };
24
+ const defaultFont = 'Times New Roman';
25
+ const defaultFontSize = 22;
26
+ const defaultDocumentOptions = {
27
+ orientation: defaultOrientation,
28
+ margins: cloneDeep(portraitMargins),
29
+ title: '',
30
+ subject: '',
31
+ creator: applicationName,
32
+ keywords: [applicationName],
33
+ description: '',
34
+ lastModifiedBy: applicationName,
35
+ revision: 1,
36
+ createdAt: new Date(),
37
+ modifiedAt: new Date(),
38
+ headerType: 'default',
39
+ header: false,
40
+ footerType: 'default',
41
+ footer: false,
42
+ font: defaultFont,
43
+ fontSize: defaultFontSize,
44
+ complexScriptFontSize: defaultFontSize,
45
+ table: {
46
+ row: {
47
+ cantSplit: false,
48
+ },
49
+ },
50
+ pageSize: {
51
+ width: landscapeHeight,
52
+ height: landscapeWidth,
53
+ },
54
+ pageNumber: false,
55
+ skipFirstHeaderFooter: false,
56
+ lineNumber: false,
57
+ lineNumberOptions: {
58
+ countBy: 1,
59
+ start: 0,
60
+ restart: 'continuous',
61
+ },
62
+ numbering: {
63
+ defaultOrderedListStyleType: 'decimal',
64
+ },
65
+ };
66
+ const defaultHTMLString = '<p></p>';
67
+ const relsFolderName = '_rels';
68
+ const headerFileName = 'header1';
69
+ const footerFileName = 'footer1';
70
+ const themeFileName = 'theme1';
71
+ const documentFileName = 'document';
72
+ const headerType = 'header';
73
+ const footerType = 'footer';
74
+ const themeType = 'theme';
75
+ const hyperlinkType = 'hyperlink';
76
+ const imageType = 'image';
77
+ const internalRelationship = 'Internal';
78
+ const wordFolder = 'word';
79
+ const themeFolder = 'theme';
80
+ const paragraphBordersObject = {
81
+ top: {
82
+ size: 0,
83
+ spacing: 3,
84
+ color: 'FFFFFF',
85
+ },
86
+ left: {
87
+ size: 0,
88
+ spacing: 3,
89
+ color: 'FFFFFF',
90
+ },
91
+ bottom: {
92
+ size: 0,
93
+ spacing: 3,
94
+ color: 'FFFFFF',
95
+ },
96
+ right: {
97
+ size: 0,
98
+ spacing: 3,
99
+ color: 'FFFFFF',
100
+ },
101
+ };
102
+ const colorlessColors = ['transparent', 'auto'];
103
+ const verticalAlignValues = ['top', 'middle', 'bottom'];
104
+ export { defaultDocumentOptions, defaultHTMLString, relsFolderName, headerFileName, footerFileName, themeFileName, documentFileName, headerType, footerType, themeType, internalRelationship, wordFolder, themeFolder, landscapeMargins, portraitMargins, defaultOrientation, landscapeWidth, landscapeHeight, applicationName, defaultFont, defaultFontSize, hyperlinkType, imageType, paragraphBordersObject, colorlessColors, verticalAlignValues, };
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvY29uZmlnL3dvcmQvY29uc3RhbnRzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFbkMsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFDO0FBQ3ZDLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDO0FBQ3RDLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQztBQUM3QixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUM7QUFDOUIsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixHQUFHLEVBQUUsSUFBSTtJQUNULEtBQUssRUFBRSxJQUFJO0lBQ1gsTUFBTSxFQUFFLElBQUk7SUFDWixJQUFJLEVBQUUsSUFBSTtJQUNWLE1BQU0sRUFBRSxHQUFHO0lBQ1gsTUFBTSxFQUFFLEdBQUc7SUFDWCxNQUFNLEVBQUUsQ0FBQztDQUNWLENBQUM7QUFDRixNQUFNLGVBQWUsR0FBRztJQUN0QixHQUFHLEVBQUUsSUFBSTtJQUNULEtBQUssRUFBRSxJQUFJO0lBQ1gsTUFBTSxFQUFFLElBQUk7SUFDWixJQUFJLEVBQUUsSUFBSTtJQUNWLE1BQU0sRUFBRSxHQUFHO0lBQ1gsTUFBTSxFQUFFLEdBQUc7SUFDWCxNQUFNLEVBQUUsQ0FBQztDQUNWLENBQUM7QUFDRixNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQztBQUN0QyxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDM0IsTUFBTSxzQkFBc0IsR0FBRztJQUM3QixXQUFXLEVBQUUsa0JBQWtCO0lBQy9CLE9BQU8sRUFBRSxTQUFTLENBQUMsZUFBZSxDQUFDO0lBQ25DLEtBQUssRUFBRSxFQUFFO0lBQ1QsT0FBTyxFQUFFLEVBQUU7SUFDWCxPQUFPLEVBQUUsZUFBZTtJQUN4QixRQUFR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Q3RCLGVBQWUsRUFDZixtQkFBbUIsR0FDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XHJcblxyXG5jb25zdCBhcHBsaWNhdGlvbk5hbWUgPSAnaHRtbC10by1kb2N4JztcclxuY29uc3QgZGVmYXVsdE9yaWVudGF0aW9uID0gJ3BvcnRyYWl0JztcclxuY29uc3QgbGFuZHNjYXBlV2lkdGggPSAxNTg0MDtcclxuY29uc3QgbGFuZHNjYXBlSGVpZ2h0ID0gMTIyNDA7XHJcbmNvbnN0IGxhbmRzY2FwZU1hcmdpbnMgPSB7XHJcbiAgdG9wOiAxODAwLFxyXG4gIHJpZ2h0OiAxNDQwLFxyXG4gIGJvdHRvbTogMTgwMCxcclxuICBsZWZ0OiAxNDQwLFxyXG4gIGhlYWRlcjogNzIwLFxyXG4gIGZvb3RlcjogNzIwLFxyXG4gIGd1dHRlcjogMCxcclxufTtcclxuY29uc3QgcG9ydHJhaXRNYXJnaW5zID0ge1xyXG4gIHRvcDogMTQ0MCxcclxuICByaWdodDogMTgwMCxcclxuICBib3R0b206IDE0NDAsXHJcbiAgbGVmdDogMTgwMCxcclxuICBoZWFkZXI6IDcyMCxcclxuICBmb290ZXI6IDcyMCxcclxuICBndXR0ZXI6IDAsXHJcbn07XHJcbmNvbnN0IGRlZmF1bHRGb250ID0gJ1RpbWVzIE5ldyBSb21hbic7XHJcbmNvbnN0IGRlZmF1bHRGb250U2l6ZSA9IDIyO1xyXG5jb25zdCBkZWZhdWx0RG9jdW1lbnRPcHRpb25zID0ge1xyXG4gIG9yaWVudGF0aW9uOiBkZWZhdWx0T3JpZW50YXRpb24sXHJcbiAgbWFyZ2luczogY2xvbmVEZWVwKHBvcnRyYWl0TWFyZ2lucyksXHJcbiAgdGl0bGU6ICcnLFxyXG4gIHN1YmplY3Q6ICcnLFxyXG4gIGNyZWF0b3I6IGFwcGxpY2F0aW9uTmFtZSxcclxuICBrZXl3b3JkczogW2FwcGxpY2F0aW9uTmFtZV0sXHJcbiAgZGVzY3JpcHRpb246ICcnLFxyXG4gIGxhc3RNb2RpZmllZEJ5OiBhcHBsaWNhdGlvbk5hbWUsXHJcbiAgcmV2aXNpb246IDEsXHJcbiAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxyXG4gIG1vZGlmaWVkQXQ6IG5ldyBEYXRlKCksXHJcbiAgaGVhZGVyVHlwZTogJ2RlZmF1bHQnLFxyXG4gIGhlYWRlcjogZmFsc2UsXHJcbiAgZm9vdGVyVHlwZTogJ2RlZmF1bHQnLFxyXG4gIGZvb3RlcjogZmFsc2UsXHJcbiAgZm9udDogZGVmYXVsdEZvbnQsXHJcbiAgZm9udFNpemU6IGRlZmF1bHRGb250U2l6ZSxcclxuICBjb21wbGV4U2NyaXB0Rm9udFNpemU6IGRlZmF1bHRGb250U2l6ZSxcclxuICB0YWJsZToge1xyXG4gICAgcm93OiB7XHJcbiAgICAgIGNhbnRTcGxpdDogZmFsc2UsXHJcbiAgICB9LFxyXG4gIH0sXHJcbiAgcGFnZVNpemU6IHtcclxuICAgIHdpZHRoOiBsYW5kc2NhcGVIZWlnaHQsXHJcbiAgICBoZWlnaHQ6IGxhbmRzY2FwZVdpZHRoLFxyXG4gIH0sXHJcbiAgcGFnZU51bWJlcjogZmFsc2UsXHJcbiAgc2tpcEZpcnN0SGVhZGVyRm9vdGVyOiBmYWxzZSxcclxuICBsaW5lTnVtYmVyOiBmYWxzZSxcclxuICBsaW5lTnVtYmVyT3B0aW9uczoge1xyXG4gICAgY291bnRCeTogMSxcclxuICAgIHN0YXJ0OiAwLFxyXG4gICAgcmVzdGFydDogJ2NvbnRpbnVvdXMnLFxyXG4gIH0sXHJcbiAgbnVtYmVyaW5nOiB7XHJcbiAgICBkZWZhdWx0T3JkZXJlZExpc3RTdHlsZVR5cGU6ICdkZWNpbWFsJyxcclxuICB9LFxyXG59O1xyXG5jb25zdCBkZWZhdWx0SFRNTFN0cmluZyA9ICc8cD48L3A+JztcclxuY29uc3QgcmVsc0ZvbGRlck5hbWUgPSAnX3JlbHMnO1xyXG5jb25zdCBoZWFkZXJGaWxlTmFtZSA9ICdoZWFkZXIxJztcclxuY29uc3QgZm9vdGVyRmlsZU5hbWUgPSAnZm9vdGVyMSc7XHJcbmNvbnN0IHRoZW1lRmlsZU5hbWUgPSAndGhlbWUxJztcclxuY29uc3QgZG9jdW1lbnRGaWxlTmFtZSA9ICdkb2N1bWVudCc7XHJcbmNvbnN0IGhlYWRlclR5cGUgPSAnaGVhZGVyJztcclxuY29uc3QgZm9vdGVyVHlwZSA9ICdmb290ZXInO1xyXG5jb25zdCB0aGVtZVR5cGUgPSAndGhlbWUnO1xyXG5jb25zdCBoeXBlcmxpbmtUeXBlID0gJ2h5cGVybGluayc7XHJcbmNvbnN0IGltYWdlVHlwZSA9ICdpbWFnZSc7XHJcbmNvbnN0IGludGVybmFsUmVsYXRpb25zaGlwID0gJ0ludGVybmFsJztcclxuY29uc3Qgd29yZEZvbGRlciA9ICd3b3JkJztcclxuY29uc3QgdGhlbWVGb2xkZXIgPSAndGhlbWUnO1xyXG5jb25zdCBwYXJhZ3JhcGhCb3JkZXJzT2JqZWN0ID0ge1xyXG4gIHRvcDoge1xyXG4gICAgc2l6ZTogMCxcclxuICAgIHNwYWNpbmc6IDMsXHJcbiAgICBjb2xvcjogJ0ZGRkZGRicsXHJcbiAgfSxcclxuICBsZWZ0OiB7XHJcbiAgICBzaXplOiAwLFxyXG4gICAgc3BhY2luZzogMyxcclxuICAgIGNvbG9yOiAnRkZGRkZGJyxcclxuICB9LFxyXG4gIGJvdHRvbToge1xyXG4gICAgc2l6ZTogMCxcclxuICAgIHNwYWNpbmc6IDMsXHJcbiAgICBjb2xvcjogJ0ZGRkZGRicsXHJcbiAgfSxcclxuICByaWdodDoge1xyXG4gICAgc2l6ZTogMCxcclxuICAgIHNwYWNpbmc6IDMsXHJcbiAgICBjb2xvcjogJ0ZGRkZGRicsXHJcbiAgfSxcclxufTtcclxuY29uc3QgY29sb3JsZXNzQ29sb3JzID0gWyd0cmFuc3BhcmVudCcsICdhdXRvJ107XHJcbmNvbnN0IHZlcnRpY2FsQWxpZ25WYWx1ZXMgPSBbJ3RvcCcsICdtaWRkbGUnLCAnYm90dG9tJ107XHJcblxyXG5leHBvcnQge1xyXG4gIGRlZmF1bHREb2N1bWVudE9wdGlvbnMsXHJcbiAgZGVmYXVsdEhUTUxTdHJpbmcsXHJcbiAgcmVsc0ZvbGRlck5hbWUsXHJcbiAgaGVhZGVyRmlsZU5hbWUsXHJcbiAgZm9vdGVyRmlsZU5hbWUsXHJcbiAgdGhlbWVGaWxlTmFtZSxcclxuICBkb2N1bWVudEZpbGVOYW1lLFxyXG4gIGhlYWRlclR5cGUsXHJcbiAgZm9vdGVyVHlwZSxcclxuICB0aGVtZVR5cGUsXHJcbiAgaW50ZXJuYWxSZWxhdGlvbnNoaXAsXHJcbiAgd29yZEZvbGRlcixcclxuICB0aGVtZUZvbGRlcixcclxuICBsYW5kc2NhcGVNYXJnaW5zLFxyXG4gIHBvcnRyYWl0TWFyZ2lucyxcclxuICBkZWZhdWx0T3JpZW50YXRpb24sXHJcbiAgbGFuZHNjYXBlV2lkdGgsXHJcbiAgbGFuZHNjYXBlSGVpZ2h0LFxyXG4gIGFwcGxpY2F0aW9uTmFtZSxcclxuICBkZWZhdWx0Rm9udCxcclxuICBkZWZhdWx0Rm9udFNpemUsXHJcbiAgaHlwZXJsaW5rVHlwZSxcclxuICBpbWFnZVR5cGUsXHJcbiAgcGFyYWdyYXBoQm9yZGVyc09iamVjdCxcclxuICBjb2xvcmxlc3NDb2xvcnMsXHJcbiAgdmVydGljYWxBbGlnblZhbHVlcyxcclxufTtcclxuIl19