@taon-dev/seo 21.0.8 → 21.0.9

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 (117) hide show
  1. package/browser/fesm2022/seo-browser.mjs +1 -1
  2. package/browser/fesm2022/seo-browser.mjs.map +1 -1
  3. package/browser/package.json +1 -1
  4. package/browser/types/seo-browser.d.ts +1 -1
  5. package/browser-prod/fesm2022/seo-browser-prod.mjs +1 -1
  6. package/browser-prod/fesm2022/seo-browser-prod.mjs.map +1 -1
  7. package/browser-prod/package.json +1 -1
  8. package/browser-prod/types/seo-browser-prod.d.ts +1 -1
  9. package/cli.d.ts +2 -1
  10. package/full-dts/build-info._auto-generated_.d.ts +2 -1
  11. package/full-dts/i18n/lib.translation.d.ts +1 -0
  12. package/full-dts/i18n/my-organization-proj.ts.en-US.i18n.data.d.ts +1 -0
  13. package/full-dts/i18n/my-organization-proj.ts.pl-PL.i18n.data.d.ts +1 -0
  14. package/full-dts/index._auto-generated_.d.ts +1 -0
  15. package/full-dts/index.d.ts +1 -0
  16. package/full-dts/migrations/1791132517216_initial.d.ts +1 -0
  17. package/full-dts/migrations/1791655200000_seo_configuration.d.ts +1 -0
  18. package/full-dts/migrations/index.d.ts +1 -0
  19. package/full-dts/migrations/migrations_index._auto-generated_.d.ts +1 -0
  20. package/full-dts/my-organization-proj.d.ts +1 -0
  21. package/full-dts/start-cli.d.ts +1 -0
  22. package/full-dts/taon-seo-backoffice/index.d.ts +1 -0
  23. package/full-dts/taon-seo-backoffice/taon-seo-backoffice.component.d.ts +1 -0
  24. package/full-dts/taon-seo-backoffice/taon-seo-backoffice.models.d.ts +1 -0
  25. package/full-dts/taon-seo-backoffice/taon-seo-backoffice.routes.d.ts +1 -0
  26. package/full-dts/taon-seo-image-input/taon-seo-image-input.component.d.ts +1 -0
  27. package/full-dts/taon-seo-image.api.service.d.ts +1 -0
  28. package/full-dts/taon-seo-image.controller.d.ts +1 -0
  29. package/full-dts/taon-seo-page/i18n/taon-seo-page.constants.ts.en-US.i18n.data.d.ts +1 -0
  30. package/full-dts/taon-seo-page/i18n/taon-seo-page.constants.ts.pl-PL.i18n.data.d.ts +1 -0
  31. package/full-dts/taon-seo-page/i18n/taon-seo-page.translation.d.ts +1 -0
  32. package/full-dts/taon-seo-page/index.d.ts +1 -0
  33. package/full-dts/taon-seo-page/taon-seo-page-backoffice/index.d.ts +1 -0
  34. package/full-dts/taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.component.d.ts +1 -0
  35. package/full-dts/taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.models.d.ts +1 -0
  36. package/full-dts/taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.routes.d.ts +1 -0
  37. package/full-dts/taon-seo-page/taon-seo-page-edit-dialog/taon-seo-page-edit-dialog.component.d.ts +1 -0
  38. package/full-dts/taon-seo-page/taon-seo-page.abstract.context.d.ts +1 -0
  39. package/full-dts/taon-seo-page/taon-seo-page.api.service.d.ts +1 -0
  40. package/full-dts/taon-seo-page/taon-seo-page.config.service.d.ts +1 -0
  41. package/full-dts/taon-seo-page/taon-seo-page.constants.d.ts +1 -0
  42. package/full-dts/taon-seo-page/taon-seo-page.controller.d.ts +1 -0
  43. package/full-dts/taon-seo-page/taon-seo-page.entity.d.ts +1 -0
  44. package/full-dts/taon-seo-page/taon-seo-page.kv.repository.d.ts +1 -0
  45. package/full-dts/taon-seo-page/taon-seo-page.middleware.d.ts +1 -0
  46. package/full-dts/taon-seo-page/taon-seo-page.models.d.ts +1 -0
  47. package/full-dts/taon-seo-page/taon-seo-page.provider.d.ts +1 -0
  48. package/full-dts/taon-seo-page/taon-seo-page.repository.d.ts +1 -0
  49. package/full-dts/taon-seo-page/taon-seo-page.subscriber.d.ts +1 -0
  50. package/full-dts/taon-seo-page/taon-seo-page.utils.d.ts +1 -0
  51. package/full-dts/taon-seo-page/taon-seo-page.validators.d.ts +1 -0
  52. package/full-dts/taon-seo-settings/i18n/taon-seo-settings.constants.ts.en-US.i18n.data.d.ts +1 -0
  53. package/full-dts/taon-seo-settings/i18n/taon-seo-settings.constants.ts.pl-PL.i18n.data.d.ts +1 -0
  54. package/full-dts/taon-seo-settings/i18n/taon-seo-settings.translation.d.ts +1 -0
  55. package/full-dts/taon-seo-settings/index.d.ts +1 -0
  56. package/full-dts/taon-seo-settings/taon-seo-settings-backoffice/index.d.ts +1 -0
  57. package/full-dts/taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.component.d.ts +1 -0
  58. package/full-dts/taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.models.d.ts +1 -0
  59. package/full-dts/taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.routes.d.ts +1 -0
  60. package/full-dts/taon-seo-settings/taon-seo-settings.abstract.context.d.ts +1 -0
  61. package/full-dts/taon-seo-settings/taon-seo-settings.api.service.d.ts +1 -0
  62. package/full-dts/taon-seo-settings/taon-seo-settings.config.service.d.ts +1 -0
  63. package/full-dts/taon-seo-settings/taon-seo-settings.constants.d.ts +1 -0
  64. package/full-dts/taon-seo-settings/taon-seo-settings.controller.d.ts +1 -0
  65. package/full-dts/taon-seo-settings/taon-seo-settings.entity.d.ts +1 -0
  66. package/full-dts/taon-seo-settings/taon-seo-settings.kv.repository.d.ts +1 -0
  67. package/full-dts/taon-seo-settings/taon-seo-settings.middleware.d.ts +1 -0
  68. package/full-dts/taon-seo-settings/taon-seo-settings.models.d.ts +1 -0
  69. package/full-dts/taon-seo-settings/taon-seo-settings.provider.d.ts +1 -0
  70. package/full-dts/taon-seo-settings/taon-seo-settings.repository.d.ts +1 -0
  71. package/full-dts/taon-seo-settings/taon-seo-settings.subscriber.d.ts +1 -0
  72. package/full-dts/taon-seo-settings/taon-seo-settings.utils.d.ts +1 -0
  73. package/full-dts/taon-seo-settings/taon-seo-settings.validators.d.ts +1 -0
  74. package/full-dts/taon-seo.abstract.context.d.ts +1 -0
  75. package/full-dts/taon-seo.provider.d.ts +1 -0
  76. package/full-dts/taon-seo.service.d.ts +1 -0
  77. package/full-dts/taon-seo.utils.d.ts +1 -0
  78. package/full-dts/taon-seo.validation.d.ts +1 -0
  79. package/i18n/app.ts.en-US.i18n.data.d.ts +1 -0
  80. package/i18n/app.ts.pl-PL.i18n.data.d.ts +1 -0
  81. package/i18n/src.translation.d.ts +1 -0
  82. package/index.d.ts +2 -1
  83. package/lib/build-info._auto-generated_.d.ts +1 -1
  84. package/lib/build-info._auto-generated_.js +1 -1
  85. package/lib/package.json +1 -1
  86. package/lib/taon-seo-backoffice/index.d.ts +1 -1
  87. package/lib/taon-seo-backoffice/index.js +2 -2
  88. package/lib/taon-seo-page/taon-seo-page-backoffice/index.d.ts +1 -1
  89. package/lib/taon-seo-page/taon-seo-page-backoffice/index.js +2 -2
  90. package/lib/taon-seo-settings/taon-seo-settings-backoffice/index.d.ts +1 -1
  91. package/lib/taon-seo-settings/taon-seo-settings-backoffice/index.js +2 -2
  92. package/lib-esm/lib/build-info._auto-generated_.d.ts +1 -1
  93. package/lib-esm/lib/build-info._auto-generated_.js +1 -1
  94. package/lib-esm/lib/taon-seo-backoffice/index.d.ts +1 -1
  95. package/lib-esm/lib/taon-seo-backoffice/index.js +1 -1
  96. package/lib-esm/lib/taon-seo-page/taon-seo-page-backoffice/index.d.ts +1 -1
  97. package/lib-esm/lib/taon-seo-page/taon-seo-page-backoffice/index.js +1 -1
  98. package/lib-esm/lib/taon-seo-settings/taon-seo-settings-backoffice/index.d.ts +1 -1
  99. package/lib-esm/lib/taon-seo-settings/taon-seo-settings-backoffice/index.js +1 -1
  100. package/lib-prod/build-info._auto-generated_.d.ts +1 -1
  101. package/lib-prod/build-info._auto-generated_.js +1 -1
  102. package/lib-prod/package.json +1 -1
  103. package/lib-prod/taon-seo-backoffice/index.d.ts +1 -1
  104. package/lib-prod/taon-seo-backoffice/index.js +1 -1
  105. package/lib-prod/taon-seo-page/taon-seo-page-backoffice/index.d.ts +1 -1
  106. package/lib-prod/taon-seo-page/taon-seo-page-backoffice/index.js +1 -1
  107. package/lib-prod/taon-seo-settings/taon-seo-settings-backoffice/index.d.ts +1 -1
  108. package/lib-prod/taon-seo-settings/taon-seo-settings-backoffice/index.js +1 -1
  109. package/package.json +1 -1
  110. package/websql/fesm2022/seo-websql.mjs +1 -1
  111. package/websql/fesm2022/seo-websql.mjs.map +1 -1
  112. package/websql/package.json +1 -1
  113. package/websql/types/seo-websql.d.ts +1 -1
  114. package/websql-prod/fesm2022/seo-websql-prod.mjs +1 -1
  115. package/websql-prod/fesm2022/seo-websql-prod.mjs.map +1 -1
  116. package/websql-prod/package.json +1 -1
  117. package/websql-prod/types/seo-websql-prod.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"seo-websql-prod.mjs","sources":["../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.entity.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.constants.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.entity.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/migrations/1791655200000_seo_configuration.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/migrations/1791132517216_initial.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/migrations/migrations_index._auto-generated_.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/migrations/index.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/build-info._auto-generated_.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/my-organization-proj.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/start-cli.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo.provider.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-image.controller.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-image.api.service.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo.utils.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo.validation.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.repository.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.controller.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.provider.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.repository.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.controller.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.provider.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.api.service.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.api.service.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo.service.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/i18n/lib.translation.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-backoffice/taon-seo-backoffice.component.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-backoffice/taon-seo-backoffice.component.html","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-backoffice/taon-seo-backoffice.models.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-backoffice/taon-seo-backoffice.routes.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-image-input/taon-seo-image-input.component.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.config.service.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.constants.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.kv.repository.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.middleware.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.models.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.utils.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.validators.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.config.service.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.kv.repository.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.middleware.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.models.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.utils.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.validators.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/i18n/taon-seo-page.translation.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page-edit-dialog/taon-seo-page-edit-dialog.component.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page-edit-dialog/taon-seo-page-edit-dialog.component.html","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.component.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.component.html","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.models.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.routes.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/i18n/taon-seo-settings.translation.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.component.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.component.html","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.models.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.routes.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/index._auto-generated_.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/index.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/seo-websql-prod.ts"],"sourcesContent":["import {\n Column,\n PrimaryGeneratedColumn,\n TaonBaseEntity,\n TaonEntity,\n} from 'taon/websql-prod';\n\n@TaonEntity({\n className: 'TaonSeoPageEntity',\n createTable: true,\n})\nexport class TaonSeoPageEntity extends TaonBaseEntity<TaonSeoPageEntity> {\n //#region @websql\n @PrimaryGeneratedColumn()\n //#endregion\n id: number;\n\n //#region @websql\n @Column({ type: 'varchar', unique: true })\n //#endregion\n path: string;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n title: string | null;\n\n //#region @websql\n @Column({ type: 'text', nullable: true })\n //#endregion\n description: string | null;\n\n //#region @websql\n @Column({ type: 'text', nullable: true })\n //#endregion\n keywords: string | null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n canonicalUrl: string | null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n ogTitle: string | null;\n\n //#region @websql\n @Column({ type: 'text', nullable: true })\n //#endregion\n ogDescription: string | null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n ogImageKey: string | null;\n\n //#region @websql\n @Column({ type: 'boolean', default: false })\n //#endregion\n noIndex: boolean;\n\n //#region @websql\n @Column({ type: 'boolean', default: false })\n //#endregion\n noFollow: boolean;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n createdAt: Date;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n updatedAt: Date;\n}\n","import type { TaonSeoSettingsEntity } from './taon-seo-settings.entity';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nconst t = Translation.for('src/lib/taon-seo-settings/taon-seo-settings.constants.ts', {\"src/lib/taon-seo-settings/taon-seo-settings.constants.ts\":{\"en-US\":async () => (await import('./i18n/taon-seo-settings.constants.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-seo-settings.constants.ts.pl-PL.i18n.data')).default}} as any);\n\nexport const TaonSeoSettingsDefaultsValues = {\n id: 1,\n siteName: '',\n defaultTitle: '',\n defaultDescription: '',\n defaultKeywords: null,\n defaultImageKey: null,\n canonicalBaseUrl: null,\n robotsIndex: true,\n robotsFollow: true,\n} as Partial<TaonSeoSettingsEntity>;\n\nexport enum TaonSeoSettingsErrors {\n INVALID_PASSWORD_EXAMPLE_ERROR = 'INVALID_PASSWORD_EXAMPLE_ERROR',\n}\n\nexport const TaonSeoSettingsTranslationErorsMap = new Map([\n [TaonSeoSettingsErrors.INVALID_PASSWORD_EXAMPLE_ERROR, t.gettext('Invalid Password')],\n]);","import { Column, PrimaryColumn, TaonBaseEntity, TaonEntity } from 'taon/websql-prod';\n\n@TaonEntity({\n className: 'TaonSeoSettingsEntity',\n createTable: true,\n})\nexport class TaonSeoSettingsEntity extends TaonBaseEntity<TaonSeoSettingsEntity> {\n //#region @websql\n @PrimaryColumn({ type: 'integer' })\n //#endregion\n id: number;\n\n //#region @websql\n @Column({ type: 'varchar', default: '' })\n //#endregion\n siteName: string;\n\n //#region @websql\n @Column({ type: 'varchar', default: '' })\n //#endregion\n defaultTitle: string;\n\n //#region @websql\n @Column({ type: 'text', default: '' })\n //#endregion\n defaultDescription: string;\n\n //#region @websql\n @Column({ type: 'text', nullable: true })\n //#endregion\n defaultKeywords: string | null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n defaultImageKey: string | null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n canonicalBaseUrl: string | null;\n\n //#region @websql\n @Column({ type: 'boolean', default: true })\n //#endregion\n robotsIndex: boolean;\n\n //#region @websql\n @Column({ type: 'boolean', default: true })\n //#endregion\n robotsFollow: boolean;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n createdAt: Date;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n updatedAt: Date;\n}\n","import { TaonBaseMigration, TaonMigration } from 'taon/websql-prod';\nimport { QueryRunner, Table } from 'taon-typeorm/websql-prod';\n\nimport { TaonSeoPageEntity } from '../taon-seo-page/taon-seo-page.entity';\nimport { TaonSeoSettingsDefaultsValues } from '../taon-seo-settings/taon-seo-settings.constants';\nimport { TaonSeoSettingsEntity } from '../taon-seo-settings/taon-seo-settings.entity';\n\n@TaonMigration({ className: 'SeoContext_1791655200000_seo_configuration' })\nexport class SeoContext_1791655200000_seo_configuration extends TaonBaseMigration {\n async up(queryRunner: QueryRunner): Promise<void> {\n for (const entity of [TaonSeoSettingsEntity, TaonSeoPageEntity]) {\n const metadata = queryRunner.connection.getMetadata(entity);\n const expected = Table.create(metadata, queryRunner.connection.driver);\n const current = await queryRunner.getTable(metadata.tablePath);\n if (current) {\n const expectedNames = expected.columns\n .map(column => column.name)\n .sort()\n .join(',');\n const currentNames = current.columns\n .map(column => column.name)\n .sort()\n .join(',');\n if (expectedNames === currentNames) {\n continue;\n }\n // Demo rows contain no route identity; never invent application paths for them.\n const count = await queryRunner.manager\n .createQueryBuilder()\n .from(metadata.tablePath, 'seo')\n .getCount();\n if (count > 0) {\n throw new Error(\n `Cannot migrate populated legacy SEO table ${metadata.tablePath}. Map its demo records to the new SEO schema before retrying.`,\n );\n }\n await queryRunner.dropTable(current);\n }\n await queryRunner.createTable(expected, true);\n }\n\n const settings = queryRunner.manager.getRepository(TaonSeoSettingsEntity);\n const records = await settings.find();\n if (records.some(record => record.id !== 1)) {\n throw new Error(\n 'Global SEO settings must use the singleton ID 1. Consolidate existing settings before retrying.',\n );\n }\n const now = new Date();\n await settings\n .createQueryBuilder()\n .insert()\n .values({\n ...TaonSeoSettingsDefaultsValues,\n createdAt: now,\n updatedAt: now,\n })\n .orIgnore()\n .execute();\n }\n\n async down(queryRunner: QueryRunner): Promise<void> {\n for (const entity of [TaonSeoPageEntity, TaonSeoSettingsEntity]) {\n const metadata = queryRunner.connection.getMetadata(entity);\n await queryRunner.dropTable(metadata.tablePath, true);\n }\n }\n}\n","import {\n MyAppAuthorization,\n MyAppGroup,\n MyAppPermission,\n MyAppRole,\n} from '@taon-dev/cms/websql-prod';\nimport { TaonAuthContextRepository } from '@taon-dev/session/websql-prod';\nimport { TaonBaseMigration, TaonMigration, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { QueryRunner } from 'taon-typeorm/websql-prod';\n\n//#region Migration class for context \"SeoContext\"\n@TaonMigration({\n className: 'SeoContext_1791132517216_initial',\n})\nexport class SeoContext_1791132517216_initial extends TaonBaseMigration {\n private taonAuthContextRepository = this.injectCustomRepo(\n TaonAuthContextRepository<MyAppAuthorization>,\n );\n\n //#region up\n async up(queryRunner: QueryRunner): Promise<any> {\n await queryRunner.startTransaction();\n try {\n await this.taonAuthContextRepository.persistTree({\n enums: {\n groups: MyAppGroup,\n roles: MyAppRole,\n permissions: MyAppPermission,\n },\n tree: {\n groupAndRoles: {\n [MyAppGroup.Administrator]: '*',\n [MyAppGroup.Customers]: [MyAppRole.BlogReader],\n },\n rolesAndPermissions: {\n [MyAppRole.Customer]: [\n MyAppPermission.AccessCourseP2,\n MyAppPermission.AccessCourseP2,\n ],\n [MyAppRole.CustomerPremium]: '*',\n },\n },\n });\n\n await queryRunner.commitTransaction();\n } catch (error) {\n console.error('Error in migration:', error);\n await queryRunner.rollbackTransaction();\n } finally {\n await queryRunner.release();\n }\n }\n //#endregion\n\n //#region down\n async down(queryRunner: QueryRunner): Promise<any> {\n await queryRunner.startTransaction();\n try {\n await this.taonAuthContextRepository.clearRolesGroupPermissions();\n\n await queryRunner.commitTransaction();\n } catch (error) {\n console.error('Error in migration:', error);\n await queryRunner.rollbackTransaction();\n } finally {\n await queryRunner.release();\n }\n }\n //#endregion\n}\n//#endregion","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { SeoContext_1791132517216_initial } from './1791132517216_initial';\nimport { SeoContext_1791655200000_seo_configuration } from './1791655200000_seo_configuration';\n// THIS FILE IS GENERATED - DO NOT MODIFY\nexport const MIGRATIONS_CLASSES_FOR_SeoContext = {\n /* 04-10-2026 18:48:37 */ SeoContext_1791132517216_initial,\n /* 10-10-2026 20:00:00 */ SeoContext_1791655200000_seo_configuration,\n};\n// THIS FILE IS GENERATED - DO NOT MODIFY\n","import { SeoContext_1791655200000_seo_configuration } from './1791655200000_seo_configuration';\nimport { MIGRATIONS_CLASSES_FOR_SeoContext as generatedMigrations } from './migrations_index._auto-generated_';\n\nexport const MIGRATIONS_CLASSES_FOR_SeoContext = {\n ...generatedMigrations,\n SeoContext_1791655200000_seo_configuration,\n};\n","// THIS FILE IS GENERATED - DO NOT MODIFY\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_FRAMEWORK_CLI_NAME = 'tnp';\n/**\n * This value can be change in taon.jsonc (appId)\n */\nexport const APP_ID = 'com.domain.example.seo';\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_BASE_HREF = '';\n/**\n * This value can be change in taon.jsonc (overrideNpmName)\n */\nexport const PROJECT_NPM_NAME = '@taon-dev/seo';\n/**\n * Taon version from you project taon.json\n */\nexport const CURRENT_PACKAGE_TAON_VERSION = 'v21';\n/**\n * Autogenerated by current cli tool. Use *tnp release* to bump version.\n */\nexport const CURRENT_PACKAGE_VERSION = '21.0.8';\n\n\n\n\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n ","import { Translation } from \"@taon-dev/i18n/websql-prod\";\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from \"taon/websql-prod\";\n\nconst t = Translation.for('src/lib/my-organization-proj.ts', {\"src/lib/my-organization-proj.ts\":{\"en-US\":async () => (await import('./i18n/my-organization-proj.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/my-organization-proj.ts.pl-PL.i18n.data')).default}} as any);\n\nexport function myOrgProj() {\n t.gettext('My Translated Company Name!')\n}","//#region tnp-helpers cli template\nimport { UtilsJson__NS__AttrJsoncProp, UtilsJson__NS__getAtrributiesFromJsonWithComments, UtilsJson__NS__getAttributiesFromComment, UtilsJson__NS__getValue, UtilsJson__NS__readJson, UtilsJson__NS__readJsonWithComments, UtilsJson__NS__setValue, UtilsJson__NS__validateLodashPath } from 'tnp-core/websql-prod';\nimport { BaseCommandLineFeature, Helpers__NS___fixCommand, Helpers__NS__ActionInstance, Helpers__NS__actionStarted, Helpers__NS__bigMaxBuffer, Helpers__NS__checkProcess, Helpers__NS__cleanExit, Helpers__NS__clearConsole, Helpers__NS__command, Helpers__NS__commandOutputAsString, Helpers__NS__commandOutputAsStringAsync, Helpers__NS__contain, Helpers__NS__createFolder, Helpers__NS__createSymLink, Helpers__NS__error, Helpers__NS__execute, Helpers__NS__exists, Helpers__NS__filesFrom, Helpers__NS__foldersFrom, Helpers__NS__getFilesFrom, Helpers__NS__getFoldersFrom, Helpers__NS__getIsBrowser, Helpers__NS__getIsElectron, Helpers__NS__getIsNode, Helpers__NS__getIsRunningInGitBash, Helpers__NS__getIsSupportedTaonTerminal, Helpers__NS__getIsVerboseMode, Helpers__NS__getIsVerboseModeOrTnp, Helpers__NS__getIsWebSQL, Helpers__NS__getIsWsl, Helpers__NS__getStdio, Helpers__NS__hideNodeWarnings, Helpers__NS__info, Helpers__NS__isBlob, Helpers__NS__isBuffer, Helpers__NS__isClass, Helpers__NS__isExistedSymlink, Helpers__NS__isFile, Helpers__NS__isFolder, Helpers__NS__isRunningInDocker, Helpers__NS__isRunningInLinuxGraphicsCapableEnvironment, Helpers__NS__isSymlinkFileExitedOrUnexisted, Helpers__NS__isSymlinkThatMatchesUrl, Helpers__NS__isUnexistedLink, Helpers__NS__killOnPort, Helpers__NS__killProcess, Helpers__NS__killProcessByPort, Helpers__NS__linksToFolderFrom, Helpers__NS__linksToFoldersFrom, Helpers__NS__log, Helpers__NS__logError, Helpers__NS__logInfo, Helpers__NS__logProc, Helpers__NS__logSuccess, Helpers__NS__logTaskDone, Helpers__NS__logTaskStarted, Helpers__NS__logWarn, Helpers__NS__mediaTypeFromSrc, Helpers__NS__mkdirp, Helpers__NS__modifyLineByLine, Helpers__NS__msgCacheClear, Helpers__NS__openFolderInFileExplorer, Helpers__NS__parse, Helpers__NS__pathContainLink, Helpers__NS__questionYesNo, Helpers__NS__readFile, Helpers__NS__readJson, Helpers__NS__readJson5, Helpers__NS__readJsonC, Helpers__NS__relative, Helpers__NS__remove, Helpers__NS__removeEmptyLineFromString, Helpers__NS__removeFileIfExists, Helpers__NS__removeFolderIfExists, Helpers__NS__removeIfExists, Helpers__NS__removeSlashAtBegin, Helpers__NS__removeSlashAtEnd, Helpers__NS__removeSymlinks, Helpers__NS__renderError, Helpers__NS__replaceLinesInFile, Helpers__NS__run, Helpers__NS__runAsyncIn, Helpers__NS__runSyncIn, Helpers__NS__runSyncOrAsync, Helpers__NS__sleep, Helpers__NS__stopApplication, Helpers__NS__stringify, Helpers__NS__success, Helpers__NS__taskDone, Helpers__NS__taskStarted, Helpers__NS__throwError, Helpers__NS__timeout, Helpers__NS__tryCatchError, Helpers__NS__tryReadFile, Helpers__NS__tryRemoveDir, Helpers__NS__values, Helpers__NS__wait, Helpers__NS__warn, Helpers__NS__writeFile, Helpers__NS__writeJson, Helpers__NS__writeJson5, Helpers__NS__writeJsonC } from 'tnp-helpers/websql-prod';\n/* */ \n//#endregion\n\n//#region CLI / global scope\n/**\n * This class is for handling global arguments. *\n * Cli engine will parse: hello:world:from:global:arg to helloWorldFromGlobalArg\n * (lower case, camel case) .. so you don't need to worry about misspelling\n * arguments\n */\nclass $Global extends BaseCommandLineFeature<{}> {\n /**\n * When you execute cli without arguments:`$ cli`\n */\n public _() {\n console.log(`Hello world from cli`);\n this._exit();\n }\n\n /**\n * When you execute: `$ cli hello:world:from:global:arg`\n * (or `$ cli helloWorldFromGlobalArg`)\n */\n helloWorldFromGlobalArg() {\n console.log('hello world from global argument!');\n this._exit(0);\n }\n}\n//#endregion\n\n//#region CLI / Version Scope\n/**\n *\n */\nclass $Version extends BaseCommandLineFeature<{\n anyCLIparamsHere: string;\n}> {\n /**\n * When you execute: `$ cli version`\n */\n public _() {\n console.log(`Hello world from version argument`);\n this._exit();\n }\n\n /**\n * When you execute: `$ cli version:getFromPackageJson`\n */\n public getFromPackageJson() {\n const ver = UtilsJson__NS__getValue(\n this.project.pathFor('package.json'),\n 'version',\n {\n defaultValue: '<not defined>',\n },\n );\n console.log(`Version from packageJson ${ver}`);\n this._exit(0);\n }\n}\n//#endregion\n\n/**\n *\n * @param argsv process.argsv\n * @param filename needed if you want ipc communicaiton\n */\nexport async function startCli(\n argsv: string[],\n filename: string,\n): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n}\n\nexport default startCli;","import {\n TaonAuthContextRepository,\n TaonSessionRepository,\n} from '@taon-dev/session/websql-prod';\nimport { TaonBaseProvider, TaonProvider, Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__DBRecreateModeType, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__PromiseObservableMix, Models__NS__Http__NS__RequestResults, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__Http__NS__TaonResponseStream, Models__NS__KVDatabaseConfig, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtrlBeforeEachRequestParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams } from 'taon/websql-prod';\n\nimport { seoError } from './taon-seo.validation';\n\n@TaonProvider({ className: 'TaonSeoProvider' })\nexport class TaonSeoProvider extends TaonBaseProvider {\n private readonly sessions = this.injectCustomRepo(TaonSessionRepository);\n private readonly authorization = this.injectCustomRepo(\n TaonAuthContextRepository,\n );\n\n async requireAdministrator({\n req,\n res,\n }: Models__NS__TaonCtrlBeforeEachRequestParams): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n}","import { ExpressRequest, ExpressResponse, TaonBaseStorageController, TaonController, TaonStorageObject, TaonUploadedFile, Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__DBRecreateModeType, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__PromiseObservableMix, Models__NS__Http__NS__RequestResults, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__Http__NS__TaonResponseStream, Models__NS__KVDatabaseConfig, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtrlBeforeEachRequestParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams } from 'taon/websql-prod';\n\nimport { TaonSeoProvider } from './taon-seo.provider';\nimport { seoError } from './taon-seo.validation';\n\nconst imageTypes = new Map([\n ['png', 'image/png'],\n ['jpg', 'image/jpeg'],\n ['jpeg', 'image/jpeg'],\n ['gif', 'image/gif'],\n ['webp', 'image/webp'],\n]);\n\n@TaonController({\n className: 'TaonSeoImageController',\n allowedMethods: ['download', 'getPublicUrl', 'uploadFormDataToServer'],\n})\nexport class TaonSeoImageController extends TaonBaseStorageController {\n private readonly seo = this.injectProvider(TaonSeoProvider);\n\n async beforeEachRequest(\n params: Models__NS__TaonCtrlBeforeEachRequestParams,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n protected async handleUploadFiles(\n files: TaonUploadedFile[],\n queryParams?: {},\n req?: ExpressRequest,\n res?: ExpressResponse,\n ): Promise<TaonStorageObject[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n afterFileUploadHook(): void {}\n\n buildStorageDownloadUrl(options: {\n req: ExpressRequest;\n key: string;\n private: boolean;\n token?: string;\n }): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n async createStorageDownloadToken(): Promise<string> {\n throw new Error(\n 'SEO images are public; private download tokens are not supported.',\n );\n }\n}","import { Injectable } from '@angular/core';\nimport { map } from 'rxjs';\nimport { TaonBaseAngularService } from 'taon/websql-prod';\n\nimport { TaonSeoImageController } from './taon-seo-image.controller';\n\n@Injectable()\nexport class TaonSeoImageApiService extends TaonBaseAngularService {\n private readonly images = this.injectController(TaonSeoImageController);\n\n async upload(file: File): Promise<string> {\n const data = new FormData();\n data.append('file', file);\n const response = await this.images.uploadFormDataToServer(data).request!();\n const objects = response.body.json;\n if (objects.length !== 1 || !objects[0].key) {\n throw new Error('The upload did not return an image key.');\n }\n return objects[0].key;\n }\n\n getPublicUrl(key: string) {\n return this.images.getPublicUrl(key).request!().observable.pipe(\n map(response => {\n const url = response.responseText;\n if (!url || !/^https?:\\/\\//.test(url)) {\n throw new Error(\n 'The image endpoint did not return an absolute HTTP(S) URL.',\n );\n }\n return url;\n }),\n );\n }\n}\n","import type { TaonSeoPageInput } from './taon-seo-page/taon-seo-page.models';\nimport type { TaonSeoSettingsInput } from './taon-seo-settings/taon-seo-settings.models';\n\nexport function normalizeSeoPath(path: string): string {\n const pathname = path.split(/[?#]/, 1)[0];\n return pathname.replace(/\\/+$/, '') || '/';\n}\n\nexport function seoText(value: string | null | undefined): string | null {\n return value?.trim() || null;\n}\n\nexport function resolveSeoMetadata(\n settings: TaonSeoSettingsInput,\n path: string,\n page: TaonSeoPageInput | null,\n) {\n const title = seoText(page?.title) ?? settings.defaultTitle;\n const description = seoText(page?.description) ?? settings.defaultDescription;\n const base = seoText(settings.canonicalBaseUrl);\n return {\n title,\n description,\n keywords: seoText(page?.keywords) ?? seoText(settings.defaultKeywords),\n canonicalUrl:\n seoText(page?.canonicalUrl) ??\n (base ? `${base.replace(/\\/+$/, '')}${normalizeSeoPath(path)}` : null),\n robots: [\n !settings.robotsIndex || page?.noIndex ? 'noindex' : 'index',\n !settings.robotsFollow || page?.noFollow ? 'nofollow' : 'follow',\n ].join(', '),\n ogTitle: seoText(page?.ogTitle) ?? title,\n ogDescription: seoText(page?.ogDescription) ?? description,\n ogImageKey: seoText(page?.ogImageKey) ?? seoText(settings.defaultImageKey),\n siteName: settings.siteName,\n };\n}\n","import { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonSeoPageInput } from './taon-seo-page/taon-seo-page.models';\nimport type { TaonSeoSettingsInput } from './taon-seo-settings/taon-seo-settings.models';\nimport { normalizeSeoPath, seoText } from './taon-seo.utils';\n\nexport function seoError(message: string, status = 400): never {\n Taon__NS__error({ message, status });\n throw new Error(message);\n}\n\nexport function requireSeoId(id: number): void {\n if (!Number.isSafeInteger(id) || id <= 0) {\n seoError('The page ID must be a positive integer.');\n }\n}\n\nfunction requireObject(input: unknown): void {\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n seoError('SEO settings must be an object.');\n }\n}\n\nfunction requireText(value: unknown, field: string, nullable = false): void {\n if (nullable && value === null) {\n return;\n }\n if (typeof value !== 'string') {\n seoError(`${field} must be ${nullable ? 'a string or null' : 'a string'}.`);\n }\n}\n\nfunction requireBoolean(value: unknown, field: string): void {\n if (typeof value !== 'boolean') {\n seoError(`${field} must be a boolean.`);\n }\n}\n\nfunction validateUrl(value: string | null, field: string): string | null {\n const text = seoText(value);\n if (!text) {\n return null;\n }\n let url: URL;\n try {\n url = new URL(text);\n } catch {\n seoError(`${field} must be an absolute HTTP(S) URL.`);\n }\n if (\n !['http:', 'https:'].includes(url.protocol) ||\n url.username ||\n url.password ||\n url.search ||\n url.hash\n ) {\n seoError(\n `${field} must be an HTTP(S) URL without credentials, query or fragment.`,\n );\n }\n return url.href;\n}\n\nexport function validateSeoPath(path: string): string {\n requireText(path, 'path');\n const text = path.trim();\n if (\n !text.startsWith('/') ||\n text.startsWith('//') ||\n /[;?#\\\\\\s()]/.test(text) ||\n /\\/{2,}/.test(text) ||\n text.split('/').some(segment => segment === '.' || segment === '..')\n ) {\n seoError(\n 'path must be an application path such as /pricing, without query, fragment or auxiliary outlets.',\n );\n }\n return normalizeSeoPath(text);\n}\n\nexport function validateSeoSettings(\n input: TaonSeoSettingsInput,\n): TaonSeoSettingsInput {\n requireObject(input);\n for (const field of [\n 'siteName',\n 'defaultTitle',\n 'defaultDescription',\n ] as const) {\n requireText(input[field], field);\n }\n for (const field of [\n 'defaultKeywords',\n 'defaultImageKey',\n 'canonicalBaseUrl',\n ] as const) {\n requireText(input[field], field, true);\n }\n requireBoolean(input.robotsIndex, 'robotsIndex');\n requireBoolean(input.robotsFollow, 'robotsFollow');\n return {\n siteName: input.siteName.trim(),\n defaultTitle: input.defaultTitle.trim(),\n defaultDescription: input.defaultDescription.trim(),\n defaultKeywords: seoText(input.defaultKeywords),\n defaultImageKey: seoText(input.defaultImageKey),\n canonicalBaseUrl: validateUrl(input.canonicalBaseUrl, 'canonicalBaseUrl'),\n robotsIndex: input.robotsIndex,\n robotsFollow: input.robotsFollow,\n };\n}\n\nexport function validateSeoPage(input: TaonSeoPageInput): TaonSeoPageInput {\n requireObject(input);\n for (const field of [\n 'title',\n 'description',\n 'keywords',\n 'canonicalUrl',\n 'ogTitle',\n 'ogDescription',\n 'ogImageKey',\n ] as const) {\n requireText(input[field], field, true);\n }\n requireBoolean(input.noIndex, 'noIndex');\n requireBoolean(input.noFollow, 'noFollow');\n return {\n path: validateSeoPath(input.path),\n title: seoText(input.title),\n description: seoText(input.description),\n keywords: seoText(input.keywords),\n canonicalUrl: validateUrl(input.canonicalUrl, 'canonicalUrl'),\n ogTitle: seoText(input.ogTitle),\n ogDescription: seoText(input.ogDescription),\n ogImageKey: seoText(input.ogImageKey),\n noIndex: input.noIndex,\n noFollow: input.noFollow,\n };\n}","import { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\n\nimport {\n requireSeoId,\n seoError,\n validateSeoPage,\n validateSeoPath,\n} from '../taon-seo.validation';\n\nimport { TaonSeoPageEntity } from './taon-seo-page.entity';\nimport type { TaonSeoPageInput } from './taon-seo-page.models';\n\n@TaonRepository({ className: 'TaonSeoPageRepository' })\nexport class TaonSeoPageRepository extends TaonBaseRepository<TaonSeoPageEntity> {\n entityClassResolveFn = () => TaonSeoPageEntity;\n\n async findByPath(path: string): Promise<TaonSeoPageEntity | null> {\n //#region @websqlFunc\n return this.findOne({ where: { path: validateSeoPath(path) } });\n //#endregion\n }\n\n async savePage(\n input: TaonSeoPageInput,\n id?: number,\n ): Promise<TaonSeoPageEntity> {\n //#region @websqlFunc\n const fields = validateSeoPage(input);\n if (id !== undefined) {\n requireSeoId(id);\n }\n return this.connection.transaction(async manager => {\n const repository = manager.getRepository<TaonSeoPageEntity>(this.target);\n const existing =\n id === undefined ? null : await repository.findOneBy({ id });\n if (id !== undefined && !existing) {\n seoError('SEO page not found.', 404);\n }\n const duplicate = await repository.findOneBy({ path: fields.path });\n if (duplicate && duplicate.id !== id) {\n seoError('An SEO override already exists for this path.', 409);\n }\n const now = new Date();\n return repository.save(\n repository.create({\n ...existing,\n ...fields,\n createdAt: existing?.createdAt ?? now,\n updatedAt: now,\n }),\n );\n });\n //#endregion\n }\n\n async deletePage(id: number): Promise<TaonSeoPageEntity> {\n //#region @websqlFunc\n requireSeoId(id);\n const existing = await this.findOne({ where: { id } });\n if (!existing) {\n seoError('SEO page not found.', 404);\n }\n await this.delete(id);\n return existing;\n //#endregion\n }\n}\n","import { Body, DELETE, GET, POST, PUT, Query, TaonBaseCrudController, TaonController, Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__DBRecreateModeType, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__PromiseObservableMix, Models__NS__Http__NS__RequestResults, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__Http__NS__TaonResponseStream, Models__NS__KVDatabaseConfig, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtrlBeforeEachRequestParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonSeoProvider } from '../taon-seo.provider';\n\nimport { TaonSeoPageEntity } from './taon-seo-page.entity';\nimport type { TaonSeoPageInput } from './taon-seo-page.models';\nimport { TaonSeoPageRepository } from './taon-seo-page.repository';\n\n@TaonController({\n className: 'TaonSeoPageController',\n allowedMethods: [\n 'getAll',\n 'getBy',\n 'paginationQuery',\n 'findByPath',\n 'createPage',\n 'updatePage',\n 'deletePage',\n ],\n})\nexport class TaonSeoPageController extends TaonBaseCrudController<TaonSeoPageEntity> {\n entityClassResolveFn = () => TaonSeoPageEntity;\n private readonly pages = this.injectCustomRepo(TaonSeoPageRepository);\n private readonly seo = this.injectProvider(TaonSeoProvider);\n\n async beforeEachRequest(\n params: Models__NS__TaonCtrlBeforeEachRequestParams,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n @GET()\n findByPath(\n @Query('path') path: string,\n ): Taon__NS__Response<TaonSeoPageEntity | null> {\n //#region @websqlFunc\n return async () => this.pages.findByPath(path);\n //#endregion\n }\n\n @POST()\n createPage(\n @Body() input: TaonSeoPageInput,\n ): Taon__NS__Response<TaonSeoPageEntity> {\n //#region @websqlFunc\n return async () => this.pages.savePage(input);\n //#endregion\n }\n\n @PUT()\n updatePage(\n @Query('id') id: number,\n @Body() input: TaonSeoPageInput,\n ): Taon__NS__Response<TaonSeoPageEntity> {\n //#region @websqlFunc\n return async () => this.pages.savePage(input, id);\n //#endregion\n }\n\n @DELETE()\n deletePage(@Query('id') id: number): Taon__NS__Response<TaonSeoPageEntity> {\n //#region @websqlFunc\n return async () => this.pages.deletePage(id);\n //#endregion\n }\n}","//#region imports\nimport { TaonBaseClass, TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\nexport class TaonTaonSeoPageConfig extends TaonBaseClass {\n declare name: string;\n}\n\n@TaonProvider({\n className: 'TaonSeoPageProvider',\n})\nexport class TaonSeoPageProvider extends TaonBaseProvider {\n enabledTaonSeoPageOption: boolean = true;\n config = new TaonTaonSeoPageConfig();\n clone() {\n return {\n enabledTaonSeoPageOption: this.enabledTaonSeoPageOption,\n config: this.config.clone(),\n };\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonSeoPageEntity } from './taon-seo-page.entity';\nimport { TaonSeoPageController } from './taon-seo-page.controller';\nimport { TaonSeoPageRepository } from './taon-seo-page.repository';\n// import { TaonSeoPageKvRepository } from './taon-seo-page.kv.repository';\nimport { TaonSeoPageProvider } from './taon-seo-page.provider';\n// import { TaonSeoPageMiddleware } from './taon-seo-page.middleware';\n// import { TaonSeoPageSubscriber } from './taon-seo-page.subscriber';\n//#endregion\n\nexport const TaonSeoPageAbstractContext = createContext(() => ({\n contextName: 'TaonSeoPageAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonSeoPageEntity },\n controllers: { TaonSeoPageController },\n repositories: {\n // TaonSeoPageKvRepository\n TaonSeoPageRepository,\n },\n providers: { TaonSeoPageProvider },\n // middlewares: { TaonSeoPageMiddleware },\n // subscribers: { TaonSeoPageSubscriber },\n}));","import { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\n\nimport { validateSeoSettings } from '../taon-seo.validation';\n\nimport { TaonSeoSettingsDefaultsValues } from './taon-seo-settings.constants';\nimport { TaonSeoSettingsEntity } from './taon-seo-settings.entity';\nimport type { TaonSeoSettingsInput } from './taon-seo-settings.models';\n\n@TaonRepository({ className: 'TaonSeoSettingsRepository' })\nexport class TaonSeoSettingsRepository extends TaonBaseRepository<TaonSeoSettingsEntity> {\n entityClassResolveFn = () => TaonSeoSettingsEntity;\n\n async getGlobal(): Promise<TaonSeoSettingsEntity> {\n //#region @websqlFunc\n const repository = this.connection.getRepository<TaonSeoSettingsEntity>(\n this.target,\n );\n const now = new Date();\n // A fixed primary key and conflict-safe insert also handle concurrent first reads.\n await repository\n .createQueryBuilder()\n .insert()\n .values({\n ...TaonSeoSettingsDefaultsValues,\n createdAt: now,\n updatedAt: now,\n })\n .orIgnore()\n .execute();\n return repository.findOneByOrFail({ id: 1 });\n //#endregion\n }\n\n async saveGlobal(\n input: TaonSeoSettingsInput,\n ): Promise<TaonSeoSettingsEntity> {\n //#region @websqlFunc\n const fields = validateSeoSettings(input);\n await this.getGlobal();\n const repository = this.connection.getRepository<TaonSeoSettingsEntity>(\n this.target,\n );\n await repository.update({ id: 1 }, { ...fields, updatedAt: new Date() });\n return repository.findOneByOrFail({ id: 1 });\n //#endregion\n }\n}\n","import { Body, GET, PUT, TaonBaseCrudController, TaonController, Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__DBRecreateModeType, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__PromiseObservableMix, Models__NS__Http__NS__RequestResults, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__Http__NS__TaonResponseStream, Models__NS__KVDatabaseConfig, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtrlBeforeEachRequestParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonSeoProvider } from '../taon-seo.provider';\n\nimport { TaonSeoSettingsEntity } from './taon-seo-settings.entity';\nimport type { TaonSeoSettingsInput } from './taon-seo-settings.models';\nimport { TaonSeoSettingsRepository } from './taon-seo-settings.repository';\n\n@TaonController({\n className: 'TaonSeoSettingsController',\n allowedMethods: ['getGlobal', 'saveGlobal'],\n})\nexport class TaonSeoSettingsController extends TaonBaseCrudController<TaonSeoSettingsEntity> {\n entityClassResolveFn = () => TaonSeoSettingsEntity;\n private readonly settings = this.injectCustomRepo(TaonSeoSettingsRepository);\n private readonly seo = this.injectProvider(TaonSeoProvider);\n\n async beforeEachRequest(\n params: Models__NS__TaonCtrlBeforeEachRequestParams,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n @GET()\n getGlobal(): Taon__NS__Response<TaonSeoSettingsEntity> {\n //#region @websqlFunc\n return async () => this.settings.getGlobal();\n //#endregion\n }\n\n @PUT()\n saveGlobal(\n @Body() input: TaonSeoSettingsInput,\n ): Taon__NS__Response<TaonSeoSettingsEntity> {\n //#region @websqlFunc\n return async () => this.settings.saveGlobal(input);\n //#endregion\n }\n}","//#region imports\nimport { TaonBaseClass, TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\nexport class TaonTaonSeoSettingsConfig extends TaonBaseClass {\n declare name: string;\n}\n\n@TaonProvider({\n className: 'TaonSeoSettingsProvider',\n})\nexport class TaonSeoSettingsProvider extends TaonBaseProvider {\n enabledTaonSeoSettingsOption: boolean = true;\n config = new TaonTaonSeoSettingsConfig();\n clone() {\n return {\n enabledTaonSeoSettingsOption: this.enabledTaonSeoSettingsOption,\n config: this.config.clone(),\n };\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonSeoSettingsEntity } from './taon-seo-settings.entity';\nimport { TaonSeoSettingsController } from './taon-seo-settings.controller';\nimport { TaonSeoSettingsRepository } from './taon-seo-settings.repository';\n// import { TaonSeoSettingsKvRepository } from './taon-seo-settings.kv.repository';\nimport { TaonSeoSettingsProvider } from './taon-seo-settings.provider';\n// import { TaonSeoSettingsMiddleware } from './taon-seo-settings.middleware';\n// import { TaonSeoSettingsSubscriber } from './taon-seo-settings.subscriber';\n//#endregion\n\nexport const TaonSeoSettingsAbstractContext = createContext(() => ({\n contextName: 'TaonSeoSettingsAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonSeoSettingsEntity },\n controllers: { TaonSeoSettingsController },\n repositories: {\n // TaonSeoSettingsKvRepository\n TaonSeoSettingsRepository,\n },\n providers: { TaonSeoSettingsProvider },\n // middlewares: { TaonSeoSettingsMiddleware },\n // subscribers: { TaonSeoSettingsSubscriber },\n}));","import { TaonSessionAbstractContext } from '@taon-dev/session/websql-prod';\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonSeoPageAbstractContext } from './taon-seo-page/taon-seo-page.abstract.context';\nimport { TaonSeoSettingsAbstractContext } from './taon-seo-settings/taon-seo-settings.abstract.context';\nimport { TaonSeoImageController } from './taon-seo-image.controller';\nimport { TaonSeoProvider } from './taon-seo.provider';\n\nexport const TaonSeoAbstractContext = createContext(() => ({\n contextName: 'TaonSeoAbstractContext',\n abstract: true,\n contexts: {\n TaonSessionAbstractContext,\n\n // local\n TaonSeoPageAbstractContext,\n TaonSeoSettingsAbstractContext,\n },\n controllers: { TaonSeoImageController },\n providers: { TaonSeoProvider },\n}));\n","import { Injectable } from '@angular/core';\nimport { map } from 'rxjs';\nimport { TaonBaseAngularService } from 'taon/websql-prod';\n\nimport { TaonSeoPageController } from './taon-seo-page.controller';\nimport type { TaonSeoPageInput } from './taon-seo-page.models';\n\n@Injectable()\nexport class TaonSeoPageApiService extends TaonBaseAngularService {\n readonly taonSeoPageController = this.injectController(TaonSeoPageController);\n\n findByPath(path: string) {\n return this.taonSeoPageController.findByPath(path)\n .request!().observable.pipe(map(res => res.body.json));\n }\n\n createPage(input: TaonSeoPageInput) {\n return this.taonSeoPageController.createPage(input)\n .request!().observable.pipe(map(res => res.body.json));\n }\n\n updatePage(id: number, input: TaonSeoPageInput) {\n return this.taonSeoPageController.updatePage(id, input)\n .request!().observable.pipe(map(res => res.body.json));\n }\n\n deletePage(id: number) {\n return this.taonSeoPageController.deletePage(id).request!().observable.pipe(\n map(res => res.body.json),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { map } from 'rxjs';\nimport { TaonBaseAngularService } from 'taon/websql-prod';\n\nimport { TaonSeoSettingsController } from './taon-seo-settings.controller';\nimport type { TaonSeoSettingsInput } from './taon-seo-settings.models';\n\n@Injectable()\nexport class TaonSeoSettingsApiService extends TaonBaseAngularService {\n readonly taonSeoSettingsController = this.injectController(\n TaonSeoSettingsController,\n );\n\n getGlobal() {\n return this.taonSeoSettingsController.getGlobal()\n .request!().observable.pipe(map(res => res.body.json));\n }\n\n saveGlobal(input: TaonSeoSettingsInput) {\n return this.taonSeoSettingsController.saveGlobal(input)\n .request!().observable.pipe(map(res => res.body.json));\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n APP_BOOTSTRAP_LISTENER,\n DestroyRef,\n Injectable,\n Provider,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { NavigationEnd, PRIMARY_OUTLET, Router } from '@angular/router';\nimport {\n EMPTY,\n catchError,\n distinctUntilChanged,\n filter,\n forkJoin,\n map,\n of,\n startWith,\n switchMap,\n} from 'rxjs';\n\nimport { TaonSeoImageApiService } from './taon-seo-image.api.service';\nimport { TaonSeoPageApiService } from './taon-seo-page/taon-seo-page.api.service';\nimport { TaonSeoSettingsApiService } from './taon-seo-settings/taon-seo-settings.api.service';\nimport { normalizeSeoPath, resolveSeoMetadata } from './taon-seo.utils';\n\n@Injectable()\nexport class TaonSeoService {\n readonly error = signal('');\n private readonly router = inject(Router);\n private readonly settings = inject(TaonSeoSettingsApiService);\n private readonly pages = inject(TaonSeoPageApiService);\n private readonly images = inject(TaonSeoImageApiService);\n private readonly meta = inject(Meta);\n private readonly title = inject(Title);\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly originalTitle = this.title.getTitle();\n private started = false;\n\n start(): void {\n if (this.started) {\n return;\n }\n this.started = true;\n this.router.events\n .pipe(\n filter(event => event instanceof NavigationEnd),\n startWith(null),\n map(() => this.currentPath()),\n distinctUntilChanged(),\n switchMap(path => {\n this.error.set('');\n this.clear();\n return forkJoin({\n settings: this.settings.getGlobal(),\n page: this.pages.findByPath(path),\n }).pipe(\n map(({ settings, page }) =>\n resolveSeoMetadata(settings, path, page),\n ),\n switchMap(metadata => {\n // Clear the previous route's image while resolving a public storage URL.\n this.apply(metadata, null);\n return metadata.ogImageKey\n ? this.images.getPublicUrl(metadata.ogImageKey).pipe(\n map(imageUrl => ({ metadata, imageUrl })),\n catchError((error: unknown) => {\n console.error(\n '[taon-seo] Unable to resolve social image',\n error,\n );\n this.error.set(\n 'The social image could not be loaded for the current page.',\n );\n return of({ metadata, imageUrl: null });\n }),\n )\n : of({ metadata, imageUrl: null });\n }),\n catchError((error: unknown) => {\n console.error(\n '[taon-seo] Unable to update route metadata',\n error,\n );\n this.error.set(\n 'SEO metadata could not be loaded for the current page.',\n );\n this.clear();\n return EMPTY;\n }),\n );\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(({ metadata, imageUrl }) => this.apply(metadata, imageUrl));\n }\n\n private currentPath(): string {\n const segments: string[] = [];\n let route = this.router.routerState.snapshot.root;\n while (route) {\n segments.push(...route.url.map(segment => segment.path));\n const child = route.children.find(\n candidate => candidate.outlet === PRIMARY_OUTLET,\n );\n if (!child) {\n break;\n }\n route = child;\n }\n return normalizeSeoPath(`/${segments.join('/')}`);\n }\n\n private apply(\n metadata: ReturnType<typeof resolveSeoMetadata>,\n imageUrl: string | null,\n ): void {\n this.title.setTitle(metadata.title);\n this.setMeta('name', 'description', metadata.description);\n this.setMeta('name', 'keywords', metadata.keywords);\n this.setMeta('name', 'robots', metadata.robots);\n this.setMeta('property', 'og:title', metadata.ogTitle);\n this.setMeta('property', 'og:description', metadata.ogDescription);\n this.setMeta('property', 'og:image', imageUrl);\n this.setMeta('property', 'og:site_name', metadata.siteName);\n this.setMeta('property', 'og:url', metadata.canonicalUrl);\n this.setCanonical(metadata.canonicalUrl);\n }\n\n private setMeta(\n attribute: 'name' | 'property',\n key: string,\n content: string | null,\n ): void {\n const selector = `${attribute}=\"${key}\"`;\n // Remove duplicates and stale values, including tags left by the previous route.\n this.meta.getTags(selector).forEach(tag => this.meta.removeTagElement(tag));\n if (content) {\n this.meta.addTag({ [attribute]: key, content });\n }\n }\n\n private setCanonical(url: string | null): void {\n this.document.head\n .querySelectorAll('link[rel=\"canonical\"]')\n .forEach(link => link.remove());\n if (url) {\n const link = this.document.createElement('link');\n link.rel = 'canonical';\n link.href = url;\n this.document.head.appendChild(link);\n }\n }\n\n private clear(): void {\n this.title.setTitle(this.originalTitle);\n for (const name of ['description', 'keywords', 'robots']) {\n this.setMeta('name', name, null);\n }\n for (const property of [\n 'og:title',\n 'og:description',\n 'og:image',\n 'og:site_name',\n 'og:url',\n ]) {\n this.setMeta('property', property, null);\n }\n this.setCanonical(null);\n }\n}\n\nexport function provideTaonSeo(): Provider[] {\n return [\n TaonSeoService,\n TaonSeoPageApiService,\n TaonSeoSettingsApiService,\n TaonSeoImageApiService,\n {\n provide: APP_BOOTSTRAP_LISTENER,\n multi: true,\n deps: [TaonSeoService],\n useFactory: (seo: TaonSeoService) => () => seo.start(),\n },\n ];\n}\n","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels__NS__BaseProjectType, CoreModels__NS__BaseProjectTypeArr, CoreModels__NS__BuildType, CoreModels__NS__BuildTypeArr, CoreModels__NS__buildTypeToWatcherFn, CoreModels__NS__BuildWatcherErrorType, CoreModels__NS__BuildWatcherType, CoreModels__NS__BuildWatcherTypeArr, CoreModels__NS__CfontAlign, CoreModels__NS__CfontStyle, CoreModels__NS__ClassNameStaticProperty, CoreModels__NS__ContentType, CoreModels__NS__ContentTypeKeys, CoreModels__NS__CoreLibCategory, CoreModels__NS__CutableFileExt, CoreModels__NS__DatabaseType, CoreModels__NS__DeepPartial, CoreModels__NS__FileEvent, CoreModels__NS__FileExtension, CoreModels__NS__FirstParamsFrom, CoreModels__NS__FrameworkVersion, CoreModels__NS__GitConnection, CoreModels__NS__GitConnectionArr, CoreModels__NS__GlobalDependencies, CoreModels__NS__hasExitCleaningFunction, CoreModels__NS__HttpCode, CoreModels__NS__HttpMethod, CoreModels__NS__HttpMethodArr, CoreModels__NS__ImageFileExtension, CoreModels__NS__ImageFileExtensionArr, CoreModels__NS__InstalationType, CoreModels__NS__InstalationTypeArr, CoreModels__NS__LibType, CoreModels__NS__localhostDomain, CoreModels__NS__localhostIp127, CoreModels__NS__ManifestIcon, CoreModels__NS__MediaType, CoreModels__NS__MediaTypeAllArr, CoreModels__NS__mimeTypes, CoreModels__NS__NewFactoryType, CoreModels__NS__NpmInstallOptions, CoreModels__NS__NpmPublishOptions, CoreModels__NS__NpmSpecialVersions, CoreModels__NS__OrignalClassKey, CoreModels__NS__OutFolder, CoreModels__NS__Package, CoreModels__NS__ParamType, CoreModels__NS__parentLocation, CoreModels__NS__pathToChildren, CoreModels__NS__Position, CoreModels__NS__PreReleaseVersionTag, CoreModels__NS__PROGRESS_DATA_TYPE, CoreModels__NS__PUSHTYPE, CoreModels__NS__PwaManifest, CoreModels__NS__ReleaseVersionType, CoreModels__NS__ReleaseVersionTypeEnum, CoreModels__NS__RunOptions, CoreModels__NS__Size, CoreModels__NS__SPECIAL_APP_READY_MESSAGE, CoreModels__NS__SPECIAL_WORKER_READY_MESSAGE, CoreModels__NS__tagForTaskName, CoreModels__NS__TaonHttpErrorCustomProp, CoreModels__NS__TsUsage, CoreModels__NS__UIFramework, CoreModels__NS__VSCodeSettings } from 'tnp-core/websql-prod';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibMyOrganizationProjTs } from './my-organization-proj.ts.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibMyOrganizationProjTs } from './my-organization-proj.ts.pl-PL.i18n.data';;\nexport type LibOverride = CoreModels__NS__DeepPartial<EnUsTraslationOverrideSrcLibMyOrganizationProjTs \n| PlPlTraslationOverrideSrcLibMyOrganizationProjTs>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY","//#region imports\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n//#endregion\n\n@Component({\n selector: 'app-taon-seo-backoffice',\n templateUrl: './taon-seo-backoffice.component.html',\n styleUrls: ['./taon-seo-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, RouterOutlet],\n})\nexport class TaonSeoBackofficeComponent {}","<router-outlet></router-outlet>\n","//namespace TaonSeoBackofficeModels\n\n//end of namespace TaonSeoBackofficeModels\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { adminLazyRoute } from '@taon-dev/ui/websql-prod';\n//#endregion\n\nexport const TaonSeoBackofficeRoutes: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./taon-seo-backoffice.component').then(\n m => m.TaonSeoBackofficeComponent,\n ),\n\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'settings' },\n adminLazyRoute({\n path: 'settings',\n menuItem: 'General (Settings)',\n icon: 'settings',\n expandable: false,\n loader: () =>\n import('../taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.routes').then(\n m => m.TaonSeoSettingsBackofficeRoutes,\n ),\n }),\n adminLazyRoute({\n path: 'pages',\n menuItem: 'Pages',\n icon: 'extension',\n expandable: false,\n loader: () =>\n import('../taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.routes').then(\n m => m.TaonSeoPageBackofficeRoutes,\n ),\n }),\n ],\n },\n];\n\n/**\n * By default exporting TaonSeoBackofficeRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonSeoBackofficeRoutes;\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n model,\n signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TaonSeoImageApiService } from '../taon-seo-image.api.service';\n\n@Component({\n selector: 'taon-seo-image-input',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButtonModule],\n providers: [TaonSeoImageApiService],\n template: `\n <p>Social / Open Graph image</p>\n <input\n type=\"file\"\n aria-label=\"Upload social image\"\n accept=\"image/png,image/jpeg,image/gif,image/webp\"\n [disabled]=\"disabled() || uploading()\"\n (change)=\"upload($event)\" />\n @if (key()) {\n <p>Image key: {{ key() }}</p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"disabled() || uploading()\"\n (click)=\"key.set(null)\">\n Clear image\n </button>\n }\n @if (uploading()) {\n <p role=\"status\">Uploading image...</p>\n }\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n }\n `,\n})\nexport class TaonSeoImageInputComponent {\n readonly key = model<string | null>(null);\n readonly disabled = model(false);\n readonly uploading = model(false);\n readonly error = signal('');\n private readonly api = inject(TaonSeoImageApiService);\n\n async upload(event: Event): Promise<void> {\n const target = event.target;\n if (!(target instanceof HTMLInputElement)) {\n return;\n }\n const file = target.files?.[0];\n if (!file || this.disabled() || this.uploading()) {\n return;\n }\n this.error.set('');\n this.uploading.set(true);\n try {\n this.key.set(await this.api.upload(file));\n } catch (error: unknown) {\n console.error('[taon-seo-image-input] Unable to upload image', error);\n this.error.set('The image could not be uploaded. Please try again.');\n } finally {\n this.uploading.set(false);\n target.value = '';\n }\n }\n}\n","//#region imports\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonSeoPageProvider } from './taon-seo-page.provider';\n//#endregion\n\n@Injectable()\nexport class TaonSeoPageConfigService extends TaonBaseAngularService {\n private taonSeoPageProvider = this.injectProvider(TaonSeoPageProvider);\n\n get isEnableOption() {\n return this.taonSeoPageProvider.enabledTaonSeoPageOption;\n }\n\n clone(): Partial<TaonSeoPageProvider> {\n const cloned = this.taonSeoPageProvider.clone();\n return cloned;\n }\n}","import type { TaonSeoPageEntity } from './taon-seo-page.entity';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nconst t = Translation.for('src/lib/taon-seo-page/taon-seo-page.constants.ts', {\"src/lib/taon-seo-page/taon-seo-page.constants.ts\":{\"en-US\":async () => (await import('./i18n/taon-seo-page.constants.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-seo-page.constants.ts.pl-PL.i18n.data')).default}} as any);\n\nexport const TaonSeoPageDefaultsValues = {\n path: '/',\n title: null,\n description: null,\n keywords: null,\n canonicalUrl: null,\n ogTitle: null,\n ogDescription: null,\n ogImageKey: null,\n noIndex: false,\n noFollow: false,\n} as Partial<TaonSeoPageEntity>;\n\nexport enum TaonSeoPageErrors {\n INVALID_PASSWORD_EXAMPLE_ERROR = 'INVALID_PASSWORD_EXAMPLE_ERROR',\n}\n\nexport const TaonSeoPageTranslationErorsMap = new Map([\n [TaonSeoPageErrors.INVALID_PASSWORD_EXAMPLE_ERROR, t.gettext('Invalid Password')],\n]);","//#region imports\nimport {\n TaonBaseRepository,\n TaonBaseKvRepository,\n TaonRepository,\n} from 'taon/websql-prod';\n\nimport { TaonSeoPageEntity } from './taon-seo-page.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonSeoPageKvRepository',\n})\nexport class TaonSeoPageKvRepository extends TaonBaseKvRepository<{\n usersToNotify: TaonSeoPageEntity[];\n}> {\n async notifyUsers(users: TaonSeoPageEntity[]) {\n this.set('usersToNotify', users);\n }\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonSeoPageMiddleware',\n})\nexport class TaonSeoPageMiddleware extends TaonBaseMiddleware {}","import type { TaonSeoPageEntity } from './taon-seo-page.entity';\n\nexport type TaonSeoPageInput = Pick<\n TaonSeoPageEntity,\n | 'path'\n | 'title'\n | 'description'\n | 'keywords'\n | 'canonicalUrl'\n | 'ogTitle'\n | 'ogDescription'\n | 'ogImageKey'\n | 'noIndex'\n | 'noFollow'\n>;\n\n//namespace TaonSeoPageModels\n\n export enum TaonSeoPageModels__NS__TaonSeoPageState {\n Active = 'active',\n Inactive = 'inactive',\n }\n\n//end of namespace TaonSeoPageModels\n","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonSeoPageEntity } from './taon-seo-page.entity';\nimport { TaonSeoPageProvider } from './taon-seo-page.provider';\n//#endregion\n\n@TaonSubscriber<TaonSeoPageSubscriber>({\n className: 'TaonSeoPageSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonSeoPageSubscriber extends TaonBaseSubscriberForEntity {\n private readonly taonSeoPageProvider = this.injectProvider(TaonSeoPageProvider);\n listenTo(): typeof TaonSeoPageEntity {\n return TaonSeoPageEntity;\n }\n}","import { TaonSeoPageModels__NS__TaonSeoPageState } from './taon-seo-page.models';\n\n//namespace TaonSeoPageUtils\n\n export function TaonSeoPageUtils__NS__isActive(state: string): state is TaonSeoPageModels__NS__TaonSeoPageState {\n return state === 'active';\n }\n\n//end of namespace TaonSeoPageUtils","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms'; // @browser\nimport { TaonSeoPageErrors } from './taon-seo-page.constants';\n\n//namespace TaonSeoPageValidators\n\n //#region @browser\n /**\n * TODO REMOVE THIS EXAMPLE.\n */\n export const TaonSeoPageValidators__NS__passwordMatchValidator: ValidatorFn = (\n control: AbstractControl,\n ): ValidationErrors | null => {\n const password = control.get('password');\n const passwordRepeat = control.get('passwordRepeat');\n\n if (!password || !passwordRepeat) {\n return null;\n }\n\n return password.value === passwordRepeat.value\n ? null\n : { [TaonSeoPageErrors.INVALID_PASSWORD_EXAMPLE_ERROR]: true };\n };\n //#endregion\n\n\n//end of namespace TaonSeoPageValidators\n","//#region imports\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonSeoSettingsProvider } from './taon-seo-settings.provider';\n//#endregion\n\n@Injectable()\nexport class TaonSeoSettingsConfigService extends TaonBaseAngularService {\n private taonSeoSettingsProvider = this.injectProvider(TaonSeoSettingsProvider);\n\n get isEnableOption() {\n return this.taonSeoSettingsProvider.enabledTaonSeoSettingsOption;\n }\n\n clone(): Partial<TaonSeoSettingsProvider> {\n const cloned = this.taonSeoSettingsProvider.clone();\n return cloned;\n }\n}","//#region imports\nimport {\n TaonBaseRepository,\n TaonBaseKvRepository,\n TaonRepository,\n} from 'taon/websql-prod';\n\nimport { TaonSeoSettingsEntity } from './taon-seo-settings.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonSeoSettingsKvRepository',\n})\nexport class TaonSeoSettingsKvRepository extends TaonBaseKvRepository<{\n usersToNotify: TaonSeoSettingsEntity[];\n}> {\n async notifyUsers(users: TaonSeoSettingsEntity[]) {\n this.set('usersToNotify', users);\n }\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonSeoSettingsMiddleware',\n})\nexport class TaonSeoSettingsMiddleware extends TaonBaseMiddleware {}","import type { TaonSeoSettingsEntity } from './taon-seo-settings.entity';\n\nexport type TaonSeoSettingsInput = Pick<\n TaonSeoSettingsEntity,\n | 'siteName'\n | 'defaultTitle'\n | 'defaultDescription'\n | 'defaultKeywords'\n | 'defaultImageKey'\n | 'canonicalBaseUrl'\n | 'robotsIndex'\n | 'robotsFollow'\n>;\n\n//namespace TaonSeoSettingsModels\n\n export enum TaonSeoSettingsModels__NS__TaonSeoSettingsState {\n Active = 'active',\n Inactive = 'inactive',\n }\n\n//end of namespace TaonSeoSettingsModels\n","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonSeoSettingsEntity } from './taon-seo-settings.entity';\nimport { TaonSeoSettingsProvider } from './taon-seo-settings.provider';\n//#endregion\n\n@TaonSubscriber<TaonSeoSettingsSubscriber>({\n className: 'TaonSeoSettingsSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonSeoSettingsSubscriber extends TaonBaseSubscriberForEntity {\n private readonly taonSeoSettingsProvider = this.injectProvider(TaonSeoSettingsProvider);\n listenTo(): typeof TaonSeoSettingsEntity {\n return TaonSeoSettingsEntity;\n }\n}","import { TaonSeoSettingsModels__NS__TaonSeoSettingsState } from './taon-seo-settings.models';\n\n//namespace TaonSeoSettingsUtils\n\n export function TaonSeoSettingsUtils__NS__isActive(state: string): state is TaonSeoSettingsModels__NS__TaonSeoSettingsState {\n return state === 'active';\n }\n\n//end of namespace TaonSeoSettingsUtils","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms'; // @browser\nimport { TaonSeoSettingsErrors } from './taon-seo-settings.constants';\n\n//namespace TaonSeoSettingsValidators\n\n //#region @browser\n /**\n * TODO REMOVE THIS EXAMPLE.\n */\n export const TaonSeoSettingsValidators__NS__passwordMatchValidator: ValidatorFn = (\n control: AbstractControl,\n ): ValidationErrors | null => {\n const password = control.get('password');\n const passwordRepeat = control.get('passwordRepeat');\n\n if (!password || !passwordRepeat) {\n return null;\n }\n\n return password.value === passwordRepeat.value\n ? null\n : { [TaonSeoSettingsErrors.INVALID_PASSWORD_EXAMPLE_ERROR]: true };\n };\n //#endregion\n\n\n//end of namespace TaonSeoSettingsValidators\n","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels__NS__BaseProjectType, CoreModels__NS__BaseProjectTypeArr, CoreModels__NS__BuildType, CoreModels__NS__BuildTypeArr, CoreModels__NS__buildTypeToWatcherFn, CoreModels__NS__BuildWatcherErrorType, CoreModels__NS__BuildWatcherType, CoreModels__NS__BuildWatcherTypeArr, CoreModels__NS__CfontAlign, CoreModels__NS__CfontStyle, CoreModels__NS__ClassNameStaticProperty, CoreModels__NS__ContentType, CoreModels__NS__ContentTypeKeys, CoreModels__NS__CoreLibCategory, CoreModels__NS__CutableFileExt, CoreModels__NS__DatabaseType, CoreModels__NS__DeepPartial, CoreModels__NS__FileEvent, CoreModels__NS__FileExtension, CoreModels__NS__FirstParamsFrom, CoreModels__NS__FrameworkVersion, CoreModels__NS__GitConnection, CoreModels__NS__GitConnectionArr, CoreModels__NS__GlobalDependencies, CoreModels__NS__hasExitCleaningFunction, CoreModels__NS__HttpCode, CoreModels__NS__HttpMethod, CoreModels__NS__HttpMethodArr, CoreModels__NS__ImageFileExtension, CoreModels__NS__ImageFileExtensionArr, CoreModels__NS__InstalationType, CoreModels__NS__InstalationTypeArr, CoreModels__NS__LibType, CoreModels__NS__localhostDomain, CoreModels__NS__localhostIp127, CoreModels__NS__ManifestIcon, CoreModels__NS__MediaType, CoreModels__NS__MediaTypeAllArr, CoreModels__NS__mimeTypes, CoreModels__NS__NewFactoryType, CoreModels__NS__NpmInstallOptions, CoreModels__NS__NpmPublishOptions, CoreModels__NS__NpmSpecialVersions, CoreModels__NS__OrignalClassKey, CoreModels__NS__OutFolder, CoreModels__NS__Package, CoreModels__NS__ParamType, CoreModels__NS__parentLocation, CoreModels__NS__pathToChildren, CoreModels__NS__Position, CoreModels__NS__PreReleaseVersionTag, CoreModels__NS__PROGRESS_DATA_TYPE, CoreModels__NS__PUSHTYPE, CoreModels__NS__PwaManifest, CoreModels__NS__ReleaseVersionType, CoreModels__NS__ReleaseVersionTypeEnum, CoreModels__NS__RunOptions, CoreModels__NS__Size, CoreModels__NS__SPECIAL_APP_READY_MESSAGE, CoreModels__NS__SPECIAL_WORKER_READY_MESSAGE, CoreModels__NS__tagForTaskName, CoreModels__NS__TaonHttpErrorCustomProp, CoreModels__NS__TsUsage, CoreModels__NS__UIFramework, CoreModels__NS__VSCodeSettings } from 'tnp-core/websql-prod';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibTaonSeoPageTaonSeoPageConstantsTs } from './taon-seo-page.constants.ts.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibTaonSeoPageTaonSeoPageConstantsTs } from './taon-seo-page.constants.ts.pl-PL.i18n.data';;\nexport type TaonSeoPageOverride = CoreModels__NS__DeepPartial<EnUsTraslationOverrideSrcLibTaonSeoPageTaonSeoPageConstantsTs \n| PlPlTraslationOverrideSrcLibTaonSeoPageTaonSeoPageConstantsTs>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport {\n MAT_DIALOG_DATA,\n MatDialogModule,\n MatDialogRef,\n} from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { finalize } from 'rxjs';\n\nimport { TaonSeoImageInputComponent } from '../../taon-seo-image-input/taon-seo-image-input.component';\nimport { TaonSeoPageApiService } from '../taon-seo-page.api.service';\nimport type { TaonSeoPageEntity } from '../taon-seo-page.entity';\n\n@Component({\n selector: 'taon-seo-page-edit-dialog',\n templateUrl: './taon-seo-page-edit-dialog.component.html',\n styleUrls: ['./taon-seo-page-edit-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatDialogModule,\n MatFormFieldModule,\n MatInputModule,\n TaonSeoImageInputComponent,\n ],\n providers: [TaonSeoPageApiService],\n})\nexport class TaonSeoPageEditDialogComponent {\n readonly data = inject<{ page?: TaonSeoPageEntity }>(MAT_DIALOG_DATA);\n readonly saving = signal(false);\n readonly uploading = signal(false);\n readonly error = signal('');\n readonly form = new FormGroup({\n path: new FormControl(this.data.page?.path ?? '/', {\n nonNullable: true,\n validators: [\n Validators.required,\n Validators.pattern(/^\\/[^;?#\\\\\\s()]*$/),\n ],\n }),\n title: new FormControl<string | null>(this.data.page?.title ?? null),\n description: new FormControl<string | null>(\n this.data.page?.description ?? null,\n ),\n keywords: new FormControl<string | null>(this.data.page?.keywords ?? null),\n canonicalUrl: new FormControl<string | null>(\n this.data.page?.canonicalUrl ?? null,\n ),\n ogTitle: new FormControl<string | null>(this.data.page?.ogTitle ?? null),\n ogDescription: new FormControl<string | null>(\n this.data.page?.ogDescription ?? null,\n ),\n ogImageKey: new FormControl<string | null>(\n this.data.page?.ogImageKey ?? null,\n ),\n noIndex: new FormControl(this.data.page?.noIndex ?? false, {\n nonNullable: true,\n }),\n noFollow: new FormControl(this.data.page?.noFollow ?? false, {\n nonNullable: true,\n }),\n });\n private readonly api = inject(TaonSeoPageApiService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly ref = inject(MatDialogRef<TaonSeoPageEditDialogComponent>);\n\n close(): void {\n if (!this.saving() && !this.uploading()) {\n this.ref.close();\n }\n }\n\n save(): void {\n if (this.saving() || this.uploading()) {\n return;\n }\n this.form.markAllAsTouched();\n if (this.form.invalid) {\n this.error.set('Enter an application path such as /pricing.');\n return;\n }\n this.error.set('');\n this.saving.set(true);\n const input = this.form.getRawValue();\n const request = this.data.page\n ? this.api.updatePage(this.data.page.id, input)\n : this.api.createPage(input);\n request\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.saving.set(false)),\n )\n .subscribe({\n next: page => this.ref.close(page),\n error: (error: unknown) => {\n console.error('[taon-seo-page-editor] Unable to save page', error);\n this.error.set(\n 'The page could not be saved. Ensure the path is unique and the canonical URL is an absolute HTTP(S) URL.',\n );\n },\n });\n }\n}\n","<h2 mat-dialog-title>{{ data.page ? 'Edit SEO page' : 'Add SEO page' }}</h2>\n<form\n [formGroup]=\"form\"\n (ngSubmit)=\"save()\">\n <mat-dialog-content>\n <p>\n Static/application page overrides. Blank fields inherit global defaults.\n </p>\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n }\n <fieldset [disabled]=\"saving()\">\n <mat-form-field>\n <mat-label>Path</mat-label>\n <input\n matInput\n formControlName=\"path\"\n placeholder=\"/pricing\" />\n <mat-error\n >Enter an application path without query or fragment.</mat-error\n >\n </mat-form-field>\n <mat-form-field>\n <mat-label>Title</mat-label>\n <input\n matInput\n formControlName=\"title\" />\n </mat-form-field>\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea\n matInput\n formControlName=\"description\"\n rows=\"3\"></textarea>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Keywords</mat-label>\n <input\n matInput\n formControlName=\"keywords\" />\n </mat-form-field>\n <mat-form-field>\n <mat-label>Canonical URL</mat-label>\n <input\n matInput\n formControlName=\"canonicalUrl\"\n placeholder=\"https://example.com/pricing\" />\n </mat-form-field>\n <mat-form-field>\n <mat-label>Open Graph title</mat-label>\n <input\n matInput\n formControlName=\"ogTitle\" />\n </mat-form-field>\n <mat-form-field>\n <mat-label>Open Graph description</mat-label>\n <textarea\n matInput\n formControlName=\"ogDescription\"\n rows=\"3\"></textarea>\n </mat-form-field>\n <taon-seo-image-input\n [key]=\"form.controls.ogImageKey.value\"\n (keyChange)=\"form.controls.ogImageKey.setValue($event)\"\n [disabled]=\"saving()\"\n [(uploading)]=\"uploading\" />\n <mat-checkbox formControlName=\"noIndex\">noIndex</mat-checkbox>\n <mat-checkbox formControlName=\"noFollow\">noFollow</mat-checkbox>\n </fieldset>\n </mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n <button\n mat-button\n type=\"button\"\n [disabled]=\"saving() || uploading()\"\n (click)=\"close()\">\n Cancel\n </button>\n <button\n mat-flat-button\n type=\"submit\"\n [disabled]=\"saving() || uploading()\">\n {{ saving() ? 'Saving...' : 'Save page' }}\n </button>\n </mat-dialog-actions>\n</form>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ViewChild,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport {\n TaonConfirmDialogComponent,\n TaonDatatableComponent,\n} from '@taon-dev/ui/websql-prod';\nimport { finalize } from 'rxjs';\n\nimport { TaonSeoPageEditDialogComponent } from '../taon-seo-page-edit-dialog/taon-seo-page-edit-dialog.component';\nimport { TaonSeoPageApiService } from '../taon-seo-page.api.service';\nimport type { TaonSeoPageEntity } from '../taon-seo-page.entity';\n\n@Component({\n selector: 'app-taon-seo-page-backoffice',\n templateUrl: './taon-seo-page-backoffice.component.html',\n styleUrls: ['./taon-seo-page-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TaonDatatableComponent],\n providers: [TaonSeoPageApiService],\n})\nexport class TaonSeoPageBackofficeComponent {\n @ViewChild(TaonDatatableComponent)\n readonly datatable!: TaonDatatableComponent;\n\n readonly api = inject(TaonSeoPageApiService);\n readonly error = signal('');\n readonly deleting = signal<number | null>(null);\n private readonly dialog = inject(MatDialog);\n private readonly destroyRef = inject(DestroyRef);\n\n get crud() {\n return this.api.taonSeoPageController;\n }\n\n readonly columns: MtxGridColumn[] = [\n { header: 'ID', field: 'id', sortable: true },\n { header: 'Path', field: 'path', sortable: true },\n { header: 'Title', field: 'title', sortable: true },\n { header: 'noIndex', field: 'noIndex', type: 'boolean' },\n { header: 'noFollow', field: 'noFollow', type: 'boolean' },\n {\n header: 'Actions',\n field: 'actions',\n type: 'button',\n buttons: [\n {\n type: 'icon',\n icon: 'edit',\n tooltip: 'Edit SEO page',\n click: (page: TaonSeoPageEntity) => this.edit(page),\n },\n {\n type: 'icon',\n icon: 'delete',\n tooltip: 'Delete SEO page',\n disabled: () => this.deleting() !== null,\n click: (page: TaonSeoPageEntity) => this.delete(page),\n },\n ],\n },\n ];\n\n add(): void {\n this.edit();\n }\n\n edit(page?: TaonSeoPageEntity): void {\n this.dialog\n .open(TaonSeoPageEditDialogComponent, {\n data: { page },\n width: '48rem',\n maxWidth: '95vw',\n disableClose: true,\n })\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(saved => {\n if (saved) {\n this.datatable.reload();\n }\n });\n }\n\n delete(page: TaonSeoPageEntity): void {\n if (this.deleting() !== null) {\n return;\n }\n this.deleting.set(page.id);\n this.dialog\n .open(TaonConfirmDialogComponent, {\n data: {\n title: 'Delete SEO page?',\n message: `Delete the override for ${page.path}? This page will inherit global SEO defaults.`,\n confirmText: 'Delete',\n },\n })\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(confirmed => {\n if (!confirmed) {\n this.deleting.set(null);\n return;\n }\n this.error.set('');\n this.api\n .deletePage(page.id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.deleting.set(null)),\n )\n .subscribe({\n next: () => this.datatable.reload(),\n error: (error: unknown) => {\n console.error('[taon-seo-pages] Unable to delete page', error);\n this.error.set(\n 'The SEO page could not be deleted. Refresh and try again.',\n );\n },\n });\n });\n }\n}\n","<h1>SEO pages</h1>\n<p>SEO overrides for application/static pages, not CMS content.</p>\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n<taon-datatable\n [entityCrudController]=\"crud\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'path', 'title', 'noIndex', 'noFollow']\"\n searchMode=\"advanced\"\n (addingItem)=\"add()\">\n</taon-datatable>\n","//namespace TaonSeoPageBackofficeModels\n\n//end of namespace TaonSeoPageBackofficeModels\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { adminLazyRoute } from '@taon-dev/ui/websql-prod';\n//#endregion\n\nexport const TaonSeoPageBackofficeRoutes: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./taon-seo-page-backoffice.component').then(m => m.TaonSeoPageBackofficeComponent),\n\n children: [\n // adminLazyRoute({\n // path: 'dashboard',\n // menuItem: 'Dashboard',\n // icon: 'dashboard',\n // expandable: false,\n // loader: () =>\n // import('./anothermodule.routes').then(m => m.DashboardRoutes),\n // }),\n ],\n },\n];\n\n/**\n * By default exporting TaonSeoPageBackofficeRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonSeoPageBackofficeRoutes;","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels__NS__BaseProjectType, CoreModels__NS__BaseProjectTypeArr, CoreModels__NS__BuildType, CoreModels__NS__BuildTypeArr, CoreModels__NS__buildTypeToWatcherFn, CoreModels__NS__BuildWatcherErrorType, CoreModels__NS__BuildWatcherType, CoreModels__NS__BuildWatcherTypeArr, CoreModels__NS__CfontAlign, CoreModels__NS__CfontStyle, CoreModels__NS__ClassNameStaticProperty, CoreModels__NS__ContentType, CoreModels__NS__ContentTypeKeys, CoreModels__NS__CoreLibCategory, CoreModels__NS__CutableFileExt, CoreModels__NS__DatabaseType, CoreModels__NS__DeepPartial, CoreModels__NS__FileEvent, CoreModels__NS__FileExtension, CoreModels__NS__FirstParamsFrom, CoreModels__NS__FrameworkVersion, CoreModels__NS__GitConnection, CoreModels__NS__GitConnectionArr, CoreModels__NS__GlobalDependencies, CoreModels__NS__hasExitCleaningFunction, CoreModels__NS__HttpCode, CoreModels__NS__HttpMethod, CoreModels__NS__HttpMethodArr, CoreModels__NS__ImageFileExtension, CoreModels__NS__ImageFileExtensionArr, CoreModels__NS__InstalationType, CoreModels__NS__InstalationTypeArr, CoreModels__NS__LibType, CoreModels__NS__localhostDomain, CoreModels__NS__localhostIp127, CoreModels__NS__ManifestIcon, CoreModels__NS__MediaType, CoreModels__NS__MediaTypeAllArr, CoreModels__NS__mimeTypes, CoreModels__NS__NewFactoryType, CoreModels__NS__NpmInstallOptions, CoreModels__NS__NpmPublishOptions, CoreModels__NS__NpmSpecialVersions, CoreModels__NS__OrignalClassKey, CoreModels__NS__OutFolder, CoreModels__NS__Package, CoreModels__NS__ParamType, CoreModels__NS__parentLocation, CoreModels__NS__pathToChildren, CoreModels__NS__Position, CoreModels__NS__PreReleaseVersionTag, CoreModels__NS__PROGRESS_DATA_TYPE, CoreModels__NS__PUSHTYPE, CoreModels__NS__PwaManifest, CoreModels__NS__ReleaseVersionType, CoreModels__NS__ReleaseVersionTypeEnum, CoreModels__NS__RunOptions, CoreModels__NS__Size, CoreModels__NS__SPECIAL_APP_READY_MESSAGE, CoreModels__NS__SPECIAL_WORKER_READY_MESSAGE, CoreModels__NS__tagForTaskName, CoreModels__NS__TaonHttpErrorCustomProp, CoreModels__NS__TsUsage, CoreModels__NS__UIFramework, CoreModels__NS__VSCodeSettings } from 'tnp-core/websql-prod';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibTaonSeoSettingsTaonSeoSettingsConstantsTs } from './taon-seo-settings.constants.ts.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibTaonSeoSettingsTaonSeoSettingsConstantsTs } from './taon-seo-settings.constants.ts.pl-PL.i18n.data';;\nexport type TaonSeoSettingsOverride = CoreModels__NS__DeepPartial<EnUsTraslationOverrideSrcLibTaonSeoSettingsTaonSeoSettingsConstantsTs \n| PlPlTraslationOverrideSrcLibTaonSeoSettingsTaonSeoSettingsConstantsTs>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { finalize } from 'rxjs';\n\nimport { TaonSeoImageInputComponent } from '../../taon-seo-image-input/taon-seo-image-input.component';\nimport { TaonSeoSettingsApiService } from '../taon-seo-settings.api.service';\n\n@Component({\n selector: 'app-taon-seo-settings-backoffice',\n templateUrl: './taon-seo-settings-backoffice.component.html',\n styleUrls: ['./taon-seo-settings-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatFormFieldModule,\n MatInputModule,\n TaonSeoImageInputComponent,\n ],\n providers: [TaonSeoSettingsApiService],\n})\nexport class TaonSeoSettingsBackofficeComponent {\n readonly form = new FormGroup({\n siteName: new FormControl('', { nonNullable: true }),\n defaultTitle: new FormControl('', { nonNullable: true }),\n defaultDescription: new FormControl('', { nonNullable: true }),\n defaultKeywords: new FormControl<string | null>(null),\n defaultImageKey: new FormControl<string | null>(null),\n canonicalBaseUrl: new FormControl<string | null>(null),\n robotsIndex: new FormControl(true, { nonNullable: true }),\n robotsFollow: new FormControl(true, { nonNullable: true }),\n });\n readonly loading = signal(true);\n readonly saving = signal(false);\n readonly uploading = signal(false);\n readonly error = signal('');\n readonly saved = signal(false);\n private readonly api = inject(TaonSeoSettingsApiService);\n private readonly destroyRef = inject(DestroyRef);\n\n ngOnInit(): void {\n this.load();\n }\n\n load(): void {\n this.loading.set(true);\n this.error.set('');\n this.api\n .getGlobal()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: settings => {\n this.form.enable();\n this.form.patchValue(settings);\n },\n error: (error: unknown) => {\n console.error('[taon-seo-settings] Unable to load settings', error);\n this.error.set(\n 'SEO settings could not be loaded. Retry before saving.',\n );\n this.form.disable();\n },\n });\n }\n\n save(): void {\n if (\n this.loading() ||\n this.saving() ||\n this.uploading() ||\n this.form.disabled\n ) {\n return;\n }\n this.saving.set(true);\n this.saved.set(false);\n this.error.set('');\n this.api\n .saveGlobal(this.form.getRawValue())\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.saving.set(false)),\n )\n .subscribe({\n next: settings => {\n this.form.patchValue(settings);\n this.form.markAsPristine();\n this.saved.set(true);\n },\n error: (error: unknown) => {\n console.error('[taon-seo-settings] Unable to save settings', error);\n this.error.set(\n 'SEO settings could not be saved. Check the canonical URL and try again.',\n );\n },\n });\n }\n}\n","<h1>General SEO settings</h1>\n@if (loading()) {\n <p role=\"status\">Loading SEO settings...</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n @if (form.disabled) {\n <button\n mat-button\n type=\"button\"\n (click)=\"load()\">\n Retry\n </button>\n }\n}\n@if (saved()) {\n <p role=\"status\">SEO settings saved.</p>\n}\n<form\n [formGroup]=\"form\"\n (ngSubmit)=\"save()\">\n <fieldset [disabled]=\"loading() || saving() || form.disabled\">\n <mat-form-field>\n <mat-label>Site name</mat-label>\n <input\n matInput\n formControlName=\"siteName\" />\n </mat-form-field>\n <mat-form-field>\n <mat-label>Default page title</mat-label>\n <input\n matInput\n formControlName=\"defaultTitle\" />\n </mat-form-field>\n <mat-form-field>\n <mat-label>Default meta description</mat-label>\n <textarea\n matInput\n formControlName=\"defaultDescription\"\n rows=\"4\"></textarea>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Default keywords</mat-label>\n <input\n matInput\n formControlName=\"defaultKeywords\" />\n </mat-form-field>\n <taon-seo-image-input\n [key]=\"form.controls.defaultImageKey.value\"\n (keyChange)=\"form.controls.defaultImageKey.setValue($event)\"\n [disabled]=\"loading() || saving() || form.disabled\"\n [(uploading)]=\"uploading\" />\n <mat-form-field>\n <mat-label>Canonical base URL</mat-label>\n <input\n matInput\n formControlName=\"canonicalBaseUrl\"\n placeholder=\"https://example.com\" />\n <mat-hint\n >Absolute website URL, optionally including its deployment\n subpath.</mat-hint\n >\n </mat-form-field>\n <mat-checkbox formControlName=\"robotsIndex\">Allow indexing</mat-checkbox>\n <mat-checkbox formControlName=\"robotsFollow\"\n >Allow following links</mat-checkbox\n >\n <button\n mat-flat-button\n type=\"submit\"\n [disabled]=\"loading() || saving() || uploading() || form.disabled\">\n {{ saving() ? 'Saving...' : 'Save settings' }}\n </button>\n </fieldset>\n</form>\n","//namespace TaonSeoSettingsBackofficeModels\n\n//end of namespace TaonSeoSettingsBackofficeModels\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { adminLazyRoute } from '@taon-dev/ui/websql-prod';\n//#endregion\n\nexport const TaonSeoSettingsBackofficeRoutes: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./taon-seo-settings-backoffice.component').then(m => m.TaonSeoSettingsBackofficeComponent),\n\n children: [\n // adminLazyRoute({\n // path: 'dashboard',\n // menuItem: 'Dashboard',\n // icon: 'dashboard',\n // expandable: false,\n // loader: () =>\n // import('./anothermodule.routes').then(m => m.DashboardRoutes),\n // }),\n ],\n },\n];\n\n/**\n * By default exporting TaonSeoSettingsBackofficeRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonSeoSettingsBackofficeRoutes;","// @ts-nocheck\n// This file is auto-generated during init process. Do not modify.\n// This disable this auto generate file.\n// set property \"shouldGenerateAutogenIndexFile: false\" \n// in taon.jsonc of your project. \nexport * from './build-info._auto-generated_'; \nexport * from './my-organization-proj'; \nexport * from './start-cli'; \nexport * from './taon-seo-image.api.service'; // @browser\nexport * from './taon-seo-image.controller'; \nexport * from './taon-seo.abstract.context'; \nexport * from './taon-seo.provider'; \nexport * from './taon-seo.service'; // @browser\nexport * from './taon-seo.utils'; \nexport * from './taon-seo.validation'; \nexport * from './i18n/lib.translation'; \nexport * from './taon-seo-backoffice/taon-seo-backoffice.component'; // @browser\nexport * from './taon-seo-backoffice/taon-seo-backoffice.models'; \nexport * from './taon-seo-backoffice/taon-seo-backoffice.routes'; // @browser\nexport * from './taon-seo-image-input/taon-seo-image-input.component'; // @browser\nexport * from './taon-seo-page/taon-seo-page.abstract.context'; \nexport * from './taon-seo-page/taon-seo-page.api.service'; // @browser\nexport * from './taon-seo-page/taon-seo-page.config.service'; // @browser\nexport * from './taon-seo-page/taon-seo-page.constants'; \nexport * from './taon-seo-page/taon-seo-page.controller'; \nexport * from './taon-seo-page/taon-seo-page.entity'; \nexport * from './taon-seo-page/taon-seo-page.kv.repository'; \nexport * from './taon-seo-page/taon-seo-page.middleware'; \nexport * from './taon-seo-page/taon-seo-page.models'; \nexport * from './taon-seo-page/taon-seo-page.provider'; \nexport * from './taon-seo-page/taon-seo-page.repository'; \nexport * from './taon-seo-page/taon-seo-page.subscriber'; \nexport * from './taon-seo-page/taon-seo-page.utils'; \nexport * from './taon-seo-page/taon-seo-page.validators'; \nexport * from './taon-seo-settings/taon-seo-settings.abstract.context'; \nexport * from './taon-seo-settings/taon-seo-settings.api.service'; // @browser\nexport * from './taon-seo-settings/taon-seo-settings.config.service'; // @browser\nexport * from './taon-seo-settings/taon-seo-settings.constants'; \nexport * from './taon-seo-settings/taon-seo-settings.controller'; \nexport * from './taon-seo-settings/taon-seo-settings.entity'; \nexport * from './taon-seo-settings/taon-seo-settings.kv.repository'; \nexport * from './taon-seo-settings/taon-seo-settings.middleware'; \nexport * from './taon-seo-settings/taon-seo-settings.models'; \nexport * from './taon-seo-settings/taon-seo-settings.provider'; \nexport * from './taon-seo-settings/taon-seo-settings.repository'; \nexport * from './taon-seo-settings/taon-seo-settings.subscriber'; \nexport * from './taon-seo-settings/taon-seo-settings.utils'; \nexport * from './taon-seo-settings/taon-seo-settings.validators'; \nexport * from './taon-seo-page/i18n/taon-seo-page.translation'; \nexport * from './taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.component'; // @browser\nexport * from './taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.models'; \nexport * from './taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.routes'; // @browser\nexport * from './taon-seo-page/taon-seo-page-edit-dialog/taon-seo-page-edit-dialog.component'; // @browser\nexport * from './taon-seo-settings/i18n/taon-seo-settings.translation'; \nexport * from './taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.component'; // @browser\nexport * from './taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.models'; \nexport * from './taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.routes'; // @browser","export * from './migrations';\n/* */ \nexport * from './index._auto-generated_';\nexport * from './my-organization-proj';\n/* */ \nexport * from './taon-seo.service'; // @browser\nexport * from './taon-seo-image.api.service'; // @browser\nexport * from './taon-seo-image.controller';\nexport * from './taon-seo.provider';\nexport * from './taon-seo.utils';\nexport * from './taon-seo.validation';\nexport default {};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["t","MIGRATIONS_CLASSES_FOR_SeoContext","generatedMigrations","i1","i4"],"mappings":"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"}
1
+ {"version":3,"file":"seo-websql-prod.mjs","sources":["../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.entity.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.constants.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.entity.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/migrations/1791655200000_seo_configuration.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/migrations/1791132517216_initial.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/migrations/migrations_index._auto-generated_.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/migrations/index.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/build-info._auto-generated_.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/my-organization-proj.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/start-cli.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo.provider.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-image.controller.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-image.api.service.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo.utils.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo.validation.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.repository.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.controller.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.provider.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.repository.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.controller.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.provider.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.api.service.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.api.service.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo.service.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/i18n/lib.translation.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-backoffice/taon-seo-backoffice.component.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-backoffice/taon-seo-backoffice.component.html","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-backoffice/taon-seo-backoffice.models.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-backoffice/taon-seo-backoffice.routes.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-image-input/taon-seo-image-input.component.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.config.service.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.constants.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.kv.repository.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.middleware.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.models.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.utils.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page.validators.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.config.service.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.kv.repository.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.middleware.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.models.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.utils.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings.validators.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/i18n/taon-seo-page.translation.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page-edit-dialog/taon-seo-page-edit-dialog.component.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page-edit-dialog/taon-seo-page-edit-dialog.component.html","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.component.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.component.html","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.models.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.routes.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/i18n/taon-seo-settings.translation.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.component.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.component.html","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.models.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.routes.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/index._auto-generated_.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/lib/index.ts","../../../tmp-libs-for-dist-websql-prod/seo/projects/seo/src/seo-websql-prod.ts"],"sourcesContent":["import {\n Column,\n PrimaryGeneratedColumn,\n TaonBaseEntity,\n TaonEntity,\n} from 'taon/websql-prod';\n\n@TaonEntity({\n className: 'TaonSeoPageEntity',\n createTable: true,\n})\nexport class TaonSeoPageEntity extends TaonBaseEntity<TaonSeoPageEntity> {\n //#region @websql\n @PrimaryGeneratedColumn()\n //#endregion\n id: number;\n\n //#region @websql\n @Column({ type: 'varchar', unique: true })\n //#endregion\n path: string;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n title: string | null;\n\n //#region @websql\n @Column({ type: 'text', nullable: true })\n //#endregion\n description: string | null;\n\n //#region @websql\n @Column({ type: 'text', nullable: true })\n //#endregion\n keywords: string | null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n canonicalUrl: string | null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n ogTitle: string | null;\n\n //#region @websql\n @Column({ type: 'text', nullable: true })\n //#endregion\n ogDescription: string | null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n ogImageKey: string | null;\n\n //#region @websql\n @Column({ type: 'boolean', default: false })\n //#endregion\n noIndex: boolean;\n\n //#region @websql\n @Column({ type: 'boolean', default: false })\n //#endregion\n noFollow: boolean;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n createdAt: Date;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n updatedAt: Date;\n}\n","import type { TaonSeoSettingsEntity } from './taon-seo-settings.entity';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nconst t = Translation.for('src/lib/taon-seo-settings/taon-seo-settings.constants.ts', {\"src/lib/taon-seo-settings/taon-seo-settings.constants.ts\":{\"en-US\":async () => (await import('./i18n/taon-seo-settings.constants.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-seo-settings.constants.ts.pl-PL.i18n.data')).default}} as any);\n\nexport const TaonSeoSettingsDefaultsValues = {\n id: 1,\n siteName: '',\n defaultTitle: '',\n defaultDescription: '',\n defaultKeywords: null,\n defaultImageKey: null,\n canonicalBaseUrl: null,\n robotsIndex: true,\n robotsFollow: true,\n} as Partial<TaonSeoSettingsEntity>;\n\nexport enum TaonSeoSettingsErrors {\n INVALID_PASSWORD_EXAMPLE_ERROR = 'INVALID_PASSWORD_EXAMPLE_ERROR',\n}\n\nexport const TaonSeoSettingsTranslationErorsMap = new Map([\n [TaonSeoSettingsErrors.INVALID_PASSWORD_EXAMPLE_ERROR, t.gettext('Invalid Password')],\n]);","import { Column, PrimaryColumn, TaonBaseEntity, TaonEntity } from 'taon/websql-prod';\n\n@TaonEntity({\n className: 'TaonSeoSettingsEntity',\n createTable: true,\n})\nexport class TaonSeoSettingsEntity extends TaonBaseEntity<TaonSeoSettingsEntity> {\n //#region @websql\n @PrimaryColumn({ type: 'integer' })\n //#endregion\n id: number;\n\n //#region @websql\n @Column({ type: 'varchar', default: '' })\n //#endregion\n siteName: string;\n\n //#region @websql\n @Column({ type: 'varchar', default: '' })\n //#endregion\n defaultTitle: string;\n\n //#region @websql\n @Column({ type: 'text', default: '' })\n //#endregion\n defaultDescription: string;\n\n //#region @websql\n @Column({ type: 'text', nullable: true })\n //#endregion\n defaultKeywords: string | null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n defaultImageKey: string | null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n canonicalBaseUrl: string | null;\n\n //#region @websql\n @Column({ type: 'boolean', default: true })\n //#endregion\n robotsIndex: boolean;\n\n //#region @websql\n @Column({ type: 'boolean', default: true })\n //#endregion\n robotsFollow: boolean;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n createdAt: Date;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n updatedAt: Date;\n}\n","import { TaonBaseMigration, TaonMigration } from 'taon/websql-prod';\nimport { QueryRunner, Table } from 'taon-typeorm/websql-prod';\n\nimport { TaonSeoPageEntity } from '../taon-seo-page/taon-seo-page.entity';\nimport { TaonSeoSettingsDefaultsValues } from '../taon-seo-settings/taon-seo-settings.constants';\nimport { TaonSeoSettingsEntity } from '../taon-seo-settings/taon-seo-settings.entity';\n\n@TaonMigration({ className: 'SeoContext_1791655200000_seo_configuration' })\nexport class SeoContext_1791655200000_seo_configuration extends TaonBaseMigration {\n async up(queryRunner: QueryRunner): Promise<void> {\n for (const entity of [TaonSeoSettingsEntity, TaonSeoPageEntity]) {\n const metadata = queryRunner.connection.getMetadata(entity);\n const expected = Table.create(metadata, queryRunner.connection.driver);\n const current = await queryRunner.getTable(metadata.tablePath);\n if (current) {\n const expectedNames = expected.columns\n .map(column => column.name)\n .sort()\n .join(',');\n const currentNames = current.columns\n .map(column => column.name)\n .sort()\n .join(',');\n if (expectedNames === currentNames) {\n continue;\n }\n // Demo rows contain no route identity; never invent application paths for them.\n const count = await queryRunner.manager\n .createQueryBuilder()\n .from(metadata.tablePath, 'seo')\n .getCount();\n if (count > 0) {\n throw new Error(\n `Cannot migrate populated legacy SEO table ${metadata.tablePath}. Map its demo records to the new SEO schema before retrying.`,\n );\n }\n await queryRunner.dropTable(current);\n }\n await queryRunner.createTable(expected, true);\n }\n\n const settings = queryRunner.manager.getRepository(TaonSeoSettingsEntity);\n const records = await settings.find();\n if (records.some(record => record.id !== 1)) {\n throw new Error(\n 'Global SEO settings must use the singleton ID 1. Consolidate existing settings before retrying.',\n );\n }\n const now = new Date();\n await settings\n .createQueryBuilder()\n .insert()\n .values({\n ...TaonSeoSettingsDefaultsValues,\n createdAt: now,\n updatedAt: now,\n })\n .orIgnore()\n .execute();\n }\n\n async down(queryRunner: QueryRunner): Promise<void> {\n for (const entity of [TaonSeoPageEntity, TaonSeoSettingsEntity]) {\n const metadata = queryRunner.connection.getMetadata(entity);\n await queryRunner.dropTable(metadata.tablePath, true);\n }\n }\n}\n","import {\n MyAppAuthorization,\n MyAppGroup,\n MyAppPermission,\n MyAppRole,\n} from '@taon-dev/cms/websql-prod';\nimport { TaonAuthContextRepository } from '@taon-dev/session/websql-prod';\nimport { TaonBaseMigration, TaonMigration, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { QueryRunner } from 'taon-typeorm/websql-prod';\n\n//#region Migration class for context \"SeoContext\"\n@TaonMigration({\n className: 'SeoContext_1791132517216_initial',\n})\nexport class SeoContext_1791132517216_initial extends TaonBaseMigration {\n private taonAuthContextRepository = this.injectCustomRepo(\n TaonAuthContextRepository<MyAppAuthorization>,\n );\n\n //#region up\n async up(queryRunner: QueryRunner): Promise<any> {\n await queryRunner.startTransaction();\n try {\n await this.taonAuthContextRepository.persistTree({\n enums: {\n groups: MyAppGroup,\n roles: MyAppRole,\n permissions: MyAppPermission,\n },\n tree: {\n groupAndRoles: {\n [MyAppGroup.Administrator]: '*',\n [MyAppGroup.Customers]: [MyAppRole.BlogReader],\n },\n rolesAndPermissions: {\n [MyAppRole.Customer]: [\n MyAppPermission.AccessCourseP2,\n MyAppPermission.AccessCourseP2,\n ],\n [MyAppRole.CustomerPremium]: '*',\n },\n },\n });\n\n await queryRunner.commitTransaction();\n } catch (error) {\n console.error('Error in migration:', error);\n await queryRunner.rollbackTransaction();\n } finally {\n await queryRunner.release();\n }\n }\n //#endregion\n\n //#region down\n async down(queryRunner: QueryRunner): Promise<any> {\n await queryRunner.startTransaction();\n try {\n await this.taonAuthContextRepository.clearRolesGroupPermissions();\n\n await queryRunner.commitTransaction();\n } catch (error) {\n console.error('Error in migration:', error);\n await queryRunner.rollbackTransaction();\n } finally {\n await queryRunner.release();\n }\n }\n //#endregion\n}\n//#endregion","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { SeoContext_1791132517216_initial } from './1791132517216_initial';\nimport { SeoContext_1791655200000_seo_configuration } from './1791655200000_seo_configuration';\n// THIS FILE IS GENERATED - DO NOT MODIFY\nexport const MIGRATIONS_CLASSES_FOR_SeoContext = {\n /* 04-10-2026 18:48:37 */ SeoContext_1791132517216_initial,\n /* 10-10-2026 20:00:00 */ SeoContext_1791655200000_seo_configuration,\n};\n// THIS FILE IS GENERATED - DO NOT MODIFY\n","import { SeoContext_1791655200000_seo_configuration } from './1791655200000_seo_configuration';\nimport { MIGRATIONS_CLASSES_FOR_SeoContext as generatedMigrations } from './migrations_index._auto-generated_';\n\nexport const MIGRATIONS_CLASSES_FOR_SeoContext = {\n ...generatedMigrations,\n SeoContext_1791655200000_seo_configuration,\n};\n","// THIS FILE IS GENERATED - DO NOT MODIFY\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_FRAMEWORK_CLI_NAME = 'tnp';\n/**\n * This value can be change in taon.jsonc (appId)\n */\nexport const APP_ID = 'com.domain.example.seo';\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_BASE_HREF = '';\n/**\n * This value can be change in taon.jsonc (overrideNpmName)\n */\nexport const PROJECT_NPM_NAME = '@taon-dev/seo';\n/**\n * Taon version from you project taon.json\n */\nexport const CURRENT_PACKAGE_TAON_VERSION = 'v21';\n/**\n * Autogenerated by current cli tool. Use *tnp release* to bump version.\n */\nexport const CURRENT_PACKAGE_VERSION = '21.0.9';\n\n\n\n\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n ","import { Translation } from \"@taon-dev/i18n/websql-prod\";\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from \"taon/websql-prod\";\n\nconst t = Translation.for('src/lib/my-organization-proj.ts', {\"src/lib/my-organization-proj.ts\":{\"en-US\":async () => (await import('./i18n/my-organization-proj.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/my-organization-proj.ts.pl-PL.i18n.data')).default}} as any);\n\nexport function myOrgProj() {\n t.gettext('My Translated Company Name!')\n}","//#region tnp-helpers cli template\nimport { UtilsJson__NS__AttrJsoncProp, UtilsJson__NS__getAtrributiesFromJsonWithComments, UtilsJson__NS__getAttributiesFromComment, UtilsJson__NS__getValue, UtilsJson__NS__readJson, UtilsJson__NS__readJsonWithComments, UtilsJson__NS__setValue, UtilsJson__NS__validateLodashPath } from 'tnp-core/websql-prod';\nimport { BaseCommandLineFeature, Helpers__NS___fixCommand, Helpers__NS__ActionInstance, Helpers__NS__actionStarted, Helpers__NS__bigMaxBuffer, Helpers__NS__checkProcess, Helpers__NS__cleanExit, Helpers__NS__clearConsole, Helpers__NS__command, Helpers__NS__commandOutputAsString, Helpers__NS__commandOutputAsStringAsync, Helpers__NS__contain, Helpers__NS__createFolder, Helpers__NS__createSymLink, Helpers__NS__error, Helpers__NS__execute, Helpers__NS__exists, Helpers__NS__filesFrom, Helpers__NS__foldersFrom, Helpers__NS__getFilesFrom, Helpers__NS__getFoldersFrom, Helpers__NS__getIsBrowser, Helpers__NS__getIsElectron, Helpers__NS__getIsNode, Helpers__NS__getIsRunningInGitBash, Helpers__NS__getIsSupportedTaonTerminal, Helpers__NS__getIsVerboseMode, Helpers__NS__getIsVerboseModeOrTnp, Helpers__NS__getIsWebSQL, Helpers__NS__getIsWsl, Helpers__NS__getStdio, Helpers__NS__hideNodeWarnings, Helpers__NS__info, Helpers__NS__isBlob, Helpers__NS__isBuffer, Helpers__NS__isClass, Helpers__NS__isExistedSymlink, Helpers__NS__isFile, Helpers__NS__isFolder, Helpers__NS__isRunningInDocker, Helpers__NS__isRunningInLinuxGraphicsCapableEnvironment, Helpers__NS__isSymlinkFileExitedOrUnexisted, Helpers__NS__isSymlinkThatMatchesUrl, Helpers__NS__isUnexistedLink, Helpers__NS__killOnPort, Helpers__NS__killProcess, Helpers__NS__killProcessByPort, Helpers__NS__linksToFolderFrom, Helpers__NS__linksToFoldersFrom, Helpers__NS__log, Helpers__NS__logError, Helpers__NS__logInfo, Helpers__NS__logProc, Helpers__NS__logSuccess, Helpers__NS__logTaskDone, Helpers__NS__logTaskStarted, Helpers__NS__logWarn, Helpers__NS__mediaTypeFromSrc, Helpers__NS__mkdirp, Helpers__NS__modifyLineByLine, Helpers__NS__msgCacheClear, Helpers__NS__openFolderInFileExplorer, Helpers__NS__parse, Helpers__NS__pathContainLink, Helpers__NS__questionYesNo, Helpers__NS__readFile, Helpers__NS__readJson, Helpers__NS__readJson5, Helpers__NS__readJsonC, Helpers__NS__relative, Helpers__NS__remove, Helpers__NS__removeEmptyLineFromString, Helpers__NS__removeFileIfExists, Helpers__NS__removeFolderIfExists, Helpers__NS__removeIfExists, Helpers__NS__removeSlashAtBegin, Helpers__NS__removeSlashAtEnd, Helpers__NS__removeSymlinks, Helpers__NS__renderError, Helpers__NS__replaceLinesInFile, Helpers__NS__run, Helpers__NS__runAsyncIn, Helpers__NS__runSyncIn, Helpers__NS__runSyncOrAsync, Helpers__NS__sleep, Helpers__NS__stopApplication, Helpers__NS__stringify, Helpers__NS__success, Helpers__NS__taskDone, Helpers__NS__taskStarted, Helpers__NS__throwError, Helpers__NS__timeout, Helpers__NS__tryCatchError, Helpers__NS__tryReadFile, Helpers__NS__tryRemoveDir, Helpers__NS__values, Helpers__NS__wait, Helpers__NS__warn, Helpers__NS__writeFile, Helpers__NS__writeJson, Helpers__NS__writeJson5, Helpers__NS__writeJsonC } from 'tnp-helpers/websql-prod';\n/* */ \n//#endregion\n\n//#region CLI / global scope\n/**\n * This class is for handling global arguments. *\n * Cli engine will parse: hello:world:from:global:arg to helloWorldFromGlobalArg\n * (lower case, camel case) .. so you don't need to worry about misspelling\n * arguments\n */\nclass $Global extends BaseCommandLineFeature<{}> {\n /**\n * When you execute cli without arguments:`$ cli`\n */\n public _() {\n console.log(`Hello world from cli`);\n this._exit();\n }\n\n /**\n * When you execute: `$ cli hello:world:from:global:arg`\n * (or `$ cli helloWorldFromGlobalArg`)\n */\n helloWorldFromGlobalArg() {\n console.log('hello world from global argument!');\n this._exit(0);\n }\n}\n//#endregion\n\n//#region CLI / Version Scope\n/**\n *\n */\nclass $Version extends BaseCommandLineFeature<{\n anyCLIparamsHere: string;\n}> {\n /**\n * When you execute: `$ cli version`\n */\n public _() {\n console.log(`Hello world from version argument`);\n this._exit();\n }\n\n /**\n * When you execute: `$ cli version:getFromPackageJson`\n */\n public getFromPackageJson() {\n const ver = UtilsJson__NS__getValue(\n this.project.pathFor('package.json'),\n 'version',\n {\n defaultValue: '<not defined>',\n },\n );\n console.log(`Version from packageJson ${ver}`);\n this._exit(0);\n }\n}\n//#endregion\n\n/**\n *\n * @param argsv process.argsv\n * @param filename needed if you want ipc communicaiton\n */\nexport async function startCli(\n argsv: string[],\n filename: string,\n): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n}\n\nexport default startCli;","import {\n TaonAuthContextRepository,\n TaonSessionRepository,\n} from '@taon-dev/session/websql-prod';\nimport { TaonBaseProvider, TaonProvider, Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__DBRecreateModeType, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__PromiseObservableMix, Models__NS__Http__NS__RequestResults, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__Http__NS__TaonResponseStream, Models__NS__KVDatabaseConfig, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtrlBeforeEachRequestParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams } from 'taon/websql-prod';\n\nimport { seoError } from './taon-seo.validation';\n\n@TaonProvider({ className: 'TaonSeoProvider' })\nexport class TaonSeoProvider extends TaonBaseProvider {\n private readonly sessions = this.injectCustomRepo(TaonSessionRepository);\n private readonly authorization = this.injectCustomRepo(\n TaonAuthContextRepository,\n );\n\n async requireAdministrator({\n req,\n res,\n }: Models__NS__TaonCtrlBeforeEachRequestParams): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n}","import { ExpressRequest, ExpressResponse, TaonBaseStorageController, TaonController, TaonStorageObject, TaonUploadedFile, Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__DBRecreateModeType, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__PromiseObservableMix, Models__NS__Http__NS__RequestResults, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__Http__NS__TaonResponseStream, Models__NS__KVDatabaseConfig, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtrlBeforeEachRequestParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams } from 'taon/websql-prod';\n\nimport { TaonSeoProvider } from './taon-seo.provider';\nimport { seoError } from './taon-seo.validation';\n\nconst imageTypes = new Map([\n ['png', 'image/png'],\n ['jpg', 'image/jpeg'],\n ['jpeg', 'image/jpeg'],\n ['gif', 'image/gif'],\n ['webp', 'image/webp'],\n]);\n\n@TaonController({\n className: 'TaonSeoImageController',\n allowedMethods: ['download', 'getPublicUrl', 'uploadFormDataToServer'],\n})\nexport class TaonSeoImageController extends TaonBaseStorageController {\n private readonly seo = this.injectProvider(TaonSeoProvider);\n\n async beforeEachRequest(\n params: Models__NS__TaonCtrlBeforeEachRequestParams,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n protected async handleUploadFiles(\n files: TaonUploadedFile[],\n queryParams?: {},\n req?: ExpressRequest,\n res?: ExpressResponse,\n ): Promise<TaonStorageObject[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n afterFileUploadHook(): void {}\n\n buildStorageDownloadUrl(options: {\n req: ExpressRequest;\n key: string;\n private: boolean;\n token?: string;\n }): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n async createStorageDownloadToken(): Promise<string> {\n throw new Error(\n 'SEO images are public; private download tokens are not supported.',\n );\n }\n}","import { Injectable } from '@angular/core';\nimport { map } from 'rxjs';\nimport { TaonBaseAngularService } from 'taon/websql-prod';\n\nimport { TaonSeoImageController } from './taon-seo-image.controller';\n\n@Injectable()\nexport class TaonSeoImageApiService extends TaonBaseAngularService {\n private readonly images = this.injectController(TaonSeoImageController);\n\n async upload(file: File): Promise<string> {\n const data = new FormData();\n data.append('file', file);\n const response = await this.images.uploadFormDataToServer(data).request!();\n const objects = response.body.json;\n if (objects.length !== 1 || !objects[0].key) {\n throw new Error('The upload did not return an image key.');\n }\n return objects[0].key;\n }\n\n getPublicUrl(key: string) {\n return this.images.getPublicUrl(key).request!().observable.pipe(\n map(response => {\n const url = response.responseText;\n if (!url || !/^https?:\\/\\//.test(url)) {\n throw new Error(\n 'The image endpoint did not return an absolute HTTP(S) URL.',\n );\n }\n return url;\n }),\n );\n }\n}\n","import type { TaonSeoPageInput } from './taon-seo-page/taon-seo-page.models';\nimport type { TaonSeoSettingsInput } from './taon-seo-settings/taon-seo-settings.models';\n\nexport function normalizeSeoPath(path: string): string {\n const pathname = path.split(/[?#]/, 1)[0];\n return pathname.replace(/\\/+$/, '') || '/';\n}\n\nexport function seoText(value: string | null | undefined): string | null {\n return value?.trim() || null;\n}\n\nexport function resolveSeoMetadata(\n settings: TaonSeoSettingsInput,\n path: string,\n page: TaonSeoPageInput | null,\n) {\n const title = seoText(page?.title) ?? settings.defaultTitle;\n const description = seoText(page?.description) ?? settings.defaultDescription;\n const base = seoText(settings.canonicalBaseUrl);\n return {\n title,\n description,\n keywords: seoText(page?.keywords) ?? seoText(settings.defaultKeywords),\n canonicalUrl:\n seoText(page?.canonicalUrl) ??\n (base ? `${base.replace(/\\/+$/, '')}${normalizeSeoPath(path)}` : null),\n robots: [\n !settings.robotsIndex || page?.noIndex ? 'noindex' : 'index',\n !settings.robotsFollow || page?.noFollow ? 'nofollow' : 'follow',\n ].join(', '),\n ogTitle: seoText(page?.ogTitle) ?? title,\n ogDescription: seoText(page?.ogDescription) ?? description,\n ogImageKey: seoText(page?.ogImageKey) ?? seoText(settings.defaultImageKey),\n siteName: settings.siteName,\n };\n}\n","import { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonSeoPageInput } from './taon-seo-page/taon-seo-page.models';\nimport type { TaonSeoSettingsInput } from './taon-seo-settings/taon-seo-settings.models';\nimport { normalizeSeoPath, seoText } from './taon-seo.utils';\n\nexport function seoError(message: string, status = 400): never {\n Taon__NS__error({ message, status });\n throw new Error(message);\n}\n\nexport function requireSeoId(id: number): void {\n if (!Number.isSafeInteger(id) || id <= 0) {\n seoError('The page ID must be a positive integer.');\n }\n}\n\nfunction requireObject(input: unknown): void {\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n seoError('SEO settings must be an object.');\n }\n}\n\nfunction requireText(value: unknown, field: string, nullable = false): void {\n if (nullable && value === null) {\n return;\n }\n if (typeof value !== 'string') {\n seoError(`${field} must be ${nullable ? 'a string or null' : 'a string'}.`);\n }\n}\n\nfunction requireBoolean(value: unknown, field: string): void {\n if (typeof value !== 'boolean') {\n seoError(`${field} must be a boolean.`);\n }\n}\n\nfunction validateUrl(value: string | null, field: string): string | null {\n const text = seoText(value);\n if (!text) {\n return null;\n }\n let url: URL;\n try {\n url = new URL(text);\n } catch {\n seoError(`${field} must be an absolute HTTP(S) URL.`);\n }\n if (\n !['http:', 'https:'].includes(url.protocol) ||\n url.username ||\n url.password ||\n url.search ||\n url.hash\n ) {\n seoError(\n `${field} must be an HTTP(S) URL without credentials, query or fragment.`,\n );\n }\n return url.href;\n}\n\nexport function validateSeoPath(path: string): string {\n requireText(path, 'path');\n const text = path.trim();\n if (\n !text.startsWith('/') ||\n text.startsWith('//') ||\n /[;?#\\\\\\s()]/.test(text) ||\n /\\/{2,}/.test(text) ||\n text.split('/').some(segment => segment === '.' || segment === '..')\n ) {\n seoError(\n 'path must be an application path such as /pricing, without query, fragment or auxiliary outlets.',\n );\n }\n return normalizeSeoPath(text);\n}\n\nexport function validateSeoSettings(\n input: TaonSeoSettingsInput,\n): TaonSeoSettingsInput {\n requireObject(input);\n for (const field of [\n 'siteName',\n 'defaultTitle',\n 'defaultDescription',\n ] as const) {\n requireText(input[field], field);\n }\n for (const field of [\n 'defaultKeywords',\n 'defaultImageKey',\n 'canonicalBaseUrl',\n ] as const) {\n requireText(input[field], field, true);\n }\n requireBoolean(input.robotsIndex, 'robotsIndex');\n requireBoolean(input.robotsFollow, 'robotsFollow');\n return {\n siteName: input.siteName.trim(),\n defaultTitle: input.defaultTitle.trim(),\n defaultDescription: input.defaultDescription.trim(),\n defaultKeywords: seoText(input.defaultKeywords),\n defaultImageKey: seoText(input.defaultImageKey),\n canonicalBaseUrl: validateUrl(input.canonicalBaseUrl, 'canonicalBaseUrl'),\n robotsIndex: input.robotsIndex,\n robotsFollow: input.robotsFollow,\n };\n}\n\nexport function validateSeoPage(input: TaonSeoPageInput): TaonSeoPageInput {\n requireObject(input);\n for (const field of [\n 'title',\n 'description',\n 'keywords',\n 'canonicalUrl',\n 'ogTitle',\n 'ogDescription',\n 'ogImageKey',\n ] as const) {\n requireText(input[field], field, true);\n }\n requireBoolean(input.noIndex, 'noIndex');\n requireBoolean(input.noFollow, 'noFollow');\n return {\n path: validateSeoPath(input.path),\n title: seoText(input.title),\n description: seoText(input.description),\n keywords: seoText(input.keywords),\n canonicalUrl: validateUrl(input.canonicalUrl, 'canonicalUrl'),\n ogTitle: seoText(input.ogTitle),\n ogDescription: seoText(input.ogDescription),\n ogImageKey: seoText(input.ogImageKey),\n noIndex: input.noIndex,\n noFollow: input.noFollow,\n };\n}","import { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\n\nimport {\n requireSeoId,\n seoError,\n validateSeoPage,\n validateSeoPath,\n} from '../taon-seo.validation';\n\nimport { TaonSeoPageEntity } from './taon-seo-page.entity';\nimport type { TaonSeoPageInput } from './taon-seo-page.models';\n\n@TaonRepository({ className: 'TaonSeoPageRepository' })\nexport class TaonSeoPageRepository extends TaonBaseRepository<TaonSeoPageEntity> {\n entityClassResolveFn = () => TaonSeoPageEntity;\n\n async findByPath(path: string): Promise<TaonSeoPageEntity | null> {\n //#region @websqlFunc\n return this.findOne({ where: { path: validateSeoPath(path) } });\n //#endregion\n }\n\n async savePage(\n input: TaonSeoPageInput,\n id?: number,\n ): Promise<TaonSeoPageEntity> {\n //#region @websqlFunc\n const fields = validateSeoPage(input);\n if (id !== undefined) {\n requireSeoId(id);\n }\n return this.connection.transaction(async manager => {\n const repository = manager.getRepository<TaonSeoPageEntity>(this.target);\n const existing =\n id === undefined ? null : await repository.findOneBy({ id });\n if (id !== undefined && !existing) {\n seoError('SEO page not found.', 404);\n }\n const duplicate = await repository.findOneBy({ path: fields.path });\n if (duplicate && duplicate.id !== id) {\n seoError('An SEO override already exists for this path.', 409);\n }\n const now = new Date();\n return repository.save(\n repository.create({\n ...existing,\n ...fields,\n createdAt: existing?.createdAt ?? now,\n updatedAt: now,\n }),\n );\n });\n //#endregion\n }\n\n async deletePage(id: number): Promise<TaonSeoPageEntity> {\n //#region @websqlFunc\n requireSeoId(id);\n const existing = await this.findOne({ where: { id } });\n if (!existing) {\n seoError('SEO page not found.', 404);\n }\n await this.delete(id);\n return existing;\n //#endregion\n }\n}\n","import { Body, DELETE, GET, POST, PUT, Query, TaonBaseCrudController, TaonController, Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__DBRecreateModeType, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__PromiseObservableMix, Models__NS__Http__NS__RequestResults, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__Http__NS__TaonResponseStream, Models__NS__KVDatabaseConfig, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtrlBeforeEachRequestParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonSeoProvider } from '../taon-seo.provider';\n\nimport { TaonSeoPageEntity } from './taon-seo-page.entity';\nimport type { TaonSeoPageInput } from './taon-seo-page.models';\nimport { TaonSeoPageRepository } from './taon-seo-page.repository';\n\n@TaonController({\n className: 'TaonSeoPageController',\n allowedMethods: [\n 'getAll',\n 'getBy',\n 'paginationQuery',\n 'findByPath',\n 'createPage',\n 'updatePage',\n 'deletePage',\n ],\n})\nexport class TaonSeoPageController extends TaonBaseCrudController<TaonSeoPageEntity> {\n entityClassResolveFn = () => TaonSeoPageEntity;\n private readonly pages = this.injectCustomRepo(TaonSeoPageRepository);\n private readonly seo = this.injectProvider(TaonSeoProvider);\n\n async beforeEachRequest(\n params: Models__NS__TaonCtrlBeforeEachRequestParams,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n @GET()\n findByPath(\n @Query('path') path: string,\n ): Taon__NS__Response<TaonSeoPageEntity | null> {\n //#region @websqlFunc\n return async () => this.pages.findByPath(path);\n //#endregion\n }\n\n @POST()\n createPage(\n @Body() input: TaonSeoPageInput,\n ): Taon__NS__Response<TaonSeoPageEntity> {\n //#region @websqlFunc\n return async () => this.pages.savePage(input);\n //#endregion\n }\n\n @PUT()\n updatePage(\n @Query('id') id: number,\n @Body() input: TaonSeoPageInput,\n ): Taon__NS__Response<TaonSeoPageEntity> {\n //#region @websqlFunc\n return async () => this.pages.savePage(input, id);\n //#endregion\n }\n\n @DELETE()\n deletePage(@Query('id') id: number): Taon__NS__Response<TaonSeoPageEntity> {\n //#region @websqlFunc\n return async () => this.pages.deletePage(id);\n //#endregion\n }\n}","//#region imports\nimport { TaonBaseClass, TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\nexport class TaonTaonSeoPageConfig extends TaonBaseClass {\n declare name: string;\n}\n\n@TaonProvider({\n className: 'TaonSeoPageProvider',\n})\nexport class TaonSeoPageProvider extends TaonBaseProvider {\n enabledTaonSeoPageOption: boolean = true;\n config = new TaonTaonSeoPageConfig();\n clone() {\n return {\n enabledTaonSeoPageOption: this.enabledTaonSeoPageOption,\n config: this.config.clone(),\n };\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonSeoPageEntity } from './taon-seo-page.entity';\nimport { TaonSeoPageController } from './taon-seo-page.controller';\nimport { TaonSeoPageRepository } from './taon-seo-page.repository';\n// import { TaonSeoPageKvRepository } from './taon-seo-page.kv.repository';\nimport { TaonSeoPageProvider } from './taon-seo-page.provider';\n// import { TaonSeoPageMiddleware } from './taon-seo-page.middleware';\n// import { TaonSeoPageSubscriber } from './taon-seo-page.subscriber';\n//#endregion\n\nexport const TaonSeoPageAbstractContext = createContext(() => ({\n contextName: 'TaonSeoPageAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonSeoPageEntity },\n controllers: { TaonSeoPageController },\n repositories: {\n // TaonSeoPageKvRepository\n TaonSeoPageRepository,\n },\n providers: { TaonSeoPageProvider },\n // middlewares: { TaonSeoPageMiddleware },\n // subscribers: { TaonSeoPageSubscriber },\n}));","import { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\n\nimport { validateSeoSettings } from '../taon-seo.validation';\n\nimport { TaonSeoSettingsDefaultsValues } from './taon-seo-settings.constants';\nimport { TaonSeoSettingsEntity } from './taon-seo-settings.entity';\nimport type { TaonSeoSettingsInput } from './taon-seo-settings.models';\n\n@TaonRepository({ className: 'TaonSeoSettingsRepository' })\nexport class TaonSeoSettingsRepository extends TaonBaseRepository<TaonSeoSettingsEntity> {\n entityClassResolveFn = () => TaonSeoSettingsEntity;\n\n async getGlobal(): Promise<TaonSeoSettingsEntity> {\n //#region @websqlFunc\n const repository = this.connection.getRepository<TaonSeoSettingsEntity>(\n this.target,\n );\n const now = new Date();\n // A fixed primary key and conflict-safe insert also handle concurrent first reads.\n await repository\n .createQueryBuilder()\n .insert()\n .values({\n ...TaonSeoSettingsDefaultsValues,\n createdAt: now,\n updatedAt: now,\n })\n .orIgnore()\n .execute();\n return repository.findOneByOrFail({ id: 1 });\n //#endregion\n }\n\n async saveGlobal(\n input: TaonSeoSettingsInput,\n ): Promise<TaonSeoSettingsEntity> {\n //#region @websqlFunc\n const fields = validateSeoSettings(input);\n await this.getGlobal();\n const repository = this.connection.getRepository<TaonSeoSettingsEntity>(\n this.target,\n );\n await repository.update({ id: 1 }, { ...fields, updatedAt: new Date() });\n return repository.findOneByOrFail({ id: 1 });\n //#endregion\n }\n}\n","import { Body, GET, PUT, TaonBaseCrudController, TaonController, Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__DBRecreateModeType, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__PromiseObservableMix, Models__NS__Http__NS__RequestResults, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__Http__NS__TaonResponseStream, Models__NS__KVDatabaseConfig, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtrlBeforeEachRequestParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonSeoProvider } from '../taon-seo.provider';\n\nimport { TaonSeoSettingsEntity } from './taon-seo-settings.entity';\nimport type { TaonSeoSettingsInput } from './taon-seo-settings.models';\nimport { TaonSeoSettingsRepository } from './taon-seo-settings.repository';\n\n@TaonController({\n className: 'TaonSeoSettingsController',\n allowedMethods: ['getGlobal', 'saveGlobal'],\n})\nexport class TaonSeoSettingsController extends TaonBaseCrudController<TaonSeoSettingsEntity> {\n entityClassResolveFn = () => TaonSeoSettingsEntity;\n private readonly settings = this.injectCustomRepo(TaonSeoSettingsRepository);\n private readonly seo = this.injectProvider(TaonSeoProvider);\n\n async beforeEachRequest(\n params: Models__NS__TaonCtrlBeforeEachRequestParams,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n @GET()\n getGlobal(): Taon__NS__Response<TaonSeoSettingsEntity> {\n //#region @websqlFunc\n return async () => this.settings.getGlobal();\n //#endregion\n }\n\n @PUT()\n saveGlobal(\n @Body() input: TaonSeoSettingsInput,\n ): Taon__NS__Response<TaonSeoSettingsEntity> {\n //#region @websqlFunc\n return async () => this.settings.saveGlobal(input);\n //#endregion\n }\n}","//#region imports\nimport { TaonBaseClass, TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\nexport class TaonTaonSeoSettingsConfig extends TaonBaseClass {\n declare name: string;\n}\n\n@TaonProvider({\n className: 'TaonSeoSettingsProvider',\n})\nexport class TaonSeoSettingsProvider extends TaonBaseProvider {\n enabledTaonSeoSettingsOption: boolean = true;\n config = new TaonTaonSeoSettingsConfig();\n clone() {\n return {\n enabledTaonSeoSettingsOption: this.enabledTaonSeoSettingsOption,\n config: this.config.clone(),\n };\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonSeoSettingsEntity } from './taon-seo-settings.entity';\nimport { TaonSeoSettingsController } from './taon-seo-settings.controller';\nimport { TaonSeoSettingsRepository } from './taon-seo-settings.repository';\n// import { TaonSeoSettingsKvRepository } from './taon-seo-settings.kv.repository';\nimport { TaonSeoSettingsProvider } from './taon-seo-settings.provider';\n// import { TaonSeoSettingsMiddleware } from './taon-seo-settings.middleware';\n// import { TaonSeoSettingsSubscriber } from './taon-seo-settings.subscriber';\n//#endregion\n\nexport const TaonSeoSettingsAbstractContext = createContext(() => ({\n contextName: 'TaonSeoSettingsAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonSeoSettingsEntity },\n controllers: { TaonSeoSettingsController },\n repositories: {\n // TaonSeoSettingsKvRepository\n TaonSeoSettingsRepository,\n },\n providers: { TaonSeoSettingsProvider },\n // middlewares: { TaonSeoSettingsMiddleware },\n // subscribers: { TaonSeoSettingsSubscriber },\n}));","import { TaonSessionAbstractContext } from '@taon-dev/session/websql-prod';\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonSeoPageAbstractContext } from './taon-seo-page/taon-seo-page.abstract.context';\nimport { TaonSeoSettingsAbstractContext } from './taon-seo-settings/taon-seo-settings.abstract.context';\nimport { TaonSeoImageController } from './taon-seo-image.controller';\nimport { TaonSeoProvider } from './taon-seo.provider';\n\nexport const TaonSeoAbstractContext = createContext(() => ({\n contextName: 'TaonSeoAbstractContext',\n abstract: true,\n contexts: {\n TaonSessionAbstractContext,\n\n // local\n TaonSeoPageAbstractContext,\n TaonSeoSettingsAbstractContext,\n },\n controllers: { TaonSeoImageController },\n providers: { TaonSeoProvider },\n}));\n","import { Injectable } from '@angular/core';\nimport { map } from 'rxjs';\nimport { TaonBaseAngularService } from 'taon/websql-prod';\n\nimport { TaonSeoPageController } from './taon-seo-page.controller';\nimport type { TaonSeoPageInput } from './taon-seo-page.models';\n\n@Injectable()\nexport class TaonSeoPageApiService extends TaonBaseAngularService {\n readonly taonSeoPageController = this.injectController(TaonSeoPageController);\n\n findByPath(path: string) {\n return this.taonSeoPageController.findByPath(path)\n .request!().observable.pipe(map(res => res.body.json));\n }\n\n createPage(input: TaonSeoPageInput) {\n return this.taonSeoPageController.createPage(input)\n .request!().observable.pipe(map(res => res.body.json));\n }\n\n updatePage(id: number, input: TaonSeoPageInput) {\n return this.taonSeoPageController.updatePage(id, input)\n .request!().observable.pipe(map(res => res.body.json));\n }\n\n deletePage(id: number) {\n return this.taonSeoPageController.deletePage(id).request!().observable.pipe(\n map(res => res.body.json),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { map } from 'rxjs';\nimport { TaonBaseAngularService } from 'taon/websql-prod';\n\nimport { TaonSeoSettingsController } from './taon-seo-settings.controller';\nimport type { TaonSeoSettingsInput } from './taon-seo-settings.models';\n\n@Injectable()\nexport class TaonSeoSettingsApiService extends TaonBaseAngularService {\n readonly taonSeoSettingsController = this.injectController(\n TaonSeoSettingsController,\n );\n\n getGlobal() {\n return this.taonSeoSettingsController.getGlobal()\n .request!().observable.pipe(map(res => res.body.json));\n }\n\n saveGlobal(input: TaonSeoSettingsInput) {\n return this.taonSeoSettingsController.saveGlobal(input)\n .request!().observable.pipe(map(res => res.body.json));\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n APP_BOOTSTRAP_LISTENER,\n DestroyRef,\n Injectable,\n Provider,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { NavigationEnd, PRIMARY_OUTLET, Router } from '@angular/router';\nimport {\n EMPTY,\n catchError,\n distinctUntilChanged,\n filter,\n forkJoin,\n map,\n of,\n startWith,\n switchMap,\n} from 'rxjs';\n\nimport { TaonSeoImageApiService } from './taon-seo-image.api.service';\nimport { TaonSeoPageApiService } from './taon-seo-page/taon-seo-page.api.service';\nimport { TaonSeoSettingsApiService } from './taon-seo-settings/taon-seo-settings.api.service';\nimport { normalizeSeoPath, resolveSeoMetadata } from './taon-seo.utils';\n\n@Injectable()\nexport class TaonSeoService {\n readonly error = signal('');\n private readonly router = inject(Router);\n private readonly settings = inject(TaonSeoSettingsApiService);\n private readonly pages = inject(TaonSeoPageApiService);\n private readonly images = inject(TaonSeoImageApiService);\n private readonly meta = inject(Meta);\n private readonly title = inject(Title);\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly originalTitle = this.title.getTitle();\n private started = false;\n\n start(): void {\n if (this.started) {\n return;\n }\n this.started = true;\n this.router.events\n .pipe(\n filter(event => event instanceof NavigationEnd),\n startWith(null),\n map(() => this.currentPath()),\n distinctUntilChanged(),\n switchMap(path => {\n this.error.set('');\n this.clear();\n return forkJoin({\n settings: this.settings.getGlobal(),\n page: this.pages.findByPath(path),\n }).pipe(\n map(({ settings, page }) =>\n resolveSeoMetadata(settings, path, page),\n ),\n switchMap(metadata => {\n // Clear the previous route's image while resolving a public storage URL.\n this.apply(metadata, null);\n return metadata.ogImageKey\n ? this.images.getPublicUrl(metadata.ogImageKey).pipe(\n map(imageUrl => ({ metadata, imageUrl })),\n catchError((error: unknown) => {\n console.error(\n '[taon-seo] Unable to resolve social image',\n error,\n );\n this.error.set(\n 'The social image could not be loaded for the current page.',\n );\n return of({ metadata, imageUrl: null });\n }),\n )\n : of({ metadata, imageUrl: null });\n }),\n catchError((error: unknown) => {\n console.error(\n '[taon-seo] Unable to update route metadata',\n error,\n );\n this.error.set(\n 'SEO metadata could not be loaded for the current page.',\n );\n this.clear();\n return EMPTY;\n }),\n );\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(({ metadata, imageUrl }) => this.apply(metadata, imageUrl));\n }\n\n private currentPath(): string {\n const segments: string[] = [];\n let route = this.router.routerState.snapshot.root;\n while (route) {\n segments.push(...route.url.map(segment => segment.path));\n const child = route.children.find(\n candidate => candidate.outlet === PRIMARY_OUTLET,\n );\n if (!child) {\n break;\n }\n route = child;\n }\n return normalizeSeoPath(`/${segments.join('/')}`);\n }\n\n private apply(\n metadata: ReturnType<typeof resolveSeoMetadata>,\n imageUrl: string | null,\n ): void {\n this.title.setTitle(metadata.title);\n this.setMeta('name', 'description', metadata.description);\n this.setMeta('name', 'keywords', metadata.keywords);\n this.setMeta('name', 'robots', metadata.robots);\n this.setMeta('property', 'og:title', metadata.ogTitle);\n this.setMeta('property', 'og:description', metadata.ogDescription);\n this.setMeta('property', 'og:image', imageUrl);\n this.setMeta('property', 'og:site_name', metadata.siteName);\n this.setMeta('property', 'og:url', metadata.canonicalUrl);\n this.setCanonical(metadata.canonicalUrl);\n }\n\n private setMeta(\n attribute: 'name' | 'property',\n key: string,\n content: string | null,\n ): void {\n const selector = `${attribute}=\"${key}\"`;\n // Remove duplicates and stale values, including tags left by the previous route.\n this.meta.getTags(selector).forEach(tag => this.meta.removeTagElement(tag));\n if (content) {\n this.meta.addTag({ [attribute]: key, content });\n }\n }\n\n private setCanonical(url: string | null): void {\n this.document.head\n .querySelectorAll('link[rel=\"canonical\"]')\n .forEach(link => link.remove());\n if (url) {\n const link = this.document.createElement('link');\n link.rel = 'canonical';\n link.href = url;\n this.document.head.appendChild(link);\n }\n }\n\n private clear(): void {\n this.title.setTitle(this.originalTitle);\n for (const name of ['description', 'keywords', 'robots']) {\n this.setMeta('name', name, null);\n }\n for (const property of [\n 'og:title',\n 'og:description',\n 'og:image',\n 'og:site_name',\n 'og:url',\n ]) {\n this.setMeta('property', property, null);\n }\n this.setCanonical(null);\n }\n}\n\nexport function provideTaonSeo(): Provider[] {\n return [\n TaonSeoService,\n TaonSeoPageApiService,\n TaonSeoSettingsApiService,\n TaonSeoImageApiService,\n {\n provide: APP_BOOTSTRAP_LISTENER,\n multi: true,\n deps: [TaonSeoService],\n useFactory: (seo: TaonSeoService) => () => seo.start(),\n },\n ];\n}\n","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels__NS__BaseProjectType, CoreModels__NS__BaseProjectTypeArr, CoreModels__NS__BuildType, CoreModels__NS__BuildTypeArr, CoreModels__NS__buildTypeToWatcherFn, CoreModels__NS__BuildWatcherErrorType, CoreModels__NS__BuildWatcherType, CoreModels__NS__BuildWatcherTypeArr, CoreModels__NS__CfontAlign, CoreModels__NS__CfontStyle, CoreModels__NS__ClassNameStaticProperty, CoreModels__NS__ContentType, CoreModels__NS__ContentTypeKeys, CoreModels__NS__CoreLibCategory, CoreModels__NS__CutableFileExt, CoreModels__NS__DatabaseType, CoreModels__NS__DeepPartial, CoreModels__NS__FileEvent, CoreModels__NS__FileExtension, CoreModels__NS__FirstParamsFrom, CoreModels__NS__FrameworkVersion, CoreModels__NS__GitConnection, CoreModels__NS__GitConnectionArr, CoreModels__NS__GlobalDependencies, CoreModels__NS__hasExitCleaningFunction, CoreModels__NS__HttpCode, CoreModels__NS__HttpMethod, CoreModels__NS__HttpMethodArr, CoreModels__NS__ImageFileExtension, CoreModels__NS__ImageFileExtensionArr, CoreModels__NS__InstalationType, CoreModels__NS__InstalationTypeArr, CoreModels__NS__LibType, CoreModels__NS__localhostDomain, CoreModels__NS__localhostIp127, CoreModels__NS__ManifestIcon, CoreModels__NS__MediaType, CoreModels__NS__MediaTypeAllArr, CoreModels__NS__mimeTypes, CoreModels__NS__NewFactoryType, CoreModels__NS__NpmInstallOptions, CoreModels__NS__NpmPublishOptions, CoreModels__NS__NpmSpecialVersions, CoreModels__NS__OrignalClassKey, CoreModels__NS__OutFolder, CoreModels__NS__Package, CoreModels__NS__ParamType, CoreModels__NS__parentLocation, CoreModels__NS__pathToChildren, CoreModels__NS__Position, CoreModels__NS__PreReleaseVersionTag, CoreModels__NS__PROGRESS_DATA_TYPE, CoreModels__NS__PUSHTYPE, CoreModels__NS__PwaManifest, CoreModels__NS__ReleaseVersionType, CoreModels__NS__ReleaseVersionTypeEnum, CoreModels__NS__RunOptions, CoreModels__NS__Size, CoreModels__NS__SPECIAL_APP_READY_MESSAGE, CoreModels__NS__SPECIAL_WORKER_READY_MESSAGE, CoreModels__NS__tagForTaskName, CoreModels__NS__TaonHttpErrorCustomProp, CoreModels__NS__TsUsage, CoreModels__NS__UIFramework, CoreModels__NS__VSCodeSettings } from 'tnp-core/websql-prod';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibMyOrganizationProjTs } from './my-organization-proj.ts.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibMyOrganizationProjTs } from './my-organization-proj.ts.pl-PL.i18n.data';;\nexport type LibOverride = CoreModels__NS__DeepPartial<EnUsTraslationOverrideSrcLibMyOrganizationProjTs \n| PlPlTraslationOverrideSrcLibMyOrganizationProjTs>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY","//#region imports\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n//#endregion\n\n@Component({\n selector: 'app-taon-seo-backoffice',\n templateUrl: './taon-seo-backoffice.component.html',\n styleUrls: ['./taon-seo-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, RouterOutlet],\n})\nexport class TaonSeoBackofficeComponent {}","<router-outlet></router-outlet>\n","//namespace TaonSeoBackofficeModels\n\n//end of namespace TaonSeoBackofficeModels\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { adminLazyRoute } from '@taon-dev/ui/websql-prod';\n//#endregion\n\nexport const TaonSeoBackofficeRoutes: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./taon-seo-backoffice.component').then(\n m => m.TaonSeoBackofficeComponent,\n ),\n\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'settings' },\n adminLazyRoute({\n path: 'settings',\n menuItem: 'General (Settings)',\n icon: 'settings',\n expandable: false,\n loader: () =>\n import('../taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.routes').then(\n m => m.TaonSeoSettingsBackofficeRoutes,\n ),\n }),\n adminLazyRoute({\n path: 'pages',\n menuItem: 'Pages',\n icon: 'extension',\n expandable: false,\n loader: () =>\n import('../taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.routes').then(\n m => m.TaonSeoPageBackofficeRoutes,\n ),\n }),\n ],\n },\n];\n\n/**\n * By default exporting TaonSeoBackofficeRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonSeoBackofficeRoutes;\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n model,\n signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TaonSeoImageApiService } from '../taon-seo-image.api.service';\n\n@Component({\n selector: 'taon-seo-image-input',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButtonModule],\n providers: [TaonSeoImageApiService],\n template: `\n <p>Social / Open Graph image</p>\n <input\n type=\"file\"\n aria-label=\"Upload social image\"\n accept=\"image/png,image/jpeg,image/gif,image/webp\"\n [disabled]=\"disabled() || uploading()\"\n (change)=\"upload($event)\" />\n @if (key()) {\n <p>Image key: {{ key() }}</p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"disabled() || uploading()\"\n (click)=\"key.set(null)\">\n Clear image\n </button>\n }\n @if (uploading()) {\n <p role=\"status\">Uploading image...</p>\n }\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n }\n `,\n})\nexport class TaonSeoImageInputComponent {\n readonly key = model<string | null>(null);\n readonly disabled = model(false);\n readonly uploading = model(false);\n readonly error = signal('');\n private readonly api = inject(TaonSeoImageApiService);\n\n async upload(event: Event): Promise<void> {\n const target = event.target;\n if (!(target instanceof HTMLInputElement)) {\n return;\n }\n const file = target.files?.[0];\n if (!file || this.disabled() || this.uploading()) {\n return;\n }\n this.error.set('');\n this.uploading.set(true);\n try {\n this.key.set(await this.api.upload(file));\n } catch (error: unknown) {\n console.error('[taon-seo-image-input] Unable to upload image', error);\n this.error.set('The image could not be uploaded. Please try again.');\n } finally {\n this.uploading.set(false);\n target.value = '';\n }\n }\n}\n","//#region imports\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonSeoPageProvider } from './taon-seo-page.provider';\n//#endregion\n\n@Injectable()\nexport class TaonSeoPageConfigService extends TaonBaseAngularService {\n private taonSeoPageProvider = this.injectProvider(TaonSeoPageProvider);\n\n get isEnableOption() {\n return this.taonSeoPageProvider.enabledTaonSeoPageOption;\n }\n\n clone(): Partial<TaonSeoPageProvider> {\n const cloned = this.taonSeoPageProvider.clone();\n return cloned;\n }\n}","import type { TaonSeoPageEntity } from './taon-seo-page.entity';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nconst t = Translation.for('src/lib/taon-seo-page/taon-seo-page.constants.ts', {\"src/lib/taon-seo-page/taon-seo-page.constants.ts\":{\"en-US\":async () => (await import('./i18n/taon-seo-page.constants.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-seo-page.constants.ts.pl-PL.i18n.data')).default}} as any);\n\nexport const TaonSeoPageDefaultsValues = {\n path: '/',\n title: null,\n description: null,\n keywords: null,\n canonicalUrl: null,\n ogTitle: null,\n ogDescription: null,\n ogImageKey: null,\n noIndex: false,\n noFollow: false,\n} as Partial<TaonSeoPageEntity>;\n\nexport enum TaonSeoPageErrors {\n INVALID_PASSWORD_EXAMPLE_ERROR = 'INVALID_PASSWORD_EXAMPLE_ERROR',\n}\n\nexport const TaonSeoPageTranslationErorsMap = new Map([\n [TaonSeoPageErrors.INVALID_PASSWORD_EXAMPLE_ERROR, t.gettext('Invalid Password')],\n]);","//#region imports\nimport {\n TaonBaseRepository,\n TaonBaseKvRepository,\n TaonRepository,\n} from 'taon/websql-prod';\n\nimport { TaonSeoPageEntity } from './taon-seo-page.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonSeoPageKvRepository',\n})\nexport class TaonSeoPageKvRepository extends TaonBaseKvRepository<{\n usersToNotify: TaonSeoPageEntity[];\n}> {\n async notifyUsers(users: TaonSeoPageEntity[]) {\n this.set('usersToNotify', users);\n }\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonSeoPageMiddleware',\n})\nexport class TaonSeoPageMiddleware extends TaonBaseMiddleware {}","import type { TaonSeoPageEntity } from './taon-seo-page.entity';\n\nexport type TaonSeoPageInput = Pick<\n TaonSeoPageEntity,\n | 'path'\n | 'title'\n | 'description'\n | 'keywords'\n | 'canonicalUrl'\n | 'ogTitle'\n | 'ogDescription'\n | 'ogImageKey'\n | 'noIndex'\n | 'noFollow'\n>;\n\n//namespace TaonSeoPageModels\n\n export enum TaonSeoPageModels__NS__TaonSeoPageState {\n Active = 'active',\n Inactive = 'inactive',\n }\n\n//end of namespace TaonSeoPageModels\n","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonSeoPageEntity } from './taon-seo-page.entity';\nimport { TaonSeoPageProvider } from './taon-seo-page.provider';\n//#endregion\n\n@TaonSubscriber<TaonSeoPageSubscriber>({\n className: 'TaonSeoPageSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonSeoPageSubscriber extends TaonBaseSubscriberForEntity {\n private readonly taonSeoPageProvider = this.injectProvider(TaonSeoPageProvider);\n listenTo(): typeof TaonSeoPageEntity {\n return TaonSeoPageEntity;\n }\n}","import { TaonSeoPageModels__NS__TaonSeoPageState } from './taon-seo-page.models';\n\n//namespace TaonSeoPageUtils\n\n export function TaonSeoPageUtils__NS__isActive(state: string): state is TaonSeoPageModels__NS__TaonSeoPageState {\n return state === 'active';\n }\n\n//end of namespace TaonSeoPageUtils","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms'; // @browser\nimport { TaonSeoPageErrors } from './taon-seo-page.constants';\n\n//namespace TaonSeoPageValidators\n\n //#region @browser\n /**\n * TODO REMOVE THIS EXAMPLE.\n */\n export const TaonSeoPageValidators__NS__passwordMatchValidator: ValidatorFn = (\n control: AbstractControl,\n ): ValidationErrors | null => {\n const password = control.get('password');\n const passwordRepeat = control.get('passwordRepeat');\n\n if (!password || !passwordRepeat) {\n return null;\n }\n\n return password.value === passwordRepeat.value\n ? null\n : { [TaonSeoPageErrors.INVALID_PASSWORD_EXAMPLE_ERROR]: true };\n };\n //#endregion\n\n\n//end of namespace TaonSeoPageValidators\n","//#region imports\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonSeoSettingsProvider } from './taon-seo-settings.provider';\n//#endregion\n\n@Injectable()\nexport class TaonSeoSettingsConfigService extends TaonBaseAngularService {\n private taonSeoSettingsProvider = this.injectProvider(TaonSeoSettingsProvider);\n\n get isEnableOption() {\n return this.taonSeoSettingsProvider.enabledTaonSeoSettingsOption;\n }\n\n clone(): Partial<TaonSeoSettingsProvider> {\n const cloned = this.taonSeoSettingsProvider.clone();\n return cloned;\n }\n}","//#region imports\nimport {\n TaonBaseRepository,\n TaonBaseKvRepository,\n TaonRepository,\n} from 'taon/websql-prod';\n\nimport { TaonSeoSettingsEntity } from './taon-seo-settings.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonSeoSettingsKvRepository',\n})\nexport class TaonSeoSettingsKvRepository extends TaonBaseKvRepository<{\n usersToNotify: TaonSeoSettingsEntity[];\n}> {\n async notifyUsers(users: TaonSeoSettingsEntity[]) {\n this.set('usersToNotify', users);\n }\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonSeoSettingsMiddleware',\n})\nexport class TaonSeoSettingsMiddleware extends TaonBaseMiddleware {}","import type { TaonSeoSettingsEntity } from './taon-seo-settings.entity';\n\nexport type TaonSeoSettingsInput = Pick<\n TaonSeoSettingsEntity,\n | 'siteName'\n | 'defaultTitle'\n | 'defaultDescription'\n | 'defaultKeywords'\n | 'defaultImageKey'\n | 'canonicalBaseUrl'\n | 'robotsIndex'\n | 'robotsFollow'\n>;\n\n//namespace TaonSeoSettingsModels\n\n export enum TaonSeoSettingsModels__NS__TaonSeoSettingsState {\n Active = 'active',\n Inactive = 'inactive',\n }\n\n//end of namespace TaonSeoSettingsModels\n","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonSeoSettingsEntity } from './taon-seo-settings.entity';\nimport { TaonSeoSettingsProvider } from './taon-seo-settings.provider';\n//#endregion\n\n@TaonSubscriber<TaonSeoSettingsSubscriber>({\n className: 'TaonSeoSettingsSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonSeoSettingsSubscriber extends TaonBaseSubscriberForEntity {\n private readonly taonSeoSettingsProvider = this.injectProvider(TaonSeoSettingsProvider);\n listenTo(): typeof TaonSeoSettingsEntity {\n return TaonSeoSettingsEntity;\n }\n}","import { TaonSeoSettingsModels__NS__TaonSeoSettingsState } from './taon-seo-settings.models';\n\n//namespace TaonSeoSettingsUtils\n\n export function TaonSeoSettingsUtils__NS__isActive(state: string): state is TaonSeoSettingsModels__NS__TaonSeoSettingsState {\n return state === 'active';\n }\n\n//end of namespace TaonSeoSettingsUtils","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms'; // @browser\nimport { TaonSeoSettingsErrors } from './taon-seo-settings.constants';\n\n//namespace TaonSeoSettingsValidators\n\n //#region @browser\n /**\n * TODO REMOVE THIS EXAMPLE.\n */\n export const TaonSeoSettingsValidators__NS__passwordMatchValidator: ValidatorFn = (\n control: AbstractControl,\n ): ValidationErrors | null => {\n const password = control.get('password');\n const passwordRepeat = control.get('passwordRepeat');\n\n if (!password || !passwordRepeat) {\n return null;\n }\n\n return password.value === passwordRepeat.value\n ? null\n : { [TaonSeoSettingsErrors.INVALID_PASSWORD_EXAMPLE_ERROR]: true };\n };\n //#endregion\n\n\n//end of namespace TaonSeoSettingsValidators\n","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels__NS__BaseProjectType, CoreModels__NS__BaseProjectTypeArr, CoreModels__NS__BuildType, CoreModels__NS__BuildTypeArr, CoreModels__NS__buildTypeToWatcherFn, CoreModels__NS__BuildWatcherErrorType, CoreModels__NS__BuildWatcherType, CoreModels__NS__BuildWatcherTypeArr, CoreModels__NS__CfontAlign, CoreModels__NS__CfontStyle, CoreModels__NS__ClassNameStaticProperty, CoreModels__NS__ContentType, CoreModels__NS__ContentTypeKeys, CoreModels__NS__CoreLibCategory, CoreModels__NS__CutableFileExt, CoreModels__NS__DatabaseType, CoreModels__NS__DeepPartial, CoreModels__NS__FileEvent, CoreModels__NS__FileExtension, CoreModels__NS__FirstParamsFrom, CoreModels__NS__FrameworkVersion, CoreModels__NS__GitConnection, CoreModels__NS__GitConnectionArr, CoreModels__NS__GlobalDependencies, CoreModels__NS__hasExitCleaningFunction, CoreModels__NS__HttpCode, CoreModels__NS__HttpMethod, CoreModels__NS__HttpMethodArr, CoreModels__NS__ImageFileExtension, CoreModels__NS__ImageFileExtensionArr, CoreModels__NS__InstalationType, CoreModels__NS__InstalationTypeArr, CoreModels__NS__LibType, CoreModels__NS__localhostDomain, CoreModels__NS__localhostIp127, CoreModels__NS__ManifestIcon, CoreModels__NS__MediaType, CoreModels__NS__MediaTypeAllArr, CoreModels__NS__mimeTypes, CoreModels__NS__NewFactoryType, CoreModels__NS__NpmInstallOptions, CoreModels__NS__NpmPublishOptions, CoreModels__NS__NpmSpecialVersions, CoreModels__NS__OrignalClassKey, CoreModels__NS__OutFolder, CoreModels__NS__Package, CoreModels__NS__ParamType, CoreModels__NS__parentLocation, CoreModels__NS__pathToChildren, CoreModels__NS__Position, CoreModels__NS__PreReleaseVersionTag, CoreModels__NS__PROGRESS_DATA_TYPE, CoreModels__NS__PUSHTYPE, CoreModels__NS__PwaManifest, CoreModels__NS__ReleaseVersionType, CoreModels__NS__ReleaseVersionTypeEnum, CoreModels__NS__RunOptions, CoreModels__NS__Size, CoreModels__NS__SPECIAL_APP_READY_MESSAGE, CoreModels__NS__SPECIAL_WORKER_READY_MESSAGE, CoreModels__NS__tagForTaskName, CoreModels__NS__TaonHttpErrorCustomProp, CoreModels__NS__TsUsage, CoreModels__NS__UIFramework, CoreModels__NS__VSCodeSettings } from 'tnp-core/websql-prod';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibTaonSeoPageTaonSeoPageConstantsTs } from './taon-seo-page.constants.ts.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibTaonSeoPageTaonSeoPageConstantsTs } from './taon-seo-page.constants.ts.pl-PL.i18n.data';;\nexport type TaonSeoPageOverride = CoreModels__NS__DeepPartial<EnUsTraslationOverrideSrcLibTaonSeoPageTaonSeoPageConstantsTs \n| PlPlTraslationOverrideSrcLibTaonSeoPageTaonSeoPageConstantsTs>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport {\n MAT_DIALOG_DATA,\n MatDialogModule,\n MatDialogRef,\n} from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { finalize } from 'rxjs';\n\nimport { TaonSeoImageInputComponent } from '../../taon-seo-image-input/taon-seo-image-input.component';\nimport { TaonSeoPageApiService } from '../taon-seo-page.api.service';\nimport type { TaonSeoPageEntity } from '../taon-seo-page.entity';\n\n@Component({\n selector: 'taon-seo-page-edit-dialog',\n templateUrl: './taon-seo-page-edit-dialog.component.html',\n styleUrls: ['./taon-seo-page-edit-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatDialogModule,\n MatFormFieldModule,\n MatInputModule,\n TaonSeoImageInputComponent,\n ],\n providers: [TaonSeoPageApiService],\n})\nexport class TaonSeoPageEditDialogComponent {\n readonly data = inject<{ page?: TaonSeoPageEntity }>(MAT_DIALOG_DATA);\n readonly saving = signal(false);\n readonly uploading = signal(false);\n readonly error = signal('');\n readonly form = new FormGroup({\n path: new FormControl(this.data.page?.path ?? '/', {\n nonNullable: true,\n validators: [\n Validators.required,\n Validators.pattern(/^\\/[^;?#\\\\\\s()]*$/),\n ],\n }),\n title: new FormControl<string | null>(this.data.page?.title ?? null),\n description: new FormControl<string | null>(\n this.data.page?.description ?? null,\n ),\n keywords: new FormControl<string | null>(this.data.page?.keywords ?? null),\n canonicalUrl: new FormControl<string | null>(\n this.data.page?.canonicalUrl ?? null,\n ),\n ogTitle: new FormControl<string | null>(this.data.page?.ogTitle ?? null),\n ogDescription: new FormControl<string | null>(\n this.data.page?.ogDescription ?? null,\n ),\n ogImageKey: new FormControl<string | null>(\n this.data.page?.ogImageKey ?? null,\n ),\n noIndex: new FormControl(this.data.page?.noIndex ?? false, {\n nonNullable: true,\n }),\n noFollow: new FormControl(this.data.page?.noFollow ?? false, {\n nonNullable: true,\n }),\n });\n private readonly api = inject(TaonSeoPageApiService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly ref = inject(MatDialogRef<TaonSeoPageEditDialogComponent>);\n\n close(): void {\n if (!this.saving() && !this.uploading()) {\n this.ref.close();\n }\n }\n\n save(): void {\n if (this.saving() || this.uploading()) {\n return;\n }\n this.form.markAllAsTouched();\n if (this.form.invalid) {\n this.error.set('Enter an application path such as /pricing.');\n return;\n }\n this.error.set('');\n this.saving.set(true);\n const input = this.form.getRawValue();\n const request = this.data.page\n ? this.api.updatePage(this.data.page.id, input)\n : this.api.createPage(input);\n request\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.saving.set(false)),\n )\n .subscribe({\n next: page => this.ref.close(page),\n error: (error: unknown) => {\n console.error('[taon-seo-page-editor] Unable to save page', error);\n this.error.set(\n 'The page could not be saved. Ensure the path is unique and the canonical URL is an absolute HTTP(S) URL.',\n );\n },\n });\n }\n}\n","<h2 mat-dialog-title>{{ data.page ? 'Edit SEO page' : 'Add SEO page' }}</h2>\n<form\n [formGroup]=\"form\"\n (ngSubmit)=\"save()\">\n <mat-dialog-content>\n <p>\n Static/application page overrides. Blank fields inherit global defaults.\n </p>\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n }\n <fieldset [disabled]=\"saving()\">\n <mat-form-field>\n <mat-label>Path</mat-label>\n <input\n matInput\n formControlName=\"path\"\n placeholder=\"/pricing\" />\n <mat-error\n >Enter an application path without query or fragment.</mat-error\n >\n </mat-form-field>\n <mat-form-field>\n <mat-label>Title</mat-label>\n <input\n matInput\n formControlName=\"title\" />\n </mat-form-field>\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea\n matInput\n formControlName=\"description\"\n rows=\"3\"></textarea>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Keywords</mat-label>\n <input\n matInput\n formControlName=\"keywords\" />\n </mat-form-field>\n <mat-form-field>\n <mat-label>Canonical URL</mat-label>\n <input\n matInput\n formControlName=\"canonicalUrl\"\n placeholder=\"https://example.com/pricing\" />\n </mat-form-field>\n <mat-form-field>\n <mat-label>Open Graph title</mat-label>\n <input\n matInput\n formControlName=\"ogTitle\" />\n </mat-form-field>\n <mat-form-field>\n <mat-label>Open Graph description</mat-label>\n <textarea\n matInput\n formControlName=\"ogDescription\"\n rows=\"3\"></textarea>\n </mat-form-field>\n <taon-seo-image-input\n [key]=\"form.controls.ogImageKey.value\"\n (keyChange)=\"form.controls.ogImageKey.setValue($event)\"\n [disabled]=\"saving()\"\n [(uploading)]=\"uploading\" />\n <mat-checkbox formControlName=\"noIndex\">noIndex</mat-checkbox>\n <mat-checkbox formControlName=\"noFollow\">noFollow</mat-checkbox>\n </fieldset>\n </mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n <button\n mat-button\n type=\"button\"\n [disabled]=\"saving() || uploading()\"\n (click)=\"close()\">\n Cancel\n </button>\n <button\n mat-flat-button\n type=\"submit\"\n [disabled]=\"saving() || uploading()\">\n {{ saving() ? 'Saving...' : 'Save page' }}\n </button>\n </mat-dialog-actions>\n</form>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ViewChild,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport {\n TaonConfirmDialogComponent,\n TaonDatatableComponent,\n} from '@taon-dev/ui/websql-prod';\nimport { finalize } from 'rxjs';\n\nimport { TaonSeoPageEditDialogComponent } from '../taon-seo-page-edit-dialog/taon-seo-page-edit-dialog.component';\nimport { TaonSeoPageApiService } from '../taon-seo-page.api.service';\nimport type { TaonSeoPageEntity } from '../taon-seo-page.entity';\n\n@Component({\n selector: 'app-taon-seo-page-backoffice',\n templateUrl: './taon-seo-page-backoffice.component.html',\n styleUrls: ['./taon-seo-page-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TaonDatatableComponent],\n providers: [TaonSeoPageApiService],\n})\nexport class TaonSeoPageBackofficeComponent {\n @ViewChild(TaonDatatableComponent)\n readonly datatable!: TaonDatatableComponent;\n\n readonly api = inject(TaonSeoPageApiService);\n readonly error = signal('');\n readonly deleting = signal<number | null>(null);\n private readonly dialog = inject(MatDialog);\n private readonly destroyRef = inject(DestroyRef);\n\n get crud() {\n return this.api.taonSeoPageController;\n }\n\n readonly columns: MtxGridColumn[] = [\n { header: 'ID', field: 'id', sortable: true },\n { header: 'Path', field: 'path', sortable: true },\n { header: 'Title', field: 'title', sortable: true },\n { header: 'noIndex', field: 'noIndex', type: 'boolean' },\n { header: 'noFollow', field: 'noFollow', type: 'boolean' },\n {\n header: 'Actions',\n field: 'actions',\n type: 'button',\n buttons: [\n {\n type: 'icon',\n icon: 'edit',\n tooltip: 'Edit SEO page',\n click: (page: TaonSeoPageEntity) => this.edit(page),\n },\n {\n type: 'icon',\n icon: 'delete',\n tooltip: 'Delete SEO page',\n disabled: () => this.deleting() !== null,\n click: (page: TaonSeoPageEntity) => this.delete(page),\n },\n ],\n },\n ];\n\n add(): void {\n this.edit();\n }\n\n edit(page?: TaonSeoPageEntity): void {\n this.dialog\n .open(TaonSeoPageEditDialogComponent, {\n data: { page },\n width: '48rem',\n maxWidth: '95vw',\n disableClose: true,\n })\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(saved => {\n if (saved) {\n this.datatable.reload();\n }\n });\n }\n\n delete(page: TaonSeoPageEntity): void {\n if (this.deleting() !== null) {\n return;\n }\n this.deleting.set(page.id);\n this.dialog\n .open(TaonConfirmDialogComponent, {\n data: {\n title: 'Delete SEO page?',\n message: `Delete the override for ${page.path}? This page will inherit global SEO defaults.`,\n confirmText: 'Delete',\n },\n })\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(confirmed => {\n if (!confirmed) {\n this.deleting.set(null);\n return;\n }\n this.error.set('');\n this.api\n .deletePage(page.id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.deleting.set(null)),\n )\n .subscribe({\n next: () => this.datatable.reload(),\n error: (error: unknown) => {\n console.error('[taon-seo-pages] Unable to delete page', error);\n this.error.set(\n 'The SEO page could not be deleted. Refresh and try again.',\n );\n },\n });\n });\n }\n}\n","<h1>SEO pages</h1>\n<p>SEO overrides for application/static pages, not CMS content.</p>\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n<taon-datatable\n [entityCrudController]=\"crud\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'path', 'title', 'noIndex', 'noFollow']\"\n searchMode=\"advanced\"\n (addingItem)=\"add()\">\n</taon-datatable>\n","//namespace TaonSeoPageBackofficeModels\n\n//end of namespace TaonSeoPageBackofficeModels\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { adminLazyRoute } from '@taon-dev/ui/websql-prod';\n//#endregion\n\nexport const TaonSeoPageBackofficeRoutes: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./taon-seo-page-backoffice.component').then(m => m.TaonSeoPageBackofficeComponent),\n\n children: [\n // adminLazyRoute({\n // path: 'dashboard',\n // menuItem: 'Dashboard',\n // icon: 'dashboard',\n // expandable: false,\n // loader: () =>\n // import('./anothermodule.routes').then(m => m.DashboardRoutes),\n // }),\n ],\n },\n];\n\n/**\n * By default exporting TaonSeoPageBackofficeRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonSeoPageBackofficeRoutes;","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels__NS__BaseProjectType, CoreModels__NS__BaseProjectTypeArr, CoreModels__NS__BuildType, CoreModels__NS__BuildTypeArr, CoreModels__NS__buildTypeToWatcherFn, CoreModels__NS__BuildWatcherErrorType, CoreModels__NS__BuildWatcherType, CoreModels__NS__BuildWatcherTypeArr, CoreModels__NS__CfontAlign, CoreModels__NS__CfontStyle, CoreModels__NS__ClassNameStaticProperty, CoreModels__NS__ContentType, CoreModels__NS__ContentTypeKeys, CoreModels__NS__CoreLibCategory, CoreModels__NS__CutableFileExt, CoreModels__NS__DatabaseType, CoreModels__NS__DeepPartial, CoreModels__NS__FileEvent, CoreModels__NS__FileExtension, CoreModels__NS__FirstParamsFrom, CoreModels__NS__FrameworkVersion, CoreModels__NS__GitConnection, CoreModels__NS__GitConnectionArr, CoreModels__NS__GlobalDependencies, CoreModels__NS__hasExitCleaningFunction, CoreModels__NS__HttpCode, CoreModels__NS__HttpMethod, CoreModels__NS__HttpMethodArr, CoreModels__NS__ImageFileExtension, CoreModels__NS__ImageFileExtensionArr, CoreModels__NS__InstalationType, CoreModels__NS__InstalationTypeArr, CoreModels__NS__LibType, CoreModels__NS__localhostDomain, CoreModels__NS__localhostIp127, CoreModels__NS__ManifestIcon, CoreModels__NS__MediaType, CoreModels__NS__MediaTypeAllArr, CoreModels__NS__mimeTypes, CoreModels__NS__NewFactoryType, CoreModels__NS__NpmInstallOptions, CoreModels__NS__NpmPublishOptions, CoreModels__NS__NpmSpecialVersions, CoreModels__NS__OrignalClassKey, CoreModels__NS__OutFolder, CoreModels__NS__Package, CoreModels__NS__ParamType, CoreModels__NS__parentLocation, CoreModels__NS__pathToChildren, CoreModels__NS__Position, CoreModels__NS__PreReleaseVersionTag, CoreModels__NS__PROGRESS_DATA_TYPE, CoreModels__NS__PUSHTYPE, CoreModels__NS__PwaManifest, CoreModels__NS__ReleaseVersionType, CoreModels__NS__ReleaseVersionTypeEnum, CoreModels__NS__RunOptions, CoreModels__NS__Size, CoreModels__NS__SPECIAL_APP_READY_MESSAGE, CoreModels__NS__SPECIAL_WORKER_READY_MESSAGE, CoreModels__NS__tagForTaskName, CoreModels__NS__TaonHttpErrorCustomProp, CoreModels__NS__TsUsage, CoreModels__NS__UIFramework, CoreModels__NS__VSCodeSettings } from 'tnp-core/websql-prod';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibTaonSeoSettingsTaonSeoSettingsConstantsTs } from './taon-seo-settings.constants.ts.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibTaonSeoSettingsTaonSeoSettingsConstantsTs } from './taon-seo-settings.constants.ts.pl-PL.i18n.data';;\nexport type TaonSeoSettingsOverride = CoreModels__NS__DeepPartial<EnUsTraslationOverrideSrcLibTaonSeoSettingsTaonSeoSettingsConstantsTs \n| PlPlTraslationOverrideSrcLibTaonSeoSettingsTaonSeoSettingsConstantsTs>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { finalize } from 'rxjs';\n\nimport { TaonSeoImageInputComponent } from '../../taon-seo-image-input/taon-seo-image-input.component';\nimport { TaonSeoSettingsApiService } from '../taon-seo-settings.api.service';\n\n@Component({\n selector: 'app-taon-seo-settings-backoffice',\n templateUrl: './taon-seo-settings-backoffice.component.html',\n styleUrls: ['./taon-seo-settings-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatFormFieldModule,\n MatInputModule,\n TaonSeoImageInputComponent,\n ],\n providers: [TaonSeoSettingsApiService],\n})\nexport class TaonSeoSettingsBackofficeComponent {\n readonly form = new FormGroup({\n siteName: new FormControl('', { nonNullable: true }),\n defaultTitle: new FormControl('', { nonNullable: true }),\n defaultDescription: new FormControl('', { nonNullable: true }),\n defaultKeywords: new FormControl<string | null>(null),\n defaultImageKey: new FormControl<string | null>(null),\n canonicalBaseUrl: new FormControl<string | null>(null),\n robotsIndex: new FormControl(true, { nonNullable: true }),\n robotsFollow: new FormControl(true, { nonNullable: true }),\n });\n readonly loading = signal(true);\n readonly saving = signal(false);\n readonly uploading = signal(false);\n readonly error = signal('');\n readonly saved = signal(false);\n private readonly api = inject(TaonSeoSettingsApiService);\n private readonly destroyRef = inject(DestroyRef);\n\n ngOnInit(): void {\n this.load();\n }\n\n load(): void {\n this.loading.set(true);\n this.error.set('');\n this.api\n .getGlobal()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: settings => {\n this.form.enable();\n this.form.patchValue(settings);\n },\n error: (error: unknown) => {\n console.error('[taon-seo-settings] Unable to load settings', error);\n this.error.set(\n 'SEO settings could not be loaded. Retry before saving.',\n );\n this.form.disable();\n },\n });\n }\n\n save(): void {\n if (\n this.loading() ||\n this.saving() ||\n this.uploading() ||\n this.form.disabled\n ) {\n return;\n }\n this.saving.set(true);\n this.saved.set(false);\n this.error.set('');\n this.api\n .saveGlobal(this.form.getRawValue())\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.saving.set(false)),\n )\n .subscribe({\n next: settings => {\n this.form.patchValue(settings);\n this.form.markAsPristine();\n this.saved.set(true);\n },\n error: (error: unknown) => {\n console.error('[taon-seo-settings] Unable to save settings', error);\n this.error.set(\n 'SEO settings could not be saved. Check the canonical URL and try again.',\n );\n },\n });\n }\n}\n","<h1>General SEO settings</h1>\n@if (loading()) {\n <p role=\"status\">Loading SEO settings...</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n @if (form.disabled) {\n <button\n mat-button\n type=\"button\"\n (click)=\"load()\">\n Retry\n </button>\n }\n}\n@if (saved()) {\n <p role=\"status\">SEO settings saved.</p>\n}\n<form\n [formGroup]=\"form\"\n (ngSubmit)=\"save()\">\n <fieldset [disabled]=\"loading() || saving() || form.disabled\">\n <mat-form-field>\n <mat-label>Site name</mat-label>\n <input\n matInput\n formControlName=\"siteName\" />\n </mat-form-field>\n <mat-form-field>\n <mat-label>Default page title</mat-label>\n <input\n matInput\n formControlName=\"defaultTitle\" />\n </mat-form-field>\n <mat-form-field>\n <mat-label>Default meta description</mat-label>\n <textarea\n matInput\n formControlName=\"defaultDescription\"\n rows=\"4\"></textarea>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Default keywords</mat-label>\n <input\n matInput\n formControlName=\"defaultKeywords\" />\n </mat-form-field>\n <taon-seo-image-input\n [key]=\"form.controls.defaultImageKey.value\"\n (keyChange)=\"form.controls.defaultImageKey.setValue($event)\"\n [disabled]=\"loading() || saving() || form.disabled\"\n [(uploading)]=\"uploading\" />\n <mat-form-field>\n <mat-label>Canonical base URL</mat-label>\n <input\n matInput\n formControlName=\"canonicalBaseUrl\"\n placeholder=\"https://example.com\" />\n <mat-hint\n >Absolute website URL, optionally including its deployment\n subpath.</mat-hint\n >\n </mat-form-field>\n <mat-checkbox formControlName=\"robotsIndex\">Allow indexing</mat-checkbox>\n <mat-checkbox formControlName=\"robotsFollow\"\n >Allow following links</mat-checkbox\n >\n <button\n mat-flat-button\n type=\"submit\"\n [disabled]=\"loading() || saving() || uploading() || form.disabled\">\n {{ saving() ? 'Saving...' : 'Save settings' }}\n </button>\n </fieldset>\n</form>\n","//namespace TaonSeoSettingsBackofficeModels\n\n//end of namespace TaonSeoSettingsBackofficeModels\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { adminLazyRoute } from '@taon-dev/ui/websql-prod';\n//#endregion\n\nexport const TaonSeoSettingsBackofficeRoutes: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./taon-seo-settings-backoffice.component').then(m => m.TaonSeoSettingsBackofficeComponent),\n\n children: [\n // adminLazyRoute({\n // path: 'dashboard',\n // menuItem: 'Dashboard',\n // icon: 'dashboard',\n // expandable: false,\n // loader: () =>\n // import('./anothermodule.routes').then(m => m.DashboardRoutes),\n // }),\n ],\n },\n];\n\n/**\n * By default exporting TaonSeoSettingsBackofficeRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonSeoSettingsBackofficeRoutes;","// @ts-nocheck\n// This file is auto-generated during init process. Do not modify.\n// This disable this auto generate file.\n// set property \"shouldGenerateAutogenIndexFile: false\" \n// in taon.jsonc of your project. \nexport * from './build-info._auto-generated_'; \nexport * from './my-organization-proj'; \nexport * from './start-cli'; \nexport * from './taon-seo-image.api.service'; // @browser\nexport * from './taon-seo-image.controller'; \nexport * from './taon-seo.abstract.context'; \nexport * from './taon-seo.provider'; \nexport * from './taon-seo.service'; // @browser\nexport * from './taon-seo.utils'; \nexport * from './taon-seo.validation'; \nexport * from './i18n/lib.translation'; \nexport * from './taon-seo-backoffice/taon-seo-backoffice.component'; // @browser\nexport * from './taon-seo-backoffice/taon-seo-backoffice.models'; \nexport * from './taon-seo-backoffice/taon-seo-backoffice.routes'; // @browser\nexport * from './taon-seo-image-input/taon-seo-image-input.component'; // @browser\nexport * from './taon-seo-page/taon-seo-page.abstract.context'; \nexport * from './taon-seo-page/taon-seo-page.api.service'; // @browser\nexport * from './taon-seo-page/taon-seo-page.config.service'; // @browser\nexport * from './taon-seo-page/taon-seo-page.constants'; \nexport * from './taon-seo-page/taon-seo-page.controller'; \nexport * from './taon-seo-page/taon-seo-page.entity'; \nexport * from './taon-seo-page/taon-seo-page.kv.repository'; \nexport * from './taon-seo-page/taon-seo-page.middleware'; \nexport * from './taon-seo-page/taon-seo-page.models'; \nexport * from './taon-seo-page/taon-seo-page.provider'; \nexport * from './taon-seo-page/taon-seo-page.repository'; \nexport * from './taon-seo-page/taon-seo-page.subscriber'; \nexport * from './taon-seo-page/taon-seo-page.utils'; \nexport * from './taon-seo-page/taon-seo-page.validators'; \nexport * from './taon-seo-settings/taon-seo-settings.abstract.context'; \nexport * from './taon-seo-settings/taon-seo-settings.api.service'; // @browser\nexport * from './taon-seo-settings/taon-seo-settings.config.service'; // @browser\nexport * from './taon-seo-settings/taon-seo-settings.constants'; \nexport * from './taon-seo-settings/taon-seo-settings.controller'; \nexport * from './taon-seo-settings/taon-seo-settings.entity'; \nexport * from './taon-seo-settings/taon-seo-settings.kv.repository'; \nexport * from './taon-seo-settings/taon-seo-settings.middleware'; \nexport * from './taon-seo-settings/taon-seo-settings.models'; \nexport * from './taon-seo-settings/taon-seo-settings.provider'; \nexport * from './taon-seo-settings/taon-seo-settings.repository'; \nexport * from './taon-seo-settings/taon-seo-settings.subscriber'; \nexport * from './taon-seo-settings/taon-seo-settings.utils'; \nexport * from './taon-seo-settings/taon-seo-settings.validators'; \nexport * from './taon-seo-page/i18n/taon-seo-page.translation'; \nexport * from './taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.component'; // @browser\nexport * from './taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.models'; \nexport * from './taon-seo-page/taon-seo-page-backoffice/taon-seo-page-backoffice.routes'; // @browser\nexport * from './taon-seo-page/taon-seo-page-edit-dialog/taon-seo-page-edit-dialog.component'; // @browser\nexport * from './taon-seo-settings/i18n/taon-seo-settings.translation'; \nexport * from './taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.component'; // @browser\nexport * from './taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.models'; \nexport * from './taon-seo-settings/taon-seo-settings-backoffice/taon-seo-settings-backoffice.routes'; // @browser","export * from './migrations';\n/* */ \nexport * from './index._auto-generated_';\nexport * from './my-organization-proj';\n/* */ \nexport * from './taon-seo.service'; // @browser\nexport * from './taon-seo-image.api.service'; // @browser\nexport * from './taon-seo-image.controller';\nexport * from './taon-seo.provider';\nexport * from './taon-seo.utils';\nexport * from './taon-seo.validation';\nexport default {};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["t","MIGRATIONS_CLASSES_FOR_SeoContext","generatedMigrations","i1","i4"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,cAAiC,CAAA;;AAItE,UAAA,CAAA;AAFC,IAAA,sBAAsB;;;;AAEZ,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAKX,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;;;;AAE5B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AAKb,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;;;;AAEtB,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAKrB,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;;;;AAEb,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;AAK3B,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;;;;AAEhB,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAKxB,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;;;;AAEf,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;AAK5B,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;;;;AAEpB,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;AAKvB,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;;;;AAEX,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA;AAK7B,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;;;;AAEjB,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA;AAK1B,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;;;;AAE1B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;AAKjB,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;;;;AAEzB,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAKlB,UAAA,CAAA;AAFC,IAAA,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;;;8BAEjB,IAAI;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAKhB,UAAA,CAAA;AAFC,IAAA,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;;;8BAEjB,IAAI;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAhEL,iBAAiB,GAAA,UAAA,CAAA;AAJ7B,IAAA,UAAU,CAAC;AACV,QAAA,SAAS,EAAE,mBAAmB;AAC9B,QAAA,WAAW,EAAE,IAAI;KAClB;AACY,CAAA,EAAA,iBAAiB,CAiE7B;;ACxED,MAAMA,GAAC,GAAG,WAAW,CAAC,GAAG,CAAC,0DAA0D,EAAE,EAAC,0DAA0D,EAAC,EAAC,OAAO,EAAC,YAAY,CAAC,MAAM,OAAO,+EAAuD,CAAC,EAAE,OAAO,EAAC,OAAO,EAAC,YAAY,CAAC,MAAM,OAAO,+EAAuD,CAAC,EAAE,OAAO,EAAC,EAAQ,CAAC;AAE7V,MAAM,6BAA6B,GAAG;AAC3C,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,kBAAkB,EAAE,EAAE;AACtB,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,gBAAgB,EAAE,IAAI;AACtB,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,YAAY,EAAE,IAAI;;IAGR;AAAZ,CAAA,UAAY,qBAAqB,EAAA;AAC/B,IAAA,qBAAA,CAAA,gCAAA,CAAA,GAAA,gCAAiE;AACnE,CAAC,EAFW,qBAAqB,KAArB,qBAAqB,GAAA,EAAA,CAAA,CAAA;AAI1B,MAAM,kCAAkC,GAAG,IAAI,GAAG,CAAC;IACxD,CAAC,qBAAqB,CAAC,8BAA8B,EAAEA,GAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACtF,CAAA;;AClBM,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,cAAqC,CAAA;;AAI9E,UAAA,CAAA;AAFC,IAAA,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;;;;AAEvB,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAKX,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;;;;AAEvB,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAKjB,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;;;;AAEnB,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;AAKrB,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;;;;AAEV,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,KAAA,CAAA,CAAA;AAK3B,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;;;;AAET,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,KAAA,CAAA,CAAA;AAK/B,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;;;;AAEZ,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,KAAA,CAAA,CAAA;AAK/B,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;;;;AAEX,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,KAAA,CAAA,CAAA;AAKhC,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;;;;AAErB,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;AAKrB,UAAA,CAAA;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;;;;AAEpB,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;AAKtB,UAAA,CAAA;AAFC,IAAA,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;;;8BAEjB,IAAI;AAAC,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAKhB,UAAA,CAAA;AAFC,IAAA,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;;;8BAEjB,IAAI;AAAC,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAtDL,qBAAqB,GAAA,UAAA,CAAA;AAJjC,IAAA,UAAU,CAAC;AACV,QAAA,SAAS,EAAE,uBAAuB;AAClC,QAAA,WAAW,EAAE,IAAI;KAClB;AACY,CAAA,EAAA,qBAAqB,CAuDjC;;ACrDM,IAAM,0CAA0C,GAAhD,MAAM,0CAA2C,SAAQ,iBAAiB,CAAA;IAC/E,MAAM,EAAE,CAAC,WAAwB,EAAA;QAC/B,KAAK,MAAM,MAAM,IAAI,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,EAAE;YAC/D,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC;AAC3D,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;YACtE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC9D,IAAI,OAAO,EAAE;AACX,gBAAA,MAAM,aAAa,GAAG,QAAQ,CAAC;qBAC5B,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI;AACzB,qBAAA,IAAI;qBACJ,IAAI,CAAC,GAAG,CAAC;AACZ,gBAAA,MAAM,YAAY,GAAG,OAAO,CAAC;qBAC1B,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI;AACzB,qBAAA,IAAI;qBACJ,IAAI,CAAC,GAAG,CAAC;AACZ,gBAAA,IAAI,aAAa,KAAK,YAAY,EAAE;oBAClC;gBACF;;AAEA,gBAAA,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC;AAC7B,qBAAA,kBAAkB;AAClB,qBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK;AAC9B,qBAAA,QAAQ,EAAE;AACb,gBAAA,IAAI,KAAK,GAAG,CAAC,EAAE;oBACb,MAAM,IAAI,KAAK,CACb,CAAA,0CAAA,EAA6C,QAAQ,CAAC,SAAS,CAAA,6DAAA,CAA+D,CAC/H;gBACH;AACA,gBAAA,MAAM,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC;YACtC;YACA,MAAM,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC;QAC/C;QAEA,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC;AACzE,QAAA,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACrC,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;AAC3C,YAAA,MAAM,IAAI,KAAK,CACb,iGAAiG,CAClG;QACH;AACA,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,MAAM;AACH,aAAA,kBAAkB;AAClB,aAAA,MAAM;AACN,aAAA,MAAM,CAAC;AACN,YAAA,GAAG,6BAA6B;AAChC,YAAA,SAAS,EAAE,GAAG;AACd,YAAA,SAAS,EAAE,GAAG;SACf;AACA,aAAA,QAAQ;AACR,aAAA,OAAO,EAAE;IACd;IAEA,MAAM,IAAI,CAAC,WAAwB,EAAA;QACjC,KAAK,MAAM,MAAM,IAAI,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,EAAE;YAC/D,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC;YAC3D,MAAM,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;QACvD;IACF;CACD;AA3DY,0CAA0C,GAAA,UAAA,CAAA;AADtD,IAAA,aAAa,CAAC,EAAE,SAAS,EAAE,4CAA4C,EAAE;AAC7D,CAAA,EAAA,0CAA0C,CA2DtD;;ACzDD;AAIO,IAAM,gCAAgC,GAAtC,MAAM,gCAAiC,SAAQ,iBAAiB,CAAA;AAAhE,IAAA,WAAA,GAAA;;QACG,IAAA,CAAA,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,EACvD,yBAA6C,EAC9C;;IAoDH;;IAjDE,MAAM,EAAE,CAAC,WAAwB,EAAA;AAC/B,QAAA,MAAM,WAAW,CAAC,gBAAgB,EAAE;AACpC,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC;AAC/C,gBAAA,KAAK,EAAE;AACL,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,WAAW,EAAE,eAAe;AAC7B,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,aAAa,EAAE;AACb,wBAAA,CAAC,UAAU,CAAC,aAAa,GAAG,GAAG;wBAC/B,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC;AAC/C,qBAAA;AACD,oBAAA,mBAAmB,EAAE;AACnB,wBAAA,CAAC,SAAS,CAAC,QAAQ,GAAG;AACpB,4BAAA,eAAe,CAAC,cAAc;AAC9B,4BAAA,eAAe,CAAC,cAAc;AAC/B,yBAAA;AACD,wBAAA,CAAC,SAAS,CAAC,eAAe,GAAG,GAAG;AACjC,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC;AAEF,YAAA,MAAM,WAAW,CAAC,iBAAiB,EAAE;QACvC;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC;AAC3C,YAAA,MAAM,WAAW,CAAC,mBAAmB,EAAE;QACzC;gBAAU;AACR,YAAA,MAAM,WAAW,CAAC,OAAO,EAAE;QAC7B;IACF;;;IAIA,MAAM,IAAI,CAAC,WAAwB,EAAA;AACjC,QAAA,MAAM,WAAW,CAAC,gBAAgB,EAAE;AACpC,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,yBAAyB,CAAC,0BAA0B,EAAE;AAEjE,YAAA,MAAM,WAAW,CAAC,iBAAiB,EAAE;QACvC;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC;AAC3C,YAAA,MAAM,WAAW,CAAC,mBAAmB,EAAE;QACzC;gBAAU;AACR,YAAA,MAAM,WAAW,CAAC,OAAO,EAAE;QAC7B;IACF;CAED;AAvDY,gCAAgC,GAAA,UAAA,CAAA;AAH5C,IAAA,aAAa,CAAC;AACb,QAAA,SAAS,EAAE,kCAAkC;KAC9C;AACY,CAAA,EAAA,gCAAgC,CAuD5C;AACD;;ACtEA;AAGA;AACO,MAAMC,mCAAiC,GAAG;AAC/C,8BAA0B,gCAAgC;AAC1D,8BAA0B,0CAA0C;CACrE;AACD;;ACLO,MAAM,iCAAiC,GAAG;AAC/C,IAAA,GAAGC,mCAAmB;IACtB,0CAA0C;;;ACL5C;AACA;;AAEG;AACI,MAAM,wBAAwB,GAAG;AACxC;;AAEG;AACI,MAAM,MAAM,GAAG;AACtB;;AAEG;AACI,MAAM,eAAe,GAAG;AAC/B;;AAEG;AACI,MAAM,gBAAgB,GAAG;AAChC;;AAEG;AACI,MAAM,4BAA4B,GAAG;AAC5C;;AAEG;AACI,MAAM,uBAAuB,GAAG;AAMvC;;AC3BA,MAAMF,GAAC,GAAG,WAAW,CAAC,GAAG,CAAC,iCAAiC,EAAE,EAAC,iCAAiC,EAAC,EAAC,OAAO,EAAC,YAAY,CAAC,MAAM,OAAO,wEAAgD,CAAC,EAAE,OAAO,EAAC,OAAO,EAAC,YAAY,CAAC,MAAM,OAAO,wEAAgD,CAAC,EAAE,OAAO,EAAC,EAAQ,CAAC;SAEpR,SAAS,GAAA;AACvB,IAAAA,GAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC;AAC1C;;ACPA;AAGA;AACA;AAEA;AACA;;;;;AAKG;AACH,MAAM,OAAQ,SAAQ,sBAA0B,CAAA;AAC9C;;AAEG;IACI,CAAC,GAAA;AACN,QAAA,OAAO,CAAC,GAAG,CAAC,CAAA,oBAAA,CAAsB,CAAC;QACnC,IAAI,CAAC,KAAK,EAAE;IACd;AAEA;;;AAGG;IACH,uBAAuB,GAAA;AACrB,QAAA,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC;AAChD,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACf;AACD;AACD;AAEA;AACA;;AAEG;AACH,MAAM,QAAS,SAAQ,sBAErB,CAAA;AACA;;AAEG;IACI,CAAC,GAAA;AACN,QAAA,OAAO,CAAC,GAAG,CAAC,CAAA,iCAAA,CAAmC,CAAC;QAChD,IAAI,CAAC,KAAK,EAAE;IACd;AAEA;;AAEG;IACI,kBAAkB,GAAA;AACvB,QAAA,MAAM,GAAG,GAAG,uBAAuB,CACjC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EACpC,SAAS,EACT;AACE,YAAA,YAAY,EAAE,eAAe;AAC9B,SAAA,CACF;AACD,QAAA,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,CAAA,CAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACf;AACD;AACD;AAEA;;;;AAIG;AACI,eAAe,QAAQ,CAC5B,KAAe,EACf,QAAgB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BhB,IAAA,QAAQ,KAAK,CAAC;AAChB;;AC9FO,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,gBAAgB,CAAA;AAA9C,IAAA,WAAA,GAAA;;AACY,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC;AACvD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,gBAAgB,CACpD,yBAAyB,CAC1B;IAeH;AAbE,IAAA,MAAM,oBAAoB,CAAC,EACzB,GAAG,EACH,GAAG,GACyC,EAAA;;;;;;;;AAQ5C,QAAA,QAAQ,KAAK,CAAC;IAChB;;AAlBW,eAAe,GAAA,UAAA,CAAA;AAD3B,IAAA,YAAY,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE;AACjC,CAAA,EAAA,eAAe,CAmB3B;;ACvBD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,CAAC,KAAK,EAAE,WAAW,CAAC;IACpB,CAAC,KAAK,EAAE,YAAY,CAAC;IACrB,CAAC,MAAM,EAAE,YAAY,CAAC;IACtB,CAAC,KAAK,EAAE,WAAW,CAAC;IACpB,CAAC,MAAM,EAAE,YAAY,CAAC;AACvB,CAAA,CAAC;AAMK,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,yBAAyB,CAAA;AAA9D,IAAA,WAAA,GAAA;;AACY,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;IAsE7D;IApEE,MAAM,iBAAiB,CACrB,MAAmD,EAAA;;;;;;;;;;;;;;;;;;AAmBnD,QAAA,QAAQ,KAAK,CAAC;IAChB;IAEU,MAAM,iBAAiB,CAC/B,KAAyB,EACzB,WAAgB,EAChB,GAAoB,EACpB,GAAqB,EAAA;;;;;;;;;;;;AAarB,QAAA,QAAQ,KAAK,CAAC;IAChB;AAEA,IAAA,mBAAmB,KAAU;AAE7B,IAAA,uBAAuB,CAAC,OAKvB,EAAA;;;;;;;;;;AAUC,QAAA,QAAQ,KAAK,CAAC;IAChB;AAEA,IAAA,MAAM,0BAA0B,GAAA;AAC9B,QAAA,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE;IACH;;AAtEW,sBAAsB,GAAA,UAAA,CAAA;AAJlC,IAAA,cAAc,CAAC;AACd,QAAA,SAAS,EAAE,wBAAwB;AACnC,QAAA,cAAc,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,wBAAwB,CAAC;KACvE;AACY,CAAA,EAAA,sBAAsB,CAuElC;;ACjFK,MAAO,sBAAuB,SAAQ,sBAAsB,CAAA;AADlE,IAAA,WAAA,GAAA;;AAEmB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC;AA0BxE,IAAA;IAxBC,MAAM,MAAM,CAAC,IAAU,EAAA;AACrB,QAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AACzB,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAQ,EAAE;AAC1E,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI;AAClC,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAC3C,YAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;QAC5D;AACA,QAAA,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG;IACvB;AAEA,IAAA,YAAY,CAAC,GAAW,EAAA;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAQ,EAAE,CAAC,UAAU,CAAC,IAAI,CAC7D,GAAG,CAAC,QAAQ,IAAG;AACb,YAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY;YACjC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACrC,gBAAA,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D;YACH;AACA,YAAA,OAAO,GAAG;QACZ,CAAC,CAAC,CACH;IACH;8GA1BW,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtB,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ACHK,SAAU,gBAAgB,CAAC,IAAY,EAAA;AAC3C,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG;AAC5C;AAEM,SAAU,OAAO,CAAC,KAAgC,EAAA;AACtD,IAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI;AAC9B;SAEgB,kBAAkB,CAChC,QAA8B,EAC9B,IAAY,EACZ,IAA6B,EAAA;AAE7B,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,YAAY;AAC3D,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,QAAQ,CAAC,kBAAkB;IAC7E,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAC/C,OAAO;QACL,KAAK;QACL,WAAW;AACX,QAAA,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;AACtE,QAAA,YAAY,EACV,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC;aAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA,EAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;AACxE,QAAA,MAAM,EAAE;AACN,YAAA,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO;AAC5D,YAAA,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ;SACjE,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK;QACxC,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,WAAW;AAC1D,QAAA,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC1E,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B;AACH;;SC9BgB,QAAQ,CAAC,OAAe,EAAE,MAAM,GAAG,GAAG,EAAA;AACpD,IAAA,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACpC,IAAA,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;AAC1B;AAEM,SAAU,YAAY,CAAC,EAAU,EAAA;AACrC,IAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;QACxC,QAAQ,CAAC,yCAAyC,CAAC;IACrD;AACF;AAEA,SAAS,aAAa,CAAC,KAAc,EAAA;AACnC,IAAA,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC/D,QAAQ,CAAC,iCAAiC,CAAC;IAC7C;AACF;AAEA,SAAS,WAAW,CAAC,KAAc,EAAE,KAAa,EAAE,QAAQ,GAAG,KAAK,EAAA;AAClE,IAAA,IAAI,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;QAC9B;IACF;AACA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,QAAQ,CAAC,CAAA,EAAG,KAAK,CAAA,SAAA,EAAY,QAAQ,GAAG,kBAAkB,GAAG,UAAU,CAAA,CAAA,CAAG,CAAC;IAC7E;AACF;AAEA,SAAS,cAAc,CAAC,KAAc,EAAE,KAAa,EAAA;AACnD,IAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC9B,QAAA,QAAQ,CAAC,CAAA,EAAG,KAAK,CAAA,mBAAA,CAAqB,CAAC;IACzC;AACF;AAEA,SAAS,WAAW,CAAC,KAAoB,EAAE,KAAa,EAAA;AACtD,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,IAAI;IACb;AACA,IAAA,IAAI,GAAQ;AACZ,IAAA,IAAI;AACF,QAAA,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;IACrB;AAAE,IAAA,MAAM;AACN,QAAA,QAAQ,CAAC,CAAA,EAAG,KAAK,CAAA,iCAAA,CAAmC,CAAC;IACvD;AACA,IAAA,IACE,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3C,QAAA,GAAG,CAAC,QAAQ;AACZ,QAAA,GAAG,CAAC,QAAQ;AACZ,QAAA,GAAG,CAAC,MAAM;QACV,GAAG,CAAC,IAAI,EACR;AACA,QAAA,QAAQ,CACN,CAAA,EAAG,KAAK,CAAA,+DAAA,CAAiE,CAC1E;IACH;IACA,OAAO,GAAG,CAAC,IAAI;AACjB;AAEM,SAAU,eAAe,CAAC,IAAY,EAAA;AAC1C,IAAA,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC;AACzB,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,IAAA,IACE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACrB,QAAA,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI,CAAC,EACpE;QACA,QAAQ,CACN,kGAAkG,CACnG;IACH;AACA,IAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAC/B;AAEM,SAAU,mBAAmB,CACjC,KAA2B,EAAA;IAE3B,aAAa,CAAC,KAAK,CAAC;IACpB,KAAK,MAAM,KAAK,IAAI;QAClB,UAAU;QACV,cAAc;QACd,oBAAoB;AACZ,KAAA,EAAE;QACV,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IAClC;IACA,KAAK,MAAM,KAAK,IAAI;QAClB,iBAAiB;QACjB,iBAAiB;QACjB,kBAAkB;AACV,KAAA,EAAE;QACV,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;IACxC;AACA,IAAA,cAAc,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC;AAChD,IAAA,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC;IAClD,OAAO;AACL,QAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/B,QAAA,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE;AACvC,QAAA,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE;AACnD,QAAA,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;AAC/C,QAAA,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;QAC/C,gBAAgB,EAAE,WAAW,CAAC,KAAK,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;QACzE,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;KACjC;AACH;AAEM,SAAU,eAAe,CAAC,KAAuB,EAAA;IACrD,aAAa,CAAC,KAAK,CAAC;IACpB,KAAK,MAAM,KAAK,IAAI;QAClB,OAAO;QACP,aAAa;QACb,UAAU;QACV,cAAc;QACd,SAAS;QACT,eAAe;QACf,YAAY;AACJ,KAAA,EAAE;QACV,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;IACxC;AACA,IAAA,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;AACxC,IAAA,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC1C,OAAO;AACL,QAAA,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;AACjC,QAAA,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AAC3B,QAAA,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;AACvC,QAAA,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QACjC,YAAY,EAAE,WAAW,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC;AAC7D,QAAA,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;AAC/B,QAAA,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;AAC3C,QAAA,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;QACrC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB;AACH;;AC9HO,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,kBAAqC,CAAA;AAAzE,IAAA,WAAA,GAAA;;AACL,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,iBAAiB;IAoDhD;IAlDE,MAAM,UAAU,CAAC,IAAY,EAAA;;AAE3B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;;IAEjE;AAEA,IAAA,MAAM,QAAQ,CACZ,KAAuB,EACvB,EAAW,EAAA;;AAGX,QAAA,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,EAAE,KAAK,SAAS,EAAE;YACpB,YAAY,CAAC,EAAE,CAAC;QAClB;QACA,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAM,OAAO,KAAG;YACjD,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAoB,IAAI,CAAC,MAAM,CAAC;YACxE,MAAM,QAAQ,GACZ,EAAE,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;AAC9D,YAAA,IAAI,EAAE,KAAK,SAAS,IAAI,CAAC,QAAQ,EAAE;AACjC,gBAAA,QAAQ,CAAC,qBAAqB,EAAE,GAAG,CAAC;YACtC;AACA,YAAA,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YACnE,IAAI,SAAS,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE;AACpC,gBAAA,QAAQ,CAAC,+CAA+C,EAAE,GAAG,CAAC;YAChE;AACA,YAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,OAAO,UAAU,CAAC,IAAI,CACpB,UAAU,CAAC,MAAM,CAAC;AAChB,gBAAA,GAAG,QAAQ;AACX,gBAAA,GAAG,MAAM;AACT,gBAAA,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,GAAG;AACrC,gBAAA,SAAS,EAAE,GAAG;AACf,aAAA,CAAC,CACH;AACH,QAAA,CAAC,CAAC;;IAEJ;IAEA,MAAM,UAAU,CAAC,EAAU,EAAA;;QAEzB,YAAY,CAAC,EAAE,CAAC;AAChB,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACtD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,QAAQ,CAAC,qBAAqB,EAAE,GAAG,CAAC;QACtC;AACA,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;AACrB,QAAA,OAAO,QAAQ;;IAEjB;;AApDW,qBAAqB,GAAA,UAAA,CAAA;AADjC,IAAA,cAAc,CAAC,EAAE,SAAS,EAAE,uBAAuB,EAAE;AACzC,CAAA,EAAA,qBAAqB,CAqDjC;;AC9CM,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,sBAAyC,CAAA;AAA7E,IAAA,WAAA,GAAA;;AACL,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,iBAAiB;AAC7B,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC;AACpD,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;IA8C7D;IA5CE,MAAM,iBAAiB,CACrB,MAAmD,EAAA;;;;;AAMnD,QAAA,QAAQ,KAAK,CAAC;IAChB;AAGA,IAAA,UAAU,CACO,IAAY,EAAA;;AAG3B,QAAA,OAAO,YAAY,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;;IAEhD;AAGA,IAAA,UAAU,CACA,KAAuB,EAAA;;AAG/B,QAAA,OAAO,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;;IAE/C;IAGA,UAAU,CACK,EAAU,EACf,KAAuB,EAAA;;AAG/B,QAAA,OAAO,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;;IAEnD;AAGA,IAAA,UAAU,CAAc,EAAU,EAAA;;AAEhC,QAAA,OAAO,YAAY,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;;IAE9C;;AAhCA,UAAA,CAAA;AADC,IAAA,GAAG,EAAE;AAEH,IAAA,OAAA,CAAA,CAAA,EAAA,KAAK,CAAC,MAAM,CAAC,CAAA;;;;AAKf,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,IAAI,EAAE;IAEJ,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AAKR,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,GAAG,EAAE;AAEH,IAAA,OAAA,CAAA,CAAA,EAAA,KAAK,CAAC,IAAI,CAAC,CAAA;IACX,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AAKR,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,EAAE;AACG,IAAA,OAAA,CAAA,CAAA,EAAA,KAAK,CAAC,IAAI,CAAC,CAAA;;;;AAItB,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAhDU,qBAAqB,GAAA,UAAA,CAAA;AAZjC,IAAA,cAAc,CAAC;AACd,QAAA,SAAS,EAAE,uBAAuB;AAClC,QAAA,cAAc,EAAE;YACd,QAAQ;YACR,OAAO;YACP,iBAAiB;YACjB,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,YAAY;AACb,SAAA;KACF;AACY,CAAA,EAAA,qBAAqB,CAiDjC;;AClED;AAEM,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AAEvD;AAKM,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,gBAAgB,CAAA;AAAlD,IAAA,WAAA,GAAA;;QACL,IAAA,CAAA,wBAAwB,GAAY,IAAI;AACxC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,qBAAqB,EAAE;IAOtC;IANE,KAAK,GAAA;QACH,OAAO;YACL,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;AACvD,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;SAC5B;IACH;;AARW,mBAAmB,GAAA,UAAA,CAAA;AAH/B,IAAA,YAAY,CAAC;AACZ,QAAA,SAAS,EAAE,qBAAqB;KACjC;AACY,CAAA,EAAA,mBAAmB,CAS/B;;ACrBD;AAQA;AACA;AACA;MAEa,0BAA0B,GAAG,aAAa,CAAC,OAAO;AAC7D,IAAA,WAAW,EAAE,4BAA4B;AACzC,IAAA,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,EAAE,eAAe,EAAE;IAC7B,QAAQ,EAAE,EAAE,iBAAiB,EAAE;IAC/B,WAAW,EAAE,EAAE,qBAAqB,EAAE;AACtC,IAAA,YAAY,EAAE;;QAEZ,qBAAqB;AACtB,KAAA;IACD,SAAS,EAAE,EAAE,mBAAmB,EAAE;;;AAGnC,CAAA,CAAC;;AChBK,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,kBAAyC,CAAA;AAAjF,IAAA,WAAA,GAAA;;AACL,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,qBAAqB;IAoCpD;AAlCE,IAAA,MAAM,SAAS,GAAA;;AAEb,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAC9C,IAAI,CAAC,MAAM,CACZ;AACD,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;;AAEtB,QAAA,MAAM;AACH,aAAA,kBAAkB;AAClB,aAAA,MAAM;AACN,aAAA,MAAM,CAAC;AACN,YAAA,GAAG,6BAA6B;AAChC,YAAA,SAAS,EAAE,GAAG;AACd,YAAA,SAAS,EAAE,GAAG;SACf;AACA,aAAA,QAAQ;AACR,aAAA,OAAO,EAAE;QACZ,OAAO,UAAU,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;;IAE9C;IAEA,MAAM,UAAU,CACd,KAA2B,EAAA;;AAG3B,QAAA,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC;AACzC,QAAA,MAAM,IAAI,CAAC,SAAS,EAAE;AACtB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAC9C,IAAI,CAAC,MAAM,CACZ;QACD,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;QACxE,OAAO,UAAU,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;;IAE9C;;AApCW,yBAAyB,GAAA,UAAA,CAAA;AADrC,IAAA,cAAc,CAAC,EAAE,SAAS,EAAE,2BAA2B,EAAE;AAC7C,CAAA,EAAA,yBAAyB,CAqCrC;;AClCM,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,sBAA6C,CAAA;AAArF,IAAA,WAAA,GAAA;;AACL,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,qBAAqB;AACjC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC;AAC3D,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;IA2B7D;IAzBE,MAAM,iBAAiB,CACrB,MAAmD,EAAA;;;;;AAMnD,QAAA,QAAQ,KAAK,CAAC;IAChB;IAGA,SAAS,GAAA;;QAEP,OAAO,YAAY,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;;IAE9C;AAGA,IAAA,UAAU,CACA,KAA2B,EAAA;;AAGnC,QAAA,OAAO,YAAY,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;;IAEpD;;AAbA,UAAA,CAAA;AADC,IAAA,GAAG,EAAE;;;;AAKL,CAAA,EAAA,yBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,GAAG,EAAE;IAEH,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AAKR,CAAA,EAAA,yBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AA7BU,yBAAyB,GAAA,UAAA,CAAA;AAJrC,IAAA,cAAc,CAAC;AACd,QAAA,SAAS,EAAE,2BAA2B;AACtC,QAAA,cAAc,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;KAC5C;AACY,CAAA,EAAA,yBAAyB,CA8BrC;;ACvCD;AAEM,MAAO,yBAA0B,SAAQ,aAAa,CAAA;AAE3D;AAKM,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,gBAAgB,CAAA;AAAtD,IAAA,WAAA,GAAA;;QACL,IAAA,CAAA,4BAA4B,GAAY,IAAI;AAC5C,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,yBAAyB,EAAE;IAO1C;IANE,KAAK,GAAA;QACH,OAAO;YACL,4BAA4B,EAAE,IAAI,CAAC,4BAA4B;AAC/D,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;SAC5B;IACH;;AARW,uBAAuB,GAAA,UAAA,CAAA;AAHnC,IAAA,YAAY,CAAC;AACZ,QAAA,SAAS,EAAE,yBAAyB;KACrC;AACY,CAAA,EAAA,uBAAuB,CASnC;;ACrBD;AAQA;AACA;AACA;MAEa,8BAA8B,GAAG,aAAa,CAAC,OAAO;AACjE,IAAA,WAAW,EAAE,gCAAgC;AAC7C,IAAA,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,EAAE,eAAe,EAAE;IAC7B,QAAQ,EAAE,EAAE,qBAAqB,EAAE;IACnC,WAAW,EAAE,EAAE,yBAAyB,EAAE;AAC1C,IAAA,YAAY,EAAE;;QAEZ,yBAAyB;AAC1B,KAAA;IACD,SAAS,EAAE,EAAE,uBAAuB,EAAE;;;AAGvC,CAAA,CAAC;;MCjBW,sBAAsB,GAAG,aAAa,CAAC,OAAO;AACzD,IAAA,WAAW,EAAE,wBAAwB;AACrC,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE;QACR,0BAA0B;;QAG1B,0BAA0B;QAC1B,8BAA8B;AAC/B,KAAA;IACD,WAAW,EAAE,EAAE,sBAAsB,EAAE;IACvC,SAAS,EAAE,EAAE,eAAe,EAAE;AAC/B,CAAA,CAAC;;ACZI,MAAO,qBAAsB,SAAQ,sBAAsB,CAAA;AADjE,IAAA,WAAA,GAAA;;AAEW,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC;AAsB9E,IAAA;AApBC,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI;AAC9C,aAAA,OAAQ,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D;AAEA,IAAA,UAAU,CAAC,KAAuB,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,KAAK;AAC/C,aAAA,OAAQ,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D;IAEA,UAAU,CAAC,EAAU,EAAE,KAAuB,EAAA;QAC5C,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK;AACnD,aAAA,OAAQ,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D;AAEA,IAAA,UAAU,CAAC,EAAU,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,OAAQ,EAAE,CAAC,UAAU,CAAC,IAAI,CACzE,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAC1B;IACH;8GAtBW,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;ACCK,MAAO,yBAA0B,SAAQ,sBAAsB,CAAA;AADrE,IAAA,WAAA,GAAA;;AAEW,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,CACxD,yBAAyB,CAC1B;AAWF,IAAA;IATC,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,SAAS;AAC5C,aAAA,OAAQ,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D;AAEA,IAAA,UAAU,CAAC,KAA2B,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,KAAK;AACnD,aAAA,OAAQ,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D;8GAbW,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAzB,yBAAyB,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;MCuBY,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;AAEW,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,EAAE,iDAAC;AACV,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAC5C,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACrC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACvC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACnB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACrB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;QAC9C,IAAA,CAAA,OAAO,GAAG,KAAK;AAqIxB,IAAA;IAnIC,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB;QACF;AACA,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,MAAM,CAAC;AACT,aAAA,IAAI,CACH,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAC/C,SAAS,CAAC,IAAI,CAAC,EACf,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,EAC7B,oBAAoB,EAAE,EACtB,SAAS,CAAC,IAAI,IAAG;AACf,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,OAAO,QAAQ,CAAC;AACd,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;gBACnC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAClC,aAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KACrB,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CACzC,EACD,SAAS,CAAC,QAAQ,IAAG;;AAEnB,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;gBAC1B,OAAO,QAAQ,CAAC;AACd,sBAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAChD,GAAG,CAAC,QAAQ,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,EACzC,UAAU,CAAC,CAAC,KAAc,KAAI;AAC5B,wBAAA,OAAO,CAAC,KAAK,CACX,2CAA2C,EAC3C,KAAK,CACN;AACD,wBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,4DAA4D,CAC7D;wBACD,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzC,oBAAA,CAAC,CAAC;sBAEJ,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACtC,YAAA,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAc,KAAI;AAC5B,gBAAA,OAAO,CAAC,KAAK,CACX,4CAA4C,EAC5C,KAAK,CACN;AACD,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,wDAAwD,CACzD;gBACD,IAAI,CAAC,KAAK,EAAE;AACZ,gBAAA,OAAO,KAAK;YACd,CAAC,CAAC,CACH;QACH,CAAC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEpC,aAAA,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1E;IAEQ,WAAW,GAAA;QACjB,MAAM,QAAQ,GAAa,EAAE;QAC7B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI;QACjD,OAAO,KAAK,EAAE;AACZ,YAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;AACxD,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAC/B,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,cAAc,CACjD;YACD,IAAI,CAAC,KAAK,EAAE;gBACV;YACF;YACA,KAAK,GAAG,KAAK;QACf;QACA,OAAO,gBAAgB,CAAC,CAAA,CAAA,EAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;IACnD;IAEQ,KAAK,CACX,QAA+C,EAC/C,QAAuB,EAAA;QAEvB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,gBAAgB,EAAE,QAAQ,CAAC,aAAa,CAAC;QAClE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAC3D,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC;AACzD,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC1C;AAEQ,IAAA,OAAO,CACb,SAA8B,EAC9B,GAAW,EACX,OAAsB,EAAA;AAEtB,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAA,EAAA,EAAK,GAAG,GAAG;;QAExC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC3E,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC;QACjD;IACF;AAEQ,IAAA,YAAY,CAAC,GAAkB,EAAA;QACrC,IAAI,CAAC,QAAQ,CAAC;aACX,gBAAgB,CAAC,uBAAuB;aACxC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,GAAG,EAAE;YACP,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAChD,YAAA,IAAI,CAAC,GAAG,GAAG,WAAW;AACtB,YAAA,IAAI,CAAC,IAAI,GAAG,GAAG;YACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QACtC;IACF;IAEQ,KAAK,GAAA;QACX,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE;YACxD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;QAClC;QACA,KAAK,MAAM,QAAQ,IAAI;YACrB,UAAU;YACV,gBAAgB;YAChB,UAAU;YACV,cAAc;YACd,QAAQ;AACT,SAAA,EAAE;YACD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC;QAC1C;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IACzB;8GA/IW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAd,cAAc,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;SAmJe,cAAc,GAAA;IAC5B,OAAO;QACL,cAAc;QACd,qBAAqB;QACrB,yBAAyB;QACzB,sBAAsB;AACtB,QAAA;AACE,YAAA,OAAO,EAAE,sBAAsB;AAC/B,YAAA,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,CAAC,cAAc,CAAC;AACtB,YAAA,UAAU,EAAE,CAAC,GAAmB,KAAK,MAAM,GAAG,CAAC,KAAK,EAAE;AACvD,SAAA;KACF;AACH;;ACxL6G;AAI5G;;ACTD;AAIA;MASa,0BAA0B,CAAA;8GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbvC,mCACA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDUuB,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEtB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;+BACE,yBAAyB,EAAA,eAAA,EAGlB,uBAAuB,CAAC,MAAM,WACtC,CAAC,SAAS,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;;;;;;AEXpC;AAEA;;ACCA;AAEO,MAAM,uBAAuB,GAAW;AAC7C,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,aAAa,EAAE,MACb,2EAAyC,CAAC,IAAI,CAC5C,CAAC,IAAI,CAAC,CAAC,0BAA0B,CAClC;AAEH,QAAA,QAAQ,EAAE;YACR,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE;AACvD,YAAA,cAAc,CAAC;AACb,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,QAAQ,EAAE,oBAAoB;AAC9B,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,UAAU,EAAE,KAAK;AACjB,gBAAA,MAAM,EAAE,MACN,gFAA+F,CAAC,IAAI,CAClG,CAAC,IAAI,CAAC,CAAC,+BAA+B,CACvC;aACJ,CAAC;AACF,YAAA,cAAc,CAAC;AACb,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,UAAU,EAAE,KAAK;AACjB,gBAAA,MAAM,EAAE,MACN,4EAAmF,CAAC,IAAI,CACtF,CAAC,IAAI,CAAC,CAAC,2BAA2B,CACnC;aACJ,CAAC;AACH,SAAA;AACF,KAAA;;AAGH;;;;AAIG;AACH;;MCFa,0BAA0B,CAAA;AA/BvC,IAAA,WAAA,GAAA;AAgCW,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAgB,IAAI,+CAAC;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACxB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,EAAE,iDAAC;AACV,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAuBtD,IAAA;IArBC,MAAM,MAAM,CAAC,KAAY,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAC3B,QAAA,IAAI,EAAE,MAAM,YAAY,gBAAgB,CAAC,EAAE;YACzC;QACF;QACA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAChD;QACF;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C;QAAE,OAAO,KAAc,EAAE;AACvB,YAAA,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC;AACrE,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC;QACtE;gBAAU;AACR,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,MAAM,CAAC,KAAK,GAAG,EAAE;QACnB;IACF;8GA3BW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,GAAA,EAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EA3B1B,CAAC,sBAAsB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EACzB;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA1BS,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FA4Bd,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBA/BtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;oBAChC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,SAAS,EAAE,CAAC,sBAAsB,CAAC;AACnC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA;AACF,iBAAA;;;ACzCD;AAOA;AAGM,MAAO,wBAAyB,SAAQ,sBAAsB,CAAA;AADpE,IAAA,WAAA,GAAA;;AAEU,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC;AAUvE,IAAA;AARC,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,wBAAwB;IAC1D;IAEA,KAAK,GAAA;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;AAC/C,QAAA,OAAO,MAAM;IACf;8GAVW,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;ACLD,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,kDAAkD,EAAE,EAAC,kDAAkD,EAAC,EAAC,OAAO,EAAC,YAAY,CAAC,MAAM,OAAO,2EAAmD,CAAC,EAAE,OAAO,EAAC,OAAO,EAAC,YAAY,CAAC,MAAM,OAAO,2EAAmD,CAAC,EAAE,OAAO,EAAC,EAAQ,CAAC;AAErU,MAAM,yBAAyB,GAAG;AACvC,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,QAAQ,EAAE,KAAK;;IAGL;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,gCAAA,CAAA,GAAA,gCAAiE;AACnE,CAAC,EAFW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;AAItB,MAAM,8BAA8B,GAAG,IAAI,GAAG,CAAC;IACpD,CAAC,iBAAiB,CAAC,8BAA8B,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAClF,CAAA;;ACjBD;AAKO,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,oBAE3C,CAAA;IACA,MAAM,WAAW,CAAC,KAA0B,EAAA;AAC1C,QAAA,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC;IAClC;;AALW,uBAAuB,GAAA,UAAA,CAAA;AAHnC,IAAA,cAAc,CAAC;AACd,QAAA,SAAS,EAAE,yBAAyB;KACrC;AACY,CAAA,EAAA,uBAAuB,CAMnC;;AChBD;AAKO,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,kBAAkB,CAAA;;AAAhD,qBAAqB,GAAA,UAAA,CAAA;AAHjC,IAAA,cAAc,CAAC;AACd,QAAA,SAAS,EAAE,uBAAuB;KACnC;AACY,CAAA,EAAA,qBAAqB,CAA8B;;ACQhE;IAEc;AAAZ,CAAA,UAAY,uCAAuC,EAAA;AACjD,IAAA,uCAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,uCAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAHW,uCAAuC,KAAvC,uCAAuC,GAAA,EAAA,CAAA,CAAA;AAKrD;;ACnBA;AAMO,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,2BAA2B,CAAA;AAA/D,IAAA,WAAA,GAAA;;AACY,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC;IAIjF;IAHE,QAAQ,GAAA;AACN,QAAA,OAAO,iBAAiB;IAC1B;;AAJW,qBAAqB,GAAA,UAAA,CAAA;AAJjC,IAAA,cAAc,CAAwB;AACrC,QAAA,SAAS,EAAE,uBAAuB;;KAEnC;AACY,CAAA,EAAA,qBAAqB,CAKjC;;ACbD;AAEQ,SAAU,8BAA8B,CAAC,KAAa,EAAA;IAC1D,OAAO,KAAK,KAAK,QAAQ;AAC3B;AAEF;;ACLA;AAEE;AACA;;AAEG;AACI,MAAM,iDAAiD,GAAgB,CAC5E,OAAwB,KACG;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACxC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAEpD,IAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc,EAAE;AAChC,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,QAAQ,CAAC,KAAK,KAAK,cAAc,CAAC;AACvC,UAAE;UACA,EAAE,CAAC,iBAAiB,CAAC,8BAA8B,GAAG,IAAI,EAAE;AAClE;AACA;AAGF;;AC1BA;AAOA;AAGM,MAAO,4BAA6B,SAAQ,sBAAsB,CAAA;AADxE,IAAA,WAAA,GAAA;;AAEU,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC;AAU/E,IAAA;AARC,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,4BAA4B;IAClE;IAEA,KAAK,GAAA;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE;AACnD,QAAA,OAAO,MAAM;IACf;8GAVW,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA5B,4BAA4B,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC;;;ACDD;AAKO,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,oBAE/C,CAAA;IACA,MAAM,WAAW,CAAC,KAA8B,EAAA;AAC9C,QAAA,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC;IAClC;;AALW,2BAA2B,GAAA,UAAA,CAAA;AAHvC,IAAA,cAAc,CAAC;AACd,QAAA,SAAS,EAAE,6BAA6B;KACzC;AACY,CAAA,EAAA,2BAA2B,CAMvC;;AChBD;AAKO,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,kBAAkB,CAAA;;AAApD,yBAAyB,GAAA,UAAA,CAAA;AAHrC,IAAA,cAAc,CAAC;AACd,QAAA,SAAS,EAAE,2BAA2B;KACvC;AACY,CAAA,EAAA,yBAAyB,CAA8B;;ACMpE;IAEc;AAAZ,CAAA,UAAY,+CAA+C,EAAA;AACzD,IAAA,+CAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,+CAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAHW,+CAA+C,KAA/C,+CAA+C,GAAA,EAAA,CAAA,CAAA;AAK7D;;ACjBA;AAMO,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,2BAA2B,CAAA;AAAnE,IAAA,WAAA,GAAA;;AACY,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC;IAIzF;IAHE,QAAQ,GAAA;AACN,QAAA,OAAO,qBAAqB;IAC9B;;AAJW,yBAAyB,GAAA,UAAA,CAAA;AAJrC,IAAA,cAAc,CAA4B;AACzC,QAAA,SAAS,EAAE,2BAA2B;;KAEvC;AACY,CAAA,EAAA,yBAAyB,CAKrC;;ACbD;AAEQ,SAAU,kCAAkC,CAAC,KAAa,EAAA;IAC9D,OAAO,KAAK,KAAK,QAAQ;AAC3B;AAEF;;ACLA;AAEE;AACA;;AAEG;AACI,MAAM,qDAAqD,GAAgB,CAChF,OAAwB,KACG;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACxC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAEpD,IAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc,EAAE;AAChC,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,QAAQ,CAAC,KAAK,KAAK,cAAc,CAAC;AACvC,UAAE;UACA,EAAE,CAAC,qBAAqB,CAAC,8BAA8B,GAAG,IAAI,EAAE;AACtE;AACA;AAGF;;ACrB6H;AAI5H;;MCoCY,8BAA8B,CAAA;AAhB3C,IAAA,WAAA,GAAA;AAiBW,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAA+B,eAAe,CAAC;AAC5D,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,kDAAC;AACtB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AACzB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,EAAE,iDAAC;QAClB,IAAA,CAAA,IAAI,GAAG,IAAI,SAAS,CAAC;AAC5B,YAAA,IAAI,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,GAAG,EAAE;AACjD,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC;AACxC,iBAAA;aACF,CAAC;AACF,YAAA,KAAK,EAAE,IAAI,WAAW,CAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC;AACpE,YAAA,WAAW,EAAE,IAAI,WAAW,CAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,IAAI,IAAI,CACpC;AACD,YAAA,QAAQ,EAAE,IAAI,WAAW,CAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC;AAC1E,YAAA,YAAY,EAAE,IAAI,WAAW,CAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,IAAI,IAAI,CACrC;AACD,YAAA,OAAO,EAAE,IAAI,WAAW,CAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;AACxE,YAAA,aAAa,EAAE,IAAI,WAAW,CAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,IAAI,IAAI,CACtC;AACD,YAAA,UAAU,EAAE,IAAI,WAAW,CACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,IAAI,CACnC;AACD,YAAA,OAAO,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,EAAE;AACzD,gBAAA,WAAW,EAAE,IAAI;aAClB,CAAC;AACF,YAAA,QAAQ,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,KAAK,EAAE;AAC3D,gBAAA,WAAW,EAAE,IAAI;aAClB,CAAC;AACH,SAAA,CAAC;AACe,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACnC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,EAAC,YAA4C,EAAC;AAsC5E,IAAA;IApCC,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACvC,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;QAClB;IACF;IAEA,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACrC;QACF;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC5B,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC;YAC7D;QACF;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;AACxB,cAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK;cAC5C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;QAC9B;aACG,IAAI,CACH,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EACnC,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAEvC,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAClC,YAAA,KAAK,EAAE,CAAC,KAAc,KAAI;AACxB,gBAAA,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC;AAClE,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,0GAA0G,CAC3G;YACH,CAAC;AACF,SAAA,CAAC;IACN;8GA1EW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,wEAF9B,CAAC,qBAAqB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3CpC,8lFAsFA,mIDnDI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,iBAAiB,mbACjB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,kYACd,0BAA0B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIjB,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAhB1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,eAAA,EAGpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,mBAAmB;wBACnB,eAAe;wBACf,iBAAiB;wBACjB,eAAe;wBACf,kBAAkB;wBAClB,cAAc;wBACd,0BAA0B;qBAC3B,EAAA,SAAA,EACU,CAAC,qBAAqB,CAAC,EAAA,QAAA,EAAA,8lFAAA,EAAA,MAAA,EAAA,CAAA,4EAAA,CAAA,EAAA;;;MEdvB,8BAA8B,CAAA;AAR3C,IAAA,WAAA,GAAA;AAYW,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACnC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,EAAE,iDAAC;AAClB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAgB,IAAI,oDAAC;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAC1B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAMvC,QAAA,IAAA,CAAA,OAAO,GAAoB;YAClC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC7C,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACjD,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;YACnD,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YACxD,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;AAC1D,YAAA;AACE,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,OAAO,EAAE,eAAe;wBACxB,KAAK,EAAE,CAAC,IAAuB,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACpD,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,OAAO,EAAE,iBAAiB;wBAC1B,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI;wBACxC,KAAK,EAAE,CAAC,IAAuB,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACtD,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;AA6DF,IAAA;AA3FC,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,qBAAqB;IACvC;IA8BA,GAAG,GAAA;QACD,IAAI,CAAC,IAAI,EAAE;IACb;AAEA,IAAA,IAAI,CAAC,IAAwB,EAAA;AAC3B,QAAA,IAAI,CAAC;aACF,IAAI,CAAC,8BAA8B,EAAE;YACpC,IAAI,EAAE,EAAE,IAAI,EAAE;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,YAAY,EAAE,IAAI;SACnB;AACA,aAAA,WAAW;AACX,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aACxC,SAAS,CAAC,KAAK,IAAG;YACjB,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACzB;AACF,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,MAAM,CAAC,IAAuB,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC5B;QACF;QACA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC;aACF,IAAI,CAAC,0BAA0B,EAAE;AAChC,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,kBAAkB;AACzB,gBAAA,OAAO,EAAE,CAAA,wBAAA,EAA2B,IAAI,CAAC,IAAI,CAAA,6CAAA,CAA+C;AAC5F,gBAAA,WAAW,EAAE,QAAQ;AACtB,aAAA;SACF;AACA,aAAA,WAAW;AACX,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aACxC,SAAS,CAAC,SAAS,IAAG;YACrB,IAAI,CAAC,SAAS,EAAE;AACd,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;gBACvB;YACF;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC;AACF,iBAAA,UAAU,CAAC,IAAI,CAAC,EAAE;iBAClB,IAAI,CACH,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EACnC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAExC,iBAAA,SAAS,CAAC;gBACT,IAAI,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACnC,gBAAA,KAAK,EAAE,CAAC,KAAc,KAAI;AACxB,oBAAA,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC;AAC9D,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,2DAA2D,CAC5D;gBACH,CAAC;AACF,aAAA,CAAC;AACN,QAAA,CAAC,CAAC;IACN;8GApGW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,SAAA,EAF9B,CAAC,qBAAqB,CAAC,qEAGvB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BnC,mXAYA,EAAA,MAAA,EAAA,CAAA,qCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDcY,sBAAsB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,eAAA,EAAA,MAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGrB,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAR1C,SAAS;+BACE,8BAA8B,EAAA,eAAA,EAGvB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,sBAAsB,CAAC,EAAA,SAAA,EACtB,CAAC,qBAAqB,CAAC,EAAA,QAAA,EAAA,mXAAA,EAAA,MAAA,EAAA,CAAA,qCAAA,CAAA,EAAA;;sBAGjC,SAAS;uBAAC,sBAAsB;;;;;;;;AE9BnC;AAEA;;ACCA;AAEO,MAAM,2BAA2B,GAAW;AACjD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,aAAa,EAAE,MACb,+EAA8C,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,8BAA8B,CAAC;AAE5F,QAAA,QAAQ,EAAE;;;;;;;;;AAST,SAAA;AACF,KAAA;;AAGH;;;;AAIG;AACH;;;;;;;ACxByI;AAIxI;;MCwBY,kCAAkC,CAAA;AAf/C,IAAA,WAAA,GAAA;QAgBW,IAAA,CAAA,IAAI,GAAG,IAAI,SAAS,CAAC;YAC5B,QAAQ,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YACpD,YAAY,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YACxD,kBAAkB,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC9D,YAAA,eAAe,EAAE,IAAI,WAAW,CAAgB,IAAI,CAAC;AACrD,YAAA,eAAe,EAAE,IAAI,WAAW,CAAgB,IAAI,CAAC;AACrD,YAAA,gBAAgB,EAAE,IAAI,WAAW,CAAgB,IAAI,CAAC;YACtD,WAAW,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YACzD,YAAY,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC3D,SAAA,CAAC;AACO,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,IAAI,mDAAC;AACtB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,kDAAC;AACtB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AACzB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,EAAE,iDAAC;AAClB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,KAAK,iDAAC;AACb,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACvC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AA8DjD,IAAA;IA5DC,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,EAAE;IACb;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC;AACF,aAAA,SAAS;aACT,IAAI,CACH,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EACnC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAExC,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,QAAQ,IAAG;AACf,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAClB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAChC,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAc,KAAI;AACxB,gBAAA,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC;AACnE,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,wDAAwD,CACzD;AACD,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACrB,CAAC;AACF,SAAA,CAAC;IACN;IAEA,IAAI,GAAA;QACF,IACE,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAClB;YACA;QACF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC;AACF,aAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;aAClC,IAAI,CACH,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EACnC,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAEvC,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,QAAQ,IAAG;AACf,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC9B,gBAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC1B,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YACtB,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAc,KAAI;AACxB,gBAAA,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC;AACnE,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,yEAAyE,CAC1E;YACH,CAAC;AACF,SAAA,CAAC;IACN;8GA9EW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,+EAFlC,CAAC,yBAAyB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BxC,sqEA2EA,EAAA,MAAA,EAAA,CAAA,6HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnDI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,eAAe,mXACf,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,kYACd,0BAA0B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIjB,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAf9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,mBAAmB;wBACnB,eAAe;wBACf,iBAAiB;wBACjB,kBAAkB;wBAClB,cAAc;wBACd,0BAA0B;qBAC3B,EAAA,SAAA,EACU,CAAC,yBAAyB,CAAC,EAAA,QAAA,EAAA,sqEAAA,EAAA,MAAA,EAAA,CAAA,6HAAA,CAAA,EAAA;;;;;;;;AE/BxC;AAEA;;ACCA;AAEO,MAAM,+BAA+B,GAAW;AACrD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,aAAa,EAAE,MACb,mFAAkD,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,kCAAkC,CAAC;AAEpG,QAAA,QAAQ,EAAE;;;;;;;;;AAST,SAAA;AACF,KAAA;;AAGH;;;;AAIG;AACH;;;;;;;AC7BA;AACA;AACA;AACA;AACA;;ACOA,YAAe,EAAE;;ACXjB;;AAEG;;"}