docxmlater 10.4.0 → 11.0.4
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.
- package/README.md +3 -3
- package/dist/constants/legacyCompatFlags.d.ts +1 -1
- package/dist/constants/legacyCompatFlags.d.ts.map +1 -1
- package/dist/constants/legacyCompatFlags.js.map +1 -1
- package/dist/core/Document.d.ts +75 -67
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +618 -414
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentContent.d.ts +11 -10
- package/dist/core/DocumentContent.d.ts.map +1 -1
- package/dist/core/DocumentContent.js +19 -19
- package/dist/core/DocumentContent.js.map +1 -1
- package/dist/core/DocumentEvents.d.ts +39 -0
- package/dist/core/DocumentEvents.d.ts.map +1 -0
- package/dist/core/DocumentEvents.js +51 -0
- package/dist/core/DocumentEvents.js.map +1 -0
- package/dist/core/DocumentGenerator.d.ts +11 -11
- package/dist/core/DocumentGenerator.d.ts.map +1 -1
- package/dist/core/DocumentGenerator.js +72 -52
- package/dist/core/DocumentGenerator.js.map +1 -1
- package/dist/core/DocumentParser.d.ts +15 -15
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +2100 -1076
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/core/DocumentValidator.d.ts +3 -3
- package/dist/core/DocumentValidator.d.ts.map +1 -1
- package/dist/core/DocumentValidator.js +31 -31
- package/dist/core/DocumentValidator.js.map +1 -1
- package/dist/core/ElementRegistry.d.ts +22 -0
- package/dist/core/ElementRegistry.d.ts.map +1 -0
- package/dist/core/ElementRegistry.js +27 -0
- package/dist/core/ElementRegistry.js.map +1 -0
- package/dist/core/Relationship.js +4 -4
- package/dist/core/Relationship.js.map +1 -1
- package/dist/core/RelationshipManager.d.ts +1 -1
- package/dist/core/RelationshipManager.d.ts.map +1 -1
- package/dist/core/RelationshipManager.js +32 -32
- package/dist/core/RelationshipManager.js.map +1 -1
- package/dist/elements/AlternateContent.d.ts +1 -1
- package/dist/elements/AlternateContent.d.ts.map +1 -1
- package/dist/elements/AlternateContent.js.map +1 -1
- package/dist/elements/Bookmark.d.ts +6 -1
- package/dist/elements/Bookmark.d.ts.map +1 -1
- package/dist/elements/Bookmark.js +19 -3
- package/dist/elements/Bookmark.js.map +1 -1
- package/dist/elements/BookmarkManager.d.ts +1 -1
- package/dist/elements/BookmarkManager.d.ts.map +1 -1
- package/dist/elements/BookmarkManager.js +7 -7
- package/dist/elements/BookmarkManager.js.map +1 -1
- package/dist/elements/Comment.d.ts +2 -2
- package/dist/elements/Comment.d.ts.map +1 -1
- package/dist/elements/Comment.js +4 -4
- package/dist/elements/Comment.js.map +1 -1
- package/dist/elements/CommentManager.d.ts +2 -2
- package/dist/elements/CommentManager.d.ts.map +1 -1
- package/dist/elements/CommentManager.js +9 -9
- package/dist/elements/CommentManager.js.map +1 -1
- package/dist/elements/CommonTypes.d.ts +9 -4
- package/dist/elements/CommonTypes.d.ts.map +1 -1
- package/dist/elements/CommonTypes.js +1 -0
- package/dist/elements/CommonTypes.js.map +1 -1
- package/dist/elements/CustomXml.d.ts +1 -1
- package/dist/elements/CustomXml.d.ts.map +1 -1
- package/dist/elements/CustomXml.js.map +1 -1
- package/dist/elements/Endnote.d.ts +2 -2
- package/dist/elements/Endnote.d.ts.map +1 -1
- package/dist/elements/Endnote.js +9 -9
- package/dist/elements/Endnote.js.map +1 -1
- package/dist/elements/EndnoteManager.d.ts +1 -1
- package/dist/elements/EndnoteManager.d.ts.map +1 -1
- package/dist/elements/EndnoteManager.js +11 -11
- package/dist/elements/EndnoteManager.js.map +1 -1
- package/dist/elements/Field.d.ts +9 -5
- package/dist/elements/Field.d.ts.map +1 -1
- package/dist/elements/Field.js +21 -9
- package/dist/elements/Field.js.map +1 -1
- package/dist/elements/FieldHelpers.d.ts +1 -1
- package/dist/elements/FieldHelpers.d.ts.map +1 -1
- package/dist/elements/FieldHelpers.js +10 -10
- package/dist/elements/FieldHelpers.js.map +1 -1
- package/dist/elements/Footer.d.ts +3 -3
- package/dist/elements/Footer.d.ts.map +1 -1
- package/dist/elements/Footer.js +5 -5
- package/dist/elements/Footer.js.map +1 -1
- package/dist/elements/Footnote.d.ts +2 -2
- package/dist/elements/Footnote.d.ts.map +1 -1
- package/dist/elements/Footnote.js +9 -9
- package/dist/elements/Footnote.js.map +1 -1
- package/dist/elements/FootnoteManager.d.ts +1 -1
- package/dist/elements/FootnoteManager.d.ts.map +1 -1
- package/dist/elements/FootnoteManager.js +11 -11
- package/dist/elements/FootnoteManager.js.map +1 -1
- package/dist/elements/Header.d.ts +3 -3
- package/dist/elements/Header.d.ts.map +1 -1
- package/dist/elements/Header.js +5 -5
- package/dist/elements/Header.js.map +1 -1
- package/dist/elements/HeaderFooterManager.d.ts +2 -2
- package/dist/elements/HeaderFooterManager.d.ts.map +1 -1
- package/dist/elements/HeaderFooterManager.js.map +1 -1
- package/dist/elements/Hyperlink.d.ts +5 -5
- package/dist/elements/Hyperlink.d.ts.map +1 -1
- package/dist/elements/Hyperlink.js +29 -29
- package/dist/elements/Hyperlink.js.map +1 -1
- package/dist/elements/Image.d.ts +1 -1
- package/dist/elements/Image.d.ts.map +1 -1
- package/dist/elements/Image.js +67 -67
- package/dist/elements/Image.js.map +1 -1
- package/dist/elements/ImageManager.d.ts +1 -1
- package/dist/elements/ImageManager.d.ts.map +1 -1
- package/dist/elements/ImageManager.js +4 -4
- package/dist/elements/ImageManager.js.map +1 -1
- package/dist/elements/ImageRun.d.ts +3 -3
- package/dist/elements/ImageRun.d.ts.map +1 -1
- package/dist/elements/ImageRun.js +2 -2
- package/dist/elements/ImageRun.js.map +1 -1
- package/dist/elements/MathElement.d.ts +1 -1
- package/dist/elements/MathElement.d.ts.map +1 -1
- package/dist/elements/MathElement.js.map +1 -1
- package/dist/elements/Paragraph.d.ts +34 -19
- package/dist/elements/Paragraph.d.ts.map +1 -1
- package/dist/elements/Paragraph.js +286 -231
- package/dist/elements/Paragraph.js.map +1 -1
- package/dist/elements/PreservedElement.d.ts +1 -1
- package/dist/elements/PreservedElement.d.ts.map +1 -1
- package/dist/elements/PreservedElement.js.map +1 -1
- package/dist/elements/PropertyChangeTypes.d.ts +2 -2
- package/dist/elements/PropertyChangeTypes.d.ts.map +1 -1
- package/dist/elements/PropertyChangeTypes.js.map +1 -1
- package/dist/elements/RangeMarker.d.ts +14 -1
- package/dist/elements/RangeMarker.d.ts.map +1 -1
- package/dist/elements/RangeMarker.js +46 -8
- package/dist/elements/RangeMarker.js.map +1 -1
- package/dist/elements/RegisteredBodyElement.d.ts +15 -0
- package/dist/elements/RegisteredBodyElement.d.ts.map +1 -0
- package/dist/elements/RegisteredBodyElement.js +44 -0
- package/dist/elements/RegisteredBodyElement.js.map +1 -0
- package/dist/elements/Revision.d.ts +8 -8
- package/dist/elements/Revision.d.ts.map +1 -1
- package/dist/elements/Revision.js +12 -12
- package/dist/elements/Revision.js.map +1 -1
- package/dist/elements/RevisionContent.d.ts +3 -3
- package/dist/elements/RevisionContent.d.ts.map +1 -1
- package/dist/elements/RevisionContent.js.map +1 -1
- package/dist/elements/RevisionManager.d.ts +2 -2
- package/dist/elements/RevisionManager.d.ts.map +1 -1
- package/dist/elements/RevisionManager.js +2 -2
- package/dist/elements/RevisionManager.js.map +1 -1
- package/dist/elements/Run.d.ts +16 -10
- package/dist/elements/Run.d.ts.map +1 -1
- package/dist/elements/Run.js +199 -173
- package/dist/elements/Run.js.map +1 -1
- package/dist/elements/Section.d.ts +4 -2
- package/dist/elements/Section.d.ts.map +1 -1
- package/dist/elements/Section.js +152 -145
- package/dist/elements/Section.js.map +1 -1
- package/dist/elements/Shape.d.ts +3 -3
- package/dist/elements/Shape.d.ts.map +1 -1
- package/dist/elements/Shape.js +12 -12
- package/dist/elements/Shape.js.map +1 -1
- package/dist/elements/StructuredDocumentTag.d.ts +3 -3
- package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
- package/dist/elements/StructuredDocumentTag.js +39 -39
- package/dist/elements/StructuredDocumentTag.js.map +1 -1
- package/dist/elements/Table.d.ts +16 -10
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +118 -89
- package/dist/elements/Table.js.map +1 -1
- package/dist/elements/TableCell.d.ts +11 -11
- package/dist/elements/TableCell.d.ts.map +1 -1
- package/dist/elements/TableCell.js +108 -78
- package/dist/elements/TableCell.js.map +1 -1
- package/dist/elements/TableGridChange.d.ts +1 -1
- package/dist/elements/TableGridChange.d.ts.map +1 -1
- package/dist/elements/TableGridChange.js +3 -3
- package/dist/elements/TableGridChange.js.map +1 -1
- package/dist/elements/TableOfContents.d.ts +1 -1
- package/dist/elements/TableOfContents.d.ts.map +1 -1
- package/dist/elements/TableOfContents.js +2 -2
- package/dist/elements/TableOfContents.js.map +1 -1
- package/dist/elements/TableOfContentsElement.d.ts +2 -2
- package/dist/elements/TableOfContentsElement.d.ts.map +1 -1
- package/dist/elements/TableOfContentsElement.js +5 -5
- package/dist/elements/TableOfContentsElement.js.map +1 -1
- package/dist/elements/TableRow.d.ts +18 -7
- package/dist/elements/TableRow.d.ts.map +1 -1
- package/dist/elements/TableRow.js +127 -74
- package/dist/elements/TableRow.js.map +1 -1
- package/dist/elements/TextBox.d.ts +4 -4
- package/dist/elements/TextBox.d.ts.map +1 -1
- package/dist/elements/TextBox.js +6 -6
- package/dist/elements/TextBox.js.map +1 -1
- package/dist/esm/constants/legacyCompatFlags.js +97 -0
- package/dist/esm/constants/legacyCompatFlags.js.map +1 -0
- package/dist/esm/constants/limits.js +36 -0
- package/dist/esm/constants/limits.js.map +1 -0
- package/dist/esm/core/Document.js +8498 -0
- package/dist/esm/core/Document.js.map +1 -0
- package/dist/esm/core/DocumentContent.js +190 -0
- package/dist/esm/core/DocumentContent.js.map +1 -0
- package/dist/esm/core/DocumentEvents.js +47 -0
- package/dist/esm/core/DocumentEvents.js.map +1 -0
- package/dist/esm/core/DocumentGenerator.js +764 -0
- package/dist/esm/core/DocumentGenerator.js.map +1 -0
- package/dist/esm/core/DocumentIdManager.js +67 -0
- package/dist/esm/core/DocumentIdManager.js.map +1 -0
- package/dist/esm/core/DocumentParser.js +8760 -0
- package/dist/esm/core/DocumentParser.js.map +1 -0
- package/dist/esm/core/DocumentValidator.js +222 -0
- package/dist/esm/core/DocumentValidator.js.map +1 -0
- package/dist/esm/core/ElementRegistry.js +24 -0
- package/dist/esm/core/ElementRegistry.js.map +1 -0
- package/dist/esm/core/Relationship.js +177 -0
- package/dist/esm/core/Relationship.js.map +1 -0
- package/dist/esm/core/RelationshipManager.js +202 -0
- package/dist/esm/core/RelationshipManager.js.map +1 -0
- package/dist/esm/elements/AlternateContent.js +19 -0
- package/dist/esm/elements/AlternateContent.js.map +1 -0
- package/dist/esm/elements/Bookmark.js +115 -0
- package/dist/esm/elements/Bookmark.js.map +1 -0
- package/dist/esm/elements/BookmarkManager.js +99 -0
- package/dist/esm/elements/BookmarkManager.js.map +1 -0
- package/dist/esm/elements/Comment.js +181 -0
- package/dist/esm/elements/Comment.js.map +1 -0
- package/dist/esm/elements/CommentManager.js +233 -0
- package/dist/esm/elements/CommentManager.js.map +1 -0
- package/dist/esm/elements/CommonTypes.js +106 -0
- package/dist/esm/elements/CommonTypes.js.map +1 -0
- package/dist/esm/elements/CustomXml.js +19 -0
- package/dist/esm/elements/CustomXml.js.map +1 -0
- package/dist/esm/elements/Endnote.js +107 -0
- package/dist/esm/elements/Endnote.js.map +1 -0
- package/dist/esm/elements/EndnoteManager.js +119 -0
- package/dist/esm/elements/EndnoteManager.js.map +1 -0
- package/dist/esm/elements/Field.js +856 -0
- package/dist/esm/elements/Field.js.map +1 -0
- package/dist/esm/elements/FieldHelpers.js +134 -0
- package/dist/esm/elements/FieldHelpers.js.map +1 -0
- package/dist/esm/elements/FontManager.js +158 -0
- package/dist/esm/elements/FontManager.js.map +1 -0
- package/dist/esm/elements/Footer.js +141 -0
- package/dist/esm/elements/Footer.js.map +1 -0
- package/dist/esm/elements/Footnote.js +107 -0
- package/dist/esm/elements/Footnote.js.map +1 -0
- package/dist/esm/elements/FootnoteManager.js +119 -0
- package/dist/esm/elements/FootnoteManager.js.map +1 -0
- package/dist/esm/elements/Header.js +141 -0
- package/dist/esm/elements/Header.js.map +1 -0
- package/dist/esm/elements/HeaderFooterManager.js +87 -0
- package/dist/esm/elements/HeaderFooterManager.js.map +1 -0
- package/dist/esm/elements/Hyperlink.js +586 -0
- package/dist/esm/elements/Hyperlink.js.map +1 -0
- package/dist/esm/elements/Image.js +1288 -0
- package/dist/esm/elements/Image.js.map +1 -0
- package/dist/esm/elements/ImageManager.js +223 -0
- package/dist/esm/elements/ImageManager.js.map +1 -0
- package/dist/esm/elements/ImageRun.js +29 -0
- package/dist/esm/elements/ImageRun.js.map +1 -0
- package/dist/esm/elements/MathElement.js +37 -0
- package/dist/esm/elements/MathElement.js.map +1 -0
- package/dist/esm/elements/Paragraph.js +2308 -0
- package/dist/esm/elements/Paragraph.js.map +1 -0
- package/dist/esm/elements/PreservedElement.js +29 -0
- package/dist/esm/elements/PreservedElement.js.map +1 -0
- package/dist/esm/elements/PropertyChangeTypes.js +53 -0
- package/dist/esm/elements/PropertyChangeTypes.js.map +1 -0
- package/dist/esm/elements/RangeMarker.js +219 -0
- package/dist/esm/elements/RangeMarker.js.map +1 -0
- package/dist/esm/elements/RegisteredBodyElement.js +40 -0
- package/dist/esm/elements/RegisteredBodyElement.js.map +1 -0
- package/dist/esm/elements/Revision.js +498 -0
- package/dist/esm/elements/Revision.js.map +1 -0
- package/dist/esm/elements/RevisionContent.js +18 -0
- package/dist/esm/elements/RevisionContent.js.map +1 -0
- package/dist/esm/elements/RevisionManager.js +486 -0
- package/dist/esm/elements/RevisionManager.js.map +1 -0
- package/dist/esm/elements/Run.js +1465 -0
- package/dist/esm/elements/Run.js.map +1 -0
- package/dist/esm/elements/Section.js +978 -0
- package/dist/esm/elements/Section.js.map +1 -0
- package/dist/esm/elements/Shape.js +493 -0
- package/dist/esm/elements/Shape.js.map +1 -0
- package/dist/esm/elements/StructuredDocumentTag.js +471 -0
- package/dist/esm/elements/StructuredDocumentTag.js.map +1 -0
- package/dist/esm/elements/Table.js +1456 -0
- package/dist/esm/elements/Table.js.map +1 -0
- package/dist/esm/elements/TableCell.js +835 -0
- package/dist/esm/elements/TableCell.js.map +1 -0
- package/dist/esm/elements/TableGridChange.js +52 -0
- package/dist/esm/elements/TableGridChange.js.map +1 -0
- package/dist/esm/elements/TableOfContents.js +389 -0
- package/dist/esm/elements/TableOfContents.js.map +1 -0
- package/dist/esm/elements/TableOfContentsElement.js +29 -0
- package/dist/esm/elements/TableOfContentsElement.js.map +1 -0
- package/dist/esm/elements/TableRow.js +555 -0
- package/dist/esm/elements/TableRow.js.map +1 -0
- package/dist/esm/elements/TextBox.js +459 -0
- package/dist/esm/elements/TextBox.js.map +1 -0
- package/dist/esm/formatting/AbstractNumbering.js +325 -0
- package/dist/esm/formatting/AbstractNumbering.js.map +1 -0
- package/dist/esm/formatting/NumberingInstance.js +150 -0
- package/dist/esm/formatting/NumberingInstance.js.map +1 -0
- package/dist/esm/formatting/NumberingLevel.js +608 -0
- package/dist/esm/formatting/NumberingLevel.js.map +1 -0
- package/dist/esm/formatting/NumberingManager.js +423 -0
- package/dist/esm/formatting/NumberingManager.js.map +1 -0
- package/dist/esm/formatting/Style.js +1151 -0
- package/dist/esm/formatting/Style.js.map +1 -0
- package/dist/esm/formatting/StylesManager.js +557 -0
- package/dist/esm/formatting/StylesManager.js.map +1 -0
- package/dist/esm/helpers/CleanupHelper.js +350 -0
- package/dist/esm/helpers/CleanupHelper.js.map +1 -0
- package/dist/esm/images/ImageOptimizer.js +161 -0
- package/dist/esm/images/ImageOptimizer.js.map +1 -0
- package/dist/esm/index.js +75 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal.js +16 -0
- package/dist/esm/internal.js.map +1 -0
- package/dist/esm/managers/DrawingManager.js +163 -0
- package/dist/esm/managers/DrawingManager.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/processors/ChangelogGenerator.js +970 -0
- package/dist/esm/processors/ChangelogGenerator.js.map +1 -0
- package/dist/esm/processors/CompatibilityUpgrader.js +130 -0
- package/dist/esm/processors/CompatibilityUpgrader.js.map +1 -0
- package/dist/esm/processors/InMemoryRevisionAcceptor.js +530 -0
- package/dist/esm/processors/InMemoryRevisionAcceptor.js.map +1 -0
- package/dist/esm/processors/MoveOperationHelper.js +57 -0
- package/dist/esm/processors/MoveOperationHelper.js.map +1 -0
- package/dist/esm/processors/RevisionAwareProcessor.js +232 -0
- package/dist/esm/processors/RevisionAwareProcessor.js.map +1 -0
- package/dist/esm/processors/RevisionWalker.js +278 -0
- package/dist/esm/processors/RevisionWalker.js.map +1 -0
- package/dist/{utils → esm/processors}/SelectiveRevisionAcceptor.js +81 -42
- package/dist/esm/processors/SelectiveRevisionAcceptor.js.map +1 -0
- package/dist/esm/processors/ShadingResolver.js +66 -0
- package/dist/esm/processors/ShadingResolver.js.map +1 -0
- package/dist/esm/processors/acceptRevisions.js +416 -0
- package/dist/esm/processors/acceptRevisions.js.map +1 -0
- package/dist/esm/processors/cnfStyleDecoder.js +89 -0
- package/dist/esm/processors/cnfStyleDecoder.js.map +1 -0
- package/dist/esm/processors/stripTrackedChanges.js +201 -0
- package/dist/esm/processors/stripTrackedChanges.js.map +1 -0
- package/dist/esm/tracking/DocumentTrackingContext.js +531 -0
- package/dist/esm/tracking/DocumentTrackingContext.js.map +1 -0
- package/dist/esm/tracking/TrackingContext.js +2 -0
- package/dist/esm/tracking/TrackingContext.js.map +1 -0
- package/dist/esm/types/compatibility-types.js +8 -0
- package/dist/esm/types/compatibility-types.js.map +1 -0
- package/dist/esm/types/document-types.js +2 -0
- package/dist/esm/types/document-types.js.map +1 -0
- package/dist/esm/types/formatting.js +2 -0
- package/dist/esm/types/formatting.js.map +1 -0
- package/dist/esm/types/list-types.js +2 -0
- package/dist/esm/types/list-types.js.map +1 -0
- package/dist/esm/types/settings-types.js +2 -0
- package/dist/esm/types/settings-types.js.map +1 -0
- package/dist/esm/types/styleConfig.js +2 -0
- package/dist/esm/types/styleConfig.js.map +1 -0
- package/dist/esm/utils/KeyedRegistry.js +32 -0
- package/dist/esm/utils/KeyedRegistry.js.map +1 -0
- package/dist/esm/utils/corruptionDetection.js +155 -0
- package/dist/esm/utils/corruptionDetection.js.map +1 -0
- package/dist/esm/utils/dateFormatting.js +4 -0
- package/dist/esm/utils/dateFormatting.js.map +1 -0
- package/dist/esm/utils/deepClone.js +40 -0
- package/dist/esm/utils/deepClone.js.map +1 -0
- package/dist/esm/utils/deepEqual.js +47 -0
- package/dist/esm/utils/deepEqual.js.map +1 -0
- package/dist/esm/utils/diagnostics.js +69 -0
- package/dist/esm/utils/diagnostics.js.map +1 -0
- package/dist/esm/utils/errorHandling.js +36 -0
- package/dist/esm/utils/errorHandling.js.map +1 -0
- package/dist/esm/utils/formatting.js +93 -0
- package/dist/esm/utils/formatting.js.map +1 -0
- package/dist/esm/utils/list-detection.js +148 -0
- package/dist/esm/utils/list-detection.js.map +1 -0
- package/dist/esm/utils/logger.js +205 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/dist/esm/utils/parsingHelpers.js +56 -0
- package/dist/esm/utils/parsingHelpers.js.map +1 -0
- package/dist/esm/utils/textDiff.js +42 -0
- package/dist/esm/utils/textDiff.js.map +1 -0
- package/dist/esm/utils/units.js +152 -0
- package/dist/esm/utils/units.js.map +1 -0
- package/dist/esm/utils/validation.js +285 -0
- package/dist/esm/utils/validation.js.map +1 -0
- package/dist/esm/utils/xmlSanitization.js +54 -0
- package/dist/esm/utils/xmlSanitization.js.map +1 -0
- package/dist/esm/validation/RevisionAutoFixer.js +340 -0
- package/dist/esm/validation/RevisionAutoFixer.js.map +1 -0
- package/dist/esm/validation/RevisionValidator.js +240 -0
- package/dist/esm/validation/RevisionValidator.js.map +1 -0
- package/dist/esm/validation/ValidationRuleRegistry.js +40 -0
- package/dist/esm/validation/ValidationRuleRegistry.js.map +1 -0
- package/dist/esm/validation/ValidationRules.js +92 -0
- package/dist/esm/validation/ValidationRules.js.map +1 -0
- package/dist/esm/validation/index.js +4 -0
- package/dist/esm/validation/index.js.map +1 -0
- package/dist/esm/xml/XMLBuilder.js +434 -0
- package/dist/esm/xml/XMLBuilder.js.map +1 -0
- package/dist/esm/xml/XMLParser.js +486 -0
- package/dist/esm/xml/XMLParser.js.map +1 -0
- package/dist/esm/zip/ZipHandler.js +298 -0
- package/dist/esm/zip/ZipHandler.js.map +1 -0
- package/dist/esm/zip/ZipReader.js +147 -0
- package/dist/esm/zip/ZipReader.js.map +1 -0
- package/dist/esm/zip/ZipWriter.js +199 -0
- package/dist/esm/zip/ZipWriter.js.map +1 -0
- package/dist/esm/zip/errors.js +43 -0
- package/dist/esm/zip/errors.js.map +1 -0
- package/dist/esm/zip/types.js +31 -0
- package/dist/esm/zip/types.js.map +1 -0
- package/dist/formatting/AbstractNumbering.d.ts +2 -2
- package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
- package/dist/formatting/AbstractNumbering.js +33 -33
- package/dist/formatting/AbstractNumbering.js.map +1 -1
- package/dist/formatting/NumberingInstance.d.ts +2 -2
- package/dist/formatting/NumberingInstance.d.ts.map +1 -1
- package/dist/formatting/NumberingInstance.js +7 -7
- package/dist/formatting/NumberingInstance.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts +11 -2
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +111 -25
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/formatting/NumberingManager.d.ts +4 -4
- package/dist/formatting/NumberingManager.d.ts.map +1 -1
- package/dist/formatting/NumberingManager.js +28 -28
- package/dist/formatting/NumberingManager.js.map +1 -1
- package/dist/formatting/Style.d.ts +14 -7
- package/dist/formatting/Style.d.ts.map +1 -1
- package/dist/formatting/Style.js +309 -112
- package/dist/formatting/Style.js.map +1 -1
- package/dist/formatting/StylesManager.d.ts +2 -2
- package/dist/formatting/StylesManager.d.ts.map +1 -1
- package/dist/formatting/StylesManager.js +52 -52
- package/dist/formatting/StylesManager.js.map +1 -1
- package/dist/helpers/CleanupHelper.d.ts +1 -1
- package/dist/helpers/CleanupHelper.d.ts.map +1 -1
- package/dist/helpers/CleanupHelper.js +15 -15
- package/dist/helpers/CleanupHelper.js.map +1 -1
- package/dist/index.d.ts +81 -90
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +286 -317
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +16 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +42 -0
- package/dist/internal.js.map +1 -0
- package/dist/managers/DrawingManager.d.ts +3 -3
- package/dist/managers/DrawingManager.d.ts.map +1 -1
- package/dist/managers/DrawingManager.js +12 -12
- package/dist/managers/DrawingManager.js.map +1 -1
- package/dist/{utils → processors}/ChangelogGenerator.d.ts +2 -2
- package/dist/processors/ChangelogGenerator.d.ts.map +1 -0
- package/dist/{utils → processors}/ChangelogGenerator.js +2 -2
- package/dist/processors/ChangelogGenerator.js.map +1 -0
- package/dist/processors/CompatibilityUpgrader.d.ts.map +1 -0
- package/dist/{utils → processors}/CompatibilityUpgrader.js +10 -10
- package/dist/processors/CompatibilityUpgrader.js.map +1 -0
- package/dist/{utils → processors}/InMemoryRevisionAcceptor.d.ts +3 -3
- package/dist/processors/InMemoryRevisionAcceptor.d.ts.map +1 -0
- package/dist/{utils → processors}/InMemoryRevisionAcceptor.js +84 -27
- package/dist/processors/InMemoryRevisionAcceptor.js.map +1 -0
- package/dist/{utils → processors}/MoveOperationHelper.d.ts +4 -4
- package/dist/processors/MoveOperationHelper.d.ts.map +1 -0
- package/dist/{utils → processors}/MoveOperationHelper.js +10 -10
- package/dist/processors/MoveOperationHelper.js.map +1 -0
- package/dist/{utils → processors}/RevisionAwareProcessor.d.ts +3 -3
- package/dist/processors/RevisionAwareProcessor.d.ts.map +1 -0
- package/dist/{utils → processors}/RevisionAwareProcessor.js +2 -2
- package/dist/processors/RevisionAwareProcessor.js.map +1 -0
- package/dist/{utils → processors}/RevisionWalker.d.ts +2 -1
- package/dist/processors/RevisionWalker.d.ts.map +1 -0
- package/dist/{utils → processors}/RevisionWalker.js +28 -0
- package/dist/processors/RevisionWalker.js.map +1 -0
- package/dist/{utils → processors}/SelectiveRevisionAcceptor.d.ts +4 -3
- package/dist/processors/SelectiveRevisionAcceptor.d.ts.map +1 -0
- package/dist/processors/SelectiveRevisionAcceptor.js +402 -0
- package/dist/processors/SelectiveRevisionAcceptor.js.map +1 -0
- package/dist/processors/ShadingResolver.d.ts +6 -0
- package/dist/processors/ShadingResolver.d.ts.map +1 -0
- package/dist/{utils → processors}/ShadingResolver.js +2 -2
- package/dist/processors/ShadingResolver.js.map +1 -0
- package/dist/{utils → processors}/acceptRevisions.d.ts +1 -1
- package/dist/processors/acceptRevisions.d.ts.map +1 -0
- package/dist/{utils → processors}/acceptRevisions.js +24 -4
- package/dist/processors/acceptRevisions.js.map +1 -0
- package/dist/{utils → processors}/cnfStyleDecoder.d.ts +1 -1
- package/dist/processors/cnfStyleDecoder.d.ts.map +1 -0
- package/dist/processors/cnfStyleDecoder.js.map +1 -0
- package/dist/processors/stripTrackedChanges.d.ts +3 -0
- package/dist/processors/stripTrackedChanges.d.ts.map +1 -0
- package/dist/{utils → processors}/stripTrackedChanges.js +16 -6
- package/dist/processors/stripTrackedChanges.js.map +1 -0
- package/dist/tracking/DocumentTrackingContext.d.ts +4 -4
- package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
- package/dist/tracking/DocumentTrackingContext.js +38 -43
- package/dist/tracking/DocumentTrackingContext.js.map +1 -1
- package/dist/tracking/TrackingContext.d.ts +8 -8
- package/dist/tracking/TrackingContext.d.ts.map +1 -1
- package/dist/tracking/TrackingContext.js.map +1 -1
- package/dist/types/document-types.d.ts +28 -0
- package/dist/types/document-types.d.ts.map +1 -0
- package/dist/types/document-types.js +3 -0
- package/dist/types/document-types.js.map +1 -0
- package/dist/types/formatting.d.ts +4 -4
- package/dist/types/formatting.d.ts.map +1 -1
- package/dist/types/formatting.js.map +1 -1
- package/dist/types/settings-types.d.ts +6 -0
- package/dist/types/settings-types.d.ts.map +1 -1
- package/dist/types/settings-types.js.map +1 -1
- package/dist/utils/KeyedRegistry.d.ts +13 -0
- package/dist/utils/KeyedRegistry.d.ts.map +1 -0
- package/dist/utils/KeyedRegistry.js +36 -0
- package/dist/utils/KeyedRegistry.js.map +1 -0
- package/dist/utils/corruptionDetection.d.ts +1 -1
- package/dist/utils/corruptionDetection.d.ts.map +1 -1
- package/dist/utils/corruptionDetection.js +4 -4
- package/dist/utils/corruptionDetection.js.map +1 -1
- package/dist/utils/deepEqual.d.ts +2 -0
- package/dist/utils/deepEqual.d.ts.map +1 -0
- package/dist/utils/deepEqual.js +50 -0
- package/dist/utils/deepEqual.js.map +1 -0
- package/dist/utils/list-detection.d.ts +2 -2
- package/dist/utils/list-detection.d.ts.map +1 -1
- package/dist/utils/list-detection.js.map +1 -1
- package/dist/utils/parsingHelpers.d.ts +1 -1
- package/dist/utils/parsingHelpers.d.ts.map +1 -1
- package/dist/utils/parsingHelpers.js +2 -2
- package/dist/utils/parsingHelpers.js.map +1 -1
- package/dist/utils/validation.js +7 -7
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/xmlSanitization.js +2 -2
- package/dist/utils/xmlSanitization.js.map +1 -1
- package/dist/validation/RevisionAutoFixer.d.ts +4 -4
- package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
- package/dist/validation/RevisionAutoFixer.js +11 -11
- package/dist/validation/RevisionAutoFixer.js.map +1 -1
- package/dist/validation/RevisionValidator.d.ts +5 -4
- package/dist/validation/RevisionValidator.d.ts.map +1 -1
- package/dist/validation/RevisionValidator.js +29 -30
- package/dist/validation/RevisionValidator.js.map +1 -1
- package/dist/validation/ValidationRuleRegistry.d.ts +27 -0
- package/dist/validation/ValidationRuleRegistry.d.ts.map +1 -0
- package/dist/validation/ValidationRuleRegistry.js +43 -0
- package/dist/validation/ValidationRuleRegistry.js.map +1 -0
- package/dist/validation/index.d.ts +3 -3
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +10 -10
- package/dist/validation/index.js.map +1 -1
- package/dist/xml/XMLBuilder.d.ts +6 -1
- package/dist/xml/XMLBuilder.d.ts.map +1 -1
- package/dist/xml/XMLBuilder.js +11 -6
- package/dist/xml/XMLBuilder.js.map +1 -1
- package/dist/xml/XMLParser.js +6 -6
- package/dist/xml/XMLParser.js.map +1 -1
- package/dist/zip/ZipHandler.d.ts +1 -1
- package/dist/zip/ZipHandler.d.ts.map +1 -1
- package/dist/zip/ZipHandler.js +8 -8
- package/dist/zip/ZipHandler.js.map +1 -1
- package/dist/zip/ZipReader.d.ts +1 -1
- package/dist/zip/ZipReader.d.ts.map +1 -1
- package/dist/zip/ZipReader.js +14 -14
- package/dist/zip/ZipReader.js.map +1 -1
- package/dist/zip/ZipWriter.d.ts +1 -1
- package/dist/zip/ZipWriter.d.ts.map +1 -1
- package/dist/zip/ZipWriter.js +10 -10
- package/dist/zip/ZipWriter.js.map +1 -1
- package/package.json +20 -4
- package/src/constants/legacyCompatFlags.ts +1 -1
- package/src/core/Document.ts +478 -167
- package/src/core/DocumentContent.ts +14 -11
- package/src/core/DocumentEvents.ts +90 -0
- package/src/core/DocumentGenerator.ts +49 -22
- package/src/core/DocumentParser.ts +2235 -620
- package/src/core/DocumentValidator.ts +7 -7
- package/src/core/ElementRegistry.ts +69 -0
- package/src/core/Relationship.ts +1 -1
- package/src/core/RelationshipManager.ts +4 -4
- package/src/elements/AlternateContent.ts +1 -1
- package/src/elements/Bookmark.ts +52 -4
- package/src/elements/BookmarkManager.ts +2 -2
- package/src/elements/Comment.ts +3 -3
- package/src/elements/CommentManager.ts +4 -4
- package/src/elements/CommonTypes.ts +45 -7
- package/src/elements/CustomXml.ts +1 -1
- package/src/elements/Endnote.ts +2 -2
- package/src/elements/EndnoteManager.ts +3 -3
- package/src/elements/Field.ts +44 -10
- package/src/elements/FieldHelpers.ts +2 -2
- package/src/elements/Footer.ts +4 -4
- package/src/elements/Footnote.ts +2 -2
- package/src/elements/FootnoteManager.ts +3 -3
- package/src/elements/Header.ts +4 -4
- package/src/elements/HeaderFooterManager.ts +2 -2
- package/src/elements/Hyperlink.ts +16 -12
- package/src/elements/Image.ts +3 -3
- package/src/elements/ImageManager.ts +2 -2
- package/src/elements/ImageRun.ts +3 -3
- package/src/elements/MathElement.ts +1 -1
- package/src/elements/Paragraph.ts +221 -88
- package/src/elements/PreservedElement.ts +1 -1
- package/src/elements/PropertyChangeTypes.ts +2 -2
- package/src/elements/RangeMarker.ts +153 -12
- package/src/elements/RegisteredBodyElement.ts +52 -0
- package/src/elements/Revision.ts +14 -14
- package/src/elements/RevisionContent.ts +3 -3
- package/src/elements/RevisionManager.ts +3 -3
- package/src/elements/Run.ts +221 -94
- package/src/elements/Section.ts +136 -69
- package/src/elements/Shape.ts +4 -4
- package/src/elements/StructuredDocumentTag.ts +3 -3
- package/src/elements/Table.ts +91 -27
- package/src/elements/TableCell.ts +62 -34
- package/src/elements/TableGridChange.ts +1 -1
- package/src/elements/TableOfContents.ts +1 -1
- package/src/elements/TableOfContentsElement.ts +2 -2
- package/src/elements/TableRow.ts +192 -48
- package/src/elements/TextBox.ts +5 -5
- package/src/formatting/AbstractNumbering.ts +3 -3
- package/src/formatting/NumberingInstance.ts +2 -2
- package/src/formatting/NumberingLevel.ts +201 -10
- package/src/formatting/NumberingManager.ts +5 -5
- package/src/formatting/Style.ts +382 -86
- package/src/formatting/StylesManager.ts +4 -4
- package/src/helpers/CleanupHelper.ts +6 -6
- package/src/index.ts +118 -127
- package/src/internal.ts +79 -0
- package/src/managers/DrawingManager.ts +3 -3
- package/src/{utils → processors}/ChangelogGenerator.ts +3 -3
- package/src/{utils → processors}/CompatibilityUpgrader.ts +2 -2
- package/src/{utils → processors}/InMemoryRevisionAcceptor.ts +100 -12
- package/src/{utils → processors}/MoveOperationHelper.ts +5 -5
- package/src/{utils → processors}/RevisionAwareProcessor.ts +3 -3
- package/src/{utils → processors}/RevisionWalker.ts +42 -1
- package/src/{utils → processors}/SelectiveRevisionAcceptor.ts +98 -39
- package/src/{utils → processors}/ShadingResolver.ts +5 -5
- package/src/{utils → processors}/acceptRevisions.ts +77 -9
- package/src/{utils → processors}/cnfStyleDecoder.ts +1 -1
- package/src/{utils → processors}/stripTrackedChanges.ts +35 -10
- package/src/tracking/DocumentTrackingContext.ts +12 -14
- package/src/tracking/TrackingContext.ts +8 -8
- package/src/types/document-types.ts +53 -0
- package/src/types/formatting.ts +4 -4
- package/src/types/settings-types.ts +32 -0
- package/src/utils/KeyedRegistry.ts +41 -0
- package/src/utils/corruptionDetection.ts +2 -2
- package/src/utils/deepEqual.ts +58 -0
- package/src/utils/list-detection.ts +2 -2
- package/src/utils/parsingHelpers.ts +11 -3
- package/src/utils/validation.ts +3 -3
- package/src/utils/xmlSanitization.ts +1 -1
- package/src/validation/RevisionAutoFixer.ts +5 -5
- package/src/validation/RevisionValidator.ts +39 -28
- package/src/validation/ValidationRuleRegistry.ts +86 -0
- package/src/validation/index.ts +3 -3
- package/src/xml/XMLBuilder.ts +13 -3
- package/src/xml/XMLParser.ts +2 -2
- package/src/zip/ZipHandler.ts +4 -4
- package/src/zip/ZipReader.ts +3 -3
- package/src/zip/ZipWriter.ts +3 -3
- package/dist/utils/ChangelogGenerator.d.ts.map +0 -1
- package/dist/utils/ChangelogGenerator.js.map +0 -1
- package/dist/utils/CompatibilityUpgrader.d.ts.map +0 -1
- package/dist/utils/CompatibilityUpgrader.js.map +0 -1
- package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +0 -1
- package/dist/utils/InMemoryRevisionAcceptor.js.map +0 -1
- package/dist/utils/MoveOperationHelper.d.ts.map +0 -1
- package/dist/utils/MoveOperationHelper.js.map +0 -1
- package/dist/utils/RevisionAwareProcessor.d.ts.map +0 -1
- package/dist/utils/RevisionAwareProcessor.js.map +0 -1
- package/dist/utils/RevisionWalker.d.ts.map +0 -1
- package/dist/utils/RevisionWalker.js.map +0 -1
- package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +0 -1
- package/dist/utils/SelectiveRevisionAcceptor.js.map +0 -1
- package/dist/utils/ShadingResolver.d.ts +0 -6
- package/dist/utils/ShadingResolver.d.ts.map +0 -1
- package/dist/utils/ShadingResolver.js.map +0 -1
- package/dist/utils/acceptRevisions.d.ts.map +0 -1
- package/dist/utils/acceptRevisions.js.map +0 -1
- package/dist/utils/cnfStyleDecoder.d.ts.map +0 -1
- package/dist/utils/cnfStyleDecoder.js.map +0 -1
- package/dist/utils/stripTrackedChanges.d.ts +0 -3
- package/dist/utils/stripTrackedChanges.d.ts.map +0 -1
- package/dist/utils/stripTrackedChanges.js.map +0 -1
- package/src/__tests__/helper-methods.test.ts +0 -512
- package/src/constants/CLAUDE.md +0 -28
- package/src/core/CLAUDE.md +0 -113
- package/src/elements/CLAUDE.md +0 -142
- package/src/formatting/CLAUDE.md +0 -78
- package/src/managers/CLAUDE.md +0 -47
- package/src/tracking/CLAUDE.md +0 -30
- package/src/types/CLAUDE.md +0 -39
- package/src/utils/CLAUDE.md +0 -168
- package/src/validation/CLAUDE.md +0 -40
- package/src/xml/CLAUDE.md +0 -65
- package/src/zip/CLAUDE.md +0 -55
- /package/dist/{utils → processors}/CompatibilityUpgrader.d.ts +0 -0
- /package/dist/{utils → processors}/cnfStyleDecoder.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Section.js","sourceRoot":"","sources":["../../src/elements/Section.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Section - Represents a document section with page setup properties\n *\n * Sections allow different page setups within a single document (margins, orientation, etc.)\n * Each section can have its own headers, footers, and page numbering.\n */\n\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\nimport { PAGE_SIZES } from '../utils/units';\n\n/**\n * Page orientation\n */\nexport type PageOrientation = 'portrait' | 'landscape';\n\n/**\n * Section break type\n */\nexport type SectionType = 'nextPage' | 'continuous' | 'evenPage' | 'oddPage' | 'nextColumn';\n\n/**\n * Page numbering format\n */\n/**\n * Per ECMA-376 Part 1 §17.18.59 (ST_NumberFormat)\n * Comprehensive set of page number formats\n */\nexport type PageNumberFormat =\n | 'decimal'\n | 'lowerRoman'\n | 'upperRoman'\n | 'lowerLetter'\n | 'upperLetter'\n | 'ordinal'\n | 'cardinalText'\n | 'ordinalText'\n | 'hex'\n | 'chicago'\n | 'decimalZero'\n | 'decimalEnclosedCircle'\n | 'decimalEnclosedFullstop'\n | 'decimalEnclosedParen'\n | 'ideographDigital'\n | 'ideographTraditional'\n | 'ideographLegalTraditional'\n | 'ideographEnclosedCircle'\n | 'ideographZodiac'\n | 'ideographZodiacTraditional'\n | 'chineseCounting'\n | 'chineseCountingThousand'\n | 'chineseLegalSimplified'\n | 'japaneseCounting'\n | 'japaneseDigitalTenThousand'\n | 'japaneseLegal'\n | 'koreanCounting'\n | 'koreanDigital'\n | 'koreanDigital2'\n | 'koreanLegal'\n | 'taiwaneseCounting'\n | 'taiwaneseCountingThousand'\n | 'taiwaneseDigital'\n | 'aiueo'\n | 'aiueoFullWidth'\n | 'iroha'\n | 'irohaFullWidth'\n | 'arabicAbjad'\n | 'arabicAlpha'\n | 'hebrew1'\n | 'hebrew2'\n | 'hindiConsonants'\n | 'hindiCounting'\n | 'hindiNumbers'\n | 'hindiVowels'\n | 'thaiCounting'\n | 'thaiLetters'\n | 'thaiNumbers'\n | 'vietnameseCounting'\n | 'russianLower'\n | 'russianUpper'\n | 'numberInDash'\n | 'dollarText'\n | 'bullet'\n | 'bahtText'\n | 'ganada'\n | 'chosung'\n | 'none'\n | string; // Allow any format string for forward compatibility\n\n/**\n * Page size properties\n */\nexport interface PageSize {\n /** Width in twips */\n width: number;\n /** Height in twips */\n height: number;\n /** Orientation */\n orientation?: PageOrientation;\n /** Paper size code per ECMA-376 ST_PaperSize (1=Letter, 9=A4, 5=Legal, etc.) */\n code?: number;\n}\n\n/**\n * Margin properties\n */\nexport interface Margins {\n /** Top margin in twips */\n top: number;\n /** Bottom margin in twips */\n bottom: number;\n /** Left margin in twips */\n left: number;\n /** Right margin in twips */\n right: number;\n /** Header distance from top in twips */\n header?: number;\n /** Footer distance from bottom in twips */\n footer?: number;\n /** Gutter margin in twips */\n gutter?: number;\n}\n\n/**\n * Column properties\n */\nexport interface Columns {\n /** Number of columns */\n count: number;\n /** Space between columns in twips */\n space?: number;\n /** Equal column widths */\n equalWidth?: boolean;\n /** Show column separator line */\n separator?: boolean;\n /** Individual column widths (for unequal columns) in twips */\n columnWidths?: number[];\n /** Individual column spacings (space after each column) in twips — per ECMA-376 CT_Column */\n columnSpaces?: number[];\n}\n\n/**\n * Page numbering properties\n */\nexport interface PageNumbering {\n /** Starting page number */\n start?: number;\n /** Number format */\n format?: PageNumberFormat;\n}\n\n/**\n * Paper source (printer tray) properties\n */\nexport interface PaperSource {\n /** First page tray number */\n first?: number;\n /** Other pages tray number */\n other?: number;\n}\n\n/**\n * Vertical page alignment\n */\nexport type VerticalAlignment = 'top' | 'center' | 'bottom' | 'both';\n\n/**\n * Text direction\n */\nexport type TextDirection = 'ltr' | 'rtl' | 'tbRl' | 'btLr';\n\n/**\n * Document grid type for East Asian typography\n */\nexport type DocumentGridType = 'default' | 'lines' | 'linesAndChars' | 'snapToChars';\n\n/**\n * Document grid properties\n */\nexport interface DocumentGrid {\n /** Grid type */\n type?: DocumentGridType;\n /** Lines per page */\n linePitch?: number;\n /** Characters per line */\n charSpace?: number;\n}\n\n/**\n * Line numbering restart mode\n */\nexport type LineNumberingRestart = 'newPage' | 'newSection' | 'continuous';\n\n/**\n * Line numbering properties\n * Per ECMA-376 Part 1, Section 17.6.8 (w:lnNumType element)\n */\nexport interface LineNumbering {\n /** Display line number every N lines (countBy attribute) */\n countBy?: number;\n /** Starting line number */\n start?: number;\n /** Distance from text margin in twips */\n distance?: number;\n /** When to restart line numbering */\n restart?: LineNumberingRestart;\n}\n\n/**\n * Footnote/endnote position\n * Per ECMA-376 Part 1 §17.11.6 and §17.11.7\n */\nexport type NotePosition = 'pageBottom' | 'beneathText' | 'sectEnd' | 'docEnd';\n\n/**\n * Note numbering restart mode\n */\nexport type NoteNumberRestart = 'continuous' | 'eachSect' | 'eachPage';\n\n/**\n * Chapter separator character for page numbering\n * Per ECMA-376 Part 1 §17.18.5\n */\nexport type ChapterSeparator = 'colon' | 'emDash' | 'enDash' | 'hyphen' | 'period';\n\n/**\n * Footnote/endnote section-level properties\n */\nexport interface NoteProperties {\n /** Note positioning */\n position?: NotePosition;\n /** Number format */\n numberFormat?: PageNumberFormat;\n /** Starting number */\n startNumber?: number;\n /** Restart numbering mode */\n restart?: NoteNumberRestart;\n}\n\n/**\n * Page border definition for a single side\n * Per ECMA-376 Part 1 §17.6.10\n */\nexport interface PageBorderDef {\n /** Border style (single, double, dashed, etc.) */\n style?: string;\n /** Border size in eighths of a point */\n size?: number;\n /** Border color in hex format (without #) */\n color?: string;\n /** Space between border and page edge/text in points */\n space?: number;\n /** Whether to show shadow */\n shadow?: boolean;\n /** Whether to include frame around page */\n frame?: boolean;\n /** Theme color reference */\n themeColor?: string;\n /** Art border ID (for decorative borders) */\n artId?: number;\n}\n\n/**\n * Page borders configuration\n * Per ECMA-376 Part 1 §17.6.10\n */\nexport interface PageBorders {\n /** Top page border */\n top?: PageBorderDef;\n /** Bottom page border */\n bottom?: PageBorderDef;\n /** Left page border */\n left?: PageBorderDef;\n /** Right page border */\n right?: PageBorderDef;\n /** Whether border is measured from page edge or text edge */\n offsetFrom?: 'page' | 'text';\n /** Display on all pages, first page only, or not first page */\n display?: 'allPages' | 'firstPage' | 'notFirstPage';\n /** Z-ordering relative to text */\n zOrder?: 'front' | 'back';\n}\n\n/**\n * Section properties\n */\nexport interface SectionProperties {\n /** Page size */\n pageSize?: PageSize;\n /** Margins */\n margins?: Margins;\n /** Column layout */\n columns?: Columns;\n /** Section break type */\n type?: SectionType;\n /** Page numbering */\n pageNumbering?: PageNumbering;\n /** Header reference IDs */\n headers?: {\n default?: string; // rId for default header\n first?: string; // rId for first page header\n even?: string; // rId for even page header\n };\n /** Footer reference IDs */\n footers?: {\n default?: string; // rId for default footer\n first?: string; // rId for first page footer\n even?: string; // rId for even page footer\n };\n /** Title page (different first page) */\n titlePage?: boolean;\n /** Vertical page alignment */\n verticalAlignment?: VerticalAlignment;\n /** Paper source (printer tray) */\n paperSource?: PaperSource;\n /** Text direction (LTR/RTL support) */\n textDirection?: TextDirection;\n /** Right-to-left section layout */\n bidi?: boolean;\n /** Gutter on right side (for RTL) */\n rtlGutter?: boolean;\n /** Document grid for snapping text to grid */\n docGrid?: DocumentGrid;\n /** Line numbering configuration */\n lineNumbering?: LineNumbering;\n /** Section-level footnote properties (w:footnotePr) */\n footnotePr?: NoteProperties;\n /** Section-level endnote properties (w:endnotePr) */\n endnotePr?: NoteProperties;\n /** Suppress endnotes in this section (w:noEndnote) */\n noEndnote?: boolean;\n /** Form protection for this section (w:formProt) */\n formProt?: boolean;\n /** Page borders per ECMA-376 Part 1 §17.6.10 */\n pageBorders?: PageBorders;\n /** Printer settings relationship ID (w:printerSettings r:id) */\n printerSettingsId?: string;\n /** Chapter style heading level for page numbering (w:pgNumType w:chapStyle) */\n chapStyle?: number;\n /** Chapter separator for page numbering (w:pgNumType w:chapSep) */\n chapSep?: ChapterSeparator;\n}\n\n/**\n * Represents a document section\n */\n/**\n * Section property change tracking (w:sectPrChange)\n * Per ECMA-376 Part 1 §17.13.5.32\n */\nexport interface SectPrChange {\n author: string;\n date: string;\n id: string;\n previousProperties: Record<string, any>;\n}\n\nexport class Section {\n private properties: SectionProperties;\n /** Tracking context for automatic change tracking */\n private trackingContext?: import('../tracking/TrackingContext').TrackingContext;\n /** Section property change tracking (w:sectPrChange) */\n private sectPrChange?: SectPrChange;\n\n /**\n * Creates a new section\n * @param properties Section properties\n */\n constructor(properties: SectionProperties = {}) {\n // Set defaults only where necessary\n this.properties = {\n pageSize: properties.pageSize || {\n width: PAGE_SIZES.LETTER.width,\n height: PAGE_SIZES.LETTER.height,\n orientation: 'portrait',\n },\n margins: properties.margins || {\n top: 1440, // 1 inch\n bottom: 1440,\n left: 1440,\n right: 1440,\n header: 720, // 0.5 inch\n footer: 720,\n },\n // Default to single column layout\n columns: properties.columns || {\n count: 1,\n },\n // Default to next page section break\n type: properties.type || 'nextPage',\n pageNumbering: properties.pageNumbering,\n headers: properties.headers,\n footers: properties.footers,\n titlePage: properties.titlePage,\n // Phase 4.5 - New properties\n verticalAlignment: properties.verticalAlignment,\n paperSource: properties.paperSource,\n textDirection: properties.textDirection,\n pageBorders: properties.pageBorders,\n };\n }\n\n /**\n * Sets the tracking context for automatic change tracking.\n * Called by Document when track changes is enabled.\n * @internal\n */\n _setTrackingContext(context: import('../tracking/TrackingContext').TrackingContext): void {\n this.trackingContext = context;\n }\n\n /**\n * Gets the section property change tracking info\n */\n getSectPrChange(): SectPrChange | undefined {\n return this.sectPrChange;\n }\n\n /**\n * Sets the section property change tracking info\n */\n setSectPrChange(change: SectPrChange | undefined): void {\n this.sectPrChange = change;\n }\n\n /**\n * Clears the section property change tracking\n */\n clearSectPrChange(): void {\n this.sectPrChange = undefined;\n }\n\n /**\n * Gets the section properties\n */\n getProperties(): SectionProperties {\n return { ...this.properties };\n }\n\n // ============================================================================\n // Individual Property Getters\n // ============================================================================\n\n /**\n * Gets the page size settings\n * @returns Page size object with width, height, and orientation, or undefined\n */\n getPageSize(): PageSize | undefined {\n return this.properties.pageSize ? { ...this.properties.pageSize } : undefined;\n }\n\n /**\n * Gets the page orientation\n * @returns 'portrait' or 'landscape', or undefined if not set\n */\n getOrientation(): PageOrientation | undefined {\n return this.properties.pageSize?.orientation;\n }\n\n /**\n * Gets the margin settings\n * @returns Margins object or undefined if not set\n */\n getMargins(): Margins | undefined {\n return this.properties.margins ? { ...this.properties.margins } : undefined;\n }\n\n /**\n * Gets the column layout settings\n * @returns Columns object or undefined if not set\n */\n getColumns(): Columns | undefined {\n return this.properties.columns ? { ...this.properties.columns } : undefined;\n }\n\n /**\n * Gets the section type (break type)\n * @returns Section type or undefined if not set\n */\n getSectionType(): SectionType | undefined {\n return this.properties.type;\n }\n\n /**\n * Gets the page numbering settings\n * @returns PageNumbering object or undefined if not set\n */\n getPageNumbering(): PageNumbering | undefined {\n return this.properties.pageNumbering ? { ...this.properties.pageNumbering } : undefined;\n }\n\n /**\n * Gets whether this section has a title page (different first page)\n * @returns true if title page is enabled, false otherwise\n */\n getTitlePage(): boolean {\n return this.properties.titlePage ?? false;\n }\n\n /**\n * Gets header references\n * @returns Object with default, first, and even header relationship IDs, or undefined\n */\n getHeaderReferences(): { default?: string; first?: string; even?: string } | undefined {\n return this.properties.headers ? { ...this.properties.headers } : undefined;\n }\n\n /**\n * Gets a specific header reference\n * @param type Header type (default, first, even)\n * @returns Relationship ID or undefined if not set\n */\n getHeaderReference(type: 'default' | 'first' | 'even'): string | undefined {\n return this.properties.headers?.[type];\n }\n\n /**\n * Gets footer references\n * @returns Object with default, first, and even footer relationship IDs, or undefined\n */\n getFooterReferences(): { default?: string; first?: string; even?: string } | undefined {\n return this.properties.footers ? { ...this.properties.footers } : undefined;\n }\n\n /**\n * Gets a specific footer reference\n * @param type Footer type (default, first, even)\n * @returns Relationship ID or undefined if not set\n */\n getFooterReference(type: 'default' | 'first' | 'even'): string | undefined {\n return this.properties.footers?.[type];\n }\n\n /**\n * Gets the vertical page alignment\n * @returns Vertical alignment or undefined if not set\n */\n getVerticalAlignment(): VerticalAlignment | undefined {\n return this.properties.verticalAlignment;\n }\n\n /**\n * Gets the paper source (printer tray) settings\n * @returns PaperSource object or undefined if not set\n */\n getPaperSource(): PaperSource | undefined {\n return this.properties.paperSource ? { ...this.properties.paperSource } : undefined;\n }\n\n /**\n * Gets whether column separator is enabled\n * @returns true if separator is enabled, false otherwise\n */\n getColumnSeparator(): boolean {\n return this.properties.columns?.separator ?? false;\n }\n\n /**\n * Gets custom column widths\n * @returns Array of column widths in twips, or undefined if not set\n */\n getColumnWidths(): number[] | undefined {\n return this.properties.columns?.columnWidths\n ? [...this.properties.columns.columnWidths]\n : undefined;\n }\n\n /**\n * Gets per-column spacing (space after each column) in twips\n * @returns Array of column spacings, or undefined if not set\n */\n getColumnSpaces(): number[] | undefined {\n return this.properties.columns?.columnSpaces\n ? [...this.properties.columns.columnSpaces]\n : undefined;\n }\n\n /**\n * Gets the text direction\n * @returns Text direction or undefined if not set\n */\n getTextDirection(): TextDirection | undefined {\n return this.properties.textDirection;\n }\n\n /**\n * Gets whether the section is bidirectional (RTL)\n * @returns true if bidi is enabled, false otherwise\n */\n getBidi(): boolean {\n return this.properties.bidi ?? false;\n }\n\n /**\n * Gets whether RTL gutter is enabled (gutter on right side)\n * @returns true if RTL gutter is enabled, false otherwise\n */\n getRtlGutter(): boolean {\n return this.properties.rtlGutter ?? false;\n }\n\n /**\n * Gets the document grid settings\n * @returns DocumentGrid object or undefined if not set\n */\n getDocGrid(): DocumentGrid | undefined {\n return this.properties.docGrid ? { ...this.properties.docGrid } : undefined;\n }\n\n // ============================================================================\n // Setters\n // ============================================================================\n\n /**\n * Sets page size\n * @param width Width in twips\n * @param height Height in twips\n * @param orientation Page orientation\n */\n setPageSize(width: number, height: number, orientation: PageOrientation = 'portrait'): this {\n const prev = this.properties.pageSize ? { ...this.properties.pageSize } : undefined;\n this.properties.pageSize = { width, height, orientation };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'pageSize', prev, this.properties.pageSize);\n }\n return this;\n }\n\n /**\n * Sets page orientation\n * @param orientation Page orientation\n */\n setOrientation(orientation: PageOrientation): this {\n const prevOrientation = this.properties.pageSize?.orientation;\n // Capture full pageSize BEFORE mutation for tracking\n const prevPageSize = this.properties.pageSize ? { ...this.properties.pageSize } : undefined;\n if (!this.properties.pageSize) {\n this.properties.pageSize = {\n width: PAGE_SIZES.LETTER.width,\n height: PAGE_SIZES.LETTER.height,\n };\n }\n this.properties.pageSize.orientation = orientation;\n\n // Swap width/height for landscape\n if (\n orientation === 'landscape' &&\n this.properties.pageSize.width < this.properties.pageSize.height\n ) {\n const temp = this.properties.pageSize.width;\n this.properties.pageSize.width = this.properties.pageSize.height;\n this.properties.pageSize.height = temp;\n }\n\n if (this.trackingContext?.isEnabled() && prevOrientation !== orientation) {\n // Track the full pageSize change (not just orientation) since width/height are swapped\n this.trackingContext.trackSectionChange(this, 'pageSize', prevPageSize, {\n ...this.properties.pageSize,\n });\n }\n return this;\n }\n\n /**\n * Sets margins\n * @param margins Margin properties\n */\n setMargins(margins: Margins): this {\n const prev = this.properties.margins ? { ...this.properties.margins } : undefined;\n const existing = this.properties.margins;\n this.properties.margins = {\n top: margins.top,\n bottom: margins.bottom,\n left: margins.left,\n right: margins.right,\n header: margins.header ?? existing?.header ?? 720,\n footer: margins.footer ?? existing?.footer ?? 720,\n gutter: margins.gutter ?? existing?.gutter,\n };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'margins', prev, this.properties.margins);\n }\n return this;\n }\n\n /**\n * Sets column layout\n * @param count Number of columns\n * @param space Space between columns in twips\n */\n setColumns(count: number, space = 720): this {\n const prev = this.properties.columns ? { ...this.properties.columns } : undefined;\n this.properties.columns = {\n count,\n space,\n equalWidth: true,\n };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'columns', prev, this.properties.columns);\n }\n return this;\n }\n\n /**\n * Sets section type\n * @param type Section break type\n */\n setSectionType(type: SectionType): this {\n const prev = this.properties.type;\n this.properties.type = type;\n if (this.trackingContext?.isEnabled() && prev !== type) {\n this.trackingContext.trackSectionChange(this, 'type', prev, type);\n }\n return this;\n }\n\n /**\n * Sets page numbering\n * @param start Starting page number\n * @param format Number format\n */\n setPageNumbering(start?: number, format?: PageNumberFormat): this {\n const prev = this.properties.pageNumbering ? { ...this.properties.pageNumbering } : undefined;\n this.properties.pageNumbering = { start, format };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(\n this,\n 'pageNumbering',\n prev,\n this.properties.pageNumbering\n );\n }\n return this;\n }\n\n /**\n * Sets title page flag (different first page)\n * @param titlePage Whether this section has a different first page\n */\n setTitlePage(titlePage = true): this {\n const prev = this.properties.titlePage;\n this.properties.titlePage = titlePage;\n if (this.trackingContext?.isEnabled() && prev !== titlePage) {\n this.trackingContext.trackSectionChange(this, 'titlePage', prev, titlePage);\n }\n return this;\n }\n\n /**\n * Sets header reference\n * @param type Header type (default, first, even)\n * @param rId Relationship ID\n */\n setHeaderReference(type: 'default' | 'first' | 'even', rId: string): this {\n const prev = this.properties.headers?.[type];\n if (!this.properties.headers) {\n this.properties.headers = {};\n }\n this.properties.headers[type] = rId;\n if (this.trackingContext?.isEnabled() && prev !== rId) {\n this.trackingContext.trackSectionChange(this, `headerReference:${type}`, prev, rId);\n }\n return this;\n }\n\n /**\n * Sets footer reference\n * @param type Footer type (default, first, even)\n * @param rId Relationship ID\n */\n setFooterReference(type: 'default' | 'first' | 'even', rId: string): this {\n const prev = this.properties.footers?.[type];\n if (!this.properties.footers) {\n this.properties.footers = {};\n }\n this.properties.footers[type] = rId;\n if (this.trackingContext?.isEnabled() && prev !== rId) {\n this.trackingContext.trackSectionChange(this, `footerReference:${type}`, prev, rId);\n }\n return this;\n }\n\n /**\n * Sets vertical page alignment\n * Controls how content is vertically aligned on the page\n * @param alignment Vertical alignment (top, center, bottom, both=justified)\n */\n setVerticalAlignment(alignment: VerticalAlignment): this {\n const prev = this.properties.verticalAlignment;\n this.properties.verticalAlignment = alignment;\n if (this.trackingContext?.isEnabled() && prev !== alignment) {\n this.trackingContext.trackSectionChange(this, 'verticalAlignment', prev, alignment);\n }\n return this;\n }\n\n /**\n * Sets paper source (printer tray selection)\n * @param first First page tray number\n * @param other Other pages tray number\n */\n setPaperSource(first?: number, other?: number): this {\n const prev = this.properties.paperSource ? { ...this.properties.paperSource } : undefined;\n this.properties.paperSource = { first, other };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(\n this,\n 'paperSource',\n prev,\n this.properties.paperSource\n );\n }\n return this;\n }\n\n /**\n * Sets column separator line\n * Shows a vertical line between columns\n * @param separator Whether to show column separator line\n */\n setColumnSeparator(separator = true): this {\n const prev = this.properties.columns?.separator;\n if (!this.properties.columns) {\n this.properties.columns = { count: 1 };\n }\n this.properties.columns.separator = separator;\n if (this.trackingContext?.isEnabled() && prev !== separator) {\n this.trackingContext.trackSectionChange(this, 'columnSeparator', prev, separator);\n }\n return this;\n }\n\n /**\n * Sets custom column widths (for unequal columns)\n * @param widths Array of column widths in twips\n */\n setColumnWidths(widths: number[]): this {\n const prev = this.properties.columns ? { ...this.properties.columns } : undefined;\n if (!this.properties.columns) {\n this.properties.columns = { count: widths.length };\n }\n this.properties.columns.columnWidths = widths;\n this.properties.columns.equalWidth = false;\n this.properties.columns.count = widths.length;\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'columns', prev, {\n ...this.properties.columns,\n });\n }\n return this;\n }\n\n /**\n * Sets text direction for the section\n * @param direction Text direction (ltr=left-to-right, rtl=right-to-left, tbRl=top-to-bottom-right-to-left, btLr=bottom-to-top-left-to-right)\n */\n setTextDirection(direction: TextDirection): this {\n const prev = this.properties.textDirection;\n this.properties.textDirection = direction;\n if (this.trackingContext?.isEnabled() && prev !== direction) {\n this.trackingContext.trackSectionChange(this, 'textDirection', prev, direction);\n }\n return this;\n }\n\n /**\n * Sets line numbering for the section\n * Per ECMA-376 Part 1, Section 17.6.8 (w:lnNumType)\n * @param options Line numbering configuration\n */\n setLineNumbering(options: LineNumbering): this {\n const prev = this.properties.lineNumbering ? { ...this.properties.lineNumbering } : undefined;\n this.properties.lineNumbering = { ...options };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(\n this,\n 'lineNumbering',\n prev,\n this.properties.lineNumbering\n );\n }\n return this;\n }\n\n /**\n * Gets line numbering configuration\n * @returns Line numbering settings or undefined if not set\n */\n getLineNumbering(): LineNumbering | undefined {\n return this.properties.lineNumbering ? { ...this.properties.lineNumbering } : undefined;\n }\n\n /**\n * Clears line numbering for the section\n */\n clearLineNumbering(): this {\n this.properties.lineNumbering = undefined;\n return this;\n }\n\n /**\n * Sets section-level footnote properties\n * Per ECMA-376 Part 1 §17.11.6\n */\n setFootnoteProperties(props: NoteProperties): this {\n const prev = this.properties.footnotePr ? { ...this.properties.footnotePr } : undefined;\n this.properties.footnotePr = { ...props };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'footnotePr', prev, this.properties.footnotePr);\n }\n return this;\n }\n\n /**\n * Sets section-level endnote properties\n * Per ECMA-376 Part 1 §17.11.7\n */\n setEndnoteProperties(props: NoteProperties): this {\n const prev = this.properties.endnotePr ? { ...this.properties.endnotePr } : undefined;\n this.properties.endnotePr = { ...props };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'endnotePr', prev, this.properties.endnotePr);\n }\n return this;\n }\n\n /**\n * Sets whether endnotes are suppressed in this section\n * Per ECMA-376 Part 1 §17.6.14\n */\n setNoEndnote(noEndnote = true): this {\n const prev = this.properties.noEndnote;\n this.properties.noEndnote = noEndnote;\n if (this.trackingContext?.isEnabled() && prev !== noEndnote) {\n this.trackingContext.trackSectionChange(this, 'noEndnote', prev, noEndnote);\n }\n return this;\n }\n\n /**\n * Sets form protection for this section\n * Per ECMA-376 Part 1 §17.6.4\n */\n setFormProtection(formProt = true): this {\n const prev = this.properties.formProt;\n this.properties.formProt = formProt;\n if (this.trackingContext?.isEnabled() && prev !== formProt) {\n this.trackingContext.trackSectionChange(this, 'formProt', prev, formProt);\n }\n return this;\n }\n\n /**\n * Sets printer settings relationship ID\n * Per ECMA-376 Part 1 §17.6.6\n */\n setPrinterSettings(rId: string): this {\n const prev = this.properties.printerSettingsId;\n this.properties.printerSettingsId = rId;\n if (this.trackingContext?.isEnabled() && prev !== rId) {\n this.trackingContext.trackSectionChange(this, 'printerSettings', prev, rId);\n }\n return this;\n }\n\n /**\n * Sets chapter numbering for page numbers\n * Per ECMA-376 Part 1 §17.6.12\n * @param chapStyle - Heading level (1-9) to use for chapter numbering\n * @param chapSep - Separator between chapter and page number\n */\n setChapterNumbering(chapStyle: number, chapSep?: ChapterSeparator): this {\n const prevStyle = this.properties.chapStyle;\n const prevSep = this.properties.chapSep;\n this.properties.chapStyle = chapStyle;\n if (chapSep) this.properties.chapSep = chapSep;\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(\n this,\n 'chapterNumbering',\n { chapStyle: prevStyle, chapSep: prevSep },\n { chapStyle, chapSep: chapSep || prevSep }\n );\n }\n return this;\n }\n\n /**\n * Generates WordprocessingML XML for section properties\n */\n toXML(): XMLElement {\n const children: XMLElement[] = [];\n\n // Header references\n if (this.properties.headers) {\n if (this.properties.headers.first) {\n children.push(\n XMLBuilder.wSelf('headerReference', {\n 'w:type': 'first',\n 'r:id': this.properties.headers.first,\n })\n );\n }\n if (this.properties.headers.even) {\n children.push(\n XMLBuilder.wSelf('headerReference', {\n 'w:type': 'even',\n 'r:id': this.properties.headers.even,\n })\n );\n }\n if (this.properties.headers.default) {\n children.push(\n XMLBuilder.wSelf('headerReference', {\n 'w:type': 'default',\n 'r:id': this.properties.headers.default,\n })\n );\n }\n }\n\n // Footer references\n if (this.properties.footers) {\n if (this.properties.footers.first) {\n children.push(\n XMLBuilder.wSelf('footerReference', {\n 'w:type': 'first',\n 'r:id': this.properties.footers.first,\n })\n );\n }\n if (this.properties.footers.even) {\n children.push(\n XMLBuilder.wSelf('footerReference', {\n 'w:type': 'even',\n 'r:id': this.properties.footers.even,\n })\n );\n }\n if (this.properties.footers.default) {\n children.push(\n XMLBuilder.wSelf('footerReference', {\n 'w:type': 'default',\n 'r:id': this.properties.footers.default,\n })\n );\n }\n }\n\n // CT_SectPr element order per ECMA-376:\n // footnotePr → endnotePr → type → pgSz → pgMar → paperSrc → pgBorders →\n // lnNumType → pgNumType → cols → formProt → vAlign → noEndnote → titlePg →\n // textDirection → bidi → rtlGutter → docGrid → printerSettings → sectPrChange\n\n // Footnote properties (w:footnotePr)\n if (this.properties.footnotePr) {\n const fnChildren: XMLElement[] = [];\n if (this.properties.footnotePr.position) {\n fnChildren.push(XMLBuilder.wSelf('pos', { 'w:val': this.properties.footnotePr.position }));\n }\n if (this.properties.footnotePr.numberFormat) {\n fnChildren.push(\n XMLBuilder.wSelf('numFmt', { 'w:val': this.properties.footnotePr.numberFormat })\n );\n }\n if (this.properties.footnotePr.startNumber !== undefined) {\n fnChildren.push(\n XMLBuilder.wSelf('numStart', {\n 'w:val': this.properties.footnotePr.startNumber.toString(),\n })\n );\n }\n if (this.properties.footnotePr.restart) {\n fnChildren.push(\n XMLBuilder.wSelf('numRestart', { 'w:val': this.properties.footnotePr.restart })\n );\n }\n if (fnChildren.length > 0) {\n children.push(XMLBuilder.w('footnotePr', undefined, fnChildren));\n }\n }\n\n // Endnote properties (w:endnotePr)\n if (this.properties.endnotePr) {\n const enChildren: XMLElement[] = [];\n if (this.properties.endnotePr.position) {\n enChildren.push(XMLBuilder.wSelf('pos', { 'w:val': this.properties.endnotePr.position }));\n }\n if (this.properties.endnotePr.numberFormat) {\n enChildren.push(\n XMLBuilder.wSelf('numFmt', { 'w:val': this.properties.endnotePr.numberFormat })\n );\n }\n if (this.properties.endnotePr.startNumber !== undefined) {\n enChildren.push(\n XMLBuilder.wSelf('numStart', {\n 'w:val': this.properties.endnotePr.startNumber.toString(),\n })\n );\n }\n if (this.properties.endnotePr.restart) {\n enChildren.push(\n XMLBuilder.wSelf('numRestart', { 'w:val': this.properties.endnotePr.restart })\n );\n }\n if (enChildren.length > 0) {\n children.push(XMLBuilder.w('endnotePr', undefined, enChildren));\n }\n }\n\n // Section type\n if (this.properties.type) {\n children.push(XMLBuilder.wSelf('type', { 'w:val': this.properties.type }));\n }\n\n // Page size\n if (this.properties.pageSize) {\n const attrs: Record<string, string> = {\n 'w:w': this.properties.pageSize.width.toString(),\n 'w:h': this.properties.pageSize.height.toString(),\n };\n if (this.properties.pageSize.orientation === 'landscape') {\n attrs['w:orient'] = 'landscape';\n }\n if (this.properties.pageSize.code !== undefined) {\n attrs['w:code'] = this.properties.pageSize.code.toString();\n }\n children.push(XMLBuilder.wSelf('pgSz', attrs));\n }\n\n // Margins\n if (this.properties.margins) {\n const attrs: Record<string, string> = {\n 'w:top': this.properties.margins.top.toString(),\n 'w:right': this.properties.margins.right.toString(),\n 'w:bottom': this.properties.margins.bottom.toString(),\n 'w:left': this.properties.margins.left.toString(),\n };\n attrs['w:header'] = (this.properties.margins.header ?? 720).toString();\n attrs['w:footer'] = (this.properties.margins.footer ?? 720).toString();\n if (this.properties.margins.gutter !== undefined) {\n attrs['w:gutter'] = this.properties.margins.gutter.toString();\n }\n children.push(XMLBuilder.wSelf('pgMar', attrs));\n }\n\n // Paper source\n if (this.properties.paperSource) {\n const attrs: Record<string, string> = {};\n if (this.properties.paperSource.first !== undefined) {\n attrs['w:first'] = this.properties.paperSource.first.toString();\n }\n if (this.properties.paperSource.other !== undefined) {\n attrs['w:other'] = this.properties.paperSource.other.toString();\n }\n if (Object.keys(attrs).length > 0) {\n children.push(XMLBuilder.wSelf('paperSrc', attrs));\n }\n }\n\n // Page borders per ECMA-376 Part 1 §17.6.10\n if (this.properties.pageBorders) {\n const pgBorders = this.properties.pageBorders;\n const pgBordersAttrs: Record<string, string> = {};\n if (pgBorders.offsetFrom) pgBordersAttrs['w:offsetFrom'] = pgBorders.offsetFrom;\n if (pgBorders.display) pgBordersAttrs['w:display'] = pgBorders.display;\n if (pgBorders.zOrder) pgBordersAttrs['w:zOrder'] = pgBorders.zOrder;\n\n const borderChildren: XMLElement[] = [];\n const buildBorder = (side: string, def: PageBorderDef) => {\n const bAttrs: Record<string, string | number> = {};\n if (def.style) bAttrs['w:val'] = def.style;\n // ECMA-376 Part 1 §17.18.2: sz valid range 2-96 (eighths of a point)\n if (def.size !== undefined) bAttrs['w:sz'] = Math.max(2, Math.min(96, def.size));\n if (def.color) bAttrs['w:color'] = def.color;\n // ECMA-376 Part 1 §17.18.88: space valid range 0-31680 (points)\n if (def.space !== undefined) bAttrs['w:space'] = Math.max(0, Math.min(31680, def.space));\n if (def.shadow) bAttrs['w:shadow'] = '1';\n if (def.frame) bAttrs['w:frame'] = '1';\n if (def.themeColor) bAttrs['w:themeColor'] = def.themeColor;\n if (def.artId !== undefined) bAttrs['w:id'] = def.artId;\n borderChildren.push(XMLBuilder.wSelf(side, bAttrs));\n };\n\n if (pgBorders.top) buildBorder('top', pgBorders.top);\n if (pgBorders.left) buildBorder('left', pgBorders.left);\n if (pgBorders.bottom) buildBorder('bottom', pgBorders.bottom);\n if (pgBorders.right) buildBorder('right', pgBorders.right);\n\n children.push(XMLBuilder.w('pgBorders', pgBordersAttrs, borderChildren));\n }\n\n // Line numbering (w:lnNumType)\n if (this.properties.lineNumbering) {\n const attrs: Record<string, string> = {};\n if (this.properties.lineNumbering.countBy !== undefined) {\n attrs['w:countBy'] = this.properties.lineNumbering.countBy.toString();\n }\n if (this.properties.lineNumbering.start !== undefined) {\n attrs['w:start'] = this.properties.lineNumbering.start.toString();\n }\n if (this.properties.lineNumbering.distance !== undefined) {\n attrs['w:distance'] = this.properties.lineNumbering.distance.toString();\n }\n if (this.properties.lineNumbering.restart) {\n attrs['w:restart'] = this.properties.lineNumbering.restart;\n }\n if (Object.keys(attrs).length > 0) {\n children.push(XMLBuilder.wSelf('lnNumType', attrs));\n }\n }\n\n // Page numbering\n if (this.properties.pageNumbering || this.properties.chapStyle !== undefined) {\n const attrs: Record<string, string> = {};\n if (this.properties.pageNumbering?.start !== undefined) {\n attrs['w:start'] = this.properties.pageNumbering.start.toString();\n }\n if (this.properties.pageNumbering?.format) {\n attrs['w:fmt'] = this.properties.pageNumbering.format;\n }\n if (this.properties.chapStyle !== undefined) {\n attrs['w:chapStyle'] = this.properties.chapStyle.toString();\n }\n if (this.properties.chapSep) {\n attrs['w:chapSep'] = this.properties.chapSep;\n }\n if (Object.keys(attrs).length > 0) {\n children.push(XMLBuilder.wSelf('pgNumType', attrs));\n }\n }\n\n // Columns\n if (this.properties.columns) {\n const attrs: Record<string, string> = {\n 'w:num': this.properties.columns.count.toString(),\n };\n if (this.properties.columns.space !== undefined) {\n attrs['w:space'] = this.properties.columns.space.toString();\n }\n if (this.properties.columns.equalWidth !== undefined) {\n attrs['w:equalWidth'] = this.properties.columns.equalWidth ? '1' : '0';\n }\n if (this.properties.columns.separator !== undefined) {\n attrs['w:sep'] = this.properties.columns.separator ? '1' : '0';\n }\n\n const colChildren: XMLElement[] = [];\n if (this.properties.columns.columnWidths) {\n const widths = this.properties.columns.columnWidths;\n const spaces = this.properties.columns.columnSpaces;\n for (let i = 0; i < widths.length; i++) {\n const colAttrs: Record<string, string | number> = {\n 'w:w': widths[i]!.toString(),\n };\n const spaceVal = spaces?.[i];\n if (spaceVal !== undefined) {\n colAttrs['w:space'] = spaceVal.toString();\n }\n colChildren.push(XMLBuilder.wSelf('col', colAttrs));\n }\n }\n\n children.push(\n colChildren.length > 0\n ? XMLBuilder.w('cols', attrs, colChildren)\n : XMLBuilder.wSelf('cols', attrs)\n );\n }\n\n // Form protection (w:formProt)\n if (this.properties.formProt) {\n children.push(XMLBuilder.wSelf('formProt'));\n }\n\n // Vertical alignment\n if (this.properties.verticalAlignment) {\n children.push(XMLBuilder.wSelf('vAlign', { 'w:val': this.properties.verticalAlignment }));\n }\n\n // Suppress endnotes (w:noEndnote)\n if (this.properties.noEndnote) {\n children.push(XMLBuilder.wSelf('noEndnote'));\n }\n\n // Title page\n if (this.properties.titlePage) {\n children.push(XMLBuilder.wSelf('titlePg', { 'w:val': '1' }));\n }\n\n // Text direction (map to valid ST_TextDirection values per ECMA-376 §17.18.93)\n if (this.properties.textDirection) {\n const textDirMap: Record<string, string> = {\n ltr: 'lrTb',\n rtl: 'tbRl',\n tbRl: 'tbRl',\n btLr: 'btLr',\n lrTb: 'lrTb',\n lrTbV: 'lrTbV',\n tbRlV: 'tbRlV',\n tbLrV: 'tbLrV',\n };\n const val = textDirMap[this.properties.textDirection] || this.properties.textDirection;\n children.push(XMLBuilder.wSelf('textDirection', { 'w:val': val }));\n }\n\n // Bidirectional section (RTL)\n if (this.properties.bidi) {\n children.push(XMLBuilder.wSelf('bidi'));\n }\n\n // RTL gutter (gutter on right side)\n if (this.properties.rtlGutter) {\n children.push(XMLBuilder.wSelf('rtlGutter'));\n }\n\n // Document grid\n if (this.properties.docGrid) {\n const attrs: Record<string, string> = {};\n if (this.properties.docGrid.type) {\n attrs['w:type'] = this.properties.docGrid.type;\n }\n if (this.properties.docGrid.linePitch !== undefined) {\n attrs['w:linePitch'] = this.properties.docGrid.linePitch.toString();\n }\n if (this.properties.docGrid.charSpace !== undefined) {\n attrs['w:charSpace'] = this.properties.docGrid.charSpace.toString();\n }\n if (Object.keys(attrs).length > 0) {\n children.push(XMLBuilder.wSelf('docGrid', attrs));\n }\n }\n\n // Printer settings (w:printerSettings)\n if (this.properties.printerSettingsId) {\n children.push(\n XMLBuilder.wSelf('printerSettings', {\n 'r:id': this.properties.printerSettingsId,\n })\n );\n }\n\n // Add section property change (w:sectPrChange) per ECMA-376 Part 1 §17.13.5.32\n // Must be last child of w:sectPr\n if (this.sectPrChange) {\n const changeAttrs: Record<string, string | number> = {\n 'w:id': this.sectPrChange.id,\n 'w:author': this.sectPrChange.author,\n 'w:date': this.sectPrChange.date,\n };\n const prevChildren: XMLElement[] = [];\n const prev = this.sectPrChange.previousProperties;\n if (prev) {\n // Ordered per CT_SectPrBase (ECMA-376 §17.6.18):\n // footnotePr → endnotePr → type → pgSz → pgMar → paperSrc → pgBorders →\n // lnNumType → pgNumType → cols → formProt → vAlign → noEndnote → titlePg →\n // textDirection → bidi → rtlGutter → docGrid\n if (prev.footnotePr) {\n const fnChildren: XMLElement[] = [];\n if (prev.footnotePr.position) {\n fnChildren.push(XMLBuilder.wSelf('pos', { 'w:val': prev.footnotePr.position }));\n }\n if (prev.footnotePr.numberFormat) {\n fnChildren.push(XMLBuilder.wSelf('numFmt', { 'w:val': prev.footnotePr.numberFormat }));\n }\n if (prev.footnotePr.startNumber !== undefined) {\n fnChildren.push(\n XMLBuilder.wSelf('numStart', { 'w:val': prev.footnotePr.startNumber.toString() })\n );\n }\n if (prev.footnotePr.restart) {\n fnChildren.push(XMLBuilder.wSelf('numRestart', { 'w:val': prev.footnotePr.restart }));\n }\n if (fnChildren.length > 0) {\n prevChildren.push(XMLBuilder.w('footnotePr', undefined, fnChildren));\n }\n }\n if (prev.endnotePr) {\n const enChildren: XMLElement[] = [];\n if (prev.endnotePr.position) {\n enChildren.push(XMLBuilder.wSelf('pos', { 'w:val': prev.endnotePr.position }));\n }\n if (prev.endnotePr.numberFormat) {\n enChildren.push(XMLBuilder.wSelf('numFmt', { 'w:val': prev.endnotePr.numberFormat }));\n }\n if (prev.endnotePr.startNumber !== undefined) {\n enChildren.push(\n XMLBuilder.wSelf('numStart', { 'w:val': prev.endnotePr.startNumber.toString() })\n );\n }\n if (prev.endnotePr.restart) {\n enChildren.push(XMLBuilder.wSelf('numRestart', { 'w:val': prev.endnotePr.restart }));\n }\n if (enChildren.length > 0) {\n prevChildren.push(XMLBuilder.w('endnotePr', undefined, enChildren));\n }\n }\n if (prev.type) {\n prevChildren.push(XMLBuilder.wSelf('type', { 'w:val': prev.type }));\n }\n if (prev.pageSize) {\n const pgSzAttrs: Record<string, string> = {\n 'w:w': prev.pageSize.width?.toString() || '12240',\n 'w:h': prev.pageSize.height?.toString() || '15840',\n };\n if (prev.pageSize.orientation === 'landscape') {\n pgSzAttrs['w:orient'] = 'landscape';\n }\n if (prev.pageSize.code !== undefined) {\n pgSzAttrs['w:code'] = prev.pageSize.code.toString();\n }\n prevChildren.push(XMLBuilder.wSelf('pgSz', pgSzAttrs));\n }\n if (prev.margins) {\n const pgMarAttrs: Record<string, string> = {};\n if (prev.margins.top !== undefined) pgMarAttrs['w:top'] = prev.margins.top.toString();\n if (prev.margins.bottom !== undefined)\n pgMarAttrs['w:bottom'] = prev.margins.bottom.toString();\n if (prev.margins.left !== undefined) pgMarAttrs['w:left'] = prev.margins.left.toString();\n if (prev.margins.right !== undefined)\n pgMarAttrs['w:right'] = prev.margins.right.toString();\n if (prev.margins.header !== undefined)\n pgMarAttrs['w:header'] = prev.margins.header.toString();\n if (prev.margins.footer !== undefined)\n pgMarAttrs['w:footer'] = prev.margins.footer.toString();\n if (prev.margins.gutter !== undefined)\n pgMarAttrs['w:gutter'] = prev.margins.gutter.toString();\n prevChildren.push(XMLBuilder.wSelf('pgMar', pgMarAttrs));\n }\n if (prev.paperSource) {\n const psAttrs: Record<string, string> = {};\n if (prev.paperSource.first !== undefined) {\n psAttrs['w:first'] = prev.paperSource.first.toString();\n }\n if (prev.paperSource.other !== undefined) {\n psAttrs['w:other'] = prev.paperSource.other.toString();\n }\n if (Object.keys(psAttrs).length > 0) {\n prevChildren.push(XMLBuilder.wSelf('paperSrc', psAttrs));\n }\n }\n if (prev.pageBorders) {\n const pgb = prev.pageBorders;\n const pgbAttrs: Record<string, string> = {};\n if (pgb.offsetFrom) pgbAttrs['w:offsetFrom'] = pgb.offsetFrom;\n if (pgb.display) pgbAttrs['w:display'] = pgb.display;\n if (pgb.zOrder) pgbAttrs['w:zOrder'] = pgb.zOrder;\n const borderChildren: XMLElement[] = [];\n const buildPrevBorder = (side: string, def: PageBorderDef) => {\n const bAttrs: Record<string, string | number> = {};\n if (def.style) bAttrs['w:val'] = def.style;\n if (def.size !== undefined) bAttrs['w:sz'] = Math.max(2, Math.min(96, def.size));\n if (def.color) bAttrs['w:color'] = def.color;\n if (def.space !== undefined)\n bAttrs['w:space'] = Math.max(0, Math.min(31680, def.space));\n if (def.shadow) bAttrs['w:shadow'] = '1';\n if (def.frame) bAttrs['w:frame'] = '1';\n if (def.themeColor) bAttrs['w:themeColor'] = def.themeColor;\n if (def.artId !== undefined) bAttrs['w:id'] = def.artId;\n borderChildren.push(XMLBuilder.wSelf(side, bAttrs));\n };\n if (pgb.top) buildPrevBorder('top', pgb.top);\n if (pgb.left) buildPrevBorder('left', pgb.left);\n if (pgb.bottom) buildPrevBorder('bottom', pgb.bottom);\n if (pgb.right) buildPrevBorder('right', pgb.right);\n if (borderChildren.length > 0) {\n prevChildren.push(XMLBuilder.w('pgBorders', pgbAttrs, borderChildren));\n }\n }\n if (prev.lineNumbering) {\n const lnAttrs: Record<string, string> = {};\n if (prev.lineNumbering.countBy !== undefined)\n lnAttrs['w:countBy'] = prev.lineNumbering.countBy.toString();\n if (prev.lineNumbering.start !== undefined)\n lnAttrs['w:start'] = prev.lineNumbering.start.toString();\n if (prev.lineNumbering.restart) lnAttrs['w:restart'] = prev.lineNumbering.restart;\n if (prev.lineNumbering.distance !== undefined)\n lnAttrs['w:distance'] = prev.lineNumbering.distance.toString();\n if (Object.keys(lnAttrs).length > 0) {\n prevChildren.push(XMLBuilder.wSelf('lnNumType', lnAttrs));\n }\n }\n if (prev.pageNumbering) {\n const pnAttrs: Record<string, string> = {};\n if (prev.pageNumbering.start !== undefined)\n pnAttrs['w:start'] = prev.pageNumbering.start.toString();\n if (prev.pageNumbering.format) pnAttrs['w:fmt'] = prev.pageNumbering.format;\n if (Object.keys(pnAttrs).length > 0) {\n prevChildren.push(XMLBuilder.wSelf('pgNumType', pnAttrs));\n }\n }\n if (prev.columns) {\n const colAttrs: Record<string, string> = {\n 'w:num': prev.columns.count?.toString() || '1',\n };\n if (prev.columns.space !== undefined) colAttrs['w:space'] = prev.columns.space.toString();\n if (prev.columns.equalWidth !== undefined) {\n colAttrs['w:equalWidth'] = prev.columns.equalWidth ? '1' : '0';\n }\n if (prev.columns.separator !== undefined) {\n colAttrs['w:sep'] = prev.columns.separator ? '1' : '0';\n }\n const colChildren: XMLElement[] = [];\n if (prev.columns.columnWidths) {\n const widths = prev.columns.columnWidths;\n const spaces = prev.columns.columnSpaces;\n for (let i = 0; i < widths.length; i++) {\n const cAttrs: Record<string, string | number> = {\n 'w:w': widths[i]!.toString(),\n };\n const spaceVal = spaces?.[i];\n if (spaceVal !== undefined) {\n cAttrs['w:space'] = spaceVal.toString();\n }\n colChildren.push(XMLBuilder.wSelf('col', cAttrs));\n }\n }\n prevChildren.push(\n colChildren.length > 0\n ? XMLBuilder.w('cols', colAttrs, colChildren)\n : XMLBuilder.wSelf('cols', colAttrs)\n );\n }\n if (prev.formProt) {\n prevChildren.push(XMLBuilder.wSelf('formProt'));\n }\n if (prev.verticalAlignment) {\n prevChildren.push(XMLBuilder.wSelf('vAlign', { 'w:val': prev.verticalAlignment }));\n }\n if (prev.noEndnote) {\n prevChildren.push(XMLBuilder.wSelf('noEndnote'));\n }\n if (prev.titlePage) {\n prevChildren.push(XMLBuilder.wSelf('titlePg'));\n }\n if (prev.textDirection) {\n const tdMap: Record<string, string> = {\n ltr: 'lrTb',\n rtl: 'tbRl',\n tbRl: 'tbRl',\n btLr: 'btLr',\n lrTb: 'lrTb',\n lrTbV: 'lrTbV',\n tbRlV: 'tbRlV',\n tbLrV: 'tbLrV',\n };\n prevChildren.push(\n XMLBuilder.wSelf('textDirection', {\n 'w:val': tdMap[prev.textDirection] || prev.textDirection,\n })\n );\n }\n if (prev.bidi) {\n prevChildren.push(XMLBuilder.wSelf('bidi'));\n }\n if (prev.rtlGutter) {\n prevChildren.push(XMLBuilder.wSelf('rtlGutter'));\n }\n if (prev.docGrid) {\n const dgAttrs: Record<string, string> = {};\n if (prev.docGrid.type) dgAttrs['w:type'] = prev.docGrid.type;\n if (prev.docGrid.linePitch !== undefined)\n dgAttrs['w:linePitch'] = prev.docGrid.linePitch.toString();\n if (prev.docGrid.charSpace !== undefined)\n dgAttrs['w:charSpace'] = prev.docGrid.charSpace.toString();\n if (Object.keys(dgAttrs).length > 0) {\n prevChildren.push(XMLBuilder.wSelf('docGrid', dgAttrs));\n }\n }\n }\n const prevSectPr = XMLBuilder.w('sectPr', undefined, prevChildren);\n children.push(XMLBuilder.w('sectPrChange', changeAttrs, [prevSectPr]));\n }\n\n return XMLBuilder.w('sectPr', undefined, children);\n }\n\n /**\n * Creates a deep clone of this section\n * @returns New Section instance with copied properties\n */\n clone(): Section {\n // Deep clone all nested objects\n const clonedProperties: SectionProperties = {};\n\n if (this.properties.pageSize) {\n clonedProperties.pageSize = { ...this.properties.pageSize };\n }\n\n if (this.properties.margins) {\n clonedProperties.margins = { ...this.properties.margins };\n }\n\n if (this.properties.columns) {\n clonedProperties.columns = {\n ...this.properties.columns,\n columnWidths: this.properties.columns.columnWidths\n ? [...this.properties.columns.columnWidths]\n : undefined,\n columnSpaces: this.properties.columns.columnSpaces\n ? [...this.properties.columns.columnSpaces]\n : undefined,\n };\n }\n\n if (this.properties.pageNumbering) {\n clonedProperties.pageNumbering = { ...this.properties.pageNumbering };\n }\n\n if (this.properties.headers) {\n clonedProperties.headers = { ...this.properties.headers };\n }\n\n if (this.properties.footers) {\n clonedProperties.footers = { ...this.properties.footers };\n }\n\n if (this.properties.paperSource) {\n clonedProperties.paperSource = { ...this.properties.paperSource };\n }\n\n if (this.properties.docGrid) {\n clonedProperties.docGrid = { ...this.properties.docGrid };\n }\n\n if (this.properties.lineNumbering) {\n clonedProperties.lineNumbering = { ...this.properties.lineNumbering };\n }\n\n // Copy primitive properties\n clonedProperties.type = this.properties.type;\n clonedProperties.titlePage = this.properties.titlePage;\n clonedProperties.verticalAlignment = this.properties.verticalAlignment;\n clonedProperties.textDirection = this.properties.textDirection;\n clonedProperties.bidi = this.properties.bidi;\n clonedProperties.rtlGutter = this.properties.rtlGutter;\n\n return new Section(clonedProperties);\n }\n\n /**\n * Creates a section with default properties\n */\n static create(properties?: SectionProperties): Section {\n return new Section(properties);\n }\n\n /**\n * Creates a letter-sized section (8.5\" x 11\")\n */\n static createLetter(): Section {\n return new Section({\n pageSize: {\n width: PAGE_SIZES.LETTER.width,\n height: PAGE_SIZES.LETTER.height,\n orientation: 'portrait',\n },\n });\n }\n\n /**\n * Creates an A4-sized section (21cm x 29.7cm)\n */\n static createA4(): Section {\n return new Section({\n pageSize: {\n width: PAGE_SIZES.A4.width,\n height: PAGE_SIZES.A4.height,\n orientation: 'portrait',\n },\n });\n }\n\n /**\n * Creates a legal-sized section (8.5\" x 14\")\n */\n static createLegal(): Section {\n return new Section({\n pageSize: {\n width: PAGE_SIZES.LEGAL.width,\n height: PAGE_SIZES.LEGAL.height,\n orientation: 'portrait',\n },\n });\n }\n\n /**\n * Creates a tabloid-sized section (11\" x 17\")\n */\n static createTabloid(): Section {\n return new Section({\n pageSize: {\n width: PAGE_SIZES.TABLOID.width,\n height: PAGE_SIZES.TABLOID.height,\n orientation: 'portrait',\n },\n });\n }\n\n /**\n * Creates an A3-sized section (29.7cm x 42cm)\n */\n static createA3(): Section {\n return new Section({\n pageSize: {\n width: PAGE_SIZES.A3.width,\n height: PAGE_SIZES.A3.height,\n orientation: 'portrait',\n },\n });\n }\n\n /**\n * Creates a landscape section\n *\n * @param pageSize - Page size name (default: 'letter')\n * @returns Section with swapped width/height and landscape orientation\n *\n * @example\n * ```typescript\n * const landscape = Section.createLandscape('a4');\n * const legalLandscape = Section.createLandscape('legal');\n * ```\n */\n static createLandscape(\n pageSize: 'letter' | 'a4' | 'legal' | 'tabloid' | 'a3' = 'letter'\n ): Section {\n const sizeMap: Record<string, { width: number; height: number }> = {\n letter: PAGE_SIZES.LETTER,\n a4: PAGE_SIZES.A4,\n legal: PAGE_SIZES.LEGAL,\n tabloid: PAGE_SIZES.TABLOID,\n a3: PAGE_SIZES.A3,\n };\n const size = sizeMap[pageSize] ?? PAGE_SIZES.LETTER;\n return new Section({\n pageSize: {\n width: size.height, // Swap for landscape\n height: size.width,\n orientation: 'landscape',\n },\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Section.js","sourceRoot":"","sources":["../../src/elements/Section.ts"],"names":[],"mappings":";;;AAOA,wDAA8D;AAC9D,gDAA+C;AAoW/C,MAAa,OAAO;IACV,UAAU,CAAoB;IAE9B,eAAe,CAA4D;IAE3E,YAAY,CAAgB;IAMpC,YAAY,aAAgC,EAAE;QAQ5C,IAAI,CAAC,UAAU,GAAG;YAChB,GAAG,UAAU;YACb,QAAQ,EAAE,UAAU,CAAC,QAAQ,IAAI;gBAC/B,KAAK,EAAE,qBAAU,CAAC,MAAM,CAAC,KAAK;gBAC9B,MAAM,EAAE,qBAAU,CAAC,MAAM,CAAC,MAAM;gBAChC,WAAW,EAAE,UAAU;aACxB;YACD,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI;gBAC7B,GAAG,EAAE,IAAI;gBACT,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,GAAG;aACZ;YAED,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI;gBAC7B,KAAK,EAAE,CAAC;aACT;YAED,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,UAAU;SACpC,CAAC;IACJ,CAAC;IAOD,mBAAmB,CAAC,OAAiE;QACnF,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;IACjC,CAAC;IAKD,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAKD,eAAe,CAAC,MAAgC;QAC9C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;IAC7B,CAAC;IAKD,iBAAiB;QACf,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAChC,CAAC;IAKD,aAAa;QACX,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC;IAUD,WAAW;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,CAAC;IAMD,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/C,CAAC;IAMD,UAAU;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,CAAC;IAMD,UAAU;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,CAAC;IAMD,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;IAMD,gBAAgB;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,CAAC;IAMD,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC;IAC5C,CAAC;IAMD,mBAAmB;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,CAAC;IAOD,kBAAkB,CAAC,IAAkC;QACnD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAMD,mBAAmB;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,CAAC;IAOD,kBAAkB,CAAC,IAAkC;QACnD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAMD,oBAAoB;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;IAC3C,CAAC;IAMD,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,CAAC;IAMD,kBAAkB;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,IAAI,KAAK,CAAC;IACrD,CAAC;IAMD,eAAe;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY;YAC1C,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;YAC3C,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAMD,eAAe;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY;YAC1C,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;YAC3C,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAMD,gBAAgB;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IACvC,CAAC;IAMD,OAAO;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,KAAK,CAAC;IACvC,CAAC;IAMD,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC;IAC5C,CAAC;IAMD,UAAU;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,CAAC;IAYD,WAAW,CAAC,KAAa,EAAE,MAAc,EAAE,cAA+B,UAAU;QAClF,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAC1D,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,cAAc,CAAC,WAA4B;QACzC,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC;QAE9D,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG;gBACzB,KAAK,EAAE,qBAAU,CAAC,MAAM,CAAC,KAAK;gBAC9B,MAAM,EAAE,qBAAU,CAAC,MAAM,CAAC,MAAM;aACjC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;QAGnD,IACE,WAAW,KAAK,WAAW;YAC3B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAChE,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;QACzC,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,eAAe,KAAK,WAAW,EAAE,CAAC;YAEzE,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE;gBACtE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,UAAU,CAAC,OAAgB;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG;YACxB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,QAAQ,EAAE,MAAM,IAAI,GAAG;YACjD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,QAAQ,EAAE,MAAM,IAAI,GAAG;YACjD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,QAAQ,EAAE,MAAM;SAC3C,CAAC;QACF,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,UAAU,CAAC,KAAa,EAAE,KAAK,GAAG,GAAG;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG;YACxB,KAAK;YACL,KAAK;YACL,UAAU,EAAE,IAAI;SACjB,CAAC;QACF,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,cAAc,CAAC,IAAiB;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5B,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACvD,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,gBAAgB,CAAC,KAAc,EAAE,MAAyB;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9F,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CACrC,IAAI,EACJ,eAAe,EACf,IAAI,EACJ,IAAI,CAAC,UAAU,CAAC,aAAa,CAC9B,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,YAAY,CAAC,SAAS,GAAG,IAAI;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;QACtC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5D,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,kBAAkB,CAAC,IAAkC,EAAE,GAAW;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,EAAE,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QACpC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACtD,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,kBAAkB,CAAC,IAAkC,EAAE,GAAW;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,EAAE,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QACpC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACtD,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,oBAAoB,CAAC,SAA4B;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,SAAS,CAAC;QAC9C,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5D,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,cAAc,CAAC,KAAc,EAAE,KAAc;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CACrC,IAAI,EACJ,aAAa,EACb,IAAI,EACJ,IAAI,CAAC,UAAU,CAAC,WAAW,CAC5B,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,kBAAkB,CAAC,SAAS,GAAG,IAAI;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;QAC9C,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5D,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,eAAe,CAAC,MAAgB;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QAC9C,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;gBAC7D,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO;aAC3B,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,gBAAgB,CAAC,SAAwB;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,SAAS,CAAC;QAC1C,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5D,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,gBAAgB,CAAC,OAAsB;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9F,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CACrC,IAAI,EACJ,eAAe,EACf,IAAI,EACJ,IAAI,CAAC,UAAU,CAAC,aAAa,CAC9B,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,gBAAgB;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,CAAC;IAKD,kBAAkB;QAChB,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,SAAS,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,qBAAqB,CAAC,KAAqB;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACxF,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,oBAAoB,CAAC,KAAqB;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACtF,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,YAAY,CAAC,SAAS,GAAG,IAAI;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;QACtC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5D,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,iBAAiB,CAAC,QAAQ,GAAG,IAAI;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACpC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3D,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,kBAAkB,CAAC,GAAW;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,GAAG,CAAC;QACxC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACtD,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAQD,mBAAmB,CAAC,SAAiB,EAAE,OAA0B;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;QACtC,IAAI,OAAO;YAAE,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/C,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CACrC,IAAI,EACJ,kBAAkB,EAClB,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAC1C,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,CAC3C,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,KAAK;QACH,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAGlC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClC,QAAQ,CAAC,IAAI,CACX,0BAAU,CAAC,KAAK,CAAC,iBAAiB,EAAE;oBAClC,QAAQ,EAAE,OAAO;oBACjB,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK;iBACtC,CAAC,CACH,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjC,QAAQ,CAAC,IAAI,CACX,0BAAU,CAAC,KAAK,CAAC,iBAAiB,EAAE;oBAClC,QAAQ,EAAE,MAAM;oBAChB,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI;iBACrC,CAAC,CACH,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpC,QAAQ,CAAC,IAAI,CACX,0BAAU,CAAC,KAAK,CAAC,iBAAiB,EAAE;oBAClC,QAAQ,EAAE,SAAS;oBACnB,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO;iBACxC,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClC,QAAQ,CAAC,IAAI,CACX,0BAAU,CAAC,KAAK,CAAC,iBAAiB,EAAE;oBAClC,QAAQ,EAAE,OAAO;oBACjB,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK;iBACtC,CAAC,CACH,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjC,QAAQ,CAAC,IAAI,CACX,0BAAU,CAAC,KAAK,CAAC,iBAAiB,EAAE;oBAClC,QAAQ,EAAE,MAAM;oBAChB,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI;iBACrC,CAAC,CACH,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpC,QAAQ,CAAC,IAAI,CACX,0BAAU,CAAC,KAAK,CAAC,iBAAiB,EAAE;oBAClC,QAAQ,EAAE,SAAS;oBACnB,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO;iBACxC,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QAQD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAiB,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACxC,UAAU,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC7F,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;gBAC5C,UAAU,CAAC,IAAI,CACb,0BAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CACjF,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACzD,UAAU,CAAC,IAAI,CACb,0BAAU,CAAC,KAAK,CAAC,UAAU,EAAE;oBAC3B,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE;iBAC3D,CAAC,CACH,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACvC,UAAU,CAAC,IAAI,CACb,0BAAU,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAChF,CAAC;YACJ,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,0BAAU,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAiB,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACvC,UAAU,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC5F,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;gBAC3C,UAAU,CAAC,IAAI,CACb,0BAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAChF,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACxD,UAAU,CAAC,IAAI,CACb,0BAAU,CAAC,KAAK,CAAC,UAAU,EAAE;oBAC3B,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE;iBAC1D,CAAC,CACH,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtC,UAAU,CAAC,IAAI,CACb,0BAAU,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAC/E,CAAC;YACJ,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,0BAAU,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7E,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,KAAK,GAA2B;gBACpC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE;gBAChD,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;aAClD,CAAC;YACF,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;gBACzD,KAAK,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;YAClC,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAChD,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7D,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QACjD,CAAC;QAQD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,KAAK,GAA2B;gBACpC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;gBAC/C,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACnD,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACrD,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACjD,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE;gBAC9D,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE;gBAC9D,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC7D,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAClD,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,KAAK,GAA2B,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACpD,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAClE,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACpD,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAClE,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,QAAQ,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAC9C,MAAM,cAAc,GAA2B,EAAE,CAAC;YAClD,IAAI,SAAS,CAAC,UAAU;gBAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC;YAChF,IAAI,SAAS,CAAC,OAAO;gBAAE,cAAc,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACvE,IAAI,SAAS,CAAC,MAAM;gBAAE,cAAc,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;YAEpE,MAAM,cAAc,GAAiB,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,GAAkB,EAAE,EAAE;gBAGvD,MAAM,MAAM,GAAoC,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC;gBAEhF,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;oBAAE,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjF,IAAI,GAAG,CAAC,KAAK;oBAAE,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;gBAE7C,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;oBAAE,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBAGzF,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;oBAAE,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC1E,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;oBAAE,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBACvE,IAAI,GAAG,CAAC,UAAU;oBAAE,MAAM,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;gBAC5D,IAAI,GAAG,CAAC,SAAS;oBAAE,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC;gBACzD,IAAI,GAAG,CAAC,UAAU;oBAAE,MAAM,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;gBAC5D,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;oBAAE,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;gBACxD,cAAc,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACtD,CAAC,CAAC;YAEF,IAAI,SAAS,CAAC,GAAG;gBAAE,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;YACrD,IAAI,SAAS,CAAC,IAAI;gBAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,SAAS,CAAC,MAAM;gBAAE,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAI,SAAS,CAAC,KAAK;gBAAE,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YAE3D,QAAQ,CAAC,IAAI,CAAC,0BAAU,CAAC,CAAC,CAAC,WAAW,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;QAC3E,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;YAClC,MAAM,KAAK,GAA2B,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACxD,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACxE,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtD,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpE,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACzD,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC1E,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC1C,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC;YAC7D,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,QAAQ,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7E,MAAM,KAAK,GAA2B,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;gBACvD,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpE,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;gBAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC;YACxD,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5C,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC9D,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBAC5B,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAC/C,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,QAAQ,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,KAAK,GAA2B;gBACpC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;aAClD,CAAC;YACF,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChD,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC9D,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACrD,KAAK,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YACzE,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACpD,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YACjE,CAAC;YAED,MAAM,WAAW,GAAiB,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;gBACpD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;gBACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,MAAM,QAAQ,GAAoC;wBAChD,KAAK,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE;qBAC7B,CAAC;oBACF,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC7B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;wBAC3B,QAAQ,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBAC5C,CAAC;oBACD,WAAW,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;YAED,QAAQ,CAAC,IAAI,CACX,WAAW,CAAC,MAAM,GAAG,CAAC;gBACpB,CAAC,CAAC,0BAAU,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC;gBAC1C,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CACpC,CAAC;QACJ,CAAC;QAID,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3C,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,UAAU,CAAC,QAAQ;gBACtB,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,UAAU,CAAC;gBAC9B,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CACnD,CAAC;QACJ,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAC5F,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,UAAU,CAAC,SAAS;gBACvB,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC/B,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CACpD,CAAC;QACJ,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,UAAU,CAAC,SAAS;gBACvB,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;gBAC/C,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAClD,CAAC;QACJ,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;YAClC,MAAM,UAAU,GAA2B;gBACzC,GAAG,EAAE,MAAM;gBACX,GAAG,EAAE,MAAM;gBACX,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,OAAO;aACf,CAAC;YACF,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YACvF,QAAQ,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACvC,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAC7F,CAAC;QACJ,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,UAAU,CAAC,SAAS;gBACvB,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC/B,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CACpD,CAAC;QACJ,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,KAAK,GAA2B,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;YACjD,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACpD,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACtE,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACpD,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACtE,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,QAAQ,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CACX,0BAAU,CAAC,KAAK,CAAC,iBAAiB,EAAE;gBAClC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAiB;aAC1C,CAAC,CACH,CAAC;QACJ,CAAC;QAID,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,WAAW,GAAoC;gBACnD,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;gBAC5B,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;gBACpC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;aACjC,CAAC;YACF,MAAM,YAAY,GAAiB,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC;YAClD,IAAI,IAAI,EAAE,CAAC;gBAKT,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpB,MAAM,UAAU,GAAiB,EAAE,CAAC;oBACpC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;wBAC7B,UAAU,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;oBAClF,CAAC;oBACD,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;wBACjC,UAAU,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;oBACzF,CAAC;oBACD,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;wBAC9C,UAAU,CAAC,IAAI,CACb,0BAAU,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAClF,CAAC;oBACJ,CAAC;oBACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;wBAC5B,UAAU,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBACxF,CAAC;oBACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC1B,YAAY,CAAC,IAAI,CAAC,0BAAU,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;oBACvE,CAAC;gBACH,CAAC;gBACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,MAAM,UAAU,GAAiB,EAAE,CAAC;oBACpC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;wBAC5B,UAAU,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;oBACjF,CAAC;oBACD,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;wBAChC,UAAU,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;oBACxF,CAAC;oBACD,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;wBAC7C,UAAU,CAAC,IAAI,CACb,0BAAU,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CACjF,CAAC;oBACJ,CAAC;oBACD,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;wBAC3B,UAAU,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBACvF,CAAC;oBACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC1B,YAAY,CAAC,IAAI,CAAC,0BAAU,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;oBACtE,CAAC;gBACH,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,YAAY,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtE,CAAC;gBACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,MAAM,SAAS,GAA2B;wBACxC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,OAAO;wBACjD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,OAAO;qBACnD,CAAC;oBACF,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;wBAC9C,SAAS,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;oBACtC,CAAC;oBACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBACrC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACtD,CAAC;oBACD,YAAY,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;gBACzD,CAAC;gBACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAMjB,MAAM,UAAU,GAA2B;wBACzC,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE;wBAC9C,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE;wBAClD,UAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE;wBACpD,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE;wBAChD,UAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE;wBACnD,UAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE;wBACnD,UAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;qBAClD,CAAC;oBACF,YAAY,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;gBAC3D,CAAC;gBACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,MAAM,OAAO,GAA2B,EAAE,CAAC;oBAC3C,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;wBACzC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACzD,CAAC;oBACD,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;wBACzC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACzD,CAAC;oBACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACpC,YAAY,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC3D,CAAC;gBACH,CAAC;gBACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;oBAC7B,MAAM,QAAQ,GAA2B,EAAE,CAAC;oBAC5C,IAAI,GAAG,CAAC,UAAU;wBAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;oBAC9D,IAAI,GAAG,CAAC,OAAO;wBAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;oBACrD,IAAI,GAAG,CAAC,MAAM;wBAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;oBAClD,MAAM,cAAc,GAAiB,EAAE,CAAC;oBACxC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,GAAkB,EAAE,EAAE;wBAG3D,MAAM,MAAM,GAAoC,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC;wBAChF,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;4BAAE,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;wBACjF,IAAI,GAAG,CAAC,KAAK;4BAAE,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;wBAC7C,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;4BACzB,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC9D,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;4BAAE,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;wBAC1E,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;4BAAE,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;wBACvE,IAAI,GAAG,CAAC,UAAU;4BAAE,MAAM,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;wBAC5D,IAAI,GAAG,CAAC,SAAS;4BAAE,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC;wBACzD,IAAI,GAAG,CAAC,UAAU;4BAAE,MAAM,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;wBAC5D,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;4BAAE,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;wBACxD,cAAc,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;oBACtD,CAAC,CAAC;oBACF,IAAI,GAAG,CAAC,GAAG;wBAAE,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC7C,IAAI,GAAG,CAAC,IAAI;wBAAE,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;oBAChD,IAAI,GAAG,CAAC,MAAM;wBAAE,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;oBACtD,IAAI,GAAG,CAAC,KAAK;wBAAE,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;oBACnD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC9B,YAAY,CAAC,IAAI,CAAC,0BAAU,CAAC,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;oBACzE,CAAC;gBACH,CAAC;gBACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,MAAM,OAAO,GAA2B,EAAE,CAAC;oBAC3C,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,KAAK,SAAS;wBAC1C,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;oBAC/D,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,SAAS;wBACxC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC3D,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO;wBAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;oBAClF,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,KAAK,SAAS;wBAC3C,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACjE,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACpC,YAAY,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC5D,CAAC;gBACH,CAAC;gBACD,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAKvE,MAAM,OAAO,GAA2B,EAAE,CAAC;oBAC3C,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,KAAK,SAAS;wBACzC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC3D,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM;wBAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;oBAC7E,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;wBAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;oBACrF,IAAI,IAAI,CAAC,OAAO;wBAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;oBACtD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACpC,YAAY,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC5D,CAAC;gBACH,CAAC;gBACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,MAAM,QAAQ,GAA2B;wBACvC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG;qBAC/C,CAAC;oBACF,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS;wBAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC1F,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC1C,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBACjE,CAAC;oBACD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;wBACzC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBACzD,CAAC;oBACD,MAAM,WAAW,GAAiB,EAAE,CAAC;oBACrC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;wBAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;wBACzC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;wBACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;4BACvC,MAAM,MAAM,GAAoC;gCAC9C,KAAK,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE;6BAC7B,CAAC;4BACF,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;4BAC7B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gCAC3B,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;4BAC1C,CAAC;4BACD,WAAW,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;wBACpD,CAAC;oBACH,CAAC;oBACD,YAAY,CAAC,IAAI,CACf,WAAW,CAAC,MAAM,GAAG,CAAC;wBACpB,CAAC,CAAC,0BAAU,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC;wBAC7C,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CACvC,CAAC;gBACJ,CAAC;gBAWD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAChC,YAAY,CAAC,IAAI,CACf,IAAI,CAAC,QAAQ;wBACX,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,UAAU,CAAC;wBAC9B,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CACnD,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC3B,YAAY,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;gBACrF,CAAC;gBACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBACjC,YAAY,CAAC,IAAI,CACf,IAAI,CAAC,SAAS;wBACZ,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,WAAW,CAAC;wBAC/B,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CACpD,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBACjC,YAAY,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC1F,CAAC;gBACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,MAAM,KAAK,GAA2B;wBACpC,GAAG,EAAE,MAAM;wBACX,GAAG,EAAE,MAAM;wBACX,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,OAAO;wBACd,KAAK,EAAE,OAAO;wBACd,KAAK,EAAE,OAAO;qBACf,CAAC;oBACF,YAAY,CAAC,IAAI,CACf,0BAAU,CAAC,KAAK,CAAC,eAAe,EAAE;wBAChC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,aAAa;qBACzD,CAAC,CACH,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC5B,YAAY,CAAC,IAAI,CACf,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAClF,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBACjC,YAAY,CAAC,IAAI,CACf,IAAI,CAAC,SAAS;wBACZ,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,WAAW,CAAC;wBAC/B,CAAC,CAAC,0BAAU,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CACpD,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,MAAM,OAAO,GAA2B,EAAE,CAAC;oBAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI;wBAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC7D,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;wBACtC,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;oBAC7D,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;wBACtC,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;oBAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACpC,YAAY,CAAC,IAAI,CAAC,0BAAU,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,UAAU,GAAG,0BAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;YACnE,QAAQ,CAAC,IAAI,CAAC,0BAAU,CAAC,CAAC,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,0BAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAMD,KAAK;QAEH,MAAM,gBAAgB,GAAsB,EAAE,CAAC;QAE/C,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC7B,gBAAgB,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC9D,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC5B,gBAAgB,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC5D,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC5B,gBAAgB,CAAC,OAAO,GAAG;gBACzB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO;gBAC1B,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;oBAChD,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;oBAC3C,CAAC,CAAC,SAAS;gBACb,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;oBAChD,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;oBAC3C,CAAC,CAAC,SAAS;aACd,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;YAClC,gBAAgB,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QACxE,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC5B,gBAAgB,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC5D,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC5B,gBAAgB,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC5D,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAChC,gBAAgB,CAAC,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QACpE,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC5B,gBAAgB,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC5D,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;YAClC,gBAAgB,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QACxE,CAAC;QAGD,gBAAgB,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC7C,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QACvD,gBAAgB,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;QACvE,gBAAgB,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAC/D,gBAAgB,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC7C,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAEvD,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACvC,CAAC;IAKD,MAAM,CAAC,MAAM,CAAC,UAA8B;QAC1C,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAKD,MAAM,CAAC,YAAY;QACjB,OAAO,IAAI,OAAO,CAAC;YACjB,QAAQ,EAAE;gBACR,KAAK,EAAE,qBAAU,CAAC,MAAM,CAAC,KAAK;gBAC9B,MAAM,EAAE,qBAAU,CAAC,MAAM,CAAC,MAAM;gBAChC,WAAW,EAAE,UAAU;aACxB;SACF,CAAC,CAAC;IACL,CAAC;IAKD,MAAM,CAAC,QAAQ;QACb,OAAO,IAAI,OAAO,CAAC;YACjB,QAAQ,EAAE;gBACR,KAAK,EAAE,qBAAU,CAAC,EAAE,CAAC,KAAK;gBAC1B,MAAM,EAAE,qBAAU,CAAC,EAAE,CAAC,MAAM;gBAC5B,WAAW,EAAE,UAAU;aACxB;SACF,CAAC,CAAC;IACL,CAAC;IAKD,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,OAAO,CAAC;YACjB,QAAQ,EAAE;gBACR,KAAK,EAAE,qBAAU,CAAC,KAAK,CAAC,KAAK;gBAC7B,MAAM,EAAE,qBAAU,CAAC,KAAK,CAAC,MAAM;gBAC/B,WAAW,EAAE,UAAU;aACxB;SACF,CAAC,CAAC;IACL,CAAC;IAKD,MAAM,CAAC,aAAa;QAClB,OAAO,IAAI,OAAO,CAAC;YACjB,QAAQ,EAAE;gBACR,KAAK,EAAE,qBAAU,CAAC,OAAO,CAAC,KAAK;gBAC/B,MAAM,EAAE,qBAAU,CAAC,OAAO,CAAC,MAAM;gBACjC,WAAW,EAAE,UAAU;aACxB;SACF,CAAC,CAAC;IACL,CAAC;IAKD,MAAM,CAAC,QAAQ;QACb,OAAO,IAAI,OAAO,CAAC;YACjB,QAAQ,EAAE;gBACR,KAAK,EAAE,qBAAU,CAAC,EAAE,CAAC,KAAK;gBAC1B,MAAM,EAAE,qBAAU,CAAC,EAAE,CAAC,MAAM;gBAC5B,WAAW,EAAE,UAAU;aACxB;SACF,CAAC,CAAC;IACL,CAAC;IAcD,MAAM,CAAC,eAAe,CACpB,WAAyD,QAAQ;QAEjE,MAAM,OAAO,GAAsD;YACjE,MAAM,EAAE,qBAAU,CAAC,MAAM;YACzB,EAAE,EAAE,qBAAU,CAAC,EAAE;YACjB,KAAK,EAAE,qBAAU,CAAC,KAAK;YACvB,OAAO,EAAE,qBAAU,CAAC,OAAO;YAC3B,EAAE,EAAE,qBAAU,CAAC,EAAE;SAClB,CAAC;QACF,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,qBAAU,CAAC,MAAM,CAAC;QACpD,OAAO,IAAI,OAAO,CAAC;YACjB,QAAQ,EAAE;gBACR,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,MAAM,EAAE,IAAI,CAAC,KAAK;gBAClB,WAAW,EAAE,WAAW;aACzB;SACF,CAAC,CAAC;IACL,CAAC;CACF;AAr6CD,0BAq6CC","sourcesContent":["/**\n * Section - Represents a document section with page setup properties\n *\n * Sections allow different page setups within a single document (margins, orientation, etc.)\n * Each section can have its own headers, footers, and page numbering.\n */\n\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';\nimport { PAGE_SIZES } from '../utils/units.js';\n\n/**\n * Page orientation\n */\nexport type PageOrientation = 'portrait' | 'landscape';\n\n/**\n * Section break type\n */\nexport type SectionType = 'nextPage' | 'continuous' | 'evenPage' | 'oddPage' | 'nextColumn';\n\n/**\n * Page numbering format\n */\n/**\n * Per ECMA-376 Part 1 §17.18.59 (ST_NumberFormat)\n * Comprehensive set of page number formats\n */\nexport type PageNumberFormat =\n | 'decimal'\n | 'lowerRoman'\n | 'upperRoman'\n | 'lowerLetter'\n | 'upperLetter'\n | 'ordinal'\n | 'cardinalText'\n | 'ordinalText'\n | 'hex'\n | 'chicago'\n | 'decimalZero'\n | 'decimalEnclosedCircle'\n | 'decimalEnclosedFullstop'\n | 'decimalEnclosedParen'\n | 'ideographDigital'\n | 'ideographTraditional'\n | 'ideographLegalTraditional'\n | 'ideographEnclosedCircle'\n | 'ideographZodiac'\n | 'ideographZodiacTraditional'\n | 'chineseCounting'\n | 'chineseCountingThousand'\n | 'chineseLegalSimplified'\n | 'japaneseCounting'\n | 'japaneseDigitalTenThousand'\n | 'japaneseLegal'\n | 'koreanCounting'\n | 'koreanDigital'\n | 'koreanDigital2'\n | 'koreanLegal'\n | 'taiwaneseCounting'\n | 'taiwaneseCountingThousand'\n | 'taiwaneseDigital'\n | 'aiueo'\n | 'aiueoFullWidth'\n | 'iroha'\n | 'irohaFullWidth'\n | 'arabicAbjad'\n | 'arabicAlpha'\n | 'hebrew1'\n | 'hebrew2'\n | 'hindiConsonants'\n | 'hindiCounting'\n | 'hindiNumbers'\n | 'hindiVowels'\n | 'thaiCounting'\n | 'thaiLetters'\n | 'thaiNumbers'\n | 'vietnameseCounting'\n | 'russianLower'\n | 'russianUpper'\n | 'numberInDash'\n | 'dollarText'\n | 'bullet'\n | 'bahtText'\n | 'ganada'\n | 'chosung'\n | 'none'\n | string; // Allow any format string for forward compatibility\n\n/**\n * Page size properties\n */\nexport interface PageSize {\n /** Width in twips */\n width: number;\n /** Height in twips */\n height: number;\n /** Orientation */\n orientation?: PageOrientation;\n /** Paper size code per ECMA-376 ST_PaperSize (1=Letter, 9=A4, 5=Legal, etc.) */\n code?: number;\n}\n\n/**\n * Margin properties\n */\nexport interface Margins {\n /** Top margin in twips */\n top: number;\n /** Bottom margin in twips */\n bottom: number;\n /** Left margin in twips */\n left: number;\n /** Right margin in twips */\n right: number;\n /** Header distance from top in twips */\n header?: number;\n /** Footer distance from bottom in twips */\n footer?: number;\n /** Gutter margin in twips */\n gutter?: number;\n}\n\n/**\n * Column properties\n */\nexport interface Columns {\n /** Number of columns */\n count: number;\n /** Space between columns in twips */\n space?: number;\n /** Equal column widths */\n equalWidth?: boolean;\n /** Show column separator line */\n separator?: boolean;\n /** Individual column widths (for unequal columns) in twips */\n columnWidths?: number[];\n /** Individual column spacings (space after each column) in twips — per ECMA-376 CT_Column */\n columnSpaces?: number[];\n}\n\n/**\n * Page numbering properties\n */\nexport interface PageNumbering {\n /** Starting page number */\n start?: number;\n /** Number format */\n format?: PageNumberFormat;\n}\n\n/**\n * Paper source (printer tray) properties\n */\nexport interface PaperSource {\n /** First page tray number */\n first?: number;\n /** Other pages tray number */\n other?: number;\n}\n\n/**\n * Vertical page alignment\n */\nexport type VerticalAlignment = 'top' | 'center' | 'bottom' | 'both';\n\n/**\n * Text direction\n */\nexport type TextDirection = 'ltr' | 'rtl' | 'tbRl' | 'btLr';\n\n/**\n * Document grid type for East Asian typography\n */\nexport type DocumentGridType = 'default' | 'lines' | 'linesAndChars' | 'snapToChars';\n\n/**\n * Document grid properties\n */\nexport interface DocumentGrid {\n /** Grid type */\n type?: DocumentGridType;\n /** Lines per page */\n linePitch?: number;\n /** Characters per line */\n charSpace?: number;\n}\n\n/**\n * Line numbering restart mode\n */\nexport type LineNumberingRestart = 'newPage' | 'newSection' | 'continuous';\n\n/**\n * Line numbering properties\n * Per ECMA-376 Part 1, Section 17.6.8 (w:lnNumType element)\n */\nexport interface LineNumbering {\n /** Display line number every N lines (countBy attribute) */\n countBy?: number;\n /** Starting line number */\n start?: number;\n /** Distance from text margin in twips */\n distance?: number;\n /** When to restart line numbering */\n restart?: LineNumberingRestart;\n}\n\n/**\n * Footnote/endnote position\n * Per ECMA-376 Part 1 §17.11.6 and §17.11.7\n */\nexport type NotePosition = 'pageBottom' | 'beneathText' | 'sectEnd' | 'docEnd';\n\n/**\n * Note numbering restart mode\n */\nexport type NoteNumberRestart = 'continuous' | 'eachSect' | 'eachPage';\n\n/**\n * Chapter separator character for page numbering\n * Per ECMA-376 Part 1 §17.18.5\n */\nexport type ChapterSeparator = 'colon' | 'emDash' | 'enDash' | 'hyphen' | 'period';\n\n/**\n * Footnote/endnote section-level properties\n */\nexport interface NoteProperties {\n /** Note positioning */\n position?: NotePosition;\n /** Number format */\n numberFormat?: PageNumberFormat;\n /** Starting number */\n startNumber?: number;\n /** Restart numbering mode */\n restart?: NoteNumberRestart;\n}\n\n/**\n * Page border definition for a single side\n * Per ECMA-376 Part 1 §17.6.10\n */\nexport interface PageBorderDef {\n /** Border style (single, double, dashed, etc.) */\n style?: string;\n /** Border size in eighths of a point */\n size?: number;\n /** Border color in hex format (without #) */\n color?: string;\n /** Space between border and page edge/text in points */\n space?: number;\n /** Whether to show shadow */\n shadow?: boolean;\n /** Whether to include frame around page */\n frame?: boolean;\n /** Theme color reference */\n themeColor?: string;\n /**\n * Theme tint (2-hex-digit string, ST_UcharHexNumber per §17.18.82) applied\n * to themeColor lookup. CT_TopBorder/CT_BottomBorder extend CT_Border so\n * inherit the full attribute set of §17.18.2.\n */\n themeTint?: string;\n /** Theme shade (2-hex-digit string) applied to themeColor lookup */\n themeShade?: string;\n /** Art border ID (for decorative borders) */\n artId?: number;\n}\n\n/**\n * Page borders configuration\n * Per ECMA-376 Part 1 §17.6.10\n */\nexport interface PageBorders {\n /** Top page border */\n top?: PageBorderDef;\n /** Bottom page border */\n bottom?: PageBorderDef;\n /** Left page border */\n left?: PageBorderDef;\n /** Right page border */\n right?: PageBorderDef;\n /** Whether border is measured from page edge or text edge */\n offsetFrom?: 'page' | 'text';\n /** Display on all pages, first page only, or not first page */\n display?: 'allPages' | 'firstPage' | 'notFirstPage';\n /** Z-ordering relative to text */\n zOrder?: 'front' | 'back';\n}\n\n/**\n * Section properties\n */\nexport interface SectionProperties {\n /** Page size */\n pageSize?: PageSize;\n /** Margins */\n margins?: Margins;\n /** Column layout */\n columns?: Columns;\n /** Section break type */\n type?: SectionType;\n /** Page numbering */\n pageNumbering?: PageNumbering;\n /** Header reference IDs */\n headers?: {\n default?: string; // rId for default header\n first?: string; // rId for first page header\n even?: string; // rId for even page header\n };\n /** Footer reference IDs */\n footers?: {\n default?: string; // rId for default footer\n first?: string; // rId for first page footer\n even?: string; // rId for even page footer\n };\n /** Title page (different first page) */\n titlePage?: boolean;\n /** Vertical page alignment */\n verticalAlignment?: VerticalAlignment;\n /** Paper source (printer tray) */\n paperSource?: PaperSource;\n /** Text direction (LTR/RTL support) */\n textDirection?: TextDirection;\n /** Right-to-left section layout */\n bidi?: boolean;\n /** Gutter on right side (for RTL) */\n rtlGutter?: boolean;\n /** Document grid for snapping text to grid */\n docGrid?: DocumentGrid;\n /** Line numbering configuration */\n lineNumbering?: LineNumbering;\n /** Section-level footnote properties (w:footnotePr) */\n footnotePr?: NoteProperties;\n /** Section-level endnote properties (w:endnotePr) */\n endnotePr?: NoteProperties;\n /** Suppress endnotes in this section (w:noEndnote) */\n noEndnote?: boolean;\n /** Form protection for this section (w:formProt) */\n formProt?: boolean;\n /** Page borders per ECMA-376 Part 1 §17.6.10 */\n pageBorders?: PageBorders;\n /** Printer settings relationship ID (w:printerSettings r:id) */\n printerSettingsId?: string;\n /** Chapter style heading level for page numbering (w:pgNumType w:chapStyle) */\n chapStyle?: number;\n /** Chapter separator for page numbering (w:pgNumType w:chapSep) */\n chapSep?: ChapterSeparator;\n}\n\n/**\n * Represents a document section\n */\n/**\n * Section property change tracking (w:sectPrChange)\n * Per ECMA-376 Part 1 §17.13.5.32\n */\nexport interface SectPrChange {\n author: string;\n date: string;\n id: string;\n previousProperties: Record<string, any>;\n}\n\nexport class Section {\n private properties: SectionProperties;\n /** Tracking context for automatic change tracking */\n private trackingContext?: import('../tracking/TrackingContext.js').TrackingContext;\n /** Section property change tracking (w:sectPrChange) */\n private sectPrChange?: SectPrChange;\n\n /**\n * Creates a new section\n * @param properties Section properties\n */\n constructor(properties: SectionProperties = {}) {\n // Spread the full input first so every SectionProperties field is preserved\n // (bidi, rtlGutter, docGrid, lineNumbering, footnotePr, endnotePr, noEndnote,\n // formProt, printerSettingsId, chapStyle, chapSep, etc.), then apply defaults\n // only for the handful of fields that must always have a value.\n // Before this change the constructor enumerated an allow-list and silently\n // dropped every other SectionProperties field, corrupting round-trip fidelity\n // for any source document using those properties.\n this.properties = {\n ...properties,\n pageSize: properties.pageSize || {\n width: PAGE_SIZES.LETTER.width,\n height: PAGE_SIZES.LETTER.height,\n orientation: 'portrait',\n },\n margins: properties.margins || {\n top: 1440, // 1 inch\n bottom: 1440,\n left: 1440,\n right: 1440,\n header: 720, // 0.5 inch\n footer: 720,\n },\n // Default to single column layout\n columns: properties.columns || {\n count: 1,\n },\n // Default to next page section break\n type: properties.type || 'nextPage',\n };\n }\n\n /**\n * Sets the tracking context for automatic change tracking.\n * Called by Document when track changes is enabled.\n * @internal\n */\n _setTrackingContext(context: import('../tracking/TrackingContext.js').TrackingContext): void {\n this.trackingContext = context;\n }\n\n /**\n * Gets the section property change tracking info\n */\n getSectPrChange(): SectPrChange | undefined {\n return this.sectPrChange;\n }\n\n /**\n * Sets the section property change tracking info\n */\n setSectPrChange(change: SectPrChange | undefined): void {\n this.sectPrChange = change;\n }\n\n /**\n * Clears the section property change tracking\n */\n clearSectPrChange(): void {\n this.sectPrChange = undefined;\n }\n\n /**\n * Gets the section properties\n */\n getProperties(): SectionProperties {\n return { ...this.properties };\n }\n\n // ============================================================================\n // Individual Property Getters\n // ============================================================================\n\n /**\n * Gets the page size settings\n * @returns Page size object with width, height, and orientation, or undefined\n */\n getPageSize(): PageSize | undefined {\n return this.properties.pageSize ? { ...this.properties.pageSize } : undefined;\n }\n\n /**\n * Gets the page orientation\n * @returns 'portrait' or 'landscape', or undefined if not set\n */\n getOrientation(): PageOrientation | undefined {\n return this.properties.pageSize?.orientation;\n }\n\n /**\n * Gets the margin settings\n * @returns Margins object or undefined if not set\n */\n getMargins(): Margins | undefined {\n return this.properties.margins ? { ...this.properties.margins } : undefined;\n }\n\n /**\n * Gets the column layout settings\n * @returns Columns object or undefined if not set\n */\n getColumns(): Columns | undefined {\n return this.properties.columns ? { ...this.properties.columns } : undefined;\n }\n\n /**\n * Gets the section type (break type)\n * @returns Section type or undefined if not set\n */\n getSectionType(): SectionType | undefined {\n return this.properties.type;\n }\n\n /**\n * Gets the page numbering settings\n * @returns PageNumbering object or undefined if not set\n */\n getPageNumbering(): PageNumbering | undefined {\n return this.properties.pageNumbering ? { ...this.properties.pageNumbering } : undefined;\n }\n\n /**\n * Gets whether this section has a title page (different first page)\n * @returns true if title page is enabled, false otherwise\n */\n getTitlePage(): boolean {\n return this.properties.titlePage ?? false;\n }\n\n /**\n * Gets header references\n * @returns Object with default, first, and even header relationship IDs, or undefined\n */\n getHeaderReferences(): { default?: string; first?: string; even?: string } | undefined {\n return this.properties.headers ? { ...this.properties.headers } : undefined;\n }\n\n /**\n * Gets a specific header reference\n * @param type Header type (default, first, even)\n * @returns Relationship ID or undefined if not set\n */\n getHeaderReference(type: 'default' | 'first' | 'even'): string | undefined {\n return this.properties.headers?.[type];\n }\n\n /**\n * Gets footer references\n * @returns Object with default, first, and even footer relationship IDs, or undefined\n */\n getFooterReferences(): { default?: string; first?: string; even?: string } | undefined {\n return this.properties.footers ? { ...this.properties.footers } : undefined;\n }\n\n /**\n * Gets a specific footer reference\n * @param type Footer type (default, first, even)\n * @returns Relationship ID or undefined if not set\n */\n getFooterReference(type: 'default' | 'first' | 'even'): string | undefined {\n return this.properties.footers?.[type];\n }\n\n /**\n * Gets the vertical page alignment\n * @returns Vertical alignment or undefined if not set\n */\n getVerticalAlignment(): VerticalAlignment | undefined {\n return this.properties.verticalAlignment;\n }\n\n /**\n * Gets the paper source (printer tray) settings\n * @returns PaperSource object or undefined if not set\n */\n getPaperSource(): PaperSource | undefined {\n return this.properties.paperSource ? { ...this.properties.paperSource } : undefined;\n }\n\n /**\n * Gets whether column separator is enabled\n * @returns true if separator is enabled, false otherwise\n */\n getColumnSeparator(): boolean {\n return this.properties.columns?.separator ?? false;\n }\n\n /**\n * Gets custom column widths\n * @returns Array of column widths in twips, or undefined if not set\n */\n getColumnWidths(): number[] | undefined {\n return this.properties.columns?.columnWidths\n ? [...this.properties.columns.columnWidths]\n : undefined;\n }\n\n /**\n * Gets per-column spacing (space after each column) in twips\n * @returns Array of column spacings, or undefined if not set\n */\n getColumnSpaces(): number[] | undefined {\n return this.properties.columns?.columnSpaces\n ? [...this.properties.columns.columnSpaces]\n : undefined;\n }\n\n /**\n * Gets the text direction\n * @returns Text direction or undefined if not set\n */\n getTextDirection(): TextDirection | undefined {\n return this.properties.textDirection;\n }\n\n /**\n * Gets whether the section is bidirectional (RTL)\n * @returns true if bidi is enabled, false otherwise\n */\n getBidi(): boolean {\n return this.properties.bidi ?? false;\n }\n\n /**\n * Gets whether RTL gutter is enabled (gutter on right side)\n * @returns true if RTL gutter is enabled, false otherwise\n */\n getRtlGutter(): boolean {\n return this.properties.rtlGutter ?? false;\n }\n\n /**\n * Gets the document grid settings\n * @returns DocumentGrid object or undefined if not set\n */\n getDocGrid(): DocumentGrid | undefined {\n return this.properties.docGrid ? { ...this.properties.docGrid } : undefined;\n }\n\n // ============================================================================\n // Setters\n // ============================================================================\n\n /**\n * Sets page size\n * @param width Width in twips\n * @param height Height in twips\n * @param orientation Page orientation\n */\n setPageSize(width: number, height: number, orientation: PageOrientation = 'portrait'): this {\n const prev = this.properties.pageSize ? { ...this.properties.pageSize } : undefined;\n this.properties.pageSize = { width, height, orientation };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'pageSize', prev, this.properties.pageSize);\n }\n return this;\n }\n\n /**\n * Sets page orientation\n * @param orientation Page orientation\n */\n setOrientation(orientation: PageOrientation): this {\n const prevOrientation = this.properties.pageSize?.orientation;\n // Capture full pageSize BEFORE mutation for tracking\n const prevPageSize = this.properties.pageSize ? { ...this.properties.pageSize } : undefined;\n if (!this.properties.pageSize) {\n this.properties.pageSize = {\n width: PAGE_SIZES.LETTER.width,\n height: PAGE_SIZES.LETTER.height,\n };\n }\n this.properties.pageSize.orientation = orientation;\n\n // Swap width/height for landscape\n if (\n orientation === 'landscape' &&\n this.properties.pageSize.width < this.properties.pageSize.height\n ) {\n const temp = this.properties.pageSize.width;\n this.properties.pageSize.width = this.properties.pageSize.height;\n this.properties.pageSize.height = temp;\n }\n\n if (this.trackingContext?.isEnabled() && prevOrientation !== orientation) {\n // Track the full pageSize change (not just orientation) since width/height are swapped\n this.trackingContext.trackSectionChange(this, 'pageSize', prevPageSize, {\n ...this.properties.pageSize,\n });\n }\n return this;\n }\n\n /**\n * Sets margins\n * @param margins Margin properties\n */\n setMargins(margins: Margins): this {\n const prev = this.properties.margins ? { ...this.properties.margins } : undefined;\n const existing = this.properties.margins;\n this.properties.margins = {\n top: margins.top,\n bottom: margins.bottom,\n left: margins.left,\n right: margins.right,\n header: margins.header ?? existing?.header ?? 720,\n footer: margins.footer ?? existing?.footer ?? 720,\n gutter: margins.gutter ?? existing?.gutter,\n };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'margins', prev, this.properties.margins);\n }\n return this;\n }\n\n /**\n * Sets column layout\n * @param count Number of columns\n * @param space Space between columns in twips\n */\n setColumns(count: number, space = 720): this {\n const prev = this.properties.columns ? { ...this.properties.columns } : undefined;\n this.properties.columns = {\n count,\n space,\n equalWidth: true,\n };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'columns', prev, this.properties.columns);\n }\n return this;\n }\n\n /**\n * Sets section type\n * @param type Section break type\n */\n setSectionType(type: SectionType): this {\n const prev = this.properties.type;\n this.properties.type = type;\n if (this.trackingContext?.isEnabled() && prev !== type) {\n this.trackingContext.trackSectionChange(this, 'type', prev, type);\n }\n return this;\n }\n\n /**\n * Sets page numbering\n * @param start Starting page number\n * @param format Number format\n */\n setPageNumbering(start?: number, format?: PageNumberFormat): this {\n const prev = this.properties.pageNumbering ? { ...this.properties.pageNumbering } : undefined;\n this.properties.pageNumbering = { start, format };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(\n this,\n 'pageNumbering',\n prev,\n this.properties.pageNumbering\n );\n }\n return this;\n }\n\n /**\n * Sets title page flag (different first page)\n * @param titlePage Whether this section has a different first page\n */\n setTitlePage(titlePage = true): this {\n const prev = this.properties.titlePage;\n this.properties.titlePage = titlePage;\n if (this.trackingContext?.isEnabled() && prev !== titlePage) {\n this.trackingContext.trackSectionChange(this, 'titlePage', prev, titlePage);\n }\n return this;\n }\n\n /**\n * Sets header reference\n * @param type Header type (default, first, even)\n * @param rId Relationship ID\n */\n setHeaderReference(type: 'default' | 'first' | 'even', rId: string): this {\n const prev = this.properties.headers?.[type];\n if (!this.properties.headers) {\n this.properties.headers = {};\n }\n this.properties.headers[type] = rId;\n if (this.trackingContext?.isEnabled() && prev !== rId) {\n this.trackingContext.trackSectionChange(this, `headerReference:${type}`, prev, rId);\n }\n return this;\n }\n\n /**\n * Sets footer reference\n * @param type Footer type (default, first, even)\n * @param rId Relationship ID\n */\n setFooterReference(type: 'default' | 'first' | 'even', rId: string): this {\n const prev = this.properties.footers?.[type];\n if (!this.properties.footers) {\n this.properties.footers = {};\n }\n this.properties.footers[type] = rId;\n if (this.trackingContext?.isEnabled() && prev !== rId) {\n this.trackingContext.trackSectionChange(this, `footerReference:${type}`, prev, rId);\n }\n return this;\n }\n\n /**\n * Sets vertical page alignment\n * Controls how content is vertically aligned on the page\n * @param alignment Vertical alignment (top, center, bottom, both=justified)\n */\n setVerticalAlignment(alignment: VerticalAlignment): this {\n const prev = this.properties.verticalAlignment;\n this.properties.verticalAlignment = alignment;\n if (this.trackingContext?.isEnabled() && prev !== alignment) {\n this.trackingContext.trackSectionChange(this, 'verticalAlignment', prev, alignment);\n }\n return this;\n }\n\n /**\n * Sets paper source (printer tray selection)\n * @param first First page tray number\n * @param other Other pages tray number\n */\n setPaperSource(first?: number, other?: number): this {\n const prev = this.properties.paperSource ? { ...this.properties.paperSource } : undefined;\n this.properties.paperSource = { first, other };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(\n this,\n 'paperSource',\n prev,\n this.properties.paperSource\n );\n }\n return this;\n }\n\n /**\n * Sets column separator line\n * Shows a vertical line between columns\n * @param separator Whether to show column separator line\n */\n setColumnSeparator(separator = true): this {\n const prev = this.properties.columns?.separator;\n if (!this.properties.columns) {\n this.properties.columns = { count: 1 };\n }\n this.properties.columns.separator = separator;\n if (this.trackingContext?.isEnabled() && prev !== separator) {\n this.trackingContext.trackSectionChange(this, 'columnSeparator', prev, separator);\n }\n return this;\n }\n\n /**\n * Sets custom column widths (for unequal columns)\n * @param widths Array of column widths in twips\n */\n setColumnWidths(widths: number[]): this {\n const prev = this.properties.columns ? { ...this.properties.columns } : undefined;\n if (!this.properties.columns) {\n this.properties.columns = { count: widths.length };\n }\n this.properties.columns.columnWidths = widths;\n this.properties.columns.equalWidth = false;\n this.properties.columns.count = widths.length;\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'columns', prev, {\n ...this.properties.columns,\n });\n }\n return this;\n }\n\n /**\n * Sets text direction for the section\n * @param direction Text direction (ltr=left-to-right, rtl=right-to-left, tbRl=top-to-bottom-right-to-left, btLr=bottom-to-top-left-to-right)\n */\n setTextDirection(direction: TextDirection): this {\n const prev = this.properties.textDirection;\n this.properties.textDirection = direction;\n if (this.trackingContext?.isEnabled() && prev !== direction) {\n this.trackingContext.trackSectionChange(this, 'textDirection', prev, direction);\n }\n return this;\n }\n\n /**\n * Sets line numbering for the section\n * Per ECMA-376 Part 1, Section 17.6.8 (w:lnNumType)\n * @param options Line numbering configuration\n */\n setLineNumbering(options: LineNumbering): this {\n const prev = this.properties.lineNumbering ? { ...this.properties.lineNumbering } : undefined;\n this.properties.lineNumbering = { ...options };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(\n this,\n 'lineNumbering',\n prev,\n this.properties.lineNumbering\n );\n }\n return this;\n }\n\n /**\n * Gets line numbering configuration\n * @returns Line numbering settings or undefined if not set\n */\n getLineNumbering(): LineNumbering | undefined {\n return this.properties.lineNumbering ? { ...this.properties.lineNumbering } : undefined;\n }\n\n /**\n * Clears line numbering for the section\n */\n clearLineNumbering(): this {\n this.properties.lineNumbering = undefined;\n return this;\n }\n\n /**\n * Sets section-level footnote properties\n * Per ECMA-376 Part 1 §17.11.6\n */\n setFootnoteProperties(props: NoteProperties): this {\n const prev = this.properties.footnotePr ? { ...this.properties.footnotePr } : undefined;\n this.properties.footnotePr = { ...props };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'footnotePr', prev, this.properties.footnotePr);\n }\n return this;\n }\n\n /**\n * Sets section-level endnote properties\n * Per ECMA-376 Part 1 §17.11.7\n */\n setEndnoteProperties(props: NoteProperties): this {\n const prev = this.properties.endnotePr ? { ...this.properties.endnotePr } : undefined;\n this.properties.endnotePr = { ...props };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'endnotePr', prev, this.properties.endnotePr);\n }\n return this;\n }\n\n /**\n * Sets whether endnotes are suppressed in this section\n * Per ECMA-376 Part 1 §17.6.14\n */\n setNoEndnote(noEndnote = true): this {\n const prev = this.properties.noEndnote;\n this.properties.noEndnote = noEndnote;\n if (this.trackingContext?.isEnabled() && prev !== noEndnote) {\n this.trackingContext.trackSectionChange(this, 'noEndnote', prev, noEndnote);\n }\n return this;\n }\n\n /**\n * Sets form protection for this section\n * Per ECMA-376 Part 1 §17.6.4\n */\n setFormProtection(formProt = true): this {\n const prev = this.properties.formProt;\n this.properties.formProt = formProt;\n if (this.trackingContext?.isEnabled() && prev !== formProt) {\n this.trackingContext.trackSectionChange(this, 'formProt', prev, formProt);\n }\n return this;\n }\n\n /**\n * Sets printer settings relationship ID\n * Per ECMA-376 Part 1 §17.6.6\n */\n setPrinterSettings(rId: string): this {\n const prev = this.properties.printerSettingsId;\n this.properties.printerSettingsId = rId;\n if (this.trackingContext?.isEnabled() && prev !== rId) {\n this.trackingContext.trackSectionChange(this, 'printerSettings', prev, rId);\n }\n return this;\n }\n\n /**\n * Sets chapter numbering for page numbers\n * Per ECMA-376 Part 1 §17.6.12\n * @param chapStyle - Heading level (1-9) to use for chapter numbering\n * @param chapSep - Separator between chapter and page number\n */\n setChapterNumbering(chapStyle: number, chapSep?: ChapterSeparator): this {\n const prevStyle = this.properties.chapStyle;\n const prevSep = this.properties.chapSep;\n this.properties.chapStyle = chapStyle;\n if (chapSep) this.properties.chapSep = chapSep;\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(\n this,\n 'chapterNumbering',\n { chapStyle: prevStyle, chapSep: prevSep },\n { chapStyle, chapSep: chapSep || prevSep }\n );\n }\n return this;\n }\n\n /**\n * Generates WordprocessingML XML for section properties\n */\n toXML(): XMLElement {\n const children: XMLElement[] = [];\n\n // Header references\n if (this.properties.headers) {\n if (this.properties.headers.first) {\n children.push(\n XMLBuilder.wSelf('headerReference', {\n 'w:type': 'first',\n 'r:id': this.properties.headers.first,\n })\n );\n }\n if (this.properties.headers.even) {\n children.push(\n XMLBuilder.wSelf('headerReference', {\n 'w:type': 'even',\n 'r:id': this.properties.headers.even,\n })\n );\n }\n if (this.properties.headers.default) {\n children.push(\n XMLBuilder.wSelf('headerReference', {\n 'w:type': 'default',\n 'r:id': this.properties.headers.default,\n })\n );\n }\n }\n\n // Footer references\n if (this.properties.footers) {\n if (this.properties.footers.first) {\n children.push(\n XMLBuilder.wSelf('footerReference', {\n 'w:type': 'first',\n 'r:id': this.properties.footers.first,\n })\n );\n }\n if (this.properties.footers.even) {\n children.push(\n XMLBuilder.wSelf('footerReference', {\n 'w:type': 'even',\n 'r:id': this.properties.footers.even,\n })\n );\n }\n if (this.properties.footers.default) {\n children.push(\n XMLBuilder.wSelf('footerReference', {\n 'w:type': 'default',\n 'r:id': this.properties.footers.default,\n })\n );\n }\n }\n\n // CT_SectPr element order per ECMA-376:\n // footnotePr → endnotePr → type → pgSz → pgMar → paperSrc → pgBorders →\n // lnNumType → pgNumType → cols → formProt → vAlign → noEndnote → titlePg →\n // textDirection → bidi → rtlGutter → docGrid → printerSettings → sectPrChange\n\n // Footnote properties (w:footnotePr)\n if (this.properties.footnotePr) {\n const fnChildren: XMLElement[] = [];\n if (this.properties.footnotePr.position) {\n fnChildren.push(XMLBuilder.wSelf('pos', { 'w:val': this.properties.footnotePr.position }));\n }\n if (this.properties.footnotePr.numberFormat) {\n fnChildren.push(\n XMLBuilder.wSelf('numFmt', { 'w:val': this.properties.footnotePr.numberFormat })\n );\n }\n if (this.properties.footnotePr.startNumber !== undefined) {\n fnChildren.push(\n XMLBuilder.wSelf('numStart', {\n 'w:val': this.properties.footnotePr.startNumber.toString(),\n })\n );\n }\n if (this.properties.footnotePr.restart) {\n fnChildren.push(\n XMLBuilder.wSelf('numRestart', { 'w:val': this.properties.footnotePr.restart })\n );\n }\n if (fnChildren.length > 0) {\n children.push(XMLBuilder.w('footnotePr', undefined, fnChildren));\n }\n }\n\n // Endnote properties (w:endnotePr)\n if (this.properties.endnotePr) {\n const enChildren: XMLElement[] = [];\n if (this.properties.endnotePr.position) {\n enChildren.push(XMLBuilder.wSelf('pos', { 'w:val': this.properties.endnotePr.position }));\n }\n if (this.properties.endnotePr.numberFormat) {\n enChildren.push(\n XMLBuilder.wSelf('numFmt', { 'w:val': this.properties.endnotePr.numberFormat })\n );\n }\n if (this.properties.endnotePr.startNumber !== undefined) {\n enChildren.push(\n XMLBuilder.wSelf('numStart', {\n 'w:val': this.properties.endnotePr.startNumber.toString(),\n })\n );\n }\n if (this.properties.endnotePr.restart) {\n enChildren.push(\n XMLBuilder.wSelf('numRestart', { 'w:val': this.properties.endnotePr.restart })\n );\n }\n if (enChildren.length > 0) {\n children.push(XMLBuilder.w('endnotePr', undefined, enChildren));\n }\n }\n\n // Section type\n if (this.properties.type) {\n children.push(XMLBuilder.wSelf('type', { 'w:val': this.properties.type }));\n }\n\n // Page size\n if (this.properties.pageSize) {\n const attrs: Record<string, string> = {\n 'w:w': this.properties.pageSize.width.toString(),\n 'w:h': this.properties.pageSize.height.toString(),\n };\n if (this.properties.pageSize.orientation === 'landscape') {\n attrs['w:orient'] = 'landscape';\n }\n if (this.properties.pageSize.code !== undefined) {\n attrs['w:code'] = this.properties.pageSize.code.toString();\n }\n children.push(XMLBuilder.wSelf('pgSz', attrs));\n }\n\n // Margins — CT_PageMar §17.6.11 declares ALL seven attributes\n // (top/right/bottom/left/header/footer/gutter) as `use=\"required\"`.\n // Emit every one so output is spec-compliant for strict validators\n // (the Open XML SDK validator is lenient here but third-party / XSD\n // tooling is not). header/footer default to 720 twips (0.5\"), and\n // gutter to 0 (no gutter — the usual value for non-book-bound docs).\n if (this.properties.margins) {\n const attrs: Record<string, string> = {\n 'w:top': this.properties.margins.top.toString(),\n 'w:right': this.properties.margins.right.toString(),\n 'w:bottom': this.properties.margins.bottom.toString(),\n 'w:left': this.properties.margins.left.toString(),\n 'w:header': (this.properties.margins.header ?? 720).toString(),\n 'w:footer': (this.properties.margins.footer ?? 720).toString(),\n 'w:gutter': (this.properties.margins.gutter ?? 0).toString(),\n };\n children.push(XMLBuilder.wSelf('pgMar', attrs));\n }\n\n // Paper source\n if (this.properties.paperSource) {\n const attrs: Record<string, string> = {};\n if (this.properties.paperSource.first !== undefined) {\n attrs['w:first'] = this.properties.paperSource.first.toString();\n }\n if (this.properties.paperSource.other !== undefined) {\n attrs['w:other'] = this.properties.paperSource.other.toString();\n }\n if (Object.keys(attrs).length > 0) {\n children.push(XMLBuilder.wSelf('paperSrc', attrs));\n }\n }\n\n // Page borders per ECMA-376 Part 1 §17.6.10\n if (this.properties.pageBorders) {\n const pgBorders = this.properties.pageBorders;\n const pgBordersAttrs: Record<string, string> = {};\n if (pgBorders.offsetFrom) pgBordersAttrs['w:offsetFrom'] = pgBorders.offsetFrom;\n if (pgBorders.display) pgBordersAttrs['w:display'] = pgBorders.display;\n if (pgBorders.zOrder) pgBordersAttrs['w:zOrder'] = pgBorders.zOrder;\n\n const borderChildren: XMLElement[] = [];\n const buildBorder = (side: string, def: PageBorderDef) => {\n // CT_PageBorder §17.6.2 extends CT_Border (§17.18.2) — w:val is\n // REQUIRED. Default to \"nil\" when consumer set only size/color.\n const bAttrs: Record<string, string | number> = { 'w:val': def.style ?? 'nil' };\n // ECMA-376 Part 1 §17.18.2: sz valid range 2-96 (eighths of a point)\n if (def.size !== undefined) bAttrs['w:sz'] = Math.max(2, Math.min(96, def.size));\n if (def.color) bAttrs['w:color'] = def.color;\n // ECMA-376 Part 1 §17.18.88: space valid range 0-31680 (points)\n if (def.space !== undefined) bAttrs['w:space'] = Math.max(0, Math.min(31680, def.space));\n // shadow / frame are CT_OnOff — use `!== undefined` so explicit false\n // (w:shadow=\"0\") round-trips without being dropped.\n if (def.shadow !== undefined) bAttrs['w:shadow'] = def.shadow ? '1' : '0';\n if (def.frame !== undefined) bAttrs['w:frame'] = def.frame ? '1' : '0';\n if (def.themeColor) bAttrs['w:themeColor'] = def.themeColor;\n if (def.themeTint) bAttrs['w:themeTint'] = def.themeTint;\n if (def.themeShade) bAttrs['w:themeShade'] = def.themeShade;\n if (def.artId !== undefined) bAttrs['w:id'] = def.artId;\n borderChildren.push(XMLBuilder.wSelf(side, bAttrs));\n };\n\n if (pgBorders.top) buildBorder('top', pgBorders.top);\n if (pgBorders.left) buildBorder('left', pgBorders.left);\n if (pgBorders.bottom) buildBorder('bottom', pgBorders.bottom);\n if (pgBorders.right) buildBorder('right', pgBorders.right);\n\n children.push(XMLBuilder.w('pgBorders', pgBordersAttrs, borderChildren));\n }\n\n // Line numbering (w:lnNumType)\n if (this.properties.lineNumbering) {\n const attrs: Record<string, string> = {};\n if (this.properties.lineNumbering.countBy !== undefined) {\n attrs['w:countBy'] = this.properties.lineNumbering.countBy.toString();\n }\n if (this.properties.lineNumbering.start !== undefined) {\n attrs['w:start'] = this.properties.lineNumbering.start.toString();\n }\n if (this.properties.lineNumbering.distance !== undefined) {\n attrs['w:distance'] = this.properties.lineNumbering.distance.toString();\n }\n if (this.properties.lineNumbering.restart) {\n attrs['w:restart'] = this.properties.lineNumbering.restart;\n }\n if (Object.keys(attrs).length > 0) {\n children.push(XMLBuilder.wSelf('lnNumType', attrs));\n }\n }\n\n // Page numbering\n if (this.properties.pageNumbering || this.properties.chapStyle !== undefined) {\n const attrs: Record<string, string> = {};\n if (this.properties.pageNumbering?.start !== undefined) {\n attrs['w:start'] = this.properties.pageNumbering.start.toString();\n }\n if (this.properties.pageNumbering?.format) {\n attrs['w:fmt'] = this.properties.pageNumbering.format;\n }\n if (this.properties.chapStyle !== undefined) {\n attrs['w:chapStyle'] = this.properties.chapStyle.toString();\n }\n if (this.properties.chapSep) {\n attrs['w:chapSep'] = this.properties.chapSep;\n }\n if (Object.keys(attrs).length > 0) {\n children.push(XMLBuilder.wSelf('pgNumType', attrs));\n }\n }\n\n // Columns\n if (this.properties.columns) {\n const attrs: Record<string, string> = {\n 'w:num': this.properties.columns.count.toString(),\n };\n if (this.properties.columns.space !== undefined) {\n attrs['w:space'] = this.properties.columns.space.toString();\n }\n if (this.properties.columns.equalWidth !== undefined) {\n attrs['w:equalWidth'] = this.properties.columns.equalWidth ? '1' : '0';\n }\n if (this.properties.columns.separator !== undefined) {\n attrs['w:sep'] = this.properties.columns.separator ? '1' : '0';\n }\n\n const colChildren: XMLElement[] = [];\n if (this.properties.columns.columnWidths) {\n const widths = this.properties.columns.columnWidths;\n const spaces = this.properties.columns.columnSpaces;\n for (let i = 0; i < widths.length; i++) {\n const colAttrs: Record<string, string | number> = {\n 'w:w': widths[i]!.toString(),\n };\n const spaceVal = spaces?.[i];\n if (spaceVal !== undefined) {\n colAttrs['w:space'] = spaceVal.toString();\n }\n colChildren.push(XMLBuilder.wSelf('col', colAttrs));\n }\n }\n\n children.push(\n colChildren.length > 0\n ? XMLBuilder.w('cols', attrs, colChildren)\n : XMLBuilder.wSelf('cols', attrs)\n );\n }\n\n // Form protection (w:formProt) — CT_OnOff per §17.6.9. Preserve the\n // explicit-false distinction on round-trip (parser already does so).\n if (this.properties.formProt !== undefined) {\n children.push(\n this.properties.formProt\n ? XMLBuilder.wSelf('formProt')\n : XMLBuilder.wSelf('formProt', { 'w:val': '0' })\n );\n }\n\n // Vertical alignment\n if (this.properties.verticalAlignment) {\n children.push(XMLBuilder.wSelf('vAlign', { 'w:val': this.properties.verticalAlignment }));\n }\n\n // Suppress endnotes (w:noEndnote) — CT_OnOff per §17.11.14.\n if (this.properties.noEndnote !== undefined) {\n children.push(\n this.properties.noEndnote\n ? XMLBuilder.wSelf('noEndnote')\n : XMLBuilder.wSelf('noEndnote', { 'w:val': '0' })\n );\n }\n\n // Title page (w:titlePg) — CT_OnOff per §17.10.6.\n if (this.properties.titlePage !== undefined) {\n children.push(\n this.properties.titlePage\n ? XMLBuilder.wSelf('titlePg', { 'w:val': '1' })\n : XMLBuilder.wSelf('titlePg', { 'w:val': '0' })\n );\n }\n\n // Text direction (map to valid ST_TextDirection values per ECMA-376 §17.18.93)\n if (this.properties.textDirection) {\n const textDirMap: Record<string, string> = {\n ltr: 'lrTb',\n rtl: 'tbRl',\n tbRl: 'tbRl',\n btLr: 'btLr',\n lrTb: 'lrTb',\n lrTbV: 'lrTbV',\n tbRlV: 'tbRlV',\n tbLrV: 'tbLrV',\n };\n const val = textDirMap[this.properties.textDirection] || this.properties.textDirection;\n children.push(XMLBuilder.wSelf('textDirection', { 'w:val': val }));\n }\n\n // Bidirectional section (RTL) — CT_OnOff per §17.6.3.\n if (this.properties.bidi !== undefined) {\n children.push(\n this.properties.bidi ? XMLBuilder.wSelf('bidi') : XMLBuilder.wSelf('bidi', { 'w:val': '0' })\n );\n }\n\n // RTL gutter — CT_OnOff per §17.6.16.\n if (this.properties.rtlGutter !== undefined) {\n children.push(\n this.properties.rtlGutter\n ? XMLBuilder.wSelf('rtlGutter')\n : XMLBuilder.wSelf('rtlGutter', { 'w:val': '0' })\n );\n }\n\n // Document grid\n if (this.properties.docGrid) {\n const attrs: Record<string, string> = {};\n if (this.properties.docGrid.type) {\n attrs['w:type'] = this.properties.docGrid.type;\n }\n if (this.properties.docGrid.linePitch !== undefined) {\n attrs['w:linePitch'] = this.properties.docGrid.linePitch.toString();\n }\n if (this.properties.docGrid.charSpace !== undefined) {\n attrs['w:charSpace'] = this.properties.docGrid.charSpace.toString();\n }\n if (Object.keys(attrs).length > 0) {\n children.push(XMLBuilder.wSelf('docGrid', attrs));\n }\n }\n\n // Printer settings (w:printerSettings)\n if (this.properties.printerSettingsId) {\n children.push(\n XMLBuilder.wSelf('printerSettings', {\n 'r:id': this.properties.printerSettingsId,\n })\n );\n }\n\n // Add section property change (w:sectPrChange) per ECMA-376 Part 1 §17.13.5.32\n // Must be last child of w:sectPr\n if (this.sectPrChange) {\n const changeAttrs: Record<string, string | number> = {\n 'w:id': this.sectPrChange.id,\n 'w:author': this.sectPrChange.author,\n 'w:date': this.sectPrChange.date,\n };\n const prevChildren: XMLElement[] = [];\n const prev = this.sectPrChange.previousProperties;\n if (prev) {\n // Ordered per CT_SectPrBase (ECMA-376 §17.6.18):\n // footnotePr → endnotePr → type → pgSz → pgMar → paperSrc → pgBorders →\n // lnNumType → pgNumType → cols → formProt → vAlign → noEndnote → titlePg →\n // textDirection → bidi → rtlGutter → docGrid\n if (prev.footnotePr) {\n const fnChildren: XMLElement[] = [];\n if (prev.footnotePr.position) {\n fnChildren.push(XMLBuilder.wSelf('pos', { 'w:val': prev.footnotePr.position }));\n }\n if (prev.footnotePr.numberFormat) {\n fnChildren.push(XMLBuilder.wSelf('numFmt', { 'w:val': prev.footnotePr.numberFormat }));\n }\n if (prev.footnotePr.startNumber !== undefined) {\n fnChildren.push(\n XMLBuilder.wSelf('numStart', { 'w:val': prev.footnotePr.startNumber.toString() })\n );\n }\n if (prev.footnotePr.restart) {\n fnChildren.push(XMLBuilder.wSelf('numRestart', { 'w:val': prev.footnotePr.restart }));\n }\n if (fnChildren.length > 0) {\n prevChildren.push(XMLBuilder.w('footnotePr', undefined, fnChildren));\n }\n }\n if (prev.endnotePr) {\n const enChildren: XMLElement[] = [];\n if (prev.endnotePr.position) {\n enChildren.push(XMLBuilder.wSelf('pos', { 'w:val': prev.endnotePr.position }));\n }\n if (prev.endnotePr.numberFormat) {\n enChildren.push(XMLBuilder.wSelf('numFmt', { 'w:val': prev.endnotePr.numberFormat }));\n }\n if (prev.endnotePr.startNumber !== undefined) {\n enChildren.push(\n XMLBuilder.wSelf('numStart', { 'w:val': prev.endnotePr.startNumber.toString() })\n );\n }\n if (prev.endnotePr.restart) {\n enChildren.push(XMLBuilder.wSelf('numRestart', { 'w:val': prev.endnotePr.restart }));\n }\n if (enChildren.length > 0) {\n prevChildren.push(XMLBuilder.w('endnotePr', undefined, enChildren));\n }\n }\n if (prev.type) {\n prevChildren.push(XMLBuilder.wSelf('type', { 'w:val': prev.type }));\n }\n if (prev.pageSize) {\n const pgSzAttrs: Record<string, string> = {\n 'w:w': prev.pageSize.width?.toString() || '12240',\n 'w:h': prev.pageSize.height?.toString() || '15840',\n };\n if (prev.pageSize.orientation === 'landscape') {\n pgSzAttrs['w:orient'] = 'landscape';\n }\n if (prev.pageSize.code !== undefined) {\n pgSzAttrs['w:code'] = prev.pageSize.code.toString();\n }\n prevChildren.push(XMLBuilder.wSelf('pgSz', pgSzAttrs));\n }\n if (prev.margins) {\n // CT_PageMar §17.6.11 requires all 7 attributes. Supply defaults\n // (top/right/bottom/left → 1440 twips = 1\" following Word's default,\n // header/footer → 720, gutter → 0) for any missing from the\n // sectPrChange previous-properties snapshot so the emitted\n // previous-state is still schema-compliant.\n const pgMarAttrs: Record<string, string> = {\n 'w:top': (prev.margins.top ?? 1440).toString(),\n 'w:right': (prev.margins.right ?? 1440).toString(),\n 'w:bottom': (prev.margins.bottom ?? 1440).toString(),\n 'w:left': (prev.margins.left ?? 1440).toString(),\n 'w:header': (prev.margins.header ?? 720).toString(),\n 'w:footer': (prev.margins.footer ?? 720).toString(),\n 'w:gutter': (prev.margins.gutter ?? 0).toString(),\n };\n prevChildren.push(XMLBuilder.wSelf('pgMar', pgMarAttrs));\n }\n if (prev.paperSource) {\n const psAttrs: Record<string, string> = {};\n if (prev.paperSource.first !== undefined) {\n psAttrs['w:first'] = prev.paperSource.first.toString();\n }\n if (prev.paperSource.other !== undefined) {\n psAttrs['w:other'] = prev.paperSource.other.toString();\n }\n if (Object.keys(psAttrs).length > 0) {\n prevChildren.push(XMLBuilder.wSelf('paperSrc', psAttrs));\n }\n }\n if (prev.pageBorders) {\n const pgb = prev.pageBorders;\n const pgbAttrs: Record<string, string> = {};\n if (pgb.offsetFrom) pgbAttrs['w:offsetFrom'] = pgb.offsetFrom;\n if (pgb.display) pgbAttrs['w:display'] = pgb.display;\n if (pgb.zOrder) pgbAttrs['w:zOrder'] = pgb.zOrder;\n const borderChildren: XMLElement[] = [];\n const buildPrevBorder = (side: string, def: PageBorderDef) => {\n // CT_PageBorder §17.6.2: w:val required. Default to \"nil\".\n // Full CT_Border attribute set preserved for sectPrChange history.\n const bAttrs: Record<string, string | number> = { 'w:val': def.style ?? 'nil' };\n if (def.size !== undefined) bAttrs['w:sz'] = Math.max(2, Math.min(96, def.size));\n if (def.color) bAttrs['w:color'] = def.color;\n if (def.space !== undefined)\n bAttrs['w:space'] = Math.max(0, Math.min(31680, def.space));\n if (def.shadow !== undefined) bAttrs['w:shadow'] = def.shadow ? '1' : '0';\n if (def.frame !== undefined) bAttrs['w:frame'] = def.frame ? '1' : '0';\n if (def.themeColor) bAttrs['w:themeColor'] = def.themeColor;\n if (def.themeTint) bAttrs['w:themeTint'] = def.themeTint;\n if (def.themeShade) bAttrs['w:themeShade'] = def.themeShade;\n if (def.artId !== undefined) bAttrs['w:id'] = def.artId;\n borderChildren.push(XMLBuilder.wSelf(side, bAttrs));\n };\n if (pgb.top) buildPrevBorder('top', pgb.top);\n if (pgb.left) buildPrevBorder('left', pgb.left);\n if (pgb.bottom) buildPrevBorder('bottom', pgb.bottom);\n if (pgb.right) buildPrevBorder('right', pgb.right);\n if (borderChildren.length > 0) {\n prevChildren.push(XMLBuilder.w('pgBorders', pgbAttrs, borderChildren));\n }\n }\n if (prev.lineNumbering) {\n const lnAttrs: Record<string, string> = {};\n if (prev.lineNumbering.countBy !== undefined)\n lnAttrs['w:countBy'] = prev.lineNumbering.countBy.toString();\n if (prev.lineNumbering.start !== undefined)\n lnAttrs['w:start'] = prev.lineNumbering.start.toString();\n if (prev.lineNumbering.restart) lnAttrs['w:restart'] = prev.lineNumbering.restart;\n if (prev.lineNumbering.distance !== undefined)\n lnAttrs['w:distance'] = prev.lineNumbering.distance.toString();\n if (Object.keys(lnAttrs).length > 0) {\n prevChildren.push(XMLBuilder.wSelf('lnNumType', lnAttrs));\n }\n }\n if (prev.pageNumbering || prev.chapStyle !== undefined || prev.chapSep) {\n // CT_PageNumber §17.6.12 has four attributes: fmt / start /\n // chapStyle / chapSep. chapStyle/chapSep live on the root of\n // SectionProperties (not inside pageNumbering) — mirror the\n // main-sectPr emitter at line ~1215.\n const pnAttrs: Record<string, string> = {};\n if (prev.pageNumbering?.start !== undefined)\n pnAttrs['w:start'] = prev.pageNumbering.start.toString();\n if (prev.pageNumbering?.format) pnAttrs['w:fmt'] = prev.pageNumbering.format;\n if (prev.chapStyle !== undefined) pnAttrs['w:chapStyle'] = prev.chapStyle.toString();\n if (prev.chapSep) pnAttrs['w:chapSep'] = prev.chapSep;\n if (Object.keys(pnAttrs).length > 0) {\n prevChildren.push(XMLBuilder.wSelf('pgNumType', pnAttrs));\n }\n }\n if (prev.columns) {\n const colAttrs: Record<string, string> = {\n 'w:num': prev.columns.count?.toString() || '1',\n };\n if (prev.columns.space !== undefined) colAttrs['w:space'] = prev.columns.space.toString();\n if (prev.columns.equalWidth !== undefined) {\n colAttrs['w:equalWidth'] = prev.columns.equalWidth ? '1' : '0';\n }\n if (prev.columns.separator !== undefined) {\n colAttrs['w:sep'] = prev.columns.separator ? '1' : '0';\n }\n const colChildren: XMLElement[] = [];\n if (prev.columns.columnWidths) {\n const widths = prev.columns.columnWidths;\n const spaces = prev.columns.columnSpaces;\n for (let i = 0; i < widths.length; i++) {\n const cAttrs: Record<string, string | number> = {\n 'w:w': widths[i]!.toString(),\n };\n const spaceVal = spaces?.[i];\n if (spaceVal !== undefined) {\n cAttrs['w:space'] = spaceVal.toString();\n }\n colChildren.push(XMLBuilder.wSelf('col', cAttrs));\n }\n }\n prevChildren.push(\n colChildren.length > 0\n ? XMLBuilder.w('cols', colAttrs, colChildren)\n : XMLBuilder.wSelf('cols', colAttrs)\n );\n }\n // Section-level CT_OnOff flags (formProt §17.6.9 / noEndnote\n // §17.11.14 / titlePg §17.10.6 / bidi §17.6.1 / rtlGutter\n // §17.6.16). The main emitter already preserves the explicit-\n // false distinction via `!== undefined` (see §1286 formProt),\n // but the sectPrChange emitter used a truthy gate — so a\n // tracked change capturing a \"previous state = false\" (e.g.,\n // form protection was OFF before the revision that turned it\n // ON) silently dropped the `<w:formProt w:val=\"0\"/>` marker on\n // save. Parity-fix: guard on presence and emit w:val=\"0\" for\n // explicit false.\n if (prev.formProt !== undefined) {\n prevChildren.push(\n prev.formProt\n ? XMLBuilder.wSelf('formProt')\n : XMLBuilder.wSelf('formProt', { 'w:val': '0' })\n );\n }\n if (prev.verticalAlignment) {\n prevChildren.push(XMLBuilder.wSelf('vAlign', { 'w:val': prev.verticalAlignment }));\n }\n if (prev.noEndnote !== undefined) {\n prevChildren.push(\n prev.noEndnote\n ? XMLBuilder.wSelf('noEndnote')\n : XMLBuilder.wSelf('noEndnote', { 'w:val': '0' })\n );\n }\n if (prev.titlePage !== undefined) {\n prevChildren.push(XMLBuilder.wSelf('titlePg', { 'w:val': prev.titlePage ? '1' : '0' }));\n }\n if (prev.textDirection) {\n const tdMap: Record<string, string> = {\n ltr: 'lrTb',\n rtl: 'tbRl',\n tbRl: 'tbRl',\n btLr: 'btLr',\n lrTb: 'lrTb',\n lrTbV: 'lrTbV',\n tbRlV: 'tbRlV',\n tbLrV: 'tbLrV',\n };\n prevChildren.push(\n XMLBuilder.wSelf('textDirection', {\n 'w:val': tdMap[prev.textDirection] || prev.textDirection,\n })\n );\n }\n if (prev.bidi !== undefined) {\n prevChildren.push(\n prev.bidi ? XMLBuilder.wSelf('bidi') : XMLBuilder.wSelf('bidi', { 'w:val': '0' })\n );\n }\n if (prev.rtlGutter !== undefined) {\n prevChildren.push(\n prev.rtlGutter\n ? XMLBuilder.wSelf('rtlGutter')\n : XMLBuilder.wSelf('rtlGutter', { 'w:val': '0' })\n );\n }\n if (prev.docGrid) {\n const dgAttrs: Record<string, string> = {};\n if (prev.docGrid.type) dgAttrs['w:type'] = prev.docGrid.type;\n if (prev.docGrid.linePitch !== undefined)\n dgAttrs['w:linePitch'] = prev.docGrid.linePitch.toString();\n if (prev.docGrid.charSpace !== undefined)\n dgAttrs['w:charSpace'] = prev.docGrid.charSpace.toString();\n if (Object.keys(dgAttrs).length > 0) {\n prevChildren.push(XMLBuilder.wSelf('docGrid', dgAttrs));\n }\n }\n }\n const prevSectPr = XMLBuilder.w('sectPr', undefined, prevChildren);\n children.push(XMLBuilder.w('sectPrChange', changeAttrs, [prevSectPr]));\n }\n\n return XMLBuilder.w('sectPr', undefined, children);\n }\n\n /**\n * Creates a deep clone of this section\n * @returns New Section instance with copied properties\n */\n clone(): Section {\n // Deep clone all nested objects\n const clonedProperties: SectionProperties = {};\n\n if (this.properties.pageSize) {\n clonedProperties.pageSize = { ...this.properties.pageSize };\n }\n\n if (this.properties.margins) {\n clonedProperties.margins = { ...this.properties.margins };\n }\n\n if (this.properties.columns) {\n clonedProperties.columns = {\n ...this.properties.columns,\n columnWidths: this.properties.columns.columnWidths\n ? [...this.properties.columns.columnWidths]\n : undefined,\n columnSpaces: this.properties.columns.columnSpaces\n ? [...this.properties.columns.columnSpaces]\n : undefined,\n };\n }\n\n if (this.properties.pageNumbering) {\n clonedProperties.pageNumbering = { ...this.properties.pageNumbering };\n }\n\n if (this.properties.headers) {\n clonedProperties.headers = { ...this.properties.headers };\n }\n\n if (this.properties.footers) {\n clonedProperties.footers = { ...this.properties.footers };\n }\n\n if (this.properties.paperSource) {\n clonedProperties.paperSource = { ...this.properties.paperSource };\n }\n\n if (this.properties.docGrid) {\n clonedProperties.docGrid = { ...this.properties.docGrid };\n }\n\n if (this.properties.lineNumbering) {\n clonedProperties.lineNumbering = { ...this.properties.lineNumbering };\n }\n\n // Copy primitive properties\n clonedProperties.type = this.properties.type;\n clonedProperties.titlePage = this.properties.titlePage;\n clonedProperties.verticalAlignment = this.properties.verticalAlignment;\n clonedProperties.textDirection = this.properties.textDirection;\n clonedProperties.bidi = this.properties.bidi;\n clonedProperties.rtlGutter = this.properties.rtlGutter;\n\n return new Section(clonedProperties);\n }\n\n /**\n * Creates a section with default properties\n */\n static create(properties?: SectionProperties): Section {\n return new Section(properties);\n }\n\n /**\n * Creates a letter-sized section (8.5\" x 11\")\n */\n static createLetter(): Section {\n return new Section({\n pageSize: {\n width: PAGE_SIZES.LETTER.width,\n height: PAGE_SIZES.LETTER.height,\n orientation: 'portrait',\n },\n });\n }\n\n /**\n * Creates an A4-sized section (21cm x 29.7cm)\n */\n static createA4(): Section {\n return new Section({\n pageSize: {\n width: PAGE_SIZES.A4.width,\n height: PAGE_SIZES.A4.height,\n orientation: 'portrait',\n },\n });\n }\n\n /**\n * Creates a legal-sized section (8.5\" x 14\")\n */\n static createLegal(): Section {\n return new Section({\n pageSize: {\n width: PAGE_SIZES.LEGAL.width,\n height: PAGE_SIZES.LEGAL.height,\n orientation: 'portrait',\n },\n });\n }\n\n /**\n * Creates a tabloid-sized section (11\" x 17\")\n */\n static createTabloid(): Section {\n return new Section({\n pageSize: {\n width: PAGE_SIZES.TABLOID.width,\n height: PAGE_SIZES.TABLOID.height,\n orientation: 'portrait',\n },\n });\n }\n\n /**\n * Creates an A3-sized section (29.7cm x 42cm)\n */\n static createA3(): Section {\n return new Section({\n pageSize: {\n width: PAGE_SIZES.A3.width,\n height: PAGE_SIZES.A3.height,\n orientation: 'portrait',\n },\n });\n }\n\n /**\n * Creates a landscape section\n *\n * @param pageSize - Page size name (default: 'letter')\n * @returns Section with swapped width/height and landscape orientation\n *\n * @example\n * ```typescript\n * const landscape = Section.createLandscape('a4');\n * const legalLandscape = Section.createLandscape('legal');\n * ```\n */\n static createLandscape(\n pageSize: 'letter' | 'a4' | 'legal' | 'tabloid' | 'a3' = 'letter'\n ): Section {\n const sizeMap: Record<string, { width: number; height: number }> = {\n letter: PAGE_SIZES.LETTER,\n a4: PAGE_SIZES.A4,\n legal: PAGE_SIZES.LEGAL,\n tabloid: PAGE_SIZES.TABLOID,\n a3: PAGE_SIZES.A3,\n };\n const size = sizeMap[pageSize] ?? PAGE_SIZES.LETTER;\n return new Section({\n pageSize: {\n width: size.height, // Swap for landscape\n height: size.width,\n orientation: 'landscape',\n },\n });\n }\n}\n"]}
|
package/dist/elements/Shape.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { XMLElement } from '../xml/XMLBuilder';
|
|
2
|
-
import { RunFormatting } from './Run';
|
|
3
|
-
import { ImagePosition, ImageAnchor, PositionAnchor, HorizontalAlignment, VerticalAlignment } from './Image';
|
|
1
|
+
import { XMLElement } from '../xml/XMLBuilder.js';
|
|
2
|
+
import { RunFormatting } from './Run.js';
|
|
3
|
+
import { ImagePosition, ImageAnchor, PositionAnchor, HorizontalAlignment, VerticalAlignment } from './Image.js';
|
|
4
4
|
export type ShapeType = 'rect' | 'ellipse' | 'rightArrow' | 'leftArrow' | 'upArrow' | 'downArrow' | 'straightConnector1' | 'roundRect' | 'triangle' | 'diamond';
|
|
5
5
|
export interface ShapeFill {
|
|
6
6
|
color: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shape.d.ts","sourceRoot":"","sources":["../../src/elements/Shape.ts"],"names":[],"mappings":"AAUA,OAAO,EAAc,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Shape.d.ts","sourceRoot":"","sources":["../../src/elements/Shape.ts"],"names":[],"mappings":"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"}
|
package/dist/elements/Shape.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Shape = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const XMLBuilder_js_1 = require("../xml/XMLBuilder.js");
|
|
5
|
+
const units_js_1 = require("../utils/units.js");
|
|
6
6
|
class Shape {
|
|
7
7
|
shapeType;
|
|
8
8
|
width;
|
|
@@ -127,7 +127,7 @@ class Shape {
|
|
|
127
127
|
}
|
|
128
128
|
toXML() {
|
|
129
129
|
const shapeElement = this.isFloating() ? this.createAnchor() : this.createInline();
|
|
130
|
-
return
|
|
130
|
+
return XMLBuilder_js_1.XMLBuilder.w('drawing', undefined, [shapeElement]);
|
|
131
131
|
}
|
|
132
132
|
createInline() {
|
|
133
133
|
const children = [];
|
|
@@ -462,26 +462,26 @@ class Shape {
|
|
|
462
462
|
const rPrChildren = [];
|
|
463
463
|
if (this.textFormatting) {
|
|
464
464
|
if (this.textFormatting.bold) {
|
|
465
|
-
rPrChildren.push(
|
|
465
|
+
rPrChildren.push(XMLBuilder_js_1.XMLBuilder.wSelf('b'));
|
|
466
466
|
}
|
|
467
467
|
if (this.textFormatting.italic) {
|
|
468
|
-
rPrChildren.push(
|
|
468
|
+
rPrChildren.push(XMLBuilder_js_1.XMLBuilder.wSelf('i'));
|
|
469
469
|
}
|
|
470
470
|
if (this.textFormatting.color) {
|
|
471
|
-
rPrChildren.push(
|
|
471
|
+
rPrChildren.push(XMLBuilder_js_1.XMLBuilder.wSelf('color', { 'w:val': this.textFormatting.color }));
|
|
472
472
|
}
|
|
473
473
|
if (this.textFormatting.size) {
|
|
474
|
-
const halfPoints = (0,
|
|
475
|
-
rPrChildren.push(
|
|
476
|
-
rPrChildren.push(
|
|
474
|
+
const halfPoints = (0, units_js_1.pointsToHalfPoints)(this.textFormatting.size);
|
|
475
|
+
rPrChildren.push(XMLBuilder_js_1.XMLBuilder.wSelf('sz', { 'w:val': halfPoints }));
|
|
476
|
+
rPrChildren.push(XMLBuilder_js_1.XMLBuilder.wSelf('szCs', { 'w:val': halfPoints }));
|
|
477
477
|
}
|
|
478
478
|
}
|
|
479
479
|
const runChildren = [];
|
|
480
480
|
if (rPrChildren.length > 0) {
|
|
481
|
-
runChildren.push(
|
|
481
|
+
runChildren.push(XMLBuilder_js_1.XMLBuilder.w('rPr', undefined, rPrChildren));
|
|
482
482
|
}
|
|
483
|
-
runChildren.push(
|
|
484
|
-
const paragraph =
|
|
483
|
+
runChildren.push(XMLBuilder_js_1.XMLBuilder.w('t', { 'xml:space': 'preserve' }, [this.text]));
|
|
484
|
+
const paragraph = XMLBuilder_js_1.XMLBuilder.w('p', undefined, [XMLBuilder_js_1.XMLBuilder.w('r', undefined, runChildren)]);
|
|
485
485
|
return {
|
|
486
486
|
name: 'wps:txbx',
|
|
487
487
|
children: [
|