From 3223f597e5b91e59d4af82a64cf67e772be040c1 Mon Sep 17 00:00:00 2001 From: Skyler Grey Date: Tue, 3 Sep 2024 12:51:55 +0000 Subject: [PATCH] refactor(treewide): Enable strict null checking Typescript defaults to treating null/undefined in a way that can leak them throughout code, and will also cause type issues (unexpected undefineds/anys) if you use them explicitly To avoid an unreviewable mess I have either widened types to allow null (where we own the type) or added non-null assertions (where we do not). This is preferable to not discerning nulls at all, and while it still creates a large (by LOC) change, it's hopefully not large (by variation of things) - and should transpile identically to JavaScript. There is one point where the code does not transpile identically to JavaScript. This is because it directly set something that we don't own which shouldn't be undefined to undefined. This is clearly incorrect, and I've replaced it with setting to an empty string instead. If it seems like this is bad practice, that's because it is. You shouldn't add non-null assertions all over the place because it makes typescript lie to you. It's of similar badness to adding `as x` everywhere. Unfortunately, worse practice would be mandating that typescript lie to you about nulls and undefineds everywhere, as our tsconfig has been doing. It's far better to limit the lie to these ~850 places where I've had to explicitly tell typescript "the world isn't actually like this - that's OK, carry on anyway". If you're worried about blames from this change - first: I believe it's worth it, second: this change should only affect single lines, so using --ignore-rev should work very well on it In the future, probably we should remove some of these assertions, although some changes we'll have to make to remove them are likely either tedious or dangerous. Signed-off-by: Skyler Grey Change-Id: I1770a1a8be3f45b45bda0fd2bcd57563add25924 --- browser/.betterer.js | 4 + browser/.eslintrc | 1 + browser/src/app/GraphicSelectionMiddleware.ts | 23 +- browser/src/canvas/CanvasSectionContainer.ts | 1464 ++- browser/src/canvas/CanvasSectionObject.ts | 42 +- .../canvas/sections/AutoFillMarkerSection.ts | 42 +- .../src/canvas/sections/CalcGridSection.ts | 10 +- .../src/canvas/sections/CellCursorSection.ts | 28 +- .../src/canvas/sections/CommentListSection.ts | 64 +- browser/src/canvas/sections/CommentSection.ts | 50 +- .../canvas/sections/ContentControlSection.ts | 8 +- .../src/canvas/sections/HTMLObjectSection.ts | 14 +- .../sections/InvalidationRectangleSection.ts | 15 +- .../sections/OtherViewCellCursorSection.ts | 10 +- .../OtherViewGraphicSelectionSection.ts | 6 +- browser/src/canvas/sections/ScrollSection.ts | 10 +- .../sections/ShapeHandleAnchorSubSection.ts | 16 +- .../sections/ShapeHandleCustomSubSection.ts | 22 +- .../ShapeHandleGluePointSubSection.ts | 8 +- .../sections/ShapeHandleRotationSubSection.ts | 26 +- .../sections/ShapeHandleScalingSubSection.ts | 28 +- .../canvas/sections/ShapeHandlesSection.ts | 83 +- .../sections/TextSelectionHandleSection.ts | 10 +- browser/src/canvas/sections/TilesSection.ts | 16 +- .../src/canvas/sections/URLPopUpSection.ts | 12 +- .../sections/ValidityInputHelpSection.ts | 2 +- browser/src/control/ColorPicker.ts | 8 +- browser/src/control/Control.AboutDialog.ts | 17 +- browser/src/control/Control.ColumnGroup.ts | 16 +- browser/src/control/Control.ColumnHeader.ts | 10 +- .../Control.FormulaAutoCompletePopup.ts | 19 +- browser/src/control/Control.GroupBase.ts | 40 +- browser/src/control/Control.Header.ts | 50 +- browser/src/control/Control.IdleHandler.ts | 14 +- browser/src/control/Control.Mention.ts | 16 +- browser/src/control/Control.RowGroup.ts | 16 +- browser/src/control/Control.RowHeader.ts | 8 +- browser/src/control/Control.Sidebar.ts | 10 +- browser/src/control/Control.UserList.ts | 76 +- browser/src/control/VRuler.ts | 67 +- .../src/control/jsdialog/Definitions.Menu.ts | 4 +- .../jsdialog/Util.KeyboardGridNavigation.ts | 8 +- .../control/jsdialog/Util.OnDemandRenderer.ts | 4 +- .../control/jsdialog/Util.ScrollableBar.ts | 4 +- .../jsdialog/Util.SnackbarController.ts | 28 +- .../control/jsdialog/Widget.ColorPicker.ts | 6 +- .../src/control/jsdialog/Widget.Containers.ts | 8 +- .../control/jsdialog/Widget.HTMLContent.ts | 30 +- browser/src/core/geometry.ts | 6 +- browser/src/docdispatcher.ts | 8 +- browser/src/geometry/Bounds.ts | 12 +- browser/src/geometry/Point.ts | 18 +- browser/src/layer/tile/SheetGeometry.ts | 84 +- browser/src/layer/vector/CEventsHandler.ts | 6 +- browser/src/layer/vector/CLineUtil.ts | 8 +- browser/src/layer/vector/CPath.ts | 18 +- browser/src/layer/vector/CPointSet.ts | 32 +- browser/src/layer/vector/CPolyUtil.ts | 30 +- browser/src/layer/vector/CPolygon.ts | 2 +- browser/src/layer/vector/CPolyline.ts | 6 +- browser/src/layer/vector/CanvasOverlay.ts | 18 +- .../src/map/handler/Map.KeyboardShortcuts.ts | 12 +- browser/src/slideshow/CanvasLoader.ts | 12 +- browser/src/slideshow/LayerDrawing.ts | 123 +- browser/src/slideshow/LayersCompositor.ts | 8 +- browser/src/slideshow/PauseTimer.ts | 32 +- browser/src/slideshow/PerformTransition.ts | 8 +- browser/src/slideshow/RenderContext.ts | 39 +- .../src/slideshow/SimpleTextureRenderer.ts | 18 +- browser/src/slideshow/SlideCache.ts | 2 +- browser/src/slideshow/SlideCompositor.ts | 8 +- browser/src/slideshow/SlideRenderer.ts | 98 +- browser/src/slideshow/SlideShowPresenter.ts | 109 +- browser/src/slideshow/StaticTextRenderer.ts | 24 +- browser/src/slideshow/Transition2d.ts | 27 +- browser/src/slideshow/Transition3d.ts | 20 +- .../src/slideshow/engine/ActivityFactory.ts | 64 +- browser/src/slideshow/engine/ActivityQueue.ts | 8 +- .../src/slideshow/engine/AnimatedElement.ts | 40 +- .../src/slideshow/engine/AnimationFactory.ts | 84 +- browser/src/slideshow/engine/Duration.ts | 6 +- browser/src/slideshow/engine/ElapsedTime.ts | 2 +- browser/src/slideshow/engine/Event.ts | 28 +- .../src/slideshow/engine/EventMultiplexer.ts | 113 +- .../engine/InteractiveAnimationSequence.ts | 4 +- .../src/slideshow/engine/MetaPresentation.ts | 32 +- browser/src/slideshow/engine/MetaSlide.ts | 6 +- .../src/slideshow/engine/SlideAnimations.ts | 18 +- .../src/slideshow/engine/SlideChangeBase.ts | 8 +- .../src/slideshow/engine/SlideShowHandler.ts | 128 +- .../slideshow/engine/SlideShowNavigator.ts | 28 +- .../src/slideshow/engine/SlideTransition.ts | 10 +- .../slideshow/engine/SourceEventElement.ts | 4 +- .../src/slideshow/engine/TimerEventQueue.ts | 4 +- browser/src/slideshow/engine/Timing.ts | 30 +- .../engine/activities/ActivityBase.ts | 4 +- .../engine/activities/AnimationActivity.ts | 8 +- .../ContinuousKeyTimeActivityBase.ts | 8 +- .../engine/activities/DiscreteActivityBase.ts | 20 +- .../engine/activities/FromToByActivity.ts | 4 +- .../engine/activities/SetActivity.ts | 4 +- .../engine/activities/SimpleActivity.ts | 4 +- .../SimpleContinuousActivityBase.ts | 16 +- .../engine/activities/ValueListActivity.ts | 4 +- .../animationnodes/AnimationBaseNode.ts | 88 +- .../engine/animationnodes/AnimationSetNode.ts | 6 +- .../animationnodes/AnimationTransformNode.ts | 14 +- .../AnimationTransitionFilterNode.ts | 17 +- .../animationnodes/BaseContainerNode.ts | 62 +- .../engine/animationnodes/BaseNode.ts | 76 +- .../engine/animationnodes/NodeContext.ts | 20 +- .../animationnodes/PropertyAnimationNode.ts | 10 +- browser/src/slideshow/engine/tools.ts | 2 +- .../slideshow/transition/BarWipeTransition.ts | 2 +- .../slideshow/transition/BarsTransition.ts | 4 +- .../src/slideshow/transition/BoxTransition.ts | 6 +- .../transition/CheckersTransition.ts | 4 +- .../slideshow/transition/CombTransition.ts | 4 +- .../slideshow/transition/CoverTransition.ts | 4 +- .../transition/DiagonalTransition.ts | 8 +- .../transition/EllipseWipeTransition.ts | 2 +- .../slideshow/transition/FadeTransition.ts | 2 +- .../transition/IrisWipeTransition.ts | 2 +- .../transition/MicsShapeWipeTransition.ts | 2 +- .../slideshow/transition/OvalTransition.ts | 4 +- .../slideshow/transition/PushTransition.ts | 4 +- .../transition/PushWipeTransition.ts | 2 +- .../transition/SlideWipeTransition.ts | 2 +- .../slideshow/transition/SplitTransition.ts | 12 +- .../slideshow/transition/UncoverTransition.ts | 4 +- .../transition/VenetianTransition.ts | 12 +- .../slideshow/transition/WheelTransition.ts | 4 +- .../slideshow/transition/WipeTransition.ts | 10 +- browser/tsconfig.json | 4 +- test/samples/calc-edit.ods | Bin 0 -> 7753 bytes test/samples/draw-edit.odg | Bin 0 -> 16253 bytes test/samples/impress-edit.fodp | 8824 +++++++++++++++++ test/samples/writer-edit.fodt | 7989 +++++++++++++++ 138 files changed, 19240 insertions(+), 1916 deletions(-) create mode 100644 test/samples/calc-edit.ods create mode 100644 test/samples/draw-edit.odg create mode 100644 test/samples/impress-edit.fodp create mode 100644 test/samples/writer-edit.fodt diff --git a/browser/.betterer.js b/browser/.betterer.js index 05ec44b266f90..9eec8a5b4cc73 100644 --- a/browser/.betterer.js +++ b/browser/.betterer.js @@ -7,6 +7,10 @@ const eslintIgnorePath = resolve(__dirname, ".eslintignore"); const eslintTypescriptIncludes = async () => (await globby).globbySync(["**/*.ts"], { ignoreFiles: eslintIgnorePath }); module.exports = { + 'avoid non-null assertions': async () => + eslintBetter({ + '@typescript-eslint/no-non-null-assertion': 'error', + }).include(await eslintTypescriptIncludes()), 'avoid expressions which have no effect': async () => eslintBetter({ '@typescript-eslint/no-unused-expressions': 'error', diff --git a/browser/.eslintrc b/browser/.eslintrc index 79bc6d7d880dc..d68748a5ea6eb 100644 --- a/browser/.eslintrc +++ b/browser/.eslintrc @@ -53,6 +53,7 @@ "no-constant-condition": "off", "@typescript-eslint/triple-slash-reference": "off", + "@typescript-eslint/no-non-null-assertion": "off", // improving in .betterer.ts "@typescript-eslint/no-unused-expressions": "off" // improving in .betterer.ts } } diff --git a/browser/src/app/GraphicSelectionMiddleware.ts b/browser/src/app/GraphicSelectionMiddleware.ts index 4cb10b90c7e81..79e98e62cb785 100644 --- a/browser/src/app/GraphicSelectionMiddleware.ts +++ b/browser/src/app/GraphicSelectionMiddleware.ts @@ -11,10 +11,10 @@ */ class GraphicSelection { - public static rectangle: cool.SimpleRectangle = null; + public static rectangle: cool.SimpleRectangle | null = null; public static extraInfo: any = null; public static selectionAngle: number = 0; - public static handlesSection: ShapeHandlesSection = null; + public static handlesSection: ShapeHandlesSection | null = null; public static hasActiveSelection() { return this.rectangle !== null; @@ -43,8 +43,8 @@ class GraphicSelection { var videoDesc = JSON.parse(textMsg); if (this.hasActiveSelection()) { - videoDesc.width = this.rectangle.cWidth; - videoDesc.height = this.rectangle.cHeight; + videoDesc.width = this.rectangle!.cWidth; + videoDesc.height = this.rectangle!.cHeight; } // proxy cannot identify RouteToken if it is encoded @@ -82,8 +82,8 @@ class GraphicSelection { } static renderDarkOverlay() { - var topLeft = new L.Point(this.rectangle.pX1, this.rectangle.pY1); - var bottomRight = new L.Point(this.rectangle.pX2, this.rectangle.pY2); + var topLeft = new L.Point(this.rectangle!.pX1, this.rectangle!.pY1); + var bottomRight = new L.Point(this.rectangle!.pX2, this.rectangle!.pY2); if (app.map._docLayer.isCalcRTL()) { // Dark overlays (like any other overlay) need regular document coordinates. @@ -138,7 +138,7 @@ class GraphicSelection { ); if (hasGridOffset) - this.rectangle.moveBy([ + this.rectangle!.moveBy([ app.map._docLayer._shapeGridOffset.x, app.map._docLayer._shapeGridOffset.y, ]); @@ -177,10 +177,13 @@ class GraphicSelection { app.sectionContainer.addSection(this.handlesSection); } - this.handlesSection.setPosition(this.rectangle.pX1, this.rectangle.pY1); + this.handlesSection!.setPosition( + this.rectangle!.pX1, + this.rectangle!.pY1, + ); extraInfo.hasTableSelection = app.map._docLayer.hasTableSelection(); // scaleSouthAndEastOnly - this.handlesSection.refreshInfo(this.extraInfo); - this.handlesSection.setShowSection(true); + this.handlesSection!.refreshInfo(this.extraInfo); + this.handlesSection!.setShowSection(true); app.sectionContainer.requestReDraw(); } else if ( this.handlesSection && diff --git a/browser/src/canvas/CanvasSectionContainer.ts b/browser/src/canvas/CanvasSectionContainer.ts index 713b985a01524..d76b10d099134 100644 --- a/browser/src/canvas/CanvasSectionContainer.ts +++ b/browser/src/canvas/CanvasSectionContainer.ts @@ -169,41 +169,41 @@ class CanvasSectionContainer { private documentTopLeft: Array = [0, 0]; private documentBottomRight: Array = [0, 0]; private canvas: HTMLCanvasElement; - private context: CanvasRenderingContext2D; + private context: CanvasRenderingContext2D | null; private right: number; private bottom: number; - private positionOnMouseDown: Array = null; - private positionOnMouseUp: Array = null; - private positionOnClick: Array = null; - private positionOnDoubleClick: Array = null; - private mousePosition: Array = null; - private dragDistance: Array = null; + private positionOnMouseDown: Array | null = null; + private positionOnMouseUp: Array | null = null; + private positionOnClick: Array | null = null; + private positionOnDoubleClick: Array | null = null; + private mousePosition: Array | null = null; + private dragDistance: Array | null = null; private draggingSomething: boolean = false; // This will be managed by container, used by sections. - private sectionOnMouseDown: string = null; // (Will contain section name) When dragging, user can leave section borders, dragging will continue. Target section will be informed. - private sectionUnderMouse: string = null; // For mouse enter & leave events. + private sectionOnMouseDown: string | null = null; // (Will contain section name) When dragging, user can leave section borders, dragging will continue. Target section will be informed. + private sectionUnderMouse: string | null = null; // For mouse enter & leave events. private draggingTolerance: number = 5; // This is for only desktop, mobile browsers seem to distinguish dragging and clicking nicely. private multiTouch: boolean = false; - private touchCenter: Array = null; + private touchCenter: Array | null = null; private longPressTimer: any = null; private clearColor: string = '#f8f9fa'; private documentBackgroundColor = '#ffffff'; // This is the background color of the document private useCSSForBackgroundColor = true; private touchEventInProgress: boolean = false; // This prevents multiple calling of mouse down and up events. public testing: boolean = false; // If this set to true, container will create a div element for every section. So, cypress tests can find where to click etc. - public lowestPropagatedBoundSection: string = null; // Event propagating to bound sections. The first section which stops propagating and the sections those are on top of that section, get the event. - public targetSection: string = null; - public activeSection: string = null; + public lowestPropagatedBoundSection: string | null = null; // Event propagating to bound sections. The first section which stops propagating and the sections those are on top of that section, get the event. + public targetSection: string | null = null; + public activeSection: string | null = null; private scrollLineHeight: number = 30; // This will be overridden. private mouseIsInside: boolean = false; private inZoomAnimation: boolean = false; private zoomChanged: boolean = false; - private documentAnchorSectionName: string = null; // This section's top left point declares the point where document starts. - private documentAnchor: Array = null; // This is the point where document starts inside canvas element. Initial value shouldn't be [0, 0]. + private documentAnchorSectionName: string | null = null; // This section's top left point declares the point where document starts. + private documentAnchor: Array | null = null; // This is the point where document starts inside canvas element. Initial value shouldn't be [0, 0]. // Above 2 properties can be used with documentBounds. private drawingPaused: number = 0; private drawingEnabled: boolean = true; private dirty: DirtyType = DirtyType.NotDirty; - private dirtySubset: Set = null; // If not null this is the set of coords that need redrawing. + private dirtySubset: Set | null = null; // If not null this is the set of coords that need redrawing. private sectionsDirty: boolean = false; private paintedEver: boolean = false; @@ -211,19 +211,19 @@ class CanvasSectionContainer { private windowSectionList: Array = []; // Below variables are related to animation feature. - private animatingSectionName: string = null; // The section that called startAnimating function. This variable is null when animations are not running. - private lastFrameStamp: number = null; - private continueAnimating: boolean = null; - private frameCount: number = null; // Frame count of the current animation. - private duration: number = null; // Duration for the animation. - private elapsedTime: number = null; // Time that passed since the animation started. + private animatingSectionName: string | null = null; // The section that called startAnimating function. This variable is null when animations are not running. + private lastFrameStamp: number | null = null; + private continueAnimating: boolean | null = null; + private frameCount: number | null = null; // Frame count of the current animation. + private duration: number | null = null; // Duration for the animation. + private elapsedTime: number | null = null; // Time that passed since the animation started. private stoppingFunctionList: Array; // Event listeners need to be removed from the canvas object. So we keep track of their functions. private stoppingEventTypes: Array; // Events those stop the animation. - constructor (canvasDOMElement: HTMLCanvasElement, disableDrawing?: boolean) { + constructor(canvasDOMElement: HTMLCanvasElement, disableDrawing?: boolean) { this.canvas = canvasDOMElement; this.context = canvasDOMElement.getContext('2d', { alpha: false }); - this.context.setTransform(1,0,0,1,0,0); + this.context!.setTransform(1, 0, 0, 1, 0, 0); document.addEventListener('mousemove', this.onMouseMove.bind(this)); this.canvas.onmousedown = this.onMouseDown.bind(this); document.addEventListener('mouseup', this.onMouseUp.bind(this)); @@ -248,13 +248,19 @@ class CanvasSectionContainer { tempElement.style.fontSize = 'initial'; // IE doesn't support this property, but it uses "deltaMode=0" (so we don't need to get the line height). tempElement.style.display = 'none'; document.body.appendChild(tempElement); - this.scrollLineHeight = parseInt(window.getComputedStyle(tempElement).fontSize); + this.scrollLineHeight = parseInt( + window.getComputedStyle(tempElement).fontSize, + ); document.body.removeChild(tempElement); // Remove the temporary element. - this.clearColor = window.getComputedStyle(document.documentElement).getPropertyValue('--color-canvas'); + this.clearColor = window + .getComputedStyle(document.documentElement) + .getPropertyValue('--color-canvas'); // Set document background color to the app background color for now until we get the real color from the kit // through a LOK_CALLBACK_DOCUMENT_BACKGROUND_COLOR - this.documentBackgroundColor = window.getComputedStyle(document.documentElement).getPropertyValue('--color-background-document'); + this.documentBackgroundColor = window + .getComputedStyle(document.documentElement) + .getPropertyValue('--color-background-document'); // If CanvasTileLayer.js:this._layer.isCalc() if (disableDrawing) { @@ -266,31 +272,31 @@ class CanvasSectionContainer { } private clearCanvas() { - this.context.fillStyle = this.clearColor; - this.context.clearRect(0, 0, this.canvas.width, this.canvas.height); - this.context.fillRect(0, 0, this.canvas.width, this.canvas.height); + this.context!.fillStyle = this.clearColor; + this.context!.clearRect(0, 0, this.canvas.width, this.canvas.height); + this.context!.fillRect(0, 0, this.canvas.width, this.canvas.height); } - getContext () { + getContext() { return this.context; } public setDocumentAnchorSection(sectionName: string) { - var section: CanvasSectionObject = this.getSectionWithName(sectionName); + var section: CanvasSectionObject | null = + this.getSectionWithName(sectionName); if (section) { this.documentAnchorSectionName = sectionName; - } - else { + } else { this.documentAnchorSectionName = null; this.documentAnchor = null; } } - public getDocumentAnchorSection (): CanvasSectionObject { + public getDocumentAnchorSection(): CanvasSectionObject | null { return this.getSectionWithName(this.documentAnchorSectionName); } - public getViewSize (): Array { + public getViewSize(): Array { return [this.canvas.width, this.canvas.height]; } @@ -298,20 +304,19 @@ class CanvasSectionContainer { this.useCSSForBackgroundColor = useCSSVars; } - setClearColor (color: string) { - if (!this.useCSSForBackgroundColor) - this.clearColor = color; + setClearColor(color: string) { + if (!this.useCSSForBackgroundColor) this.clearColor = color; } - getClearColor () { + getClearColor() { return this.clearColor; } - setDocumentBackgroundColor (color: string) { + setDocumentBackgroundColor(color: string) { this.documentBackgroundColor = color; } - getDocumentBackgroundColor () { + getDocumentBackgroundColor() { return this.documentBackgroundColor; } @@ -319,23 +324,23 @@ class CanvasSectionContainer { return this.canvas.style; } - setInZoomAnimation (inZoomAnimation: boolean) { + setInZoomAnimation(inZoomAnimation: boolean) { this.inZoomAnimation = inZoomAnimation; } - isInZoomAnimation (): boolean { + isInZoomAnimation(): boolean { return this.inZoomAnimation; } - setZoomChanged (zoomChanged: boolean) { + setZoomChanged(zoomChanged: boolean) { this.zoomChanged = zoomChanged; } - isZoomChanged (): boolean { + isZoomChanged(): boolean { return this.zoomChanged; } - drawingAllowed (): boolean { + drawingAllowed(): boolean { return this.drawingEnabled && this.drawingPaused <= 0; } @@ -343,13 +348,12 @@ class CanvasSectionContainer { // Socket._emitSlurpedEvents(). Currently this is used in Calc to disable rendering // from docload till we get tiles of the correct view area to render. // After calling this, only enableDrawing() can undo this call. - disableDrawing () { + disableDrawing() { this.drawingEnabled = false; } - enableDrawing () { - if (this.drawingEnabled) - return; + enableDrawing() { + if (this.drawingEnabled) return; this.drawingEnabled = true; if (this.drawingPaused === 0) { @@ -359,8 +363,7 @@ class CanvasSectionContainer { } } - pauseDrawing () { - + pauseDrawing() { if (this.drawingPaused++ === 0) { this.clearDirty(); } @@ -371,10 +374,10 @@ class CanvasSectionContainer { // the count, since we have no RAII helpers here. resumeDrawing(topLevel?: boolean) { var wasNonZero: boolean = this.drawingPaused !== 0; - if (topLevel) - this.drawingPaused = 0; - else if (this.drawingPaused > 0) // ensure non-negative value. - this.drawingPaused--; + if (topLevel) this.drawingPaused = 0; + else if (this.drawingPaused > 0) + // ensure non-negative value. + this.drawingPaused--; if (this.drawingEnabled && wasNonZero && this.drawingPaused === 0) { this.paintOnResumeOrEnable(); @@ -388,9 +391,8 @@ class CanvasSectionContainer { this.sectionsDirty = false; } - var scrollSection = this.getSectionWithName(L.CSections.Scroll.name); - if (scrollSection) - scrollSection.completePendingScroll(); // No painting, only dirtying. + var scrollSection = this.getSectionWithName(L.CSections.Scroll.name); + if (scrollSection) scrollSection.completePendingScroll(); // No painting, only dirtying. if (this.dirty) { this.requestReDraw(this.dirtySubset); @@ -404,33 +406,36 @@ class CanvasSectionContainer { } private setDirty(coords: any) { - if (this.dirty == DirtyType.All) - return; - if (coords === null || - // multi-clip needed for split-panes in drawSections. - app.map._docLayer.getSplitPanesContext()) - { + if (this.dirty == DirtyType.All) return; + if ( + coords === null || + // multi-clip needed for split-panes in drawSections. + app.map._docLayer.getSplitPanesContext() + ) { this.dirty = DirtyType.All; this.dirtySubset = null; - } - else - { + } else { this.dirty = DirtyType.TileRange; - if (this.dirtySubset === null) - this.dirtySubset = new Set(); + if (this.dirtySubset === null) this.dirtySubset = new Set(); this.dirtySubset.add(coords); } } /** * IE11 doesn't support Array.includes, use replacement - */ - private arrayIncludes (array: Array, element: T) { + */ + private arrayIncludes(array: Array, element: T) { return array.indexOf(element) >= 0; } - private clearMousePositions () { - this.positionOnClick = this.positionOnDoubleClick = this.positionOnMouseDown = this.positionOnMouseUp = this.dragDistance = this.sectionOnMouseDown = null; + private clearMousePositions() { + this.positionOnClick = + this.positionOnDoubleClick = + this.positionOnMouseDown = + this.positionOnMouseUp = + this.dragDistance = + this.sectionOnMouseDown = + null; this.touchCenter = null; this.draggingSomething = false; this.touchEventInProgress = false; @@ -438,30 +443,31 @@ class CanvasSectionContainer { this.targetSection = null; } - private convertPositionToSectionLocale (section: CanvasSectionObject, point: Array): Array { - return [point[0] - section.myTopLeft[0], point[1] - section.myTopLeft[1]]; + private convertPositionToSectionLocale( + section: CanvasSectionObject, + point: Array, + ): Array { + return [point[0] - section.myTopLeft[0]!, point[1] - section.myTopLeft[1]!]; } - private convertPositionToCanvasLocale (e: any): Array { + private convertPositionToCanvasLocale(e: any): Array { var rect: any = this.canvas.getBoundingClientRect(); var x: number, y: number; if (e.touches !== undefined && e.touches.length > 0) { x = e.touches[0].clientX - rect.left; y = e.touches[0].clientY - rect.top; - } - else if (e.changedTouches !== undefined && e.changedTouches.length > 0) { + } else if (e.changedTouches !== undefined && e.changedTouches.length > 0) { x = e.changedTouches[0].clientX - rect.left; y = e.changedTouches[0].clientY - rect.top; - } - else { + } else { x = e.clientX - rect.left; y = e.clientY - rect.top; } return [Math.round(x * app.dpiScale), Math.round(y * app.dpiScale)]; } - private convertPointToCanvasLocale (point: Array): Array { + private convertPointToCanvasLocale(point: Array): Array { var rect: any = this.canvas.getBoundingClientRect(); var x: number, y: number; @@ -471,7 +477,7 @@ class CanvasSectionContainer { return [Math.round(x * app.dpiScale), Math.round(y * app.dpiScale)]; } - getSectionWithName (name: string): CanvasSectionObject { + getSectionWithName(name: string | null): CanvasSectionObject | null { if (name) { for (var i: number = 0; i < this.sections.length; i++) { if (this.sections[i].name === name) { @@ -479,31 +485,38 @@ class CanvasSectionContainer { } } return null; - } - else { + } else { return null; } } - public getDocumentTopLeft (): Array { + public getDocumentTopLeft(): Array { return [this.documentTopLeft[0], this.documentTopLeft[1]]; } - public getDocumentBottomRight (): Array { + public getDocumentBottomRight(): Array { return [this.documentBottomRight[0], this.documentBottomRight[1]]; } // Returns top-left and bottom-right coordinates respectively. - public getDocumentBounds (): Array { - return [this.documentTopLeft[0], this.documentTopLeft[1], this.documentBottomRight[0], this.documentBottomRight[1]]; + public getDocumentBounds(): Array { + return [ + this.documentTopLeft[0], + this.documentTopLeft[1], + this.documentBottomRight[0], + this.documentBottomRight[1], + ]; } - public getDocumentSize (): Array { - return [this.documentBottomRight[0] - this.documentTopLeft[0], this.documentBottomRight[1] - this.documentTopLeft[1]]; + public getDocumentSize(): Array { + return [ + this.documentBottomRight[0] - this.documentTopLeft[0], + this.documentBottomRight[1] - this.documentTopLeft[1], + ]; } - public getDocumentAnchor(): Array { - return [this.documentAnchor[0], this.documentAnchor[1]]; + public getDocumentAnchor(): Array { + return [this.documentAnchor![0], this.documentAnchor![1]]; } public getCanvasBoundingClientRect(): DOMRect { @@ -523,25 +536,34 @@ class CanvasSectionContainer { } public getDragDistance(): number[] { - return [...this.dragDistance]; + return [...this.dragDistance!]; } public getPositionOnMouseUp(): number[] { - return [...this.positionOnMouseUp]; + return [...this.positionOnMouseUp!]; } - public isDocumentObjectVisible (section: CanvasSectionObject): boolean { + public isDocumentObjectVisible(section: CanvasSectionObject): boolean { const width = this.getDocumentSize()[0]; const halfWidth = width * 0.5; const height = this.getDocumentSize()[1]; const halfHeight = height * 0.5; - if (Math.abs(section.position[0] + section.size[0] * 0.5 - (this.documentTopLeft[0] + halfWidth)) < (width + section.size[0]) * 0.5 && - Math.abs(section.position[1] + section.size[1] * 0.5 - (this.documentTopLeft[1] + halfHeight)) < (height + section.size[1]) * 0.5) - { + if ( + Math.abs( + section.position[0] + + section.size[0] * 0.5 - + (this.documentTopLeft[0] + halfWidth), + ) < + (width + section.size[0]) * 0.5 && + Math.abs( + section.position[1] + + section.size[1] * 0.5 - + (this.documentTopLeft[1] + halfHeight), + ) < + (height + section.size[1]) * 0.5 + ) { return true; - } - else - return false; + } else return false; } // For window sections, there is a "targetSection" property in CanvasSectionContainer. @@ -550,24 +572,20 @@ class CanvasSectionContainer { // This (below) function gives the window section if a section will sooner or later get the event. // But this function cannot know if the event will be stopped by a prior section before the event reaches the section specified with the "sectionName" variable. // This function doesn't neither check the "interactable" property of the section in question ("sectionName"). Though that check can be added here, as an optional one. - public targetBoundSectionListContains (sectionName: string): boolean { - if (!this.targetSection) - return false; + public targetBoundSectionListContains(sectionName: string): boolean { + if (!this.targetSection) return false; else { - var section: CanvasSectionObject = this.getSectionWithName(this.targetSection); + var section = this.getSectionWithName(this.targetSection); if (section && section.boundsList) { for (var i: number = 0; i < section.boundsList.length; i++) { - if (section.boundsList[i].name === sectionName) - return true; + if (section.boundsList[i].name === sectionName) return true; } return false; - } - else - return false; + } else return false; } } - public setDocumentBounds (points: Array) { + public setDocumentBounds(points: Array) { this.documentTopLeft[0] = Math.round(points[0]); this.documentTopLeft[1] = Math.round(points[1]); @@ -583,7 +601,14 @@ class CanvasSectionContainer { var section: CanvasSectionObject = this.sections[i]; if (section.documentObject === true) { - section.myTopLeft = [this.documentAnchor[0] + section.position[0] - this.documentTopLeft[0], this.documentAnchor[1] + section.position[1] - this.documentTopLeft[1]]; + section.myTopLeft = [ + this.documentAnchor![0]! + + section.position[0] - + this.documentTopLeft[0], + this.documentAnchor![1]! + + section.position[1] - + this.documentTopLeft[1], + ]; const isVisible = this.isDocumentObjectVisible(section); if (isVisible !== section.isVisible) { section.isVisible = isVisible; @@ -595,9 +620,11 @@ class CanvasSectionContainer { } } - private updateBoundSectionList(section: CanvasSectionObject, sectionList: Array = null): Array { - if (sectionList === null) - sectionList = new Array(0); + private updateBoundSectionList( + section: CanvasSectionObject, + sectionList: Array | null = null, + ): Array { + if (sectionList === null) sectionList = new Array(0); sectionList.push(section); @@ -612,7 +639,10 @@ class CanvasSectionContainer { } for (var i: number = 0; i < this.sections.length; i++) { - if (this.sections[i].isLocated && this.sections[i].boundToSection === section.name) { + if ( + this.sections[i].isLocated && + this.sections[i].boundToSection === section.name + ) { if (!this.arrayIncludes(sectionList, this.sections[i])) tempSectionList.push(this.sections[i]); } @@ -629,8 +659,12 @@ class CanvasSectionContainer { // According to zIndex & drawingOrder. for (var i: number = 0; i < section.boundsList.length - 1; i++) { for (var j = i + 1; j < section.boundsList.length; j++) { - if (section.boundsList[i].zIndex > section.boundsList[j].zIndex - || (section.boundsList[i].zIndex === section.boundsList[j].zIndex && section.boundsList[i].drawingOrder > section.boundsList[j].drawingOrder)) { + if ( + section.boundsList[i].zIndex > section.boundsList[j].zIndex || + (section.boundsList[i].zIndex === section.boundsList[j].zIndex && + section.boundsList[i].drawingOrder > + section.boundsList[j].drawingOrder) + ) { var temp = section.boundsList[i]; section.boundsList[i] = section.boundsList[j]; section.boundsList[j] = temp; @@ -642,8 +676,7 @@ class CanvasSectionContainer { for (var i: number = section.boundsList.length - 1; i > -1; i--) { if (section.boundsList[i].name !== section.name) { section.boundsList.splice(i, 1); - } - else { + } else { break; } } @@ -654,12 +687,14 @@ class CanvasSectionContainer { public updateBoundSectionLists() { for (var i: number = 0; i < this.sections.length; i++) { this.sections[i].boundsList = null; - this.sections[i].boundsList = this.updateBoundSectionList(this.sections[i]); + this.sections[i].boundsList = this.updateBoundSectionList( + this.sections[i], + ); this.orderBoundsList(this.sections[i]); } } - requestReDraw(tileSubset: Set = null) { + requestReDraw(tileSubset: Set | null = null) { if (!this.drawingAllowed()) { // Someone requested a redraw, but we're paused => schedule a redraw. this.setDirty(null); @@ -680,7 +715,9 @@ class CanvasSectionContainer { for (var j: number = 0; j < this.windowSectionList.length; j++) { var windowSection = this.windowSectionList[j]; if (windowSection.interactable) - windowSection.onCursorPositionChanged(app.file.textCursor.rectangle.clone()); + windowSection.onCursorPositionChanged( + app.file.textCursor.rectangle.clone(), + ); if (this.lowestPropagatedBoundSection === windowSection.name) propagate = false; // Window sections can not stop the propagation of the event for other window sections. @@ -689,7 +726,9 @@ class CanvasSectionContainer { if (propagate) { for (var i: number = this.sections.length - 1; i > -1; i--) { if (this.sections[i].interactable) - this.sections[i].onCursorPositionChanged(app.file.textCursor.rectangle.clone()); + this.sections[i].onCursorPositionChanged( + app.file.textCursor.rectangle.clone(), + ); } } } @@ -703,8 +742,7 @@ class CanvasSectionContainer { for (var j: number = 0; j < this.windowSectionList.length; j++) { var windowSection = this.windowSectionList[j]; - if (windowSection.interactable) - windowSection.onCellAddressChanged(); + if (windowSection.interactable) windowSection.onCellAddressChanged(); if (this.lowestPropagatedBoundSection === windowSection.name) propagate = false; // Window sections can not stop the propagation of the event for other window sections. @@ -718,15 +756,20 @@ class CanvasSectionContainer { } } - private propagateOnClick(section: CanvasSectionObject, position: Array, e: MouseEvent) { + private propagateOnClick( + section: CanvasSectionObject, + position: Array, + e: MouseEvent, + ) { this.targetSection = section.name; var propagate: boolean = true; - var windowPosition: Array = position ? [position[0] + section.myTopLeft[0], position[1] + section.myTopLeft[1]]: null; + var windowPosition = position + ? [position[0] + section.myTopLeft[0]!, position[1] + section.myTopLeft[1]!] + : null; for (var j: number = 0; j < this.windowSectionList.length; j++) { var windowSection = this.windowSectionList[j]; - if (windowSection.interactable) - windowSection.onClick(windowPosition, e); + if (windowSection.interactable) windowSection.onClick(windowPosition, e); if (this.lowestPropagatedBoundSection === windowSection.name) propagate = false; // Window sections can not stop the propagation of the event for other window sections. @@ -735,7 +778,10 @@ class CanvasSectionContainer { if (propagate) { for (var i: number = section.boundsList.length - 1; i > -1; i--) { if (section.boundsList[i].interactable) - section.boundsList[i].onClick((position ? [position[0], position[1]]: null), e); + section.boundsList[i].onClick( + position ? [position[0], position[1]] : null, + e, + ); if (section.boundsList[i].name === this.lowestPropagatedBoundSection) break; // Stop propagation. @@ -743,11 +789,17 @@ class CanvasSectionContainer { } } - private propagateOnDoubleClick(section: CanvasSectionObject, position: Array, e: MouseEvent) { + private propagateOnDoubleClick( + section: CanvasSectionObject, + position: Array, + e: MouseEvent, + ) { this.targetSection = section.name; var propagate: boolean = true; - var windowPosition: Array = position ? [position[0] + section.myTopLeft[0], position[1] + section.myTopLeft[1]]: null; + var windowPosition = position + ? [position[0] + section.myTopLeft[0]!, position[1] + section.myTopLeft[1]!] + : null; for (var j: number = 0; j < this.windowSectionList.length; j++) { var windowSection = this.windowSectionList[j]; if (windowSection.interactable) @@ -760,7 +812,10 @@ class CanvasSectionContainer { if (propagate) { for (var i: number = section.boundsList.length - 1; i > -1; i--) { if (section.boundsList[i].interactable) - section.boundsList[i].onDoubleClick((position ? [position[0], position[1]]: null), e); + section.boundsList[i].onDoubleClick( + position ? [position[0], position[1]] : null, + e, + ); if (section.boundsList[i].name === this.lowestPropagatedBoundSection) break; // Stop propagation. @@ -768,11 +823,18 @@ class CanvasSectionContainer { } } - private propagateOnMouseLeave(section: CanvasSectionObject, position: Array, e: MouseEvent) { + private propagateOnMouseLeave( + section: CanvasSectionObject, + position: Array | null, + e: MouseEvent, + ) { this.targetSection = section.name; - var windowPosition: Array = position ? [position[0] + section.myTopLeft[0], position[1] + section.myTopLeft[1]]: null; - if (!windowPosition) { // This event is valid only if the windowPosition is null for window sections. Otherwise mouse cannot leave from a section that is covering entire canvas element. + var windowPosition = position + ? [position[0] + section.myTopLeft[0]!, position[1] + section.myTopLeft[1]!] + : null; + if (!windowPosition) { + // This event is valid only if the windowPosition is null for window sections. Otherwise mouse cannot leave from a section that is covering entire canvas element. for (var j: number = 0; j < this.windowSectionList.length; j++) { var windowSection = this.windowSectionList[j]; if (windowSection.interactable) @@ -783,32 +845,49 @@ class CanvasSectionContainer { for (var i: number = section.boundsList.length - 1; i > -1; i--) { if (section.boundsList[i].interactable) - section.boundsList[i].onMouseLeave((position ? [position[0], position[1]]: null), e); + section.boundsList[i].onMouseLeave( + position ? [position[0], position[1]] : null, + e, + ); if (section.boundsList[i].name === this.lowestPropagatedBoundSection) break; // Stop propagation. } } - private propagateOnMouseEnter(section: CanvasSectionObject, position: Array, e: MouseEvent) { + private propagateOnMouseEnter( + section: CanvasSectionObject, + position: Array, + e: MouseEvent, + ) { this.targetSection = section.name; // This event is handled in the mouseEnter event of the canvas itself (for window sections). for (var i: number = section.boundsList.length - 1; i > -1; i--) { if (section.boundsList[i].interactable) - section.boundsList[i].onMouseEnter((position ? [position[0], position[1]]: null), e); + section.boundsList[i].onMouseEnter( + position ? [position[0], position[1]] : null, + e, + ); if (section.boundsList[i].name === this.lowestPropagatedBoundSection) break; // Stop propagation. } } - private propagateOnMouseMove(section: CanvasSectionObject, position: Array, dragDistance: Array, e: MouseEvent) { + private propagateOnMouseMove( + section: CanvasSectionObject, + position: Array, + dragDistance: Array | null, + e: MouseEvent, + ) { this.targetSection = section.name; var propagate: boolean = true; - var windowPosition: Array = position ? [position[0] + section.myTopLeft[0], position[1] + section.myTopLeft[1]]: null; + var windowPosition = position + ? [position[0] + section.myTopLeft[0]!, position[1] + section.myTopLeft[1]!] + : null; for (var j: number = 0; j < this.windowSectionList.length; j++) { var windowSection = this.windowSectionList[j]; if (windowSection.interactable) @@ -821,7 +900,11 @@ class CanvasSectionContainer { if (propagate) { for (var i: number = section.boundsList.length - 1; i > -1; i--) { if (section.boundsList[i].interactable) - section.boundsList[i].onMouseMove((position ? [position[0], position[1]]: null), dragDistance, e); + section.boundsList[i].onMouseMove( + position ? [position[0], position[1]] : null, + dragDistance, + e, + ); if (section.boundsList[i].name === this.lowestPropagatedBoundSection) break; // Stop propagation. @@ -829,11 +912,17 @@ class CanvasSectionContainer { } } - private propagateOnMouseDown(section: CanvasSectionObject, position: Array, e: MouseEvent) { + private propagateOnMouseDown( + section: CanvasSectionObject, + position: Array, + e: MouseEvent, + ) { this.targetSection = section.name; var propagate: boolean = true; - var windowPosition: Array = position ? [position[0] + section.myTopLeft[0], position[1] + section.myTopLeft[1]]: null; + var windowPosition = position + ? [position[0] + section.myTopLeft[0]!, position[1] + section.myTopLeft[1]!] + : null; for (var j: number = 0; j < this.windowSectionList.length; j++) { var windowSection = this.windowSectionList[j]; if (windowSection.interactable) @@ -846,7 +935,10 @@ class CanvasSectionContainer { if (propagate) { for (var i: number = section.boundsList.length - 1; i > -1; i--) { if (section.boundsList[i].interactable) - section.boundsList[i].onMouseDown((position ? [position[0], position[1]]: null), e); + section.boundsList[i].onMouseDown( + position ? [position[0], position[1]] : null, + e, + ); if (section.boundsList[i].name === this.lowestPropagatedBoundSection) break; // Stop propagation. @@ -854,11 +946,17 @@ class CanvasSectionContainer { } } - private propagateOnMouseUp(section: CanvasSectionObject, position: Array, e: MouseEvent) { + private propagateOnMouseUp( + section: CanvasSectionObject, + position: Array, + e: MouseEvent, + ) { this.targetSection = section.name; var propagate: boolean = true; - var windowPosition: Array = position ? [position[0] + section.myTopLeft[0], position[1] + section.myTopLeft[1]]: null; + var windowPosition = position + ? [position[0] + section.myTopLeft[0]!, position[1] + section.myTopLeft[1]!] + : null; for (var j: number = 0; j < this.windowSectionList.length; j++) { var windowSection = this.windowSectionList[j]; if (windowSection.interactable) @@ -871,7 +969,10 @@ class CanvasSectionContainer { if (propagate) { for (var i: number = section.boundsList.length - 1; i > -1; i--) { if (section.boundsList[i].interactable) - section.boundsList[i].onMouseUp((position ? [position[0], position[1]]: null), e); + section.boundsList[i].onMouseUp( + position ? [position[0], position[1]] : null, + e, + ); if (section.boundsList[i].name === this.lowestPropagatedBoundSection) break; // Stop propagation. @@ -885,8 +986,7 @@ class CanvasSectionContainer { var propagate: boolean = true; for (var j: number = 0; j < this.windowSectionList.length; j++) { var windowSection = this.windowSectionList[j]; - if (windowSection.interactable) - windowSection.onContextMenu(e); + if (windowSection.interactable) windowSection.onContextMenu(e); if (this.lowestPropagatedBoundSection === windowSection.name) propagate = false; // Window sections can not stop the propagation of the event for other window sections. @@ -903,11 +1003,18 @@ class CanvasSectionContainer { } } - private propagateOnMouseWheel(section: CanvasSectionObject, position: Array, delta: Array, e: MouseEvent) { + private propagateOnMouseWheel( + section: CanvasSectionObject, + position: Array, + delta: Array, + e: MouseEvent, + ) { this.targetSection = section.name; var propagate: boolean = true; - var windowPosition: Array = position ? [position[0] + section.myTopLeft[0], position[1] + section.myTopLeft[1]]: null; + var windowPosition = position + ? [position[0] + section.myTopLeft[0]!, position[1] + section.myTopLeft[1]!] + : null; for (var j: number = 0; j < this.windowSectionList.length; j++) { var windowSection = this.windowSectionList[j]; if (windowSection.interactable) @@ -920,7 +1027,11 @@ class CanvasSectionContainer { if (propagate) { for (var i: number = section.boundsList.length - 1; i > -1; i--) { if (section.boundsList[i].interactable) - section.boundsList[i].onMouseWheel((position ? [position[0], position[1]]: null), delta, e); + section.boundsList[i].onMouseWheel( + position ? [position[0], position[1]] : null, + delta, + e, + ); if (section.boundsList[i].name === this.lowestPropagatedBoundSection) break; // Stop propagation. @@ -928,14 +1039,16 @@ class CanvasSectionContainer { } } - private propagateOnMultiTouchStart(section: CanvasSectionObject, e: TouchEvent) { + private propagateOnMultiTouchStart( + section: CanvasSectionObject, + e: TouchEvent, + ) { this.targetSection = section.name; var propagate: boolean = true; for (var j: number = 0; j < this.windowSectionList.length; j++) { var windowSection = this.windowSectionList[j]; - if (windowSection.interactable) - windowSection.onMultiTouchStart(e); + if (windowSection.interactable) windowSection.onMultiTouchStart(e); if (this.lowestPropagatedBoundSection === windowSection.name) propagate = false; // Window sections can not stop the propagation of the event for other window sections. @@ -952,11 +1065,18 @@ class CanvasSectionContainer { } } - private propagateOnMultiTouchMove(section: CanvasSectionObject, position: Array, distance: number, e: TouchEvent) { + private propagateOnMultiTouchMove( + section: CanvasSectionObject, + position: Array, + distance: number, + e: TouchEvent, + ) { this.targetSection = section.name; var propagate: boolean = true; - var windowPosition: Array = position ? [position[0] + section.myTopLeft[0], position[1] + section.myTopLeft[1]]: null; + var windowPosition = position + ? [position[0] + section.myTopLeft[0]!, position[1] + section.myTopLeft[1]!] + : null; for (var j: number = 0; j < this.windowSectionList.length; j++) { var windowSection = this.windowSectionList[j]; if (windowSection.interactable) @@ -969,7 +1089,11 @@ class CanvasSectionContainer { if (propagate) { for (var i: number = section.boundsList.length - 1; i > -1; i--) { if (section.boundsList[i].interactable) - section.boundsList[i].onMultiTouchMove((position ? [position[0], position[1]]: null), distance, e); + section.boundsList[i].onMultiTouchMove( + position ? [position[0], position[1]] : null, + distance, + e, + ); if (section.boundsList[i].name === this.lowestPropagatedBoundSection) break; // Stop propagation. @@ -977,14 +1101,16 @@ class CanvasSectionContainer { } } - private propagateOnMultiTouchEnd(section: CanvasSectionObject, e: TouchEvent) { + private propagateOnMultiTouchEnd( + section: CanvasSectionObject, + e: TouchEvent, + ) { this.targetSection = section.name; var propagate: boolean = true; for (var j: number = 0; j < this.windowSectionList.length; j++) { var windowSection = this.windowSectionList[j]; - if (windowSection.interactable) - windowSection.onMultiTouchEnd(e); + if (windowSection.interactable) windowSection.onMultiTouchEnd(e); if (this.lowestPropagatedBoundSection === windowSection.name) propagate = false; // Window sections can not stop the propagation of the event for other window sections. @@ -1026,33 +1152,56 @@ class CanvasSectionContainer { } } - private onClick (e: MouseEvent) { - if (!this.draggingSomething) { // Prevent click event after dragging. - if (this.positionOnMouseDown !== null && this.positionOnMouseUp !== null) { + private onClick(e: MouseEvent) { + if (!this.draggingSomething) { + // Prevent click event after dragging. + if ( + this.positionOnMouseDown !== null && + this.positionOnMouseUp !== null + ) { this.positionOnClick = this.convertPositionToCanvasLocale(e); var s1 = this.findSectionContainingPoint(this.positionOnMouseDown); var s2 = this.findSectionContainingPoint(this.positionOnMouseUp); - if (s1 && s2 && s1 == s2) { // Allow click event if only mouse was above same section while clicking. - var section: CanvasSectionObject = this.findSectionContainingPoint(this.positionOnClick); - if (section) { // "interactable" property is checked while propagating the event. - this.propagateOnClick(section, this.convertPositionToSectionLocale(section, this.positionOnClick), e); + if (s1 && s2 && s1 == s2) { + // Allow click event if only mouse was above same section while clicking. + var section: CanvasSectionObject = this.findSectionContainingPoint( + this.positionOnClick, + ); + if (section) { + // "interactable" property is checked while propagating the event. + this.propagateOnClick( + section, + this.convertPositionToSectionLocale( + section, + this.positionOnClick, + ), + e, + ); } } } this.clearMousePositions(); // Drawing takes place after cleaning mouse positions. Sections should overcome this evil. this.drawSections(); - } - else { + } else { this.clearMousePositions(); } } - private onDoubleClick (e: MouseEvent) { + private onDoubleClick(e: MouseEvent) { this.positionOnDoubleClick = this.convertPositionToCanvasLocale(e); - var section: CanvasSectionObject = this.findSectionContainingPoint(this.positionOnDoubleClick); + var section: CanvasSectionObject = this.findSectionContainingPoint( + this.positionOnDoubleClick, + ); if (section) { - this.propagateOnDoubleClick(section, this.convertPositionToSectionLocale(section, this.positionOnDoubleClick), e); + this.propagateOnDoubleClick( + section, + this.convertPositionToSectionLocale( + section, + this.positionOnDoubleClick, + ), + e, + ); } this.clearMousePositions(); this.drawSections(); @@ -1064,11 +1213,14 @@ class CanvasSectionContainer { private startLongPress(e: TouchEvent) { this.stopLongPress(); - this.longPressTimer = setTimeout(function() { - (e as any).clientX = e.touches[0].clientX; - (e as any).clientY = e.touches[0].clientY; - this.onMouseMove(e); - }.bind(this), 550); + this.longPressTimer = setTimeout( + function () { + (e as any).clientX = e.touches[0].clientX; + (e as any).clientY = e.touches[0].clientY; + this.onMouseMove(e); + }.bind(this), + 550, + ); } private stopLongPress() { @@ -1078,54 +1230,87 @@ class CanvasSectionContainer { } } - private onMouseMove (e: MouseEvent) { + private onMouseMove(e: MouseEvent) { // Early exit. If mouse is outside and "draggingSomething = false", then there is no reason to check further. - if (!this.mouseIsInside && !this.draggingSomething) - return; + if (!this.mouseIsInside && !this.draggingSomething) return; if (!this.isLongPressActive()) { if (!this.touchEventInProgress) { this.mousePosition = this.convertPositionToCanvasLocale(e); if (this.positionOnMouseDown !== null && !this.draggingSomething) { - var dragDistance = [this.mousePosition[0] - this.positionOnMouseDown[0], this.mousePosition[1] - this.positionOnMouseDown[1]]; - if (Math.abs(dragDistance[0]) >= this.draggingTolerance || Math.abs(dragDistance[1]) >= this.draggingTolerance) { + var dragDistance = [ + this.mousePosition[0] - this.positionOnMouseDown[0], + this.mousePosition[1] - this.positionOnMouseDown[1], + ]; + if ( + Math.abs(dragDistance[0]) >= this.draggingTolerance || + Math.abs(dragDistance[1]) >= this.draggingTolerance + ) { this.draggingSomething = true; } } - var section: CanvasSectionObject; + var section: CanvasSectionObject | null; if (this.draggingSomething) { - this.dragDistance = [this.mousePosition[0] - this.positionOnMouseDown[0], this.mousePosition[1] - this.positionOnMouseDown[1]]; + this.dragDistance = [ + this.mousePosition[0] - this.positionOnMouseDown![0], + this.mousePosition[1] - this.positionOnMouseDown![1], + ]; section = this.getSectionWithName(this.sectionOnMouseDown); - } - else { + } else { section = this.findSectionContainingPoint(this.mousePosition); } if (section && section.boundsList) { if (section.name !== this.sectionUnderMouse) { if (this.sectionUnderMouse !== null) { - var previousSection: CanvasSectionObject = this.getSectionWithName(this.sectionUnderMouse); + var previousSection = + this.getSectionWithName(this.sectionUnderMouse); if (previousSection) - this.propagateOnMouseLeave(previousSection, this.convertPositionToSectionLocale(previousSection, this.mousePosition), e); + this.propagateOnMouseLeave( + previousSection, + this.convertPositionToSectionLocale( + previousSection, + this.mousePosition, + ), + e, + ); } this.sectionUnderMouse = section.name; - this.propagateOnMouseEnter(section, this.convertPositionToSectionLocale(section, this.mousePosition), e); + this.propagateOnMouseEnter( + section, + this.convertPositionToSectionLocale(section, this.mousePosition), + e, + ); } - this.propagateOnMouseMove(section, this.convertPositionToSectionLocale(section, this.mousePosition), this.dragDistance, e); - } - else if (this.sectionUnderMouse !== null) { - var previousSection: CanvasSectionObject = this.getSectionWithName(this.sectionUnderMouse); + this.propagateOnMouseMove( + section, + this.convertPositionToSectionLocale(section, this.mousePosition), + this.dragDistance, + e, + ); + } else if (this.sectionUnderMouse !== null) { + var previousSection = this.getSectionWithName( + this.sectionUnderMouse, + ); if (previousSection) - this.propagateOnMouseLeave(previousSection, this.convertPositionToSectionLocale(previousSection, this.mousePosition), e); + this.propagateOnMouseLeave( + previousSection, + this.convertPositionToSectionLocale( + previousSection, + this.mousePosition, + ), + e, + ); this.sectionUnderMouse = null; } } - } - else { + } else { this.mousePosition = this.convertPositionToCanvasLocale(e); - var section: CanvasSectionObject = this.findSectionContainingPoint(this.mousePosition); + var section: CanvasSectionObject | null = this.findSectionContainingPoint( + this.mousePosition, + ); if (section) { this.stopLongPress(); this.propagateOnContextMenu(section, e); @@ -1133,20 +1318,32 @@ class CanvasSectionContainer { } } - private onMouseDown (e: MouseEvent) { // Ignore this event, just rely on this.draggingSomething variable. - if (e.button === 0 && !this.touchEventInProgress) { // So, we only handle left button. + private onMouseDown(e: MouseEvent) { + // Ignore this event, just rely on this.draggingSomething variable. + if (e.button === 0 && !this.touchEventInProgress) { + // So, we only handle left button. this.clearMousePositions(); this.positionOnMouseDown = this.convertPositionToCanvasLocale(e); - var section: CanvasSectionObject = this.findSectionContainingPoint(this.positionOnMouseDown); + var section: CanvasSectionObject = this.findSectionContainingPoint( + this.positionOnMouseDown, + ); if (section) { this.sectionOnMouseDown = section.name; - this.propagateOnMouseDown(section, this.convertPositionToSectionLocale(section, this.positionOnMouseDown), e); + this.propagateOnMouseDown( + section, + this.convertPositionToSectionLocale( + section, + this.positionOnMouseDown, + ), + e, + ); } } } - private onMouseUp (e: MouseEvent) { // Should be ignored unless this.draggingSomething = true. + private onMouseUp(e: MouseEvent) { + // Should be ignored unless this.draggingSomething = true. // Early exit. If mouse down position is not inside the canvas area, we have nothing to check further. if (!this.positionOnMouseDown) { this.clearMousePositions(); @@ -1157,27 +1354,46 @@ class CanvasSectionContainer { this.positionOnMouseUp = this.convertPositionToCanvasLocale(e); if (!this.draggingSomething) { - var section: CanvasSectionObject = this.findSectionContainingPoint(this.positionOnMouseUp); + var section: CanvasSectionObject | null = this.findSectionContainingPoint( + this.positionOnMouseUp, + ); if (section) { - this.propagateOnMouseUp(section, this.convertPositionToSectionLocale(section, this.positionOnMouseUp), e); + this.propagateOnMouseUp( + section, + this.convertPositionToSectionLocale( + section, + this.positionOnMouseUp, + ), + e, + ); } - } - else { - var section: CanvasSectionObject = this.getSectionWithName(this.sectionOnMouseDown); + } else { + var section: CanvasSectionObject | null = this.getSectionWithName( + this.sectionOnMouseDown, + ); if (section) { - this.propagateOnMouseUp(section, this.convertPositionToSectionLocale(section, this.positionOnMouseUp), e); + this.propagateOnMouseUp( + section, + this.convertPositionToSectionLocale( + section, + this.positionOnMouseUp, + ), + e, + ); } } } - if (!this.mouseIsInside) { // Normally, onclick event clears the positions. In this case, onClick won't be fired. So we clear the positions. + if (!this.mouseIsInside) { + // Normally, onclick event clears the positions. In this case, onClick won't be fired. So we clear the positions. this.clearMousePositions(); } } - private onContextMenu (e: MouseEvent) { + private onContextMenu(e: MouseEvent) { var mousePosition = this.convertPositionToCanvasLocale(e); - var section: CanvasSectionObject = this.findSectionContainingPoint(mousePosition); + var section: CanvasSectionObject = + this.findSectionContainingPoint(mousePosition); if (section) { this.propagateOnContextMenu(section, e); } @@ -1191,29 +1407,37 @@ class CanvasSectionContainer { } } - private onMouseWheel (e: WheelEvent) { + private onMouseWheel(e: WheelEvent) { var point = this.convertPositionToCanvasLocale(e); var delta: Array; if (e.deltaMode === 1) - delta = [e.deltaX * this.scrollLineHeight, e.deltaY * this.scrollLineHeight]; - else - delta = [e.deltaX, e.deltaY]; + delta = [ + e.deltaX * this.scrollLineHeight, + e.deltaY * this.scrollLineHeight, + ]; + else delta = [e.deltaX, e.deltaY]; var section: CanvasSectionObject = this.findSectionContainingPoint(point); if (section) - this.propagateOnMouseWheel(section, this.convertPositionToSectionLocale(section, point), delta, e); + this.propagateOnMouseWheel( + section, + this.convertPositionToSectionLocale(section, point), + delta, + e, + ); } - onMouseLeave (e: MouseEvent) { + onMouseLeave(e: MouseEvent) { // While dragging something, we don't clear the event information even if the mouse is outside of the canvas area. // We catch the mouse move and mouse up events even when the mouse pointer is outside the canvas area. // This feature is enabled to create a better dragging experience. if (!this.draggingSomething) { if (this.sectionUnderMouse !== null) { - var section: CanvasSectionObject = this.getSectionWithName(this.sectionUnderMouse); - if (section) - this.propagateOnMouseLeave(section, null, e); + var section = this.getSectionWithName( + this.sectionUnderMouse, + ); + if (section) this.propagateOnMouseLeave(section, null, e); this.sectionUnderMouse = null; } this.clearMousePositions(); @@ -1222,90 +1446,136 @@ class CanvasSectionContainer { this.mouseIsInside = false; } - onMouseEnter (e: MouseEvent) { + onMouseEnter(e: MouseEvent) { this.mouseIsInside = true; for (var i: number = 0; i < this.windowSectionList.length; i++) { var windowSection = this.windowSectionList[i]; - if (windowSection.interactable) - windowSection.onMouseEnter(null, e); + if (windowSection.interactable) windowSection.onMouseEnter(null, e); } } - onTouchStart (e: TouchEvent) { // Should be ignored unless this.draggingSomething = true. + onTouchStart(e: TouchEvent) { + // Should be ignored unless this.draggingSomething = true. if (e.touches.length === 1) { this.clearMousePositions(); this.startLongPress(e); this.positionOnMouseDown = this.convertPositionToCanvasLocale(e); - var section: CanvasSectionObject = this.findSectionContainingPoint(this.positionOnMouseDown); + var section: CanvasSectionObject | null = this.findSectionContainingPoint( + this.positionOnMouseDown, + ); if (section) { this.sectionOnMouseDown = section.name; - this.propagateOnMouseDown(section, this.convertPositionToSectionLocale(section, this.positionOnMouseDown), (e)); - } - } - else if (!this.multiTouch) { + this.propagateOnMouseDown( + section, + this.convertPositionToSectionLocale( + section, + this.positionOnMouseDown, + ), + (e), + ); + } + } else if (!this.multiTouch) { this.stopLongPress(); this.multiTouch = true; - var section: CanvasSectionObject = this.getSectionWithName(this.sectionOnMouseDown); - if (section) - this.propagateOnMultiTouchStart(section, e); + var section: CanvasSectionObject | null = this.getSectionWithName( + this.sectionOnMouseDown, + ); + if (section) this.propagateOnMultiTouchStart(section, e); } } - private onTouchMove (e: TouchEvent) { + private onTouchMove(e: TouchEvent) { // Sometimes onTouchStart is fired for another element. In this case, we return. - if (this.positionOnMouseDown === null) - return; + if (this.positionOnMouseDown === null) return; this.stopLongPress(); if (!this.multiTouch) { this.mousePosition = this.convertPositionToCanvasLocale(e); - this.dragDistance = [this.mousePosition[0] - this.positionOnMouseDown[0], this.mousePosition[1] - this.positionOnMouseDown[1]]; + this.dragDistance = [ + this.mousePosition[0] - this.positionOnMouseDown[0], + this.mousePosition[1] - this.positionOnMouseDown[1], + ]; if (this.dragDistance[0] ** 2 + this.dragDistance[1] ** 2 > 0.1) this.draggingSomething = true; - var section: CanvasSectionObject = this.getSectionWithName(this.sectionOnMouseDown); + var section: CanvasSectionObject | null = this.getSectionWithName( + this.sectionOnMouseDown, + ); if (section) { - this.propagateOnMouseMove(section, this.convertPositionToSectionLocale(section, this.mousePosition), this.dragDistance, e); - } - } - else if (e.touches.length === 2) { - var section: CanvasSectionObject = this.getSectionWithName(this.sectionOnMouseDown); + this.propagateOnMouseMove( + section, + this.convertPositionToSectionLocale(section, this.mousePosition), + this.dragDistance, + (e), + ); + } + } else if (e.touches.length === 2) { + var section: CanvasSectionObject | null = this.getSectionWithName( + this.sectionOnMouseDown, + ); if (section) { var diffX = Math.abs(e.touches[0].clientX - e.touches[1].clientX); var diffY = Math.abs(e.touches[0].clientY - e.touches[1].clientY); // Let's keep "touchCenter" variable "static" for now. When we want to allow move & drag at the same time, we should make it dynamic again. if (!this.touchCenter) { - this.touchCenter = [(e.touches[0].clientX + e.touches[1].clientX) * 0.5, (e.touches[0].clientY + e.touches[1].clientY) * 0.5]; + this.touchCenter = [ + (e.touches[0].clientX + e.touches[1].clientX) * 0.5, + (e.touches[0].clientY + e.touches[1].clientY) * 0.5, + ]; this.touchCenter = this.convertPointToCanvasLocale(this.touchCenter); } var distance = Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)); - this.propagateOnMultiTouchMove(section, this.convertPositionToSectionLocale(section, this.touchCenter), distance, e); + this.propagateOnMultiTouchMove( + section, + this.convertPositionToSectionLocale(section, this.touchCenter), + distance, + e, + ); } } } - private onTouchEnd (e: TouchEvent) { // Should be ignored unless this.draggingSomething = true. + private onTouchEnd(e: TouchEvent) { + // Should be ignored unless this.draggingSomething = true. this.stopLongPress(); if (!this.multiTouch) { this.positionOnMouseUp = this.convertPositionToCanvasLocale(e); if (!this.draggingSomething) { - var section: CanvasSectionObject = this.findSectionContainingPoint(this.positionOnMouseUp); + var section: CanvasSectionObject | null = this.findSectionContainingPoint( + this.positionOnMouseUp, + ); if (section) - this.propagateOnMouseUp(section, this.convertPositionToSectionLocale(section, this.positionOnMouseUp), e); - } - else { - var section: CanvasSectionObject = this.getSectionWithName(this.sectionOnMouseDown); + this.propagateOnMouseUp( + section, + this.convertPositionToSectionLocale( + section, + this.positionOnMouseUp, + ), + (e), + ); + } else { + var section: CanvasSectionObject | null = this.getSectionWithName( + this.sectionOnMouseDown, + ); if (section) - this.propagateOnMouseUp(section, this.convertPositionToSectionLocale(section, this.positionOnMouseUp), e); - } - } - else if (e.touches.length === 0) { + this.propagateOnMouseUp( + section, + this.convertPositionToSectionLocale( + section, + this.positionOnMouseUp, + ), + (e), + ); + } + } else if (e.touches.length === 0) { this.multiTouch = false; - var section: CanvasSectionObject = this.getSectionWithName(this.sectionOnMouseDown); + var section: CanvasSectionObject | null = this.getSectionWithName( + this.sectionOnMouseDown, + ); if (section) { this.propagateOnMultiTouchEnd(section, e); } @@ -1313,19 +1583,17 @@ class CanvasSectionContainer { this.touchEventInProgress = true; } - private onTouchCancel (e: TouchEvent) { + private onTouchCancel(e: TouchEvent) { this.clearMousePositions(); this.stopLongPress(); } - onResize (newWidth: number, newHeight: number) { - var container: HTMLElement = this.canvas.parentNode; - var cRect: ClientRect = container.getBoundingClientRect(); - if (!newWidth) - newWidth = cRect.right - cRect.left; + onResize(newWidth: number, newHeight: number) { + var container: HTMLElement = this.canvas.parentNode; + var cRect: ClientRect = container.getBoundingClientRect(); + if (!newWidth) newWidth = cRect.right - cRect.left; - if (!newHeight) - newHeight = cRect.bottom - cRect.top; + if (!newHeight) newHeight = cRect.bottom - cRect.top; app.dpiScale = window.devicePixelRatio; app.roundedDpiScale = Math.round(window.devicePixelRatio); @@ -1347,8 +1615,7 @@ class CanvasSectionContainer { // Avoid black default background if canvas was never painted // since construction. - if (!this.paintedEver) - this.clearCanvas(); + if (!this.paintedEver) this.clearCanvas(); this.clearMousePositions(); this.right = this.canvas.width; @@ -1357,52 +1624,78 @@ class CanvasSectionContainer { this.reNewAllSections(); } - findSectionContainingPoint (point: Array): any { - for (var i: number = this.sections.length - 1; i > -1; i--) { // Search from top to bottom. Top section will be sent as target section. - if (this.sections[i].isLocated && !this.sections[i].windowSection && this.sections[i].showSection && (!this.sections[i].documentObject || this.sections[i].isVisible) && this.doesSectionIncludePoint(this.sections[i], point)) + findSectionContainingPoint(point: Array): any { + for (var i: number = this.sections.length - 1; i > -1; i--) { + // Search from top to bottom. Top section will be sent as target section. + if ( + this.sections[i].isLocated && + !this.sections[i].windowSection && + this.sections[i].showSection && + (!this.sections[i].documentObject || this.sections[i].isVisible) && + this.doesSectionIncludePoint(this.sections[i], point) + ) return this.sections[i]; } return null; } - public doesSectionIncludePoint (section: any, point: Array): boolean { // No ray casting here, it is a rectangle. - return ((point[0] >= section.myTopLeft[0] && point[0] <= section.myTopLeft[0] + section.size[0]) && (point[1] >= section.myTopLeft[1] && point[1] <= section.myTopLeft[1] + section.size[1])); + public doesSectionIncludePoint(section: any, point: Array): boolean { + // No ray casting here, it is a rectangle. + return ( + point[0] >= section.myTopLeft[0] && + point[0] <= section.myTopLeft[0] + section.size[0] && + point[1] >= section.myTopLeft[1] && + point[1] <= section.myTopLeft[1] + section.size[1] + ); } - private doSectionsIntersectOnYAxis (section1: any, section2: any): boolean { + private doSectionsIntersectOnYAxis(section1: any, section2: any): boolean { var y11 = section1.myTopLeft[1]; var y12 = section1.myTopLeft[1] + section1.size[1]; var y21 = section2.myTopLeft[1]; var y22 = section2.myTopLeft[1] + section2.size[1]; - if (((y11 >= y21 && y11 <= y22) || (y12 >= y21 && y12 <= y22)) || ((y21 >= y11 && y21 <= y12) || (y22 >= y11 && y22 <= y12))) + if ( + (y11 >= y21 && y11 <= y22) || + (y12 >= y21 && y12 <= y22) || + (y21 >= y11 && y21 <= y12) || + (y22 >= y11 && y22 <= y12) + ) return true; - else - return false; + else return false; } - private doSectionsIntersectOnXAxis (section1: any, section2: any): boolean { + private doSectionsIntersectOnXAxis(section1: any, section2: any): boolean { var x11 = section1.myTopLeft[0]; var x12 = section1.myTopLeft[0] + section1.size[0]; var x21 = section2.myTopLeft[0]; var x22 = section2.myTopLeft[0] + section2.size[0]; - if (((x11 >= x21 && x11 < x22) || (x12 >= x21 && x12 <= x22)) || ((x21 >= x11 && x21 <= x12) || (x22 >= x11 && x22 <= x12))) + if ( + (x11 >= x21 && x11 < x22) || + (x12 >= x21 && x12 <= x22) || + (x21 >= x11 && x21 <= x12) || + (x22 >= x11 && x22 <= x12) + ) return true; - else - return false; + else return false; } // Find the left most point from a position with same zIndex. - private hitLeft (section: CanvasSectionObject): number { + private hitLeft(section: CanvasSectionObject): number { var maxX = -Infinity; for (var i: number = 0; i < this.sections.length; i++) { - if (this.sections[i].isLocated && this.sections[i].zIndex === section.zIndex && this.sections[i].name !== section.name) { - var currentLeft = this.sections[i].myTopLeft[0] + this.sections[i].size[0]; - if (currentLeft > maxX && currentLeft < section.myTopLeft[0]) { + if ( + this.sections[i].isLocated && + this.sections[i].zIndex === section.zIndex && + this.sections[i].name !== section.name + ) { + var currentLeft = + this.sections[i].myTopLeft[0] + this.sections[i].size[0]; + if (currentLeft > maxX && currentLeft < section.myTopLeft[0]!) { if (this.doSectionsIntersectOnYAxis(this.sections[i], section)) { maxX = currentLeft; } @@ -1411,17 +1704,20 @@ class CanvasSectionContainer { } if (maxX === -Infinity) return 0; // There is nothing on the left of this section. - else - return maxX + app.roundedDpiScale; // Don't overlap with the section on the left. + else return maxX + app.roundedDpiScale; // Don't overlap with the section on the left. } // Find the right most point from a position with same zIndex. - private hitRight (section: CanvasSectionObject): number { + private hitRight(section: CanvasSectionObject): number { var minX = Infinity; for (var i: number = 0; i < this.sections.length; i++) { - if (this.sections[i].isLocated && this.sections[i].zIndex === section.zIndex && this.sections[i].name !== section.name) { + if ( + this.sections[i].isLocated && + this.sections[i].zIndex === section.zIndex && + this.sections[i].name !== section.name + ) { var currentRight = this.sections[i].myTopLeft[0]; - if (currentRight < minX && currentRight > section.myTopLeft[0]) { + if (currentRight < minX && currentRight > section.myTopLeft[0]!) { if (this.doSectionsIntersectOnYAxis(this.sections[i], section)) { minX = currentRight; } @@ -1431,17 +1727,21 @@ class CanvasSectionContainer { if (minX === Infinity) return this.right; // There is nothing on the right of this section. - else - return minX - app.roundedDpiScale; // Don't overlap with the section on the right. + else return minX - app.roundedDpiScale; // Don't overlap with the section on the right. } // Find the top most point from a position with same zIndex. - private hitTop (section: CanvasSectionObject): number { + private hitTop(section: CanvasSectionObject): number { var maxY = -Infinity; for (var i: number = 0; i < this.sections.length; i++) { - if (this.sections[i].isLocated && this.sections[i].zIndex === section.zIndex && this.sections[i].name !== section.name) { - var currentTop = this.sections[i].myTopLeft[1] + this.sections[i].size[1]; - if (currentTop > maxY && currentTop < section.myTopLeft[1]) { + if ( + this.sections[i].isLocated && + this.sections[i].zIndex === section.zIndex && + this.sections[i].name !== section.name + ) { + var currentTop = + this.sections[i].myTopLeft[1] + this.sections[i].size[1]; + if (currentTop > maxY && currentTop < section.myTopLeft[1]!) { if (this.doSectionsIntersectOnXAxis(this.sections[i], section)) { maxY = currentTop; } @@ -1450,17 +1750,20 @@ class CanvasSectionContainer { } if (maxY === -Infinity) return 0; // There is nothing on the left of this section. - else - return maxY + app.roundedDpiScale; // Don't overlap with the section on the top. + else return maxY + app.roundedDpiScale; // Don't overlap with the section on the top. } // Find the bottom most point from a position with same zIndex. - private hitBottom (section: CanvasSectionObject): number { + private hitBottom(section: CanvasSectionObject): number { var minY = Infinity; for (var i: number = 0; i < this.sections.length; i++) { - if (this.sections[i].isLocated && this.sections[i].zIndex === section.zIndex && this.sections[i].name !== section.name) { - var currentBottom = this.sections[i].myTopLeft[1]; - if (currentBottom < minY && currentBottom > section.myTopLeft[1]) { + if ( + this.sections[i].isLocated && + this.sections[i].zIndex === section.zIndex && + this.sections[i].name !== section.name + ) { + var currentBottom = this.sections[i].myTopLeft[1]; + if (currentBottom < minY && currentBottom > section.myTopLeft[1]!) { if (this.doSectionsIntersectOnXAxis(this.sections[i], section)) { minY = currentBottom; } @@ -1469,15 +1772,19 @@ class CanvasSectionContainer { } if (minY === Infinity) return this.bottom; // There is nothing on the left of this section. - else - return minY - app.roundedDpiScale; // Don't overlap with the section on the bottom. + else return minY - app.roundedDpiScale; // Don't overlap with the section on the bottom. } - createUpdateSingleDivElement (section: CanvasSectionObject) { + createUpdateSingleDivElement(section: CanvasSectionObject) { var bcr: ClientRect = this.canvas.getBoundingClientRect(); - var element: HTMLDivElement = document.getElementById('test-div-' + section.name); + var element: HTMLDivElement = ( + document.getElementById('test-div-' + section.name) + ); - if ((!section.documentObject || section.isVisible) && section.isSectionShown()) { + if ( + (!section.documentObject || section.isVisible) && + section.isSectionShown() + ) { if (!element) { element = document.createElement('div'); element.id = 'test-div-' + section.name; @@ -1485,25 +1792,29 @@ class CanvasSectionContainer { } element.style.position = 'fixed'; element.style.zIndex = '-1'; - element.style.left = String(bcr.left + Math.round(section.myTopLeft[0] / app.dpiScale)) + 'px'; - element.style.top = String(bcr.top + Math.round(section.myTopLeft[1] / app.dpiScale)) + 'px'; - element.style.width = String(Math.round(section.size[0] / app.dpiScale)) + 'px'; - element.style.height = String(Math.round(section.size[1] / app.dpiScale)) + 'px'; + element.style.left = + String(bcr.left + Math.round(section.myTopLeft[0]! / app.dpiScale)) + + 'px'; + element.style.top = + String(bcr.top + Math.round(section.myTopLeft[1]! / app.dpiScale)) + + 'px'; + element.style.width = + String(Math.round(section.size[0] / app.dpiScale)) + 'px'; + element.style.height = + String(Math.round(section.size[1] / app.dpiScale)) + 'px'; if (section.name === 'tiles') { // For tiles section add document coordinates of top and left too. element.innerText = JSON.stringify({ top: Math.round(section.documentTopLeft[1]), left: Math.round(section.documentTopLeft[0]), width: Math.round(section.size[0]), - height: Math.round(section.size[1]) + height: Math.round(section.size[1]), }); } - } - else if (element) - element.remove(); // Remove test-div if section is not visible. + } else if (element) element.remove(); // Remove test-div if section is not visible. } - createUpdateDivElements () { + createUpdateDivElements() { for (var i: number = 0; i < this.sections.length; i++) { this.createUpdateSingleDivElement(this.sections[i]); } @@ -1517,40 +1828,53 @@ class CanvasSectionContainer { this.sections[i].onResize(); } this.applyDrawingOrders(); - if (this.testing) - this.createUpdateDivElements(); - if (redraw && this.drawingAllowed()) - this.drawSections(); + if (this.testing) this.createUpdateDivElements(); + if (redraw && this.drawingAllowed()) this.drawSections(); } private roundPositionAndSize(section: CanvasSectionObject) { - section.myTopLeft[0] = Math.round(section.myTopLeft[0]); - section.myTopLeft[1] = Math.round(section.myTopLeft[1]); + section.myTopLeft[0] = Math.round(section.myTopLeft[0]!); + section.myTopLeft[1] = Math.round(section.myTopLeft[1]!); section.size[0] = Math.round(section.size[0]); section.size[1] = Math.round(section.size[1]); } - private calculateSectionInitialPosition(section: CanvasSectionObject, index: number): number { - if (typeof section.anchor[index] === 'string' || section.anchor[index].length === 1) { - var anchor: string = typeof section.anchor[index] === 'string' ? section.anchor[index]: section.anchor[index][0]; + private calculateSectionInitialPosition( + section: CanvasSectionObject, + index: number, + ): number | undefined { + if ( + typeof section.anchor[index] === 'string' || + (section.anchor[index] as any).length === 1 + ) { + var anchor: string = + typeof section.anchor[index] === 'string' + ? section.anchor[index] + : section.anchor[index][0]; if (index === 0) - return anchor === 'top' ? section.position[1]: (this.bottom - (section.position[1] + section.size[1])); + return anchor === 'top' + ? section.position[1] + : this.bottom - (section.position[1] + section.size[1]); else - return anchor === 'left' ? section.position[0]: (this.right - (section.position[0] + section.size[0])); - } - else { + return anchor === 'left' + ? section.position[0] + : this.right - (section.position[0] + section.size[0]); + } else { // If we are here, it means section's edge(s) will be snapped to another section's edges. // Count should always be an odd number. Because last variable will be used as a fallback to canvas's edges (top, bottom, right or left). // See anchor explanation on top of this file. // Correct example: ["header", "bottom", "top"] => Look for section "header", if found, use its bottom, if not found, use canvas's top. - if (section.anchor[index].length % 2 === 0) { // eslint-disable-line no-lonely-if - console.error('Section: ' + section.name + '. Wrong anchor definition.'); + // TODO: why are we disabling this eslint warning rather than merging the if statements or using guard clauses/etc.? + // eslint-disable-next-line no-lonely-if + if ((section.anchor[index] as any).length % 2 === 0) { + console.error( + 'Section: ' + section.name + '. Wrong anchor definition.', + ); return 0; - } - else { - var count: number = section.anchor[index].length; - var targetSection: CanvasSectionObject = null; - var targetEdge: string = null; + } else { + var count: number = (section.anchor[index] as any).length; + var targetSection: CanvasSectionObject | null = null; + var targetEdge: string | null = null; for (var i: number = 0; i < count - 1; i++) { targetSection = this.getSectionWithName(section.anchor[index][i]); if (targetSection) { @@ -1562,39 +1886,49 @@ class CanvasSectionContainer { if (targetSection) { // So, we have target section, we will use its position. Is it located? if (!targetSection.isLocated) { - console.error('Section: ' + section.name + '. Target section for anchor should be located before this section.' - + ' It means that target section\'s (if zIndex is the same) processing order should be less or its zIndex should be less than this section.'); + console.error( + 'Section: ' + + section.name + + '. Target section for anchor should be located before this section.' + + " It means that target section's (if zIndex is the same) processing order should be less or its zIndex should be less than this section.", + ); return 0; - } - else { - if (targetEdge === 'top') { // eslint-disable-line no-lonely-if - return targetSection.myTopLeft[1] - app.roundedDpiScale; - } - else if (targetEdge === 'bottom') { - return targetSection.myTopLeft[1] + targetSection.size[1] + app.roundedDpiScale; - } - else if (targetEdge === 'left') { - return targetSection.myTopLeft[0] - app.roundedDpiScale; - } - else if (targetEdge === 'right') { - return targetSection.myTopLeft[0] + targetSection.size[0] + app.roundedDpiScale; - } - else if (targetEdge === '-left') { + } else { + // eslint-disable-next-line no-lonely-if + if (targetEdge === 'top') { + return targetSection.myTopLeft[1]! - app.roundedDpiScale; + } else if (targetEdge === 'bottom') { + return ( + targetSection.myTopLeft[1]! + + targetSection.size[1] + + app.roundedDpiScale + ); + } else if (targetEdge === 'left') { + return targetSection.myTopLeft[0]! - app.roundedDpiScale; + } else if (targetEdge === 'right') { + return ( + targetSection.myTopLeft[0]! + + targetSection.size[0] + + app.roundedDpiScale + ); + } else if (targetEdge === '-left') { if (section.expand[0] === 'left' && section.origSizeHint) { section.size[0] = section.origSizeHint[0]; } - return targetSection.myTopLeft[0] - section.size[0]; + return targetSection.myTopLeft[0]! - section.size[0]; } } - } - else { + } else { // No target section is found. Use fallback. var anchor: string = section.anchor[index][count - 1]; if (index === 0) { - return anchor === 'top' ? section.position[1]: (this.bottom - (section.position[1] + section.size[1])); - } - else { - return anchor === 'left' ? section.position[0]: (this.right - (section.position[0] + section.size[0])); + return anchor === 'top' + ? section.position[1] + : this.bottom - (section.position[1] + section.size[1]); + } else { + return anchor === 'left' + ? section.position[0] + : this.right - (section.position[0] + section.size[0]); } } } @@ -1605,26 +1939,25 @@ class CanvasSectionContainer { if (this.arrayIncludes(section.expand, 'left')) { var initialX = section.myTopLeft[0]; section.myTopLeft[0] = this.hitLeft(section); - section.size[0] = initialX - section.myTopLeft[0]; + section.size[0] = initialX! - section.myTopLeft[0]; } if (this.arrayIncludes(section.expand, 'right')) { - section.size[0] = this.hitRight(section) - section.myTopLeft[0]; + section.size[0] = this.hitRight(section) - section.myTopLeft[0]!; } if (this.arrayIncludes(section.expand, 'top')) { var initialY = section.myTopLeft[1]; section.myTopLeft[1] = this.hitTop(section); - section.size[1] = initialY - section.myTopLeft[1]; + section.size[1] = initialY! - section.myTopLeft[1]; } if (this.arrayIncludes(section.expand, 'bottom')) { - section.size[1] = this.hitBottom(section) - section.myTopLeft[1]; + section.size[1] = this.hitBottom(section) - section.myTopLeft[1]!; } } - private locateSections () { - + private locateSections() { for (var i: number = 0; i < this.sections.length; i++) { const section = this.sections[i]; // Reset some values. @@ -1643,13 +1976,21 @@ class CanvasSectionContainer { for (var i: number = 0; i < this.sections.length; i++) { const section: CanvasSectionObject = this.sections[i]; - if (section.documentObject === true) { // "Document anchor" section should be processed before "document object" sections. + if (section.documentObject === true) { + // "Document anchor" section should be processed before "document object" sections. if (section.size && section.position) { section.isLocated = true; - section.myTopLeft = [this.documentAnchor[0] + section.position[0] - this.documentTopLeft[0], this.documentAnchor[1] + section.position[1] - this.documentTopLeft[1]]; + section.myTopLeft = [ + this.documentAnchor![0]! + + section.position[0] - + this.documentTopLeft[0], + this.documentAnchor![1]! + + section.position[1] - + this.documentTopLeft[1], + ]; } - } - else if (section.boundToSection) { // Don't set boundToSection property for "window sections". + } else if (section.boundToSection) { + // Don't set boundToSection property for "window sections". var parentSection = this.getSectionWithName(section.boundToSection); if (parentSection) { section.myTopLeft = [0, 0]; @@ -1663,18 +2004,19 @@ class CanvasSectionContainer { this.roundPositionAndSize(section); section.isLocated = true; } - } - else if (section.windowSection) { + } else if (section.windowSection) { section.myTopLeft = [0, 0]; section.size = [this.canvas.width, this.canvas.height]; section.isLocated = true; this.windowSectionList.push(section); - } - else { // A regular UI element. - section.myTopLeft = [this.calculateSectionInitialPosition(section, 1), this.calculateSectionInitialPosition(section, 0)]; + } else { + // A regular UI element. + section.myTopLeft = [ + this.calculateSectionInitialPosition(section, 1), + this.calculateSectionInitialPosition(section, 0), + ]; - if (section.expand.length !== 0) - this.expandSection(section); + if (section.expand.length !== 0) this.expandSection(section); this.roundPositionAndSize(section); section.isLocated = true; @@ -1686,12 +2028,15 @@ class CanvasSectionContainer { } } - private orderSections () { + private orderSections() { // According to zIndex & processing order. for (var i: number = 0; i < this.sections.length - 1; i++) { for (var j = i + 1; j < this.sections.length; j++) { - if (this.sections[i].zIndex > this.sections[j].zIndex - || (this.sections[i].zIndex === this.sections[j].zIndex && this.sections[i].processingOrder > this.sections[j].processingOrder)) { + if ( + this.sections[i].zIndex > this.sections[j].zIndex || + (this.sections[i].zIndex === this.sections[j].zIndex && + this.sections[i].processingOrder > this.sections[j].processingOrder) + ) { var temp = this.sections[i]; this.sections[i] = this.sections[j]; this.sections[j] = temp; @@ -1700,11 +2045,15 @@ class CanvasSectionContainer { } } - public applyDrawingOrders () { + public applyDrawingOrders() { // According to drawing order. Section with the highest drawing order will be drawn on top (inside same zIndex). for (var i: number = 0; i < this.sections.length - 1; i++) { var zIndex = this.sections[i].zIndex; - for (var j: number = i + 1; j < this.sections.length && this.sections[j].zIndex === zIndex; j++) { + for ( + var j: number = i + 1; + j < this.sections.length && this.sections[j].zIndex === zIndex; + j++ + ) { if (this.sections[i].drawingOrder > this.sections[j].drawingOrder) { var temp = this.sections[j]; this.sections[j] = this.sections[i]; @@ -1714,65 +2063,88 @@ class CanvasSectionContainer { } } - private drawSectionBorders () { - this.context.lineWidth = 2 * app.dpiScale; - this.context.strokeStyle = 'blue'; + private drawSectionBorders() { + this.context!.lineWidth = 2 * app.dpiScale; + this.context!.strokeStyle = 'blue'; for (var i: number = 0; i < this.sections.length; i++) { var section = this.sections[i]; - if (section.isLocated && section.showSection && (!section.documentObject || section.isVisible)) { + if ( + section.isLocated && + section.showSection && + (!section.documentObject || section.isVisible) + ) { var xStart = section.myTopLeft[0]; var xEnd = xStart + section.size[0]; var yStart = section.myTopLeft[1]; var yEnd = yStart + section.size[1]; - this.context.beginPath(); - this.context.moveTo(xStart, yStart); - this.context.lineTo(xEnd, yStart); - this.context.stroke(); - this.context.beginPath(); - this.context.moveTo(xEnd, yStart); - this.context.lineTo(xEnd, yEnd); - this.context.stroke(); - this.context.beginPath(); - this.context.moveTo(xEnd, yEnd); - this.context.lineTo(xStart, yEnd); - this.context.stroke(); - this.context.beginPath(); - this.context.moveTo(xStart, yEnd); - this.context.lineTo(xStart, yStart); - this.context.stroke(); + this.context!.beginPath(); + this.context!.moveTo(xStart, yStart); + this.context!.lineTo(xEnd, yStart); + this.context!.stroke(); + this.context!.beginPath(); + this.context!.moveTo(xEnd, yStart); + this.context!.lineTo(xEnd, yEnd); + this.context!.stroke(); + this.context!.beginPath(); + this.context!.moveTo(xEnd, yEnd); + this.context!.lineTo(xStart, yEnd); + this.context!.stroke(); + this.context!.beginPath(); + this.context!.moveTo(xStart, yEnd); + this.context!.lineTo(xStart, yStart); + this.context!.stroke(); } } } - setPenPosition (section: CanvasSectionObject) { - this.context.setTransform(1, 0, 0, 1, 0, 0); - this.context.translate(section.myTopLeft[0], section.myTopLeft[1]); + setPenPosition(section: CanvasSectionObject) { + this.context!.setTransform(1, 0, 0, 1, 0, 0); + this.context!.translate(section.myTopLeft[0]!, section.myTopLeft[1]!); } - private shouldDrawSection (section: CanvasSectionObject) { - return section.isLocated && section.showSection && (!section.documentObject || section.isVisible); + private shouldDrawSection(section: CanvasSectionObject) { + return ( + section.isLocated && + section.showSection && + (!section.documentObject || section.isVisible) + ); } - private drawSections (frameCount: number = null, elapsedTime: number = null, tileSubset: Set = null) { - this.context.setTransform(1, 0, 0, 1, 0, 0); + private drawSections( + frameCount: number | null = null, + elapsedTime: number | null = null, + tileSubset: Set | null = null, + ) { + this.context!.setTransform(1, 0, 0, 1, 0, 0); - var subsetBounds: cool.Bounds = null; + var subsetBounds: cool.Bounds | null = null; // if there is a tileSubset we only want to draw the miniumum region of its bounds if (tileSubset) { - const tileSection: cool.TilesSection = (this.getSectionWithName(L.CSections.Tiles.name) as any) as cool.TilesSection; - if (tileSection && this.shouldDrawSection((tileSection as any) as CanvasSectionObject)) { - subsetBounds = tileSection.getSubsetBounds(this.context, tileSubset); + const tileSection: cool.TilesSection = this.getSectionWithName( + L.CSections.Tiles.name, + ) as any as cool.TilesSection; + if ( + tileSection && + this.shouldDrawSection(tileSection as any as CanvasSectionObject) + ) { + subsetBounds = tileSection.getSubsetBounds(this.context!, tileSubset); } if (subsetBounds) { - this.context.save(); + this.context!.save(); // FIXME: needs re-thinking for split-panes - this.context.translate(tileSection.myTopLeft[0], tileSection.myTopLeft[1]); - tileSection.clipSubsetBounds(this.context, subsetBounds); - this.context.translate(-tileSection.myTopLeft[0], -tileSection.myTopLeft[1]); + this.context!.translate( + tileSection.myTopLeft[0], + tileSection.myTopLeft[1], + ); + tileSection.clipSubsetBounds(this.context!, subsetBounds); + this.context!.translate( + -tileSection.myTopLeft[0], + -tileSection.myTopLeft[1], + ); } } @@ -1780,38 +2152,55 @@ class CanvasSectionContainer { this.clearCanvas(); } - this.context.font = String(20 * app.dpiScale) + 'px Verdana'; + this.context!.font = String(20 * app.dpiScale) + 'px Verdana'; for (var i: number = 0; i < this.sections.length; i++) { if (this.shouldDrawSection(this.sections[i])) { - this.context.translate(this.sections[i].myTopLeft[0], this.sections[i].myTopLeft[1]); + this.context!.translate( + this.sections[i].myTopLeft[0], + this.sections[i].myTopLeft[1], + ); if (this.sections[i].backgroundColor) { - this.context.globalAlpha = this.sections[i].backgroundOpacity; - this.context.fillStyle = this.sections[i].backgroundColor; - this.context.fillRect(0, 0, this.sections[i].size[0], this.sections[i].size[1]); - this.context.globalAlpha = 1; + this.context!.globalAlpha = this.sections[i].backgroundOpacity; + this.context!.fillStyle = this.sections[i].backgroundColor; + this.context!.fillRect( + 0, + 0, + this.sections[i].size[0], + this.sections[i].size[1], + ); + this.context!.globalAlpha = 1; } this.sections[i].onDraw(frameCount, elapsedTime, subsetBounds); - if (this.sections[i].borderColor) { // If section's border is set, draw its borders after section's "onDraw" function is called. + if (this.sections[i].borderColor) { + // If section's border is set, draw its borders after section's "onDraw" function is called. var offset = this.sections[i].getLineOffset(); - this.context.lineWidth = this.sections[i].getLineWidth(); - this.context.strokeStyle = this.sections[i].borderColor; - this.context.strokeRect(offset, offset, this.sections[i].size[0], this.sections[i].size[1]); + this.context!.lineWidth = this.sections[i].getLineWidth(); + this.context!.strokeStyle = this.sections[i].borderColor; + this.context!.strokeRect( + offset, + offset, + this.sections[i].size[0], + this.sections[i].size[1], + ); } - this.context.translate(-this.sections[i].myTopLeft[0], -this.sections[i].myTopLeft[1]); + this.context!.translate( + -this.sections[i].myTopLeft[0], + -this.sections[i].myTopLeft[1], + ); } } if (subsetBounds) { - this.context.restore(); + this.context!.restore(); } this.paintedEver = true; //this.drawSectionBorders(); } - doesSectionExist (name: string): boolean { + doesSectionExist(name: string): boolean { if (name && typeof name === 'string') { for (var i: number = 0; i < this.sections.length; i++) { if (this.sections[i].name === name) { @@ -1819,96 +2208,108 @@ class CanvasSectionContainer { } } return false; - } - else { + } else { return false; } } - private checkNewSectionName (options: any) { - if (options.name !== undefined && typeof options.name === 'string' && options.name.trim() !== '') { + private checkNewSectionName(options: any) { + if ( + options.name !== undefined && + typeof options.name === 'string' && + options.name.trim() !== '' + ) { if (this.doesSectionExist(options.name)) { - console.error('There is a section with the same name. Use doesSectionExist for existancy checks.'); + console.error( + 'There is a section with the same name. Use doesSectionExist for existancy checks.', + ); return false; - } - else if (this.arrayIncludes(['top', 'left', 'bottom', 'right'], options.name.trim())) { - console.error('"top", "left", "bottom" and "right" words are reserved. Choose another name for the section.'); + } else if ( + this.arrayIncludes( + ['top', 'left', 'bottom', 'right'], + options.name.trim(), + ) + ) { + console.error( + '"top", "left", "bottom" and "right" words are reserved. Choose another name for the section.', + ); return false; - } - else { + } else { return true; } - } - else { + } else { console.error('Sections should have a "name" property.'); return false; } } - private checkSectionProperties (options: any) { + private checkSectionProperties(options: any) { if ( - options.anchor === undefined - || options.position === undefined - || options.size === undefined - || options.expand === undefined - || options.processingOrder === undefined - || options.drawingOrder === undefined - || options.zIndex === undefined - || options.interactable === undefined + options.anchor === undefined || + options.position === undefined || + options.size === undefined || + options.expand === undefined || + options.processingOrder === undefined || + options.drawingOrder === undefined || + options.zIndex === undefined || + options.interactable === undefined ) { - console.error('Section has missing properties. See "checkSectionProperties" function.'); + console.error( + 'Section has missing properties. See "checkSectionProperties" function.', + ); return false; - } - else { - if (options.showSection === undefined) - options.showSection = true; + } else { + if (options.showSection === undefined) options.showSection = true; - if (options.windowSection === undefined) - options.windowSection = false; + if (options.windowSection === undefined) options.windowSection = false; return true; } } - private newSectionChecks (options: any): boolean { - if (!this.checkNewSectionName(options)) - return false; - else if (!this.checkSectionProperties(options)) - return false; - else - return true; + private newSectionChecks(options: any): boolean { + if (!this.checkNewSectionName(options)) return false; + else if (!this.checkSectionProperties(options)) return false; + else return true; } addSectionFunctions(section: CanvasSectionObject) { - section.isSectionShown = function() { return this.showSection; }.bind(section); + section.isSectionShown = function () { + return this.showSection; + }.bind(section); - section.setDrawingOrder = function(drawingOrder: number): void { + section.setDrawingOrder = function (drawingOrder: number): void { this.drawingOrder = drawingOrder; this.containerObject.updateBoundSectionLists(); this.containerObject.reNewAllSections(); }.bind(section); - section.setZIndex = function(zIndex: number): void { + section.setZIndex = function (zIndex: number): void { this.zIndex = zIndex; this.containerObject.updateBoundSectionLists(); this.containerObject.reNewAllSections(); }.bind(section); - section.bindToSection = function(sectionName: string) { + section.bindToSection = function (sectionName: string) { this.boundToSection = sectionName; this.containerObject.updateBoundSectionLists(); this.containerObject.reNewAllSections(); }.bind(section); - section.stopPropagating = function() { this.containerObject.lowestPropagatedBoundSection = this.name; }.bind(section); + section.stopPropagating = function () { + this.containerObject.lowestPropagatedBoundSection = this.name; + }.bind(section); - section.startAnimating = function(options: any): boolean { return this.containerObject.startAnimating(this.name, options); }.bind(section); + section.startAnimating = function (options: any): boolean { + return this.containerObject.startAnimating(this.name, options); + }.bind(section); - section.resetAnimation = function() { this.containerObject.resetAnimation(this.name); }.bind(section); + section.resetAnimation = function () { + this.containerObject.resetAnimation(this.name); + }.bind(section); - section.setPosition = function(x: number, y: number) { - if (this.documentObject !== true || !this.containerObject) - return; + section.setPosition = function (x: number, y: number) { + if (this.documentObject !== true || !this.containerObject) return; x = Math.round(x); y = Math.round(y); @@ -1920,8 +2321,12 @@ class CanvasSectionContainer { sectionXcoord = docSize.x - sectionXcoord - this.size[0]; } - this.myTopLeft[0] = this.containerObject.getDocumentAnchor()[0] + sectionXcoord; - this.myTopLeft[1] = this.containerObject.getDocumentAnchor()[1] + y - this.containerObject.getDocumentTopLeft()[1]; + this.myTopLeft[0] = + this.containerObject.getDocumentAnchor()[0] + sectionXcoord; + this.myTopLeft[1] = + this.containerObject.getDocumentAnchor()[1] + + y - + this.containerObject.getDocumentTopLeft()[1]; this.position[0] = x; this.position[1] = y; const isVisible = this.containerObject.isDocumentObjectVisible(this); @@ -1934,28 +2339,28 @@ class CanvasSectionContainer { this.containerObject.createUpdateSingleDivElement(this); }.bind(section); - section.getTestDiv = function(): HTMLDivElement { - var element: HTMLDivElement = document.getElementById('test-div-' + this.name); - if (element) - return element; + section.getTestDiv = function (): HTMLDivElement | null { + var element: HTMLDivElement = ( + document.getElementById('test-div-' + this.name) + ); + if (element) return element; return null; }.bind(section); - section.isCalcRTL = function(): boolean { + section.isCalcRTL = function (): boolean { const docLayer = this.sectionProperties.docLayer; - if (docLayer && docLayer.isCalcRTL()) - return true; + if (docLayer && docLayer.isCalcRTL()) return true; return false; }.bind(section); - section.setShowSection = function(show: boolean) { + section.setShowSection = function (show: boolean) { this.showSection = show; - if (this.onSectionShowStatusChange) - this.onSectionShowStatusChange(); + if (this.onSectionShowStatusChange) this.onSectionShowStatusChange(); - if (this.containerObject) { // Is section added to container. + if (this.containerObject) { + // Is section added to container. this.isVisible = this.containerObject.isDocumentObjectVisible(this); this.onDocumentObjectVisibilityChange(); } @@ -1964,20 +2369,18 @@ class CanvasSectionContainer { this.containerObject.createUpdateSingleDivElement(this); } }.bind(section); - } - addSection (newSection: CanvasSectionObject) { + addSection(newSection: CanvasSectionObject) { if (this.newSectionChecks(newSection)) { this.pushSection(newSection); return true; - } - else { + } else { return false; } } - private pushSection (newSection: CanvasSectionObject) { + private pushSection(newSection: CanvasSectionObject) { // Every section can draw from Point(0, 0), their drawings will be translated to myTopLeft position. newSection.context = this.context; newSection.documentTopLeft = this.documentTopLeft; @@ -1989,19 +2392,21 @@ class CanvasSectionContainer { if (this.drawingAllowed()) { this.updateBoundSectionLists(); this.reNewAllSections(); - } - else { + } else { this.sectionsDirty = true; this.setDirty(null); } } - removeSection (name: string) { + removeSection(name: string) { var found: boolean = false; for (var i: number = 0; i < this.sections.length; i++) { if (this.sections[i].name === name) { - var element: HTMLDivElement = document.getElementById('test-div-' + this.sections[i].name); - if (element) // Remove test div if exists. + var element: HTMLDivElement = ( + document.getElementById('test-div-' + this.sections[i].name) + ); + if (element) + // Remove test div if exists. document.body.removeChild(element); this.sections[i].onRemove(); this.sections[i] = null; @@ -2012,48 +2417,52 @@ class CanvasSectionContainer { } if (found) { - if (!this.drawingAllowed()) - this.sectionsDirty = true; + if (!this.drawingAllowed()) this.sectionsDirty = true; else { - this.updateBoundSectionLists(); - this.reNewAllSections(); + this.updateBoundSectionLists(); + this.reNewAllSections(); } return true; - } - else { + } else { return false; } } - private setAnimatingSectionName (sectionName: string) { + private setAnimatingSectionName(sectionName: string | null) { this.animatingSectionName = sectionName; } - public getAnimatingSectionName (): string { + public getAnimatingSectionName(): string | null { return this.animatingSectionName; } - private animate (timeStamp: number) { - if (this.lastFrameStamp > 0) - this.elapsedTime += timeStamp - this.lastFrameStamp; + private animate(timeStamp: number) { + if (this.lastFrameStamp! > 0) + this.elapsedTime! += timeStamp - this.lastFrameStamp!; this.lastFrameStamp = timeStamp; - if (this.duration && this.elapsedTime >= this.duration) { // This is not the only place that can set "continueAnimating" to "false". + if (this.duration && this.elapsedTime! >= this.duration) { + // This is not the only place that can set "continueAnimating" to "false". this.continueAnimating = false; } if (this.continueAnimating) { this.drawSections(this.frameCount, this.elapsedTime); - this.frameCount++; + this.frameCount!++; requestAnimationFrame(this.animate.bind(this)); - } - else { + } else { for (var i: number = 0; i < this.stoppingFunctionList.length; i++) { - this.canvas.removeEventListener(this.stoppingEventTypes[i], this.stoppingFunctionList[i], true); + this.canvas.removeEventListener( + this.stoppingEventTypes[i], + this.stoppingFunctionList[i], + true, + ); } - var section: CanvasSectionObject = this.getSectionWithName(this.getAnimatingSectionName()); + var section: CanvasSectionObject | null = this.getSectionWithName( + this.getAnimatingSectionName(), + ); if (section) { section.isAnimating = false; section.onAnimationEnded(this.frameCount, this.elapsedTime); @@ -2066,14 +2475,14 @@ class CanvasSectionContainer { } } - private createStoppingFunction () { + private createStoppingFunction() { return function () { this.continueAnimating = false; }.bind(this); } // Resets animation duration. Not to be called directly. Instead, use (inside section class) this.resetAnimation() - public resetAnimation (sectionName: string) { + public resetAnimation(sectionName: string) { if (sectionName === this.getAnimatingSectionName()) { this.lastFrameStamp = 0; this.elapsedTime = 0; @@ -2081,13 +2490,13 @@ class CanvasSectionContainer { } } - public stopAnimating () { + public stopAnimating() { // Though this function is available for every section, generally, only the section that started animation should use this. this.continueAnimating = false; } // Don't call this directly. Instead, call (inside the section class) section.startAnimating(options). - public startAnimating (sectionName: string, options: any): boolean { + public startAnimating(sectionName: string, options: any): boolean { /* Most of the time, we need to draw entire canvas when animating. Because if there is another section under the animated one, that section needs to be renewed too. @@ -2117,10 +2526,10 @@ class CanvasSectionContainer { if (!this.getAnimatingSectionName()) { this.setAnimatingSectionName(sectionName); - this.getSectionWithName(sectionName).isAnimating = true; + this.getSectionWithName(sectionName)!.isAnimating = true; this.lastFrameStamp = 0; this.continueAnimating = true; - this.duration = options.duration ? options.duration: null; + this.duration = options.duration ? options.duration : null; this.elapsedTime = 0; this.frameCount = 0; @@ -2131,14 +2540,17 @@ class CanvasSectionContainer { for (var i: number = 0; i < options.stoppingEvents.length; i++) { this.stoppingEventTypes.push(options.stoppingEvents[i]); this.stoppingFunctionList.push(this.createStoppingFunction()); - this.canvas.addEventListener(options.stoppingEvents[i], this.stoppingFunctionList[i], true); + this.canvas.addEventListener( + options.stoppingEvents[i], + this.stoppingFunctionList[i], + true, + ); } } this.animate(performance.now()); return true; - } - else { + } else { return false; } } diff --git a/browser/src/canvas/CanvasSectionObject.ts b/browser/src/canvas/CanvasSectionObject.ts index 38d0b51c22cf1..f93728d84ffca 100644 --- a/browser/src/canvas/CanvasSectionObject.ts +++ b/browser/src/canvas/CanvasSectionObject.ts @@ -28,15 +28,15 @@ interface SectionInitProperties { // This class will be used internally by CanvasSectionContainer. class CanvasSectionObject { - context: CanvasRenderingContext2D; - myTopLeft: Array = [0, 0]; + context: CanvasRenderingContext2D | null; + myTopLeft: Array = [0, 0]; documentTopLeft: Array = [0, 0]; // Document top left will be updated by container. - containerObject: CanvasSectionContainer = null; - name: string = null; - backgroundColor: string = null; // Defult is null (container's background color will be used). + containerObject: CanvasSectionContainer | null = null; + name: string | null = null; + backgroundColor: string | null = null; // Defult is null (container's background color will be used). backgroundOpacity: number = 1; // Valid when backgroundColor is valid. - borderColor: string = null; // Default is null (no borders). - boundToSection: string = null; + borderColor: string | null = null; // Default is null (no borders). + boundToSection: string | null = null; anchor: Array = []; documentObject: boolean; // If true, the section is a document object. // When section is a document object, its position should be the real position inside the document, in core pixels. @@ -60,37 +60,37 @@ class CanvasSectionObject { onInitialize(): void { return; } onCursorPositionChanged(newPosition: any): void { return; } onCellAddressChanged(): void { return; } - onMouseMove(point: Array, dragDistance: Array, e: MouseEvent): void { return; } - onMouseDown(point: Array, e: MouseEvent): void { return; } - onMouseUp(point: Array, e: MouseEvent): void { return; } + onMouseMove(point: Array | null, dragDistance: Array | null, e: MouseEvent): void { return; } + onMouseDown(point: Array | null, e: MouseEvent): void { return; } + onMouseUp(point: Array | null, e: MouseEvent): void { return; } setShowSection(show: boolean): void { return; } onSectionShowStatusChange(): void { return; } /// Called when setShowSection is called. - isSectionShown(): boolean { return; } + isSectionShown(): boolean | undefined { return; } onDocumentObjectVisibilityChange(): void { return; } - onMouseEnter(point: Array, e: MouseEvent): void { return; } - onMouseLeave(point: Array, e: MouseEvent): void { return; } - onClick(point: Array, e: MouseEvent): void { return; } - onDoubleClick(point: Array, e: MouseEvent): void { return; } + onMouseEnter(point: Array | null, e: MouseEvent): void { return; } + onMouseLeave(point: Array | null, e: MouseEvent): void { return; } + onClick(point: Array | null, e: MouseEvent): void { return; } + onDoubleClick(point: Array | null, e: MouseEvent): void { return; } onContextMenu(e?: MouseEvent): void { return; } - onMouseWheel(point: Array, delta: Array, e: MouseEvent): void { return; } + onMouseWheel(point: Array | null, delta: Array, e: MouseEvent): void { return; } onMultiTouchStart(e: TouchEvent): void { return; } - onMultiTouchMove(point: Array, dragDistance: number, e: TouchEvent): void { return; } + onMultiTouchMove(point: Array | null, dragDistance: number, e: TouchEvent): void { return; } onMultiTouchEnd(e: TouchEvent): void { return; } onResize(): void { return; } onDraw(frameCount?: number, elapsedTime?: number, subsetBounds?: cool.Bounds): void { return; } onDrawArea(area?: cool.Bounds, paneTopLeft?: cool.Point, canvasContext?: CanvasRenderingContext2D): void { return; } // area is the area to be painted using canvasContext. - onAnimationEnded(frameCount: number, elapsedTime: number): void { return; } // frameCount, elapsedTime. Sections that will use animation, have to have this function defined. + onAnimationEnded(frameCount: number | null, elapsedTime: number | null): void { return; } // frameCount, elapsedTime. Sections that will use animation, have to have this function defined. onNewDocumentTopLeft(size: Array): void { return; } onRemove(): void { return; } // This Function is called right before section is removed. setDrawingOrder(drawingOrder: number): void { return; } setZIndex(zIndex: number): void { return; } bindToSection(sectionName: string): void { return; } stopPropagating(): void { return; } - startAnimating(options: any): boolean { return; } + startAnimating(options: any): boolean | undefined { return; } resetAnimation(): void { return; } - getTestDiv(): HTMLDivElement { return; } + getTestDiv(): HTMLDivElement | undefined { return; } setPosition(x: number, y: number): void { return; } // Document objects only. - isCalcRTL(): boolean { return; } + isCalcRTL(): boolean | undefined { return; } public getLineWidth(): number { if (app.dpiScale > 1.0) { diff --git a/browser/src/canvas/sections/AutoFillMarkerSection.ts b/browser/src/canvas/sections/AutoFillMarkerSection.ts index e4aab543c2770..6b61b10a70590 100644 --- a/browser/src/canvas/sections/AutoFillMarkerSection.ts +++ b/browser/src/canvas/sections/AutoFillMarkerSection.ts @@ -98,7 +98,7 @@ class AutoFillMarkerSection extends CanvasSectionObject { } private calculatePositionFromPoint (point: Array) { - var calcPoint: Array; + var calcPoint: Array | null; if (point === null) { calcPoint = null; } @@ -124,9 +124,9 @@ class AutoFillMarkerSection extends CanvasSectionObject { // This is for enhancing contrast of the marker with the background // similar to what we have for cell cursors. private drawWhiteOuterBorders () { - this.context.strokeStyle = 'white'; - this.context.lineCap = 'square'; - this.context.lineWidth = 1; + this.context!.strokeStyle = 'white'; + this.context!.lineCap = 'square'; + this.context!.lineWidth = 1; var desktop: boolean = (window).mode.isDesktop(); var translation = desktop ? @@ -138,24 +138,24 @@ class AutoFillMarkerSection extends CanvasSectionObject { }; // top white line - this.context.beginPath(); - this.context.moveTo(transformX(-0.5), -0.5); + this.context!.beginPath(); + this.context!.moveTo(transformX(-0.5), -0.5); var borderWidth = this.sectionProperties.selectedAreaPoint ? this.selectionBorderWidth : this.cursorBorderWidth; - this.context.lineTo(transformX(this.size[0] + 0.5 - (desktop ? borderWidth : 0)), - 0.5); - this.context.stroke(); + this.context!.lineTo(transformX(this.size[0] + 0.5 - (desktop ? borderWidth : 0)), - 0.5); + this.context!.stroke(); if (!desktop) { - this.context.beginPath(); - this.context.moveTo(transformX(this.size[0] - 0.5 - (desktop ? borderWidth : 0)), -0.5); - this.context.lineTo(transformX(this.size[0] - 0.5 - (desktop ? borderWidth : 0)), translation[1] - 0.5 - borderWidth); - this.context.stroke(); + this.context!.beginPath(); + this.context!.moveTo(transformX(this.size[0] - 0.5 - (desktop ? borderWidth : 0)), -0.5); + this.context!.lineTo(transformX(this.size[0] - 0.5 - (desktop ? borderWidth : 0)), translation[1] - 0.5 - borderWidth); + this.context!.stroke(); } // bottom white line - this.context.beginPath(); - this.context.moveTo(transformX(-0.5), -0.5); - this.context.lineTo(transformX(-0.5), translation[1] + 0.5 - borderWidth); - this.context.stroke(); + this.context!.beginPath(); + this.context!.moveTo(transformX(-0.5), -0.5); + this.context!.lineTo(transformX(-0.5), translation[1] + 0.5 - borderWidth); + this.context!.stroke(); } public onDraw () { @@ -193,8 +193,8 @@ class AutoFillMarkerSection extends CanvasSectionObject { public onMouseUp (point: Array, e: MouseEvent) { if (this.sectionProperties.draggingStarted) { this.sectionProperties.draggingStarted = false; - point[0] += this.myTopLeft[0] + this.size[0] * 0.5; - point[1] += this.myTopLeft[1] + this.size[1] * 0.5; + point[0] += this.myTopLeft[0]! + this.size[0] * 0.5; + point[1] += this.myTopLeft[1]! + this.size[1] * 0.5; var pos = this.sectionProperties.docLayer._corePixelsToTwips(new L.Point(point[0], point[1])); this.sectionProperties.docLayer._postMouseEvent('buttonup', pos.x, pos.y, 1, 1, 0); } @@ -214,9 +214,9 @@ class AutoFillMarkerSection extends CanvasSectionObject { // revert coordinates to global and fire event again with position in the center // inverse of convertPositionToCanvasLocale - var canvasClientRect = this.containerObject.getCanvasBoundingClientRect(); - point[0] = (this.myTopLeft[0] + this.size[0] * 0.5 + 1) / app.dpiScale + canvasClientRect.left; - point[1] = (this.myTopLeft[1] + this.size[1] * 0.5 + 1) / app.dpiScale + canvasClientRect.top; + var canvasClientRect = this.containerObject!.getCanvasBoundingClientRect(); + point[0] = (this.myTopLeft[0]! + this.size[0] * 0.5 + 1) / app.dpiScale + canvasClientRect.left; + point[1] = (this.myTopLeft[1]! + this.size[1] * 0.5 + 1) / app.dpiScale + canvasClientRect.top; var newPoint = { clientX: point[0], diff --git a/browser/src/canvas/sections/CalcGridSection.ts b/browser/src/canvas/sections/CalcGridSection.ts index a177aff9c56c5..b7a5bbe0a895e 100644 --- a/browser/src/canvas/sections/CalcGridSection.ts +++ b/browser/src/canvas/sections/CalcGridSection.ts @@ -96,15 +96,15 @@ class CalcGridSection extends app.definitions.canvasSectionObject { // help our poor CPU renderers - render in horizontal strips. var bandSize = 256; var clearDash = false; - for (var miny = area.min.y; miny < area.max.y; miny += bandSize) + for (var miny = area!.min.y; miny < area!.max.y; miny += bandSize) { - var maxy = Math.min(area.max.y, miny + bandSize); + var maxy = Math.min(area!.max.y, miny + bandSize); this.context.beginPath(); // vertical lines this.sectionProperties.docLayer.sheetGeometry._columns.forEachInCorePixelRange( - area.min.x, area.max.x, + area!.min.x, area!.max.x, function(pos: any, colIndex: any) { var xcoord = xTransform(Math.floor(scale * (pos - paneOffset.x)) - 0.5); @@ -136,10 +136,10 @@ class CalcGridSection extends app.definitions.canvasSectionObject { } this.context.moveTo( - xTransform(Math.floor(scale * (area.min.x - paneOffset.x)) + 0.5), + xTransform(Math.floor(scale * (area!.min.x - paneOffset.x)) + 0.5), Math.floor(scale * (pos - paneOffset.y)) - 0.5); this.context.lineTo( - xTransform(Math.floor(scale * (area.max.x - paneOffset.x)) - 0.5), + xTransform(Math.floor(scale * (area!.max.x - paneOffset.x)) - 0.5), Math.floor(scale * (pos - paneOffset.y)) - 0.5); this.context.stroke(); diff --git a/browser/src/canvas/sections/CellCursorSection.ts b/browser/src/canvas/sections/CellCursorSection.ts index 12d9c8d3b3c16..b8654c9dd10c7 100644 --- a/browser/src/canvas/sections/CellCursorSection.ts +++ b/browser/src/canvas/sections/CellCursorSection.ts @@ -65,11 +65,11 @@ class CellCursorSection extends CanvasSectionObject { const pane = this.getContainingPane(); if (app.calc.cellCursorVisible && pane) { - this.context.lineJoin = 'miter'; - this.context.lineCap = 'butt'; - this.context.lineWidth = 1; + this.context!.lineJoin = 'miter'; + this.context!.lineCap = 'butt'; + this.context!.lineWidth = 1; - this.context.strokeStyle = this.sectionProperties.color; + this.context!.strokeStyle = this.sectionProperties.color; let penX = this.myTopLeft[0]; let penY = this.myTopLeft[1]; @@ -77,30 +77,30 @@ class CellCursorSection extends CanvasSectionObject { const movePen = this.sectionProperties.paneIndex !== -1 && this.sectionProperties.paneCount - 1 !== this.sectionProperties.paneIndex; if (movePen) { - if (pane.x1 === 0) penX = this.position[0] + this.containerObject.getDocumentAnchor()[0]; - if (pane.y1 === 0) penY = this.position[1] + this.containerObject.getDocumentAnchor()[1]; + if (pane.x1 === 0) penX = this.position[0] + this.containerObject!.getDocumentAnchor()[0]!; + if (pane.y1 === 0) penY = this.position[1] + this.containerObject!.getDocumentAnchor()[1]!; - this.context.translate(penX - this.myTopLeft[0], penY - this.myTopLeft[1]); + this.context!.translate(penX! - this.myTopLeft[0]!, penY! - this.myTopLeft[1]!); } let x: number = 0; if (app.isCalcRTL()) { - const rightMost = this.containerObject.getDocumentAnchor()[0] + this.containerObject.getDocumentAnchorSection().size[0]; - x = rightMost - penX * 2 - app.calc.cellCursorRectangle.pWidth; + const rightMost = this.containerObject!.getDocumentAnchor()[0]! + this.containerObject!.getDocumentAnchorSection()!.size[0]; + x = rightMost - penX! * 2 - app.calc.cellCursorRectangle.pWidth; } for (let i: number = 0; i < this.sectionProperties.weight; i++) - this.context.strokeRect(x + -0.5 - i, -0.5 - i, app.calc.cellCursorRectangle.pWidth + i * 2, app.calc.cellCursorRectangle.pHeight + i * 2); + this.context!.strokeRect(x + -0.5 - i, -0.5 - i, app.calc.cellCursorRectangle.pWidth + i * 2, app.calc.cellCursorRectangle.pHeight + i * 2); if (window.prefs.getBoolean('darkTheme')) { - this.context.strokeStyle = 'white'; + this.context!.strokeStyle = 'white'; const diff = 1; - this.context.strokeRect(x + -0.5 + diff, -0.5 + diff, app.calc.cellCursorRectangle.pWidth - 2 * diff, app.calc.cellCursorRectangle.pHeight - 2 * diff); - this.context.strokeRect(x + -0.5 + diff, -0.5 + diff, app.calc.cellCursorRectangle.pWidth - 2 * diff, app.calc.cellCursorRectangle.pHeight - 2 * diff); + this.context!.strokeRect(x + -0.5 + diff, -0.5 + diff, app.calc.cellCursorRectangle.pWidth - 2 * diff, app.calc.cellCursorRectangle.pHeight - 2 * diff); + this.context!.strokeRect(x + -0.5 + diff, -0.5 + diff, app.calc.cellCursorRectangle.pWidth - 2 * diff, app.calc.cellCursorRectangle.pHeight - 2 * diff); } if (movePen) - this.context.translate(-penX + this.myTopLeft[0], -penY + this.myTopLeft[1]); + this.context!.translate(-penX! + this.myTopLeft[0]!, -penY! + this.myTopLeft[1]!); } } diff --git a/browser/src/canvas/sections/CommentListSection.ts b/browser/src/canvas/sections/CommentListSection.ts index c4559a5cae4cd..34775f9f6b482 100644 --- a/browser/src/canvas/sections/CommentListSection.ts +++ b/browser/src/canvas/sections/CommentListSection.ts @@ -76,7 +76,7 @@ export class CommentSection extends app.definitions.canvasSectionObject { disableLayoutAnimation: boolean = false; map: any; - static autoSavedComment: cool.Comment; + static autoSavedComment: cool.Comment | null; static commentWasAutoAdded: boolean = false; static pendingImport: boolean = false; @@ -501,12 +501,12 @@ export class CommentSection extends app.definitions.canvasSectionObject { } var newAnnotationDialog = document.getElementById('new-annotation-dialog'); - $(newAnnotationDialog).css('width', '100%'); - var dialogInput = newAnnotationDialog.children[0]; + $(newAnnotationDialog!).css('width', '100%'); + var dialogInput = newAnnotationDialog!.children[0]; $(dialogInput).css('height', '30vh'); - var parent = newAnnotationDialog.parentElement; - parent.insertBefore(author, parent.childNodes[0]); - document.getElementById('input-modal-input').focus(); + var parent = newAnnotationDialog!.parentElement; + parent!.insertBefore(author, parent!.childNodes[0]); + document.getElementById('input-modal-input')!.focus(); } public highlightComment (comment: any): void { @@ -733,7 +733,7 @@ export class CommentSection extends app.definitions.canvasSectionObject { const selectedComment = this.sectionProperties.selectedComment; const docType = this.sectionProperties.docLayer._docType; - let position: Array = null; + let position: Array | null = null; switch (docType) { case 'text': @@ -789,7 +789,7 @@ export class CommentSection extends app.definitions.canvasSectionObject { public getScreenTopBottom(): Array { const scrollSection = app.sectionContainer.getSectionWithName(L.CSections.Scroll.name); const screenTop = scrollSection.containerObject.getDocumentTopLeft()[1]; - const screenBottom = screenTop + this.cssToCorePixels($('#map').height()); + const screenBottom = screenTop + this.cssToCorePixels($('#map').height()!); return [screenTop, screenBottom]; } @@ -945,7 +945,7 @@ export class CommentSection extends app.definitions.canvasSectionObject { return (index === undefined) ? -1 : index; } - public isThreadResolved (annotation: any): boolean { + public isThreadResolved (annotation: any): boolean | undefined { // If comment has children. if (annotation.sectionProperties.children.length > 0) { for (var i = 0; i < annotation.sectionProperties.children.length; i++) { @@ -1439,7 +1439,7 @@ export class CommentSection extends app.definitions.canvasSectionObject { shouldOpenWizard = true; if (shouldOpenWizard) { - this.sectionProperties.docLayer._openCommentWizard(annotation); + this.sectionProperties.docLayer._openCommentWizard(annotation!); } } @@ -1482,7 +1482,7 @@ export class CommentSection extends app.definitions.canvasSectionObject { // This converts the specified number of values into core pixels from twips. // Returns a new array with the length of specified numbers. - private numberArrayToCorePixFromTwips (numberArray: Array, startIndex: number = 0, length: number = null): Array { + private numberArrayToCorePixFromTwips (numberArray: Array, startIndex: number = 0, length: number | null = null): Array { if (!length) length = numberArray.length; @@ -1605,26 +1605,26 @@ export class CommentSection extends app.definitions.canvasSectionObject { return (this.sectionProperties.docLayer._docType === 'presentation' || this.sectionProperties.docLayer._docType === 'drawing') && !app.file.fileBasedView; } - private getAnimationDuration() :number { + private getAnimationDuration(): number | undefined { return this.disableLayoutAnimation ? 0 : undefined; // undefined means it will use default value } - private layoutUp (subList: any, actualPosition: Array, lastY: number): number { + private layoutUp (subList: any, actualPosition: Array, lastY: number | null): number | null { var height: number; for (var i = 0; i < subList.length; i++) { height = subList[i].sectionProperties.container.getBoundingClientRect().height; - lastY = subList[i].sectionProperties.data.anchorPix[1] + height < lastY ? subList[i].sectionProperties.data.anchorPix[1]: lastY - (height * app.dpiScale); - (new L.PosAnimation()).run(subList[i].sectionProperties.container, {x: Math.round(actualPosition[0] / app.dpiScale), y: Math.round(lastY / app.dpiScale)}, this.getAnimationDuration()); + lastY = subList[i].sectionProperties.data.anchorPix[1] + height < lastY! ? subList[i].sectionProperties.data.anchorPix[1]: lastY! - (height * app.dpiScale); + (new L.PosAnimation()).run(subList[i].sectionProperties.container, {x: Math.round(actualPosition[0] / app.dpiScale), y: Math.round(lastY! / app.dpiScale)}, this.getAnimationDuration()); if (!subList[i].isEdit()) subList[i].show(); } return lastY; } - private loopUp (startIndex: number, x: number, startY: number): number { + private loopUp (startIndex: number, x: number, startY: number | null): number { var tmpIdx = 0; var checkSelectedPart: boolean = this.mustCheckSelectedPart(); - startY -= this.sectionProperties.marginY; + startY! -= this.sectionProperties.marginY; // Pass over all comments present for (var i = startIndex; i > -1;) { var subList = []; @@ -1647,31 +1647,31 @@ export class CommentSection extends app.definitions.canvasSectionObject { } else { i = tmpIdx; } - startY -= this.sectionProperties.marginY; + startY! -= this.sectionProperties.marginY; } - return startY; + return startY!; } - private layoutDown (subList: any, actualPosition: Array, lastY: number): number { + private layoutDown (subList: any, actualPosition: Array, lastY: number | null): number | null { var selectedComment = subList[0] === this.sectionProperties.selectedComment; for (var i = 0; i < subList.length; i++) { - lastY = subList[i].sectionProperties.data.anchorPix[1] > lastY ? subList[i].sectionProperties.data.anchorPix[1]: lastY; + lastY = subList[i].sectionProperties.data.anchorPix[1] > lastY! ? subList[i].sectionProperties.data.anchorPix[1]: lastY; var isRTL = document.documentElement.dir === 'rtl'; if (selectedComment) - (new L.PosAnimation()).run(subList[i].sectionProperties.container, {x: Math.round(actualPosition[0] / app.dpiScale) - this.sectionProperties.deflectionOfSelectedComment * (isRTL ? -1 : 1), y: Math.round(lastY / app.dpiScale)}, this.getAnimationDuration()); + (new L.PosAnimation()).run(subList[i].sectionProperties.container, {x: Math.round(actualPosition[0] / app.dpiScale) - this.sectionProperties.deflectionOfSelectedComment * (isRTL ? -1 : 1), y: Math.round(lastY! / app.dpiScale)}, this.getAnimationDuration()); else - (new L.PosAnimation()).run(subList[i].sectionProperties.container, {x: Math.round(actualPosition[0] / app.dpiScale), y: Math.round(lastY / app.dpiScale)}, this.getAnimationDuration()); + (new L.PosAnimation()).run(subList[i].sectionProperties.container, {x: Math.round(actualPosition[0] / app.dpiScale), y: Math.round(lastY! / app.dpiScale)}, this.getAnimationDuration()); - lastY += (subList[i].sectionProperties.container.getBoundingClientRect().height * app.dpiScale); + lastY! += (subList[i].sectionProperties.container.getBoundingClientRect().height * app.dpiScale); if (!subList[i].isEdit()) subList[i].show(); } return lastY; } - private loopDown (startIndex: number, x: number, startY: number): number { + private loopDown (startIndex: number, x: number, startY: number | null): number | null { var tmpIdx = 0; var checkSelectedPart: boolean = this.mustCheckSelectedPart(); // Pass over all comments present @@ -1696,14 +1696,14 @@ export class CommentSection extends app.definitions.canvasSectionObject { } else { i = tmpIdx; } - startY += this.sectionProperties.marginY; + startY! += this.sectionProperties.marginY; } return startY; } public hideArrow (): void { if (this.sectionProperties.arrow) { - document.getElementById('document-container').removeChild(this.sectionProperties.arrow); + document.getElementById('document-container')!.removeChild(this.sectionProperties.arrow); this.sectionProperties.arrow = null; } } @@ -1744,7 +1744,7 @@ export class CommentSection extends app.definitions.canvasSectionObject { line.setAttribute('stroke', 'darkblue'); line.setAttribute('stroke-width', '1'); svg.appendChild(line); - document.getElementById('document-container').appendChild(svg); + document.getElementById('document-container')!.appendChild(svg); this.sectionProperties.arrow = svg; } } @@ -1795,7 +1795,7 @@ export class CommentSection extends app.definitions.canvasSectionObject { app.sectionContainer.requestReDraw(); } - var lastY = 0; + var lastY: number | null = 0; if (selectedIndex) { this.loopUp(selectedIndex - 1, x, yOrigin); lastY = this.loopDown(selectedIndex, x, yOrigin); @@ -1806,9 +1806,9 @@ export class CommentSection extends app.definitions.canvasSectionObject { } this.resizeComments(); - lastY += this.containerObject.getDocumentTopLeft()[1]; - if (lastY > app.file.size.pixels[1]) { - app.view.size.pixels[1] = lastY; + lastY! += this.containerObject.getDocumentTopLeft()[1]; + if (lastY! > app.file.size.pixels[1]) { + app.view.size.pixels[1] = lastY!; this.containerObject.requestReDraw(); } else diff --git a/browser/src/canvas/sections/CommentSection.ts b/browser/src/canvas/sections/CommentSection.ts index bb634be36dd05..3e336b26afe1c 100644 --- a/browser/src/canvas/sections/CommentSection.ts +++ b/browser/src/canvas/sections/CommentSection.ts @@ -190,7 +190,7 @@ export class Comment extends CanvasSectionObject { var _scrollTop = (e as any).currentTarget.scrollTop; if ((e as any).deltaY < 0 && _scrollTop > 0) e.stopPropagation(); - else if ((e as any).deltaY > 0 && _scrollTop + $(e.currentTarget).height() < (e as any).target.scrollHeight) + else if ((e as any).deltaY > 0 && _scrollTop + $(e.currentTarget!).height() < (e as any).target.scrollHeight) e.stopPropagation(); } @@ -243,7 +243,7 @@ export class Comment extends CanvasSectionObject { } if (!(window).mode.isMobile()) - document.getElementById('document-container').appendChild(this.sectionProperties.container); + document.getElementById('document-container')!.appendChild(this.sectionProperties.container); // We make comment directly visible when its transitioned to its determined position if (cool.CommentSection.autoSavedComment) @@ -483,7 +483,7 @@ export class Comment extends CanvasSectionObject { var x: number = Math.round(this.position[0] / app.dpiScale); var y: number = Math.round(this.position[1] / app.dpiScale); - (this.containerObject.getSectionWithName(L.CSections.Scroll.name) as any as cool.ScrollSection).onScrollTo({x: x, y: y}); + (this.containerObject!.getSectionWithName(L.CSections.Scroll.name) as any as cool.ScrollSection).onScrollTo({x: x, y: y}); } else if (this.sectionProperties.docLayer._docType === 'spreadsheet') { this.backgroundColor = '#777777'; //background: rgba(119, 119, 119, 0.25); @@ -491,15 +491,15 @@ export class Comment extends CanvasSectionObject { var x: number = Math.round(this.position[0] / app.dpiScale); var y: number = Math.round(this.position[1] / app.dpiScale); - (this.containerObject.getSectionWithName(L.CSections.Scroll.name) as any as cool.ScrollSection).onScrollTo({x: x, y: y}); + (this.containerObject!.getSectionWithName(L.CSections.Scroll.name) as any as cool.ScrollSection).onScrollTo({x: x, y: y}); } else if (this.sectionProperties.docLayer._docType === 'presentation' || this.sectionProperties.docLayer._docType === 'drawing') { var x: number = Math.round(this.position[0] / app.dpiScale); var y: number = Math.round(this.position[1] / app.dpiScale); - (this.containerObject.getSectionWithName(L.CSections.Scroll.name) as any as cool.ScrollSection).onScrollTo({x: x, y: y}); + (this.containerObject!.getSectionWithName(L.CSections.Scroll.name) as any as cool.ScrollSection).onScrollTo({x: x, y: y}); } - this.containerObject.requestReDraw(); + this.containerObject!.requestReDraw(); this.sectionProperties.isHighlighted = true; } @@ -558,8 +558,8 @@ export class Comment extends CanvasSectionObject { var pos: number[], size: number[]; if (rectangles) { - var documentAnchorSection = this.containerObject.getDocumentAnchorSection(); - var diff = [documentAnchorSection.myTopLeft[0] - this.documentTopLeft[0], documentAnchorSection.myTopLeft[1] - this.documentTopLeft[1]]; + var documentAnchorSection = this.containerObject!.getDocumentAnchorSection(); + var diff = [documentAnchorSection!.myTopLeft[0]! - this.documentTopLeft[0], documentAnchorSection!.myTopLeft[1]! - this.documentTopLeft[1]]; for (var i = 0; i < rectangles.length; i++) { pos = [ @@ -722,9 +722,9 @@ export class Comment extends CanvasSectionObject { var cellPos = this.map._docLayer._cellRangeToTwipRect(this.sectionProperties.data.cellRange).toRectangle(); var originalSize = [Math.round((cellPos[2]) * ratio), Math.round((cellPos[3]) * ratio)]; - const startX = this.isCalcRTL() ? this.myTopLeft[0] - this.getCommentWidth() : this.myTopLeft[0] + originalSize[0] - 3; + const startX = this.isCalcRTL() ? this.myTopLeft[0]! - this.getCommentWidth() : this.myTopLeft[0]! + originalSize[0] - 3; - var pos: Array = [Math.round(startX / app.dpiScale), Math.round(this.myTopLeft[1] / app.dpiScale)]; + var pos: Array = [Math.round(startX / app.dpiScale), Math.round(this.myTopLeft[1]! / app.dpiScale)]; this.sectionProperties.container.style.transform = 'translate3d(' + pos[0] + 'px, ' + pos[1] + 'px, 0px)'; } } @@ -981,7 +981,7 @@ export class Comment extends CanvasSectionObject { cool.CommentSection.autoSavedComment = this; this.onSaveComment(e); } - else if (this.containerObject.testing) { + else if (this.containerObject!.testing) { var insertButton = document.getElementById('menu-insertcomment'); if (insertButton) { if (window.getComputedStyle(insertButton).display === 'none') { @@ -1036,7 +1036,7 @@ export class Comment extends CanvasSectionObject { (this.sectionProperties.nodeReply && this.sectionProperties.nodeReply.style.display !== 'none')); } - public static isAnyEdit (): Comment { + public static isAnyEdit (): Comment | null { var section = app.sectionContainer && app.sectionContainer instanceof CanvasSectionContainer ? app.sectionContainer.getSectionWithName(L.CSections.CommentList.name) : null; if (!section) { @@ -1153,8 +1153,8 @@ export class Comment extends CanvasSectionObject { // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types public onCellAddressChanged(): void { if (this.sectionProperties.data.rectangles) { - var midX = this.containerObject.getDocumentAnchor()[0] + Math.round(app.calc.cellCursorRectangle.pCenter[0]); - var midY = this.containerObject.getDocumentAnchor()[1] + Math.round(app.calc.cellCursorRectangle.pCenter[1]); + var midX = this.containerObject!.getDocumentAnchor()[0]! + Math.round(app.calc.cellCursorRectangle.pCenter[0]); + var midY = this.containerObject!.getDocumentAnchor()[1]! + Math.round(app.calc.cellCursorRectangle.pCenter[1]); if (midX > this.sectionProperties.data.rectangles[0][0] && midX < this.sectionProperties.data.rectangles[0][0] + this.sectionProperties.data.rectangles[0][2] && midY > this.sectionProperties.data.rectangles[0][1] && midY < this.sectionProperties.data.rectangles[0][1] + this.sectionProperties.data.rectangles[0][3]) { @@ -1182,19 +1182,19 @@ export class Comment extends CanvasSectionObject { if (this.sectionProperties.docLayer._docType === 'text') { var rectangles: Array = this.sectionProperties.data.rectangles; if (rectangles) { - this.context.fillStyle = this.sectionProperties.usedTextColor; - this.context.globalAlpha = 0.25; + this.context!.fillStyle = this.sectionProperties.usedTextColor; + this.context!.globalAlpha = 0.25; for (var i: number = 0; i < this.sectionProperties.data.rectangles.length;i ++) { - var x = rectangles[i][0] - this.myTopLeft[0]; - var y = rectangles[i][1] - this.myTopLeft[1]; + var x = rectangles[i][0] - this.myTopLeft[0]!; + var y = rectangles[i][1] - this.myTopLeft[1]!; var w = rectangles[i][2] > 3 ? rectangles[i][2]: 3; var h = rectangles[i][3]; - this.context.fillRect(x, y, w , h); + this.context!.fillRect(x, y, w , h); } - this.context.globalAlpha = 1; + this.context!.globalAlpha = 1; } } else if (this.sectionProperties.docLayer._docType === 'spreadsheet' && @@ -1209,8 +1209,8 @@ export class Comment extends CanvasSectionObject { // this.size may currently have an artifically wide size if mouseEnter without moveLeave seen // so fetch the real size var x = this.isCalcRTL() ? margin : cellSize[0] - (margin + squareDim); - this.context.fillStyle = '#FF0000'; - this.context.fillRect(x, 0, squareDim, squareDim); + this.context!.fillStyle = '#FF0000'; + this.context!.fillRect(x, 0, squareDim, squareDim); } } } @@ -1225,7 +1225,7 @@ export class Comment extends CanvasSectionObject { // CanvasSectionContainer fires the onClick event. But since Hammer.js is used for map, it disables the onClick for SectionContainer. // We will use this event as click event on touch devices, until we remove Hammer.js (then this code will be removed from here). // Control.ColumnHeader.js file is not affected by this situation, because map element (so Hammer.js) doesn't cover headers. - if (!this.containerObject.isDraggingSomething() && (window).mode.isMobile() || (window).mode.isTablet()) { + if (!this.containerObject!.isDraggingSomething() && (window).mode.isMobile() || (window).mode.isTablet()) { if (this.sectionProperties.docLayer._docType === 'presentataion' || this.sectionProperties.docLayer._docType === 'drawing') this.sectionProperties.docLayer._openCommentWizard(this); this.onMouseEnter(); @@ -1342,7 +1342,7 @@ export class Comment extends CanvasSectionObject { return this.sectionProperties.children.length; } - public getChildByIndex(index: number): Comment { + public getChildByIndex(index: number): Comment | null { if (this.sectionProperties.children.length > index) return this.sectionProperties.children[index]; else @@ -1354,7 +1354,7 @@ export class Comment extends CanvasSectionObject { this.sectionProperties.children.splice(index, 1); } - public getParentCommentId(): string { + public getParentCommentId(): string | null { if (this.sectionProperties.data.parent && this.sectionProperties.data.parent !== '0') return this.sectionProperties.data.parent; else diff --git a/browser/src/canvas/sections/ContentControlSection.ts b/browser/src/canvas/sections/ContentControlSection.ts index a7aea234c398c..d418b16e9d1e2 100644 --- a/browser/src/canvas/sections/ContentControlSection.ts +++ b/browser/src/canvas/sections/ContentControlSection.ts @@ -58,7 +58,7 @@ export class ContentControlSection extends app.definitions.canvasSectionObject { var container = L.DomUtil.createWithId('div', 'datepicker'); container.style.zIndex = '12'; container.style.position = 'absolute'; - document.getElementById('document-container').appendChild(container); + document.getElementById('document-container')!.appendChild(container); this.sectionProperties.datePicker = false; this.sectionProperties.picturePicker = false; } @@ -143,7 +143,7 @@ export class ContentControlSection extends app.definitions.canvasSectionObject { public drawPolygon(): void { var rectArray = cool.Bounds.parseArray(this.sectionProperties.json.rectangles); - var rectangles = rectArray.map(function (rect: cool.Bounds) { + var rectangles = rectArray!.map(function (rect: cool.Bounds) { return rect.getPointArray(); }); @@ -348,8 +348,8 @@ export class ContentControlSection extends app.definitions.canvasSectionObject { $('#datepicker').hide(); } else { var datePicker = document.getElementById('datepicker'); - datePicker.style.left = this.sectionProperties.framePos.x + this.sectionProperties.frameWidth + 'px'; - datePicker.style.top = this.sectionProperties.framePos.y + this.sectionProperties.frameHeight + 'px'; + datePicker!.style.left = this.sectionProperties.framePos.x + this.sectionProperties.frameWidth + 'px'; + datePicker!.style.top = this.sectionProperties.framePos.y + this.sectionProperties.frameHeight + 'px'; $('#datepicker').show(); } } diff --git a/browser/src/canvas/sections/HTMLObjectSection.ts b/browser/src/canvas/sections/HTMLObjectSection.ts index afe5ff56ac6fd..b5affc4d4cae5 100644 --- a/browser/src/canvas/sections/HTMLObjectSection.ts +++ b/browser/src/canvas/sections/HTMLObjectSection.ts @@ -16,11 +16,11 @@ class HTMLObjectSection extends CanvasSectionObject { zIndex: number = L.CSections.HTMLObject.zIndex; documentObject: boolean = true; - constructor (sectionName: string, objectWidth: number, objectHeight: number, documentPosition: cool.SimplePoint, extraClass: string = "", showSection: boolean = true) { + constructor (sectionName: string, objectWidth: number | null, objectHeight: number | null, documentPosition: cool.SimplePoint, extraClass: string = "", showSection: boolean = true) { super(); this.name = sectionName; - this.size = [objectWidth * app.dpiScale, objectHeight * app.dpiScale]; + this.size = [objectWidth! * app.dpiScale, objectHeight! * app.dpiScale]; this.position = [documentPosition.pX, documentPosition.pY]; this.sectionProperties.objectWidth = objectWidth; this.sectionProperties.objectHeight = objectHeight; @@ -37,7 +37,7 @@ class HTMLObjectSection extends CanvasSectionObject { this.sectionProperties.objectDiv.classList.add(extraClass); // canvas-container and canvas overlap entirely. We can append the html object to canvas-container. - document.getElementById('canvas-container').appendChild(this.sectionProperties.objectDiv); + document.getElementById('canvas-container')!.appendChild(this.sectionProperties.objectDiv); if (!showSection) { this.sectionProperties.objectDiv.style.display = 'none'; @@ -62,15 +62,15 @@ class HTMLObjectSection extends CanvasSectionObject { let topAddition = 0; if (this.sectionProperties.objectDiv.parentNode.id === 'map') { - const clientRectMap = document.getElementById('map').getBoundingClientRect(); - const clientRectCanvas = document.getElementById('canvas-container').getBoundingClientRect(); + const clientRectMap = document.getElementById('map')!.getBoundingClientRect(); + const clientRectCanvas = document.getElementById('canvas-container')!.getBoundingClientRect(); leftAddition = clientRectMap.width - clientRectCanvas.width; topAddition = clientRectMap.height - clientRectCanvas.height; } - const left = Math.round((this.myTopLeft[0] + leftAddition) / app.dpiScale) + 'px'; - const top = Math.round((this.myTopLeft[1] + topAddition) / app.dpiScale) + 'px'; + const left = Math.round((this.myTopLeft[0]! + leftAddition) / app.dpiScale) + 'px'; + const top = Math.round((this.myTopLeft[1]! + topAddition) / app.dpiScale) + 'px'; if (this.sectionProperties.objectDiv.style.left !== left) this.sectionProperties.objectDiv.style.left = left; diff --git a/browser/src/canvas/sections/InvalidationRectangleSection.ts b/browser/src/canvas/sections/InvalidationRectangleSection.ts index ee59faaf17061..f3e796cdcb2e6 100644 --- a/browser/src/canvas/sections/InvalidationRectangleSection.ts +++ b/browser/src/canvas/sections/InvalidationRectangleSection.ts @@ -48,22 +48,23 @@ class InvalidationRectangleSection extends CanvasSectionObject { ): void { const rectangleList: Array = this.sectionProperties .rectangleList as Array; - this.context.strokeStyle = 'red'; + this.context!.strokeStyle = 'red'; - const anchor: number[] = this.containerObject.getDocumentAnchor(); - const xDiff = anchor[0] - this.documentTopLeft[0]; - const yDiff = anchor[1] - this.documentTopLeft[1]; + const anchor: (number | undefined)[] = + this.containerObject!.getDocumentAnchor(); + const xDiff = anchor[0]! - this.documentTopLeft[0]; + const yDiff = anchor[1]! - this.documentTopLeft[1]; for (let i = 0; i < rectangleList.length; i++) { - this.context.globalAlpha = 1 - 0.15 * i; - this.context.strokeRect( + this.context!.globalAlpha = 1 - 0.15 * i; + this.context!.strokeRect( xDiff + rectangleList[i][0], yDiff + rectangleList[i][1], rectangleList[i][2], rectangleList[i][3], ); } - this.context.globalAlpha = 1; + this.context!.globalAlpha = 1; } checkDeletion() { diff --git a/browser/src/canvas/sections/OtherViewCellCursorSection.ts b/browser/src/canvas/sections/OtherViewCellCursorSection.ts index c84b02a24bd2b..fbb57b73c1b80 100644 --- a/browser/src/canvas/sections/OtherViewCellCursorSection.ts +++ b/browser/src/canvas/sections/OtherViewCellCursorSection.ts @@ -43,9 +43,9 @@ class OtherViewCellCursorSection extends CanvasSectionObject { onDraw(frameCount?: number, elapsedTime?: number, subsetBounds?: Bounds): void { this.adjustPopUpPosition(); - this.context.strokeStyle = this.sectionProperties.color; - this.context.lineWidth = 2; - this.context.strokeRect(-0.5, -0.5, this.size[0], this.size[1]); + this.context!.strokeStyle = this.sectionProperties.color; + this.context!.lineWidth = 2; + this.context!.strokeRect(-0.5, -0.5, this.size[0], this.size[1]); } checkMyVisibility() { @@ -59,7 +59,7 @@ class OtherViewCellCursorSection extends CanvasSectionObject { const width = this.sectionProperties.popUpContainer.getBoundingClientRect().width; const height = this.sectionProperties.popUpContainer.getBoundingClientRect().height; - const pos = [this.myTopLeft[0] / app.dpiScale + this.size[0] * 0.5 / app.dpiScale - (width * 0.5), (this.myTopLeft[1] / app.dpiScale) - (height + 15)]; + const pos = [this.myTopLeft[0]! / app.dpiScale + this.size[0] * 0.5 / app.dpiScale - (width * 0.5), (this.myTopLeft[1]! / app.dpiScale) - (height + 15)]; this.sectionProperties.popUpContainer.style.left = pos[0] + 'px'; this.sectionProperties.popUpContainer.style.top = pos[1] + 'px'; @@ -91,7 +91,7 @@ class OtherViewCellCursorSection extends CanvasSectionObject { popUpContainer.style.backgroundColor = nameContainer.style.backgroundColor = this.sectionProperties.color; arrowDiv.style.backgroundColor = nameParagraph.style.backgroundColor = this.sectionProperties.color; - document.getElementById('document-container').appendChild(popUpContainer); + document.getElementById('document-container')!.appendChild(popUpContainer); this.sectionProperties.popUpContainer = popUpContainer; diff --git a/browser/src/canvas/sections/OtherViewGraphicSelectionSection.ts b/browser/src/canvas/sections/OtherViewGraphicSelectionSection.ts index 061ba700da856..a079838613b74 100644 --- a/browser/src/canvas/sections/OtherViewGraphicSelectionSection.ts +++ b/browser/src/canvas/sections/OtherViewGraphicSelectionSection.ts @@ -36,9 +36,9 @@ class OtherViewGraphicSelectionSection extends CanvasSectionObject { } onDraw(frameCount?: number, elapsedTime?: number, subsetBounds?: Bounds): void { - this.context.strokeStyle = this.sectionProperties.color; - this.context.lineWidth = 2; - this.context.strokeRect(-0.5, -0.5, this.size[0], this.size[1]); + this.context!.strokeStyle = this.sectionProperties.color; + this.context!.lineWidth = 2; + this.context!.strokeRect(-0.5, -0.5, this.size[0], this.size[1]); } checkMyVisibility() { diff --git a/browser/src/canvas/sections/ScrollSection.ts b/browser/src/canvas/sections/ScrollSection.ts index 75ea3e487ae70..38102965ad9c1 100644 --- a/browser/src/canvas/sections/ScrollSection.ts +++ b/browser/src/canvas/sections/ScrollSection.ts @@ -802,7 +802,7 @@ export class ScrollSection extends app.definitions.canvasSectionObject { return pointerIsSyncWithScrollBar; } - public onMouseMove (position: Array, dragDistance: Array, e: MouseEvent): void { + public onMouseMove (position: Array, dragDistance: Array | null, e: MouseEvent): void { this.clearQuickScrollTimeout(); if (this.sectionProperties.clickScrollVertical && this.containerObject.isDraggingSomething()) { @@ -814,13 +814,13 @@ export class ScrollSection extends app.definitions.canvasSectionObject { var scrollProps: any = this.getVerticalScrollProperties(); - var diffY: number = dragDistance[1] - this.sectionProperties.previousDragDistance[1]; + var diffY: number = dragDistance![1] - this.sectionProperties.previousDragDistance[1]; var actualDistance = scrollProps.ratio * diffY; if (this.isMousePointerSyncedWithVerticalScrollBar(scrollProps, position)) this.scrollVerticalWithOffset(actualDistance); - this.sectionProperties.previousDragDistance[1] = dragDistance[1]; + this.sectionProperties.previousDragDistance[1] = dragDistance![1]; e.stopPropagation(); // Don't propagate to map. this.stopPropagating(); // Don't propagate to bound sections. @@ -833,13 +833,13 @@ export class ScrollSection extends app.definitions.canvasSectionObject { this.showHorizontalScrollBar(); var scrollProps: any = this.getHorizontalScrollProperties(); - var diffX: number = dragDistance[0] - this.sectionProperties.previousDragDistance[0]; + var diffX: number = dragDistance![0] - this.sectionProperties.previousDragDistance[0]; var actualDistance = scrollProps.ratio * diffX; if (this.isMousePointerSyncedWithHorizontalScrollBar(scrollProps, position)) this.scrollHorizontalWithOffset(actualDistance); - this.sectionProperties.previousDragDistance[0] = dragDistance[0]; + this.sectionProperties.previousDragDistance[0] = dragDistance![0]; e.stopPropagation(); // Don't propagate to map. this.stopPropagating(); // Don't propagate to bound sections. } diff --git a/browser/src/canvas/sections/ShapeHandleAnchorSubSection.ts b/browser/src/canvas/sections/ShapeHandleAnchorSubSection.ts index 8263a7937a21e..edd9f72512125 100644 --- a/browser/src/canvas/sections/ShapeHandleAnchorSubSection.ts +++ b/browser/src/canvas/sections/ShapeHandleAnchorSubSection.ts @@ -20,7 +20,7 @@ class ShapeHandleAnchorSubSection extends HTMLObjectSection { this.getHTMLObject().style.opacity = 1; this.getHTMLObject().remove(); - document.getElementById('map').appendChild(this.getHTMLObject()); + document.getElementById('map')!.appendChild(this.getHTMLObject()); app.definitions.shapeHandlesSection.mirrorEventsFromSourceToCanvasSectionContainer(this.getHTMLObject()); @@ -31,12 +31,12 @@ class ShapeHandleAnchorSubSection extends HTMLObjectSection { onMouseEnter() { this.backgroundColor = 'grey'; - this.containerObject.requestReDraw(); + this.containerObject!.requestReDraw(); } onMouseLeave() { this.backgroundColor = null; - this.containerObject.requestReDraw(); + this.containerObject!.requestReDraw(); } tableMouseUp(point: number[], e: MouseEvent) { @@ -74,7 +74,7 @@ class ShapeHandleAnchorSubSection extends HTMLObjectSection { } onMouseUp(point: number[], e: MouseEvent): void { - if (this.containerObject.isDraggingSomething()) { + if (this.containerObject!.isDraggingSomething()) { // Tables don't have parent sections. This is used for separating table anchors from other anchors. if (this.sectionProperties.parentHandlerSection) { this.shapeMouseUp(point, e); @@ -86,7 +86,7 @@ class ShapeHandleAnchorSubSection extends HTMLObjectSection { } onMouseMove(point: Array, dragDistance: Array, e: MouseEvent) { - if (this.containerObject.isDraggingSomething()) { + if (this.containerObject!.isDraggingSomething()) { // Show preview in its final position. let svg; let initialPosition; @@ -97,10 +97,10 @@ class ShapeHandleAnchorSubSection extends HTMLObjectSection { } else { // Table.. - svg = document.getElementById('canvas-container').querySelector('svg'); - svg.style.display = ''; + svg = document.getElementById('canvas-container')!.querySelector('svg'); + svg!.style.display = ''; if (!this.sectionProperties.initialPosition) { - this.sectionProperties.initialPosition = [parseFloat(svg.style.left.replace('px', '')), parseFloat(svg.style.top.replace('px', ''))]; + this.sectionProperties.initialPosition = [parseFloat(svg!.style.left.replace('px', '')), parseFloat(svg!.style.top.replace('px', ''))]; } initialPosition = this.sectionProperties.initialPosition; } diff --git a/browser/src/canvas/sections/ShapeHandleCustomSubSection.ts b/browser/src/canvas/sections/ShapeHandleCustomSubSection.ts index cbaa9f2c4f5cc..d5c873e1d6a56 100644 --- a/browser/src/canvas/sections/ShapeHandleCustomSubSection.ts +++ b/browser/src/canvas/sections/ShapeHandleCustomSubSection.ts @@ -35,13 +35,13 @@ class ShapeHandleCustomSubSection extends CanvasSectionObject { } onDraw(frameCount?: number, elapsedTime?: number, subsetBounds?: cool.Bounds): void { - this.context.fillStyle = 'yellow'; - this.context.strokeStyle = 'black'; - this.context.beginPath(); - this.context.arc(this.size[0] * 0.5, this.size[1] * 0.5, this.size[0] * 0.5, 0, Math.PI * 2); - this.context.closePath(); - this.context.fill(); - this.context.stroke(); + this.context!.fillStyle = 'yellow'; + this.context!.strokeStyle = 'black'; + this.context!.beginPath(); + this.context!.arc(this.size[0] * 0.5, this.size[1] * 0.5, this.size[0] * 0.5, 0, Math.PI * 2); + this.context!.closePath(); + this.context!.fill(); + this.context!.stroke(); } onInitialize(): void { @@ -54,7 +54,7 @@ class ShapeHandleCustomSubSection extends CanvasSectionObject { this.sectionProperties.mapPane.style.cursor = this.sectionProperties.mousePointerType; this.stopPropagating(); e.stopPropagation(); - this.containerObject.requestReDraw(); + this.containerObject!.requestReDraw(); } onMouseLeave(point: number[], e: MouseEvent) { @@ -62,7 +62,7 @@ class ShapeHandleCustomSubSection extends CanvasSectionObject { this.sectionProperties.mapPane.style.cursor = this.sectionProperties.previousCursorStyle; this.stopPropagating(); e.stopPropagation(); - this.containerObject.requestReDraw(); + this.containerObject!.requestReDraw(); } onMouseDown(point: Array, e: MouseEvent): void { @@ -70,7 +70,7 @@ class ShapeHandleCustomSubSection extends CanvasSectionObject { } onMouseUp(point: number[], e: MouseEvent): void { - if (this.containerObject.isDraggingSomething()) { + if (this.containerObject!.isDraggingSomething()) { const parameters = { HandleNum: { type: 'long', value: this.sectionProperties.ownInfo.id }, NewPosX: { type: 'long', value: Math.round((point[0] + this.position[0]) * app.pixelsToTwips) }, @@ -87,7 +87,7 @@ class ShapeHandleCustomSubSection extends CanvasSectionObject { } onMouseMove(point: Array, dragDistance: Array, e: MouseEvent) { - if (this.containerObject.isDraggingSomething()) { + if (this.containerObject!.isDraggingSomething()) { this.stopPropagating(); e.stopPropagation(); } diff --git a/browser/src/canvas/sections/ShapeHandleGluePointSubSection.ts b/browser/src/canvas/sections/ShapeHandleGluePointSubSection.ts index 35e60dd00e9dd..4c9ee73c010d5 100644 --- a/browser/src/canvas/sections/ShapeHandleGluePointSubSection.ts +++ b/browser/src/canvas/sections/ShapeHandleGluePointSubSection.ts @@ -27,10 +27,10 @@ class ShapeHandleGluePointSubSection extends CanvasSectionObject { } onDraw(frameCount?: number, elapsedTime?: number, subsetBounds?: Bounds): void { - this.context.fillStyle = '#EE3E3E'; - this.context.beginPath(); - this.context.arc(0, 0, this.size[0] * 0.5, 0, Math.PI * 2); - this.context.fill(); + this.context!.fillStyle = '#EE3E3E'; + this.context!.beginPath(); + this.context!.arc(0, 0, this.size[0] * 0.5, 0, Math.PI * 2); + this.context!.fill(); } } diff --git a/browser/src/canvas/sections/ShapeHandleRotationSubSection.ts b/browser/src/canvas/sections/ShapeHandleRotationSubSection.ts index 33f11dd8e8fc6..2c548a7932a8e 100644 --- a/browser/src/canvas/sections/ShapeHandleRotationSubSection.ts +++ b/browser/src/canvas/sections/ShapeHandleRotationSubSection.ts @@ -63,13 +63,13 @@ class ShapeHandleRotationSubSection extends CanvasSectionObject { } onDraw(frameCount?: number, elapsedTime?: number, subsetBounds?: cool.Bounds): void { - this.context.fillStyle = 'white'; - this.context.strokeStyle = 'black'; - this.context.beginPath(); - this.context.arc(this.size[0] * 0.5, this.size[1] * 0.5, this.size[0] * 0.5, 0, Math.PI * 2); - this.context.closePath(); - this.context.fill(); - this.context.stroke(); + this.context!.fillStyle = 'white'; + this.context!.strokeStyle = 'black'; + this.context!.beginPath(); + this.context!.arc(this.size[0] * 0.5, this.size[1] * 0.5, this.size[0] * 0.5, 0, Math.PI * 2); + this.context!.closePath(); + this.context!.fill(); + this.context!.stroke(); } // This is called after dragging the rotation handler. It re-calculates initial angle with the handler's new position. @@ -80,7 +80,7 @@ class ShapeHandleRotationSubSection extends CanvasSectionObject { draggedToPoint.pX += this.position[0]; draggedToPoint.pY += this.position[1]; - const selectionCenter = new app.definitions.simplePoint(GraphicSelection.rectangle.center[0], GraphicSelection.rectangle.center[1]); + const selectionCenter = new app.definitions.simplePoint(GraphicSelection.rectangle!.center[0], GraphicSelection.rectangle!.center[1]); const initialPoint = this.sectionProperties.ownInfo.initialPosition; const initialAngle = this.calculateAngle(selectionCenter, initialPoint); @@ -94,9 +94,9 @@ class ShapeHandleRotationSubSection extends CanvasSectionObject { } onMouseUp(point: number[], e: MouseEvent): void { - if (this.containerObject.isDraggingSomething()) { + if (this.containerObject!.isDraggingSomething()) { if (this.sectionProperties.lastDraggingDistance) { - const center = GraphicSelection.rectangle.center; + const center = GraphicSelection.rectangle!.center; const commandParameters = { 'TransformRotationDeltaAngle': { @@ -122,14 +122,14 @@ class ShapeHandleRotationSubSection extends CanvasSectionObject { } onMouseMove(position: number[], distance: number[]) { - if (this.containerObject.isDraggingSomething()) { + if (this.containerObject!.isDraggingSomething()) { this.sectionProperties.lastDraggingDistance = distance; - if (this.containerObject.isDraggingSomething() && this.sectionProperties.parentHandlerSection.sectionProperties.svg) { + if (this.containerObject!.isDraggingSomething() && this.sectionProperties.parentHandlerSection.sectionProperties.svg) { this.sectionProperties.parentHandlerSection.sectionProperties.svg.style.opacity = 0.5; const angleDifference = (-this.getAngleDifference() / 100) * app.dpiScale; this.sectionProperties.parentHandlerSection.sectionProperties.svg.style.transform = 'rotate(' + angleDifference + 'deg)'; - this.containerObject.requestReDraw(); + this.containerObject!.requestReDraw(); this.sectionProperties.parentHandlerSection.showSVG(); } } diff --git a/browser/src/canvas/sections/ShapeHandleScalingSubSection.ts b/browser/src/canvas/sections/ShapeHandleScalingSubSection.ts index 53e0f302bd2ac..03ca18d0be5e8 100644 --- a/browser/src/canvas/sections/ShapeHandleScalingSubSection.ts +++ b/browser/src/canvas/sections/ShapeHandleScalingSubSection.ts @@ -44,13 +44,13 @@ class ShapeHandleScalingSubSection extends CanvasSectionObject { } onDraw(frameCount?: number, elapsedTime?: number, subsetBounds?: cool.Bounds): void { - this.context.fillStyle = 'wheat'; - this.context.strokeStyle = 'black'; - this.context.beginPath(); - this.context.arc(this.size[0] * 0.5, this.size[1] * 0.5, this.size[0] * 0.5, 0, Math.PI * 2); - this.context.closePath(); - this.context.fill(); - this.context.stroke(); + this.context!.fillStyle = 'wheat'; + this.context!.strokeStyle = 'black'; + this.context!.beginPath(); + this.context!.arc(this.size[0] * 0.5, this.size[1] * 0.5, this.size[0] * 0.5, 0, Math.PI * 2); + this.context!.closePath(); + this.context!.fill(); + this.context!.stroke(); } setMousePointerType() { @@ -78,7 +78,7 @@ class ShapeHandleScalingSubSection extends CanvasSectionObject { this.stopPropagating(); this.sectionProperties.previousCursorStyle = this.sectionProperties.mapPane.style.cursor; this.sectionProperties.mapPane.style.cursor = this.sectionProperties.mousePointerType; - this.containerObject.requestReDraw(); + this.containerObject!.requestReDraw(); } onMouseLeave(point: number[], e: MouseEvent) { @@ -86,11 +86,11 @@ class ShapeHandleScalingSubSection extends CanvasSectionObject { e.stopPropagation(); this.stopPropagating(); this.sectionProperties.mapPane.style.cursor = this.sectionProperties.previousCursorStyle; - this.containerObject.requestReDraw(); + this.containerObject!.requestReDraw(); } onMouseUp(point: number[], e: MouseEvent): void { - if (this.containerObject.isDraggingSomething()) { + if (this.containerObject!.isDraggingSomething()) { this.stopPropagating(); e.stopPropagation(); @@ -183,8 +183,8 @@ class ShapeHandleScalingSubSection extends CanvasSectionObject { // While dragging a handle, we want to simulate handles to their final positions. moveHandlesOnDrag(point: number[]) { const shapeRecProps = this.calculateNewShapeRectangleProperties([ - point[0] + this.myTopLeft[0] + this.documentTopLeft[0] - this.containerObject.getDocumentAnchor()[0], - point[1] + this.myTopLeft[1] + this.documentTopLeft[1] - this.containerObject.getDocumentAnchor()[1] + point[0] + this.myTopLeft[0]! + this.documentTopLeft[0] - this.containerObject!.getDocumentAnchor()[0]!, + point[1] + this.myTopLeft[1]! + this.documentTopLeft[1] - this.containerObject!.getDocumentAnchor()[1]! ]); this.sectionProperties.parentHandlerSection.calculateInitialAnglesOfShapeHandlers(shapeRecProps); @@ -208,14 +208,14 @@ class ShapeHandleScalingSubSection extends CanvasSectionObject { } onMouseMove(point: Array, dragDistance: Array, e: MouseEvent) { - if (this.containerObject.isDraggingSomething()) { + if (this.containerObject!.isDraggingSomething()) { (window as any).IgnorePanning = true; this.stopPropagating(); e.stopPropagation(); this.sectionProperties.parentHandlerSection.sectionProperties.svg.style.opacity = 0.5; this.moveHandlesOnDrag(point); this.sectionProperties.parentHandlerSection.checkObjectsBoundaries([this.position[0]], [this.position[1]]); - this.containerObject.requestReDraw(); + this.containerObject!.requestReDraw(); this.sectionProperties.parentHandlerSection.showSVG(); } else diff --git a/browser/src/canvas/sections/ShapeHandlesSection.ts b/browser/src/canvas/sections/ShapeHandlesSection.ts index 63a16b8d01c5e..d60b4812fcb60 100644 --- a/browser/src/canvas/sections/ShapeHandlesSection.ts +++ b/browser/src/canvas/sections/ShapeHandlesSection.ts @@ -109,7 +109,7 @@ class ShapeHandlesSection extends CanvasSectionObject { public static moveHTMLObjectToMapElement(htmlObjectSection: HTMLObjectSection) { htmlObjectSection.getHTMLObject().remove(); - document.getElementById('map').appendChild(htmlObjectSection.getHTMLObject()); + document.getElementById('map')!.appendChild(htmlObjectSection.getHTMLObject()); } public static mirrorEventsFromSourceToCanvasSectionContainer (sourceElement: HTMLElement): void { @@ -153,7 +153,7 @@ class ShapeHandlesSection extends CanvasSectionObject { let topMiddle = this.sectionProperties.info.handles.kinds.rectangle['2'][0]; topMiddle = new cool.SimplePoint(parseInt(topMiddle.point.x), parseInt(topMiddle.point.y)); - const center = GraphicSelection.rectangle.center; // number array in twips. + const center = GraphicSelection.rectangle!.center; // number array in twips. const radians = Math.atan2((center[1] - topMiddle.y), (topMiddle.x - center[0])); return radians - Math.PI * 0.5; @@ -169,7 +169,7 @@ class ShapeHandlesSection extends CanvasSectionObject { return { angleRadian: this.getShapeAngleRadians(), - center: GraphicSelection.rectangle.pCenter.slice(), + center: GraphicSelection.rectangle!.pCenter.slice(), height: this.getShapeHeight() * app.twipsToPixels, width: this.getShapeWidth() * app.twipsToPixels }; @@ -208,7 +208,7 @@ class ShapeHandlesSection extends CanvasSectionObject { if (!this.sectionProperties.info?.handles?.kinds?.rectangle) return; - let coreAngle = GraphicSelection.selectionAngle; + let coreAngle: number | null = GraphicSelection.selectionAngle; if (this.sectionProperties.svg) coreAngle = this.sectionProperties.svg.innerHTML.includes('class="Group"') ? 0: coreAngle; @@ -326,7 +326,7 @@ class ShapeHandlesSection extends CanvasSectionObject { this.size = [0, 0]; if (GraphicSelection.hasActiveSelection()) - this.size = [GraphicSelection.rectangle.pWidth, GraphicSelection.rectangle.pHeight]; + this.size = [GraphicSelection.rectangle!.pWidth, GraphicSelection.rectangle!.pHeight]; } isSVGVisible() { @@ -379,7 +379,7 @@ class ShapeHandlesSection extends CanvasSectionObject { this.sectionProperties.hasVideo = true; this.setSVG(svgString); this.sectionProperties.svg.remove(); - document.getElementById('map').appendChild(this.sectionProperties.svg); + document.getElementById('map')!.appendChild(this.sectionProperties.svg); this.sectionProperties.svg.style.zIndex = 11; // Update z-index or video buttons are unreachable. if (!this.sectionProperties.svg.innerHTML.includes('foreignobject')) { @@ -410,7 +410,8 @@ class ShapeHandlesSection extends CanvasSectionObject { fixSVGPos(); var observer = new MutationObserver(fixSVGPos); - observer.observe(this.context.canvas, { + observer.observe(this.context! + .canvas, { attributes: true }); } @@ -450,7 +451,7 @@ class ShapeHandlesSection extends CanvasSectionObject { data = this.removeTagFromHTML(data, ' style="', '"'); this.sectionProperties.svg = document.createElement('svg'); - document.getElementById('canvas-container').appendChild(this.sectionProperties.svg); + document.getElementById('canvas-container')!.appendChild(this.sectionProperties.svg); this.sectionProperties.svg.innerHTML = data; this.sectionProperties.svg.style.position = 'absolute'; @@ -618,24 +619,24 @@ class ShapeHandlesSection extends CanvasSectionObject { newSubSection = this.checkGluePointSubSection(this.sectionProperties.handles[i]); if (newSubSection) { - this.containerObject.addSection(newSubSection as any); + this.containerObject!.addSection(newSubSection as any); this.sectionProperties.subSections.push(newSubSection); } } } onMouseEnter() { - this.sectionProperties.previousCursorStyle = this.context.canvas.style.cursor; - this.context.canvas.style.cursor = 'move'; + this.sectionProperties.previousCursorStyle = this.context!.canvas.style.cursor; + this.context!.canvas.style.cursor = 'move'; this.sectionProperties.mouseIsInside = true; } onMouseLeave() { - this.context.canvas.style.cursor = this.sectionProperties.previousCursorStyle; + this.context!.canvas.style.cursor = this.sectionProperties.previousCursorStyle; this.sectionProperties.mouseIsInside = false; } - adjustSnapTransformCoordinate(x: number, y: number) { + adjustSnapTransformCoordinate(x: number | null, y: number | null) { // Transform command accepts the difference from top left corner. // If we are snapping to other corners, we need to adjust the coordinate. @@ -676,7 +677,7 @@ class ShapeHandlesSection extends CanvasSectionObject { (window as any).IgnorePanning = false; - if (this.containerObject.isDraggingSomething()) { + if (this.containerObject!.isDraggingSomething()) { if ((window as any).mode.isTablet() || (window as any).mode.isMobile()) this.sendTransformCommand(point); else if ((window as any).mode.isDesktop() && (this.sectionProperties.closestX || this.sectionProperties.closestY)) { @@ -755,16 +756,16 @@ class ShapeHandlesSection extends CanvasSectionObject { if (app.map._docLayer._docType === 'presentation') { this.findClosestX(xListToCheck); this.findClosestY(yListToCheck); - this.containerObject.requestReDraw(); + this.containerObject!.requestReDraw(); } } onMouseMove(position: number[], dragDistance: number[]) { - if (this.containerObject.isDraggingSomething() && this.sectionProperties.svg) { + if (this.containerObject!.isDraggingSomething() && this.sectionProperties.svg) { (window as any).IgnorePanning = true; - this.sectionProperties.svg.style.left = String((this.myTopLeft[0] + dragDistance[0]) / app.dpiScale) + 'px'; - this.sectionProperties.svg.style.top = String((this.myTopLeft[1] + dragDistance[1]) / app.dpiScale) + 'px'; + this.sectionProperties.svg.style.left = String((this.myTopLeft[0]! + dragDistance[0]) / app.dpiScale) + 'px'; + this.sectionProperties.svg.style.top = String((this.myTopLeft[1]! + dragDistance[1]) / app.dpiScale) + 'px'; this.sectionProperties.svg.style.opacity = 0.5; this.sectionProperties.lastDragDistance = [dragDistance[0], dragDistance[1]]; this.checkObjectsBoundaries( @@ -831,8 +832,8 @@ class ShapeHandlesSection extends CanvasSectionObject { } } - this.sectionProperties.svg.style.left = (left - (this.documentTopLeft[0] - this.containerObject.getDocumentAnchor()[0]) / app.dpiScale) + 'px'; - this.sectionProperties.svg.style.top = (top - (this.documentTopLeft[1] - this.containerObject.getDocumentAnchor()[1]) / app.dpiScale) + 'px'; + this.sectionProperties.svg.style.left = (left - (this.documentTopLeft[0] - this.containerObject!.getDocumentAnchor()[0]!) / app.dpiScale) + 'px'; + this.sectionProperties.svg.style.top = (top - (this.documentTopLeft[1] - this.containerObject!.getDocumentAnchor()[1]!) / app.dpiScale) + 'px'; this.sectionProperties.svgPosition = [left, top]; } this.hideSVG(); @@ -840,38 +841,38 @@ class ShapeHandlesSection extends CanvasSectionObject { onNewDocumentTopLeft(size: number[]): void { if (this.sectionProperties.svgPosition) { - this.sectionProperties.svg.style.left = (this.sectionProperties.svgPosition[0] - (this.documentTopLeft[0] + this.containerObject.getDocumentAnchor()[0]) / app.dpiScale) + 'px'; - this.sectionProperties.svg.style.top = (this.sectionProperties.svgPosition[1] - (this.documentTopLeft[1] + this.containerObject.getDocumentAnchor()[1]) / app.dpiScale) + 'px'; + this.sectionProperties.svg.style.left = (this.sectionProperties.svgPosition[0] - (this.documentTopLeft[0] + this.containerObject!.getDocumentAnchor()[0]!) / app.dpiScale) + 'px'; + this.sectionProperties.svg.style.top = (this.sectionProperties.svgPosition[1] - (this.documentTopLeft[1] + this.containerObject!.getDocumentAnchor()[1]!) / app.dpiScale) + 'px'; } } drawGuides() { - this.context.save(); - this.context.translate(-this.myTopLeft[0], -this.myTopLeft[1]); + this.context!.save(); + this.context!.translate(-this.myTopLeft[0]!, -this.myTopLeft[1]!); - this.context.setLineDash([12, 3, 3]); + this.context!.setLineDash([12, 3, 3]); if (this.sectionProperties.closestX !== null) { - const x = this.containerObject.getDocumentAnchor()[0] + this.sectionProperties.closestX - this.documentTopLeft[0]; - this.context.strokeStyle = 'grey'; - this.context.beginPath(); - this.context.moveTo(x, 0); - this.context.lineTo(x, this.context.canvas.height); - this.context.stroke(); - this.context.closePath(); + const x = this.containerObject!.getDocumentAnchor()[0] + this.sectionProperties.closestX - this.documentTopLeft[0]; + this.context!.strokeStyle = 'grey'; + this.context!.beginPath(); + this.context!.moveTo(x, 0); + this.context!.lineTo(x, this.context!.canvas.height); + this.context!.stroke(); + this.context!.closePath(); } if (this.sectionProperties.closestY !== null) { - const y = this.containerObject.getDocumentAnchor()[1] + this.sectionProperties.closestY - this.documentTopLeft[1]; - this.context.strokeStyle = 'grey'; - this.context.beginPath(); - this.context.moveTo(0, y); - this.context.lineTo(this.context.canvas.width, y); - this.context.stroke(); - this.context.closePath(); + const y = this.containerObject!.getDocumentAnchor()[1] + this.sectionProperties.closestY - this.documentTopLeft[1]; + this.context!.strokeStyle = 'grey'; + this.context!.beginPath(); + this.context!.moveTo(0, y); + this.context!.lineTo(this.context!.canvas.width, y); + this.context!.stroke(); + this.context!.closePath(); } - this.context.restore(); + this.context!.restore(); } public onDraw() { @@ -885,7 +886,7 @@ class ShapeHandlesSection extends CanvasSectionObject { removeSubSections(): void { this.removeSVG(); for (let i = 0; i < this.sectionProperties.subSections.length; i++) { - this.containerObject.removeSection(this.sectionProperties.subSections[i].name); + this.containerObject!.removeSection(this.sectionProperties.subSections[i].name); } } } diff --git a/browser/src/canvas/sections/TextSelectionHandleSection.ts b/browser/src/canvas/sections/TextSelectionHandleSection.ts index 3538c00bb52c6..7bbe25b3c8146 100644 --- a/browser/src/canvas/sections/TextSelectionHandleSection.ts +++ b/browser/src/canvas/sections/TextSelectionHandleSection.ts @@ -10,7 +10,7 @@ */ class TextSelectionHandle extends HTMLObjectSection { - public rectangle: cool.SimpleRectangle = null; // This is the rectangle sent from the core side. + public rectangle: cool.SimpleRectangle | null = null; // This is the rectangle sent from the core side. constructor (sectionName: string, objectWidth: number, objectHeight: number, documentPosition: cool.SimplePoint, extraClass: string = "", showSection: boolean = false) { super(sectionName, objectWidth, objectHeight, documentPosition, extraClass, showSection); @@ -18,8 +18,8 @@ class TextSelectionHandle extends HTMLObjectSection { onDrag(point: number[]) { (window).IgnorePanning = true; - const candidateX = Math.round((this.myTopLeft[0] + point[0]) / app.dpiScale); - const candidateY = Math.round((this.myTopLeft[1] + point[1]) / app.dpiScale); + const candidateX = Math.round((this.myTopLeft[0]! + point[0]) / app.dpiScale); + const candidateY = Math.round((this.myTopLeft[1]! + point[1]) / app.dpiScale); this.sectionProperties.objectDiv.style.left = candidateX + 'px'; this.sectionProperties.objectDiv.style.top = candidateY + 'px'; @@ -55,7 +55,7 @@ class TextSelectionHandle extends HTMLObjectSection { onMouseMove(point: number[], dragDistance: number[], e: MouseEvent): void { e.stopPropagation(); - if (this.containerObject.isDraggingSomething()) { + if (this.containerObject!.isDraggingSomething()) { this.stopPropagating(); this.onDrag(point); } @@ -80,7 +80,7 @@ class TextSelectionHandle extends HTMLObjectSection { onMouseUp(point: number[], e: MouseEvent): void { e.stopPropagation(); - if (this.containerObject.isDraggingSomething()) { + if (this.containerObject!.isDraggingSomething()) { this.stopPropagating(); this.onDragEnd(point); } diff --git a/browser/src/canvas/sections/TilesSection.ts b/browser/src/canvas/sections/TilesSection.ts index 15aa66fd34886..1db15b62c0124 100644 --- a/browser/src/canvas/sections/TilesSection.ts +++ b/browser/src/canvas/sections/TilesSection.ts @@ -57,11 +57,11 @@ export class TilesSection extends app.definitions.canvasSectionObject { for (var y = 0; y < 256; y+=32) { for (var x = 0; x < 256; x+=32) { if (patternOn) - drawctx.fillStyle = 'darkgray'; + drawctx!.fillStyle = 'darkgray'; else - drawctx.fillStyle = 'gray'; + drawctx!.fillStyle = 'gray'; patternOn = !patternOn; - drawctx.fillRect(x, y, 32, 32); + drawctx!.fillRect(x, y, 32, 32); } patternOn = !patternOn; } @@ -111,7 +111,7 @@ export class TilesSection extends app.definitions.canvasSectionObject { } // the bounding box of this set of tiles - public getSubsetBounds(canvasCtx: CanvasRenderingContext2D, tileSubset: Set): cool.Bounds { + public getSubsetBounds(canvasCtx: CanvasRenderingContext2D, tileSubset: Set): cool.Bounds | null { // don't do anything for this atypical varient if (app.file.fileBasedView) @@ -124,14 +124,14 @@ export class TilesSection extends app.definitions.canvasSectionObject { var topLeft = new L.Point(coords.getPos().x, coords.getPos().y); var rightBottom = new L.Point(topLeft.x + ctx.tileSize.x, topLeft.y + ctx.tileSize.y); - if (bounds === undefined) + if (bounds! === undefined) bounds = new cool.Bounds(topLeft, rightBottom); else { bounds.extend(topLeft).extend(rightBottom); } } - return bounds; + return bounds!; } public clipSubsetBounds(canvasCtx: CanvasRenderingContext2D, subsetBounds: cool.Bounds): void { @@ -242,7 +242,7 @@ export class TilesSection extends app.definitions.canvasSectionObject { this.paintSimple(tile, ctx, async, now); } - private forEachTileInView(zoom: number, part: number, mode: number, ctx: any, + private forEachTileInView(zoom: number, part: number | undefined, mode: number | undefined, ctx: any, callback: (tile: any, coords: any) => boolean) { var docLayer = this.sectionProperties.docLayer; var tileRanges = ctx.paneBoundsList.map(docLayer._pxBoundsToTileRange, docLayer); @@ -388,7 +388,7 @@ export class TilesSection extends app.definitions.canvasSectionObject { } } - public onDraw (frameCount: number = null, elapsedTime: number = null, subsetBounds: cool.Bounds = null): void { + public onDraw (frameCount: number | null = null, elapsedTime: number | null = null, subsetBounds: cool.Bounds | null = null): void { if (this.containerObject.isInZoomAnimation()) return; diff --git a/browser/src/canvas/sections/URLPopUpSection.ts b/browser/src/canvas/sections/URLPopUpSection.ts index 92ae40d1f784e..6b63d012601e8 100644 --- a/browser/src/canvas/sections/URLPopUpSection.ts +++ b/browser/src/canvas/sections/URLPopUpSection.ts @@ -14,14 +14,14 @@ class URLPopUpSection extends HTMLObjectSection { const objectDiv = this.getHTMLObject(); objectDiv.remove(); - document.getElementById('document-container').appendChild(objectDiv); + document.getElementById('document-container')!.appendChild(objectDiv); this.sectionProperties.url = url; this.createUIElements(url); this.setUpCallbacks(linkPosition); - document.getElementById('hyperlink-pop-up').title = url; + document.getElementById('hyperlink-pop-up')!.title = url; if (app.map['wopi'].EnableRemoteLinkPicker) app.map.fire('postMessage', { msgId: 'Action_GetLinkPreview', args: { url: url } }); @@ -66,7 +66,7 @@ class URLPopUpSection extends HTMLObjectSection { } setUpCallbacks(linkPosition?: cool.SimplePoint) { - document.getElementById(this.linkId).onclick = () => { + document.getElementById(this.linkId)!.onclick = () => { if (!this.sectionProperties.url.startsWith('#')) app.map.fire('warn', {url: this.sectionProperties.url, map: app.map, cmd: 'openlink'}); else @@ -87,15 +87,15 @@ class URLPopUpSection extends HTMLObjectSection { }; } - document.getElementById(this.copyButtonId).onclick = () => { + document.getElementById(this.copyButtonId)!.onclick = () => { app.map.sendUnoCommand('.uno:CopyHyperlinkLocation', params); }; - document.getElementById(this.editButtonId).onclick = () => { + document.getElementById(this.editButtonId)!.onclick = () => { app.map.sendUnoCommand('.uno:EditHyperlink', params); }; - document.getElementById(this.removeButtonId).onclick = () => { + document.getElementById(this.removeButtonId)!.onclick = () => { app.map.sendUnoCommand('.uno:RemoveHyperlink', params); }; } diff --git a/browser/src/canvas/sections/ValidityInputHelpSection.ts b/browser/src/canvas/sections/ValidityInputHelpSection.ts index 4611dfdf87d8d..238fdab0cfd4c 100644 --- a/browser/src/canvas/sections/ValidityInputHelpSection.ts +++ b/browser/src/canvas/sections/ValidityInputHelpSection.ts @@ -37,7 +37,7 @@ class ValidityInputHelpSection extends HTMLObjectSection { app.sectionContainer.removeSection(ValidityInputHelpSection.sectionName); } - constructor (sectionName: string, objectWidth: number, objectHeight: number, documentPosition: cool.SimplePoint, extraClass: string = "", showSection: boolean = true) { + constructor (sectionName: string, objectWidth: number | null, objectHeight: number | null, documentPosition: cool.SimplePoint, extraClass: string = "", showSection: boolean = true) { super(sectionName, objectWidth, objectHeight, documentPosition, extraClass, showSection); } } diff --git a/browser/src/control/ColorPicker.ts b/browser/src/control/ColorPicker.ts index 6207b690b7c63..3e8ad735fed61 100644 --- a/browser/src/control/ColorPicker.ts +++ b/browser/src/control/ColorPicker.ts @@ -515,7 +515,7 @@ class ColorPicker { ); } - child.style.visibility = 'hidden'; + child.style!.visibility = 'hidden'; } } } @@ -536,7 +536,7 @@ class ColorPicker { ); } - child.style.visibility = 'visible'; + child.style!.visibility = 'visible'; } } } @@ -561,9 +561,9 @@ class ColorPicker { } if (tint === this._selectedColor) { - child.style.visibility = 'visible'; + child.style!.visibility = 'visible'; } else { - child.style.visibility = 'hidden'; + child.style!.visibility = 'hidden'; } } } diff --git a/browser/src/control/Control.AboutDialog.ts b/browser/src/control/Control.AboutDialog.ts index 94b51aa565416..9fdbcbedbda77 100644 --- a/browser/src/control/Control.AboutDialog.ts +++ b/browser/src/control/Control.AboutDialog.ts @@ -46,7 +46,7 @@ class AboutDialog { const aboutDialogId = 'about-dialog'; // Move the div sitting in 'body' as content and make it visible const content: HTMLElement = document - .getElementById(aboutDialogId) + .getElementById(aboutDialogId)! .cloneNode(true) as HTMLElement; content.style.display = 'block'; @@ -136,14 +136,14 @@ class AboutDialog { ); var box = document.getElementById(aboutDialogId + '-box'); var innerDiv = L.DomUtil.create('div', '', null); - box.insertBefore(innerDiv, box.firstChild); + box!.insertBefore(innerDiv, box!.firstChild); innerDiv.appendChild(content); var form = document.getElementById('about-dialog-box'); - form.addEventListener('click', this.aboutDialogClickHandler.bind(this)); - form.addEventListener('keyup', this.aboutDialogKeyHandler.bind(this)); - form.querySelector('#coolwsd-version').querySelector('a').focus(); + form!.addEventListener('click', this.aboutDialogClickHandler.bind(this)); + form!.addEventListener('keyup', this.aboutDialogKeyHandler.bind(this)); + form!.querySelector('#coolwsd-version')!.querySelector('a')!.focus(); // FIXME: Why do we use querySelector twice here? CSS selectors can query multiple levels... var copyversion = L.DomUtil.create( 'button', 'ui-pushbutton jsdialog', @@ -213,9 +213,10 @@ class AboutDialog { '\n'; text += 'LOKit version: ' + this.getVersionInfoFromClass('lokit-version') + '\n'; - text += 'Served by: ' + document.getElementById('os-info').innerText + '\n'; text += - 'Server ID: ' + document.getElementById('coolwsd-id').innerText + '\n'; + 'Served by: ' + document.getElementById('os-info')!.innerText + '\n'; + text += + 'Server ID: ' + document.getElementById('coolwsd-id')!.innerText + '\n'; text = text.replace(/\u00A0/g, ' '); if (navigator.clipboard && window.isSecureContext) { @@ -268,7 +269,7 @@ class AboutDialog { private getVersionInfoFromClass(className: string) { const versionElement = document.getElementById(className); - let versionInfo = versionElement.innerText; + let versionInfo = versionElement!.innerText; const gitHashIndex = versionInfo.indexOf('git hash'); if (gitHashIndex > -1) { diff --git a/browser/src/control/Control.ColumnGroup.ts b/browser/src/control/Control.ColumnGroup.ts index f868092484265..5f0952006cc44 100644 --- a/browser/src/control/Control.ColumnGroup.ts +++ b/browser/src/control/Control.ColumnGroup.ts @@ -57,7 +57,7 @@ export class ColumnGroup extends GroupBase { // This returns the required height for the section. _computeSectionHeight(): number { - return this._levelSpacing + (this._groupHeadSize + this._levelSpacing) * (this._groups.length + 1); + return this._levelSpacing + (this._groupHeadSize + this._levelSpacing) * (this._groups!.length + 1); } isGroupHeaderVisible (startX: number, startPos: number): boolean { @@ -170,20 +170,20 @@ export class ColumnGroup extends GroupBase { if ((!mirrorX && point[0] < this._cornerHeaderWidth) || (mirrorX && point[0] > this.size[0] - this._cornerHeaderWidth)) { let index = (point[1] / this.size[1]) * 100; // Percentage. - const levelPercentage = (1 / (this._groups.length + 1)) * 100; // There is one more button than the number of levels. + const levelPercentage = (1 / (this._groups!.length + 1)) * 100; // There is one more button than the number of levels. index = Math.floor(index / levelPercentage); return index; } return -1; } - findClickedGroup (point: number[]): GroupEntry { + findClickedGroup (point: number[]): GroupEntry | null { const mirrorX = this.isCalcRTL(); - for (let i = 0; i < this._groups.length; i++) { - if (this._groups[i]) { - for (const group in this._groups[i]) { - if (Object.prototype.hasOwnProperty.call(this._groups[i], group)) { - const group_ = this._groups[i][group]; + for (let i = 0; i < this._groups!.length; i++) { + if (this._groups![i]) { + for (const group in this._groups![i]) { + if (Object.prototype.hasOwnProperty.call(this._groups![i], group)) { + const group_ = this._groups![i][group]; const startX = this.getRelativeX(group_.startPos); const startY = this._levelSpacing + (this._groupHeadSize + this._levelSpacing) * group_.level; const endX = startX + this._groupHeadSize; diff --git a/browser/src/control/Control.ColumnHeader.ts b/browser/src/control/Control.ColumnHeader.ts index e2b3744225ce8..a4bcb29fb1efe 100644 --- a/browser/src/control/Control.ColumnHeader.ts +++ b/browser/src/control/Control.ColumnHeader.ts @@ -160,7 +160,7 @@ export class ColumnHeader extends Header { this.context.strokeRect(startX - offset, offset, entry.size, this.size[1]); } - getHeaderEntryBoundingClientRect (index: number): Partial { + getHeaderEntryBoundingClientRect (index: number): Partial | undefined { let entry = this._mouseOverEntry; if (index) { entry = this._headerInfo.getColData(index); @@ -216,14 +216,14 @@ export class ColumnHeader extends Header { } } - onDragEnd (dragDistance: number[]): number { + onDragEnd (dragDistance: number[]): number | undefined { if (dragDistance[0] === 0) return; - let width = this._dragEntry.size; - let column = this._dragEntry.index; + let width = this._dragEntry!.size; + let column = this._dragEntry!.index; - const nextCol = this._headerInfo.getNextIndex(this._dragEntry.index); + const nextCol = this._headerInfo.getNextIndex(this._dragEntry!.index); if (this._headerInfo.isZeroSize(nextCol)) { column = nextCol; width = 0; diff --git a/browser/src/control/Control.FormulaAutoCompletePopup.ts b/browser/src/control/Control.FormulaAutoCompletePopup.ts index ce3844ac28e15..b934a3978b16d 100644 --- a/browser/src/control/Control.FormulaAutoCompletePopup.ts +++ b/browser/src/control/Control.FormulaAutoCompletePopup.ts @@ -15,7 +15,7 @@ /* global app */ class FormulaAutoCompletePopup extends L.Control.AutoCompletePopup { - functionList: Array; + functionList: Array | null; constructor(map: ReturnType) { super('formulaautocompletePopup', map); @@ -44,13 +44,16 @@ class FormulaAutoCompletePopup extends L.Control.AutoCompletePopup { getPopupEntries(ev: FireEvent): any[] { const entries: any[] = []; this.functionList = ev.data.data; - if (this.functionList.length !== 0) { + if (this.functionList!.length !== 0) { for (var i in this.functionList) { var entry = { - text: this.functionList[i].name, + text: this.functionList[i as unknown as number].name, columns: [ - { text: this.functionList[i].name }, - { text: '\n' + this.functionList[i].description }, + { text: this.functionList[i as unknown as number].name }, + { + text: + '\n' + this.functionList[i as unknown as number].description, + }, ], row: i.toString(), }; @@ -107,7 +110,7 @@ class FormulaAutoCompletePopup extends L.Control.AutoCompletePopup { // Step-3: extract the text we want to complete using startIndex and endIndex const partialText: string = currentCellFormula - .substring(startIndex, endIndex + 1) + .substring(startIndex!, endIndex + 1) .trim(); // Step-4: compare partialText and functionName to find remaining text need to autocomplete @@ -133,14 +136,14 @@ class FormulaAutoCompletePopup extends L.Control.AutoCompletePopup { if (eventType === 'close') { this.closePopup(); } else if (eventType === 'select' || eventType === 'activate') { - const namedRange: string = this.functionList[index].namedRange; + const namedRange: string = this.functionList![index].namedRange; const currentText: string = this.map._docLayer._lastFormula; const addedCharacterIndex: number = this.map._docLayer._newFormulaDiffIndex; const functionName: string = this.getAutocompleteText( currentText, - this.functionList[index].name, + this.functionList![index].name, addedCharacterIndex, ); diff --git a/browser/src/control/Control.GroupBase.ts b/browser/src/control/Control.GroupBase.ts index 2c6b5179fa678..e74aa5e656a19 100644 --- a/browser/src/control/Control.GroupBase.ts +++ b/browser/src/control/Control.GroupBase.ts @@ -42,7 +42,7 @@ export abstract class GroupBase extends app.definitions.canvasSectionObject { _getFont: () => string; _levelSpacing: number; _groupHeadSize: number; - _groups: Array>; + _groups: Array> | null; isRemoved: boolean = false; constructor () { super(); } @@ -84,7 +84,7 @@ export abstract class GroupBase extends app.definitions.canvasSectionObject { // This returns the required width for the section. _computeSectionWidth(): number { - return this._levelSpacing + (this._groupHeadSize + this._levelSpacing) * (this._groups.length + 1); + return this._levelSpacing + (this._groupHeadSize + this._levelSpacing) * (this._groups!.length + 1); } // This function puts data into a good shape for use of this class. @@ -98,8 +98,8 @@ export abstract class GroupBase extends app.definitions.canvasSectionObject { // a new group start const groupData = groups[i]; level = parseInt(groupData.level) - 1; - if (!this._groups[level]) { - this._groups[level] = []; + if (!this._groups![level]) { + this._groups![level] = []; } let startPos = parseInt(groupData.startPos); const endPos = parseInt(groupData.endPos); @@ -108,7 +108,7 @@ export abstract class GroupBase extends app.definitions.canvasSectionObject { let moved = false; // if the first child is collapsed the parent head has to be top-aligned with the child if (level < lastLevel && firstChildGroupIndex[lastLevel] !== undefined) { - const childGroupEntry = this._groups[lastLevel][firstChildGroupIndex[lastLevel]]; + const childGroupEntry = this._groups![lastLevel][firstChildGroupIndex[lastLevel]]; if (childGroupEntry.hidden) { if (startPos > childGroupEntry.startPos && startPos < childGroupEntry.endPos) { startPos = childGroupEntry.startPos; @@ -119,7 +119,7 @@ export abstract class GroupBase extends app.definitions.canvasSectionObject { // if 2 groups belonging to the same level are contiguous and the first group is collapsed, // the second one has to be shifted as much as possible in order to avoid overlapping. if (!moved && lastGroupIndex[level] !== undefined) { - const prevGroupEntry = this._groups[level][lastGroupIndex[level]]; + const prevGroupEntry = this._groups![level][lastGroupIndex[level]]; if (prevGroupEntry.hidden) { if (startPos <= prevGroupEntry.endPos) { startPos = prevGroupEntry.endPos + this._groupHeadSize; @@ -134,7 +134,7 @@ export abstract class GroupBase extends app.definitions.canvasSectionObject { endPos: endPos, hidden: isHidden }; - this._groups[level][parseInt(groupData.index)] = groupEntry; + this._groups![level][parseInt(groupData.index)] = groupEntry; lastGroupIndex[level] = groupData.index; if (level > lastLevel) { firstChildGroupIndex[level] = groupData.index; @@ -169,15 +169,15 @@ export abstract class GroupBase extends app.definitions.canvasSectionObject { } // If previous group is visible (expanded), current group's plus sign etc. will be drawn. If previous group is not expanded, current group's plus sign etc. won't be drawn. - _isPreviousGroupVisible(level: number, startPos: number, endPos: number, hidden: boolean): boolean { - for (let i = 0; i < this._groups.length; i++) { + _isPreviousGroupVisible(level: number, startPos: number, endPos: number, hidden: boolean): boolean | undefined { + for (let i = 0; i < this._groups!.length; i++) { var parentGroup; // find the correct parent group level if (i == level - 1) { - for (const group in this._groups[i]) { - if (Object.prototype.hasOwnProperty.call(this._groups[i], group)) { - const group_ = this._groups[i][group]; + for (const group in this._groups![i]) { + if (Object.prototype.hasOwnProperty.call(this._groups![i], group)) { + const group_ = this._groups![i][group]; // parent group is expanded if ((startPos != endPos) && (startPos >= group_.startPos && endPos <= group_.endPos)) { @@ -255,7 +255,7 @@ export abstract class GroupBase extends app.definitions.canvasSectionObject { // This function calls drawing function for related to headers of groups. Headers are drawn on the left of corner header. drawLevelHeaders(): void { - for (let i = 0; i < this._groups.length + 1; ++i) { + for (let i = 0; i < this._groups!.length + 1; ++i) { this.drawLevelHeader(i); } } @@ -287,7 +287,7 @@ export abstract class GroupBase extends app.definitions.canvasSectionObject { this.drawLevelHeaders(); } - findClickedGroup (point: number[]): GroupEntry { + findClickedGroup (point: number[]): GroupEntry | null { return null; } @@ -332,13 +332,13 @@ export abstract class GroupBase extends app.definitions.canvasSectionObject { return [0, 0, 0, 0]; } - findTailsGroup (point: number[]): GroupEntry { + findTailsGroup (point: number[]): GroupEntry | undefined { const mirrorX = this.isCalcRTL(); - for (let i = 0; i < this._groups.length; i++) { - if (this._groups[i]) { - for (const group in this._groups[i]) { - if (Object.prototype.hasOwnProperty.call(this._groups[i], group)) { - const group_ = this._groups[i][group]; + for (let i = 0; i < this._groups!.length; i++) { + if (this._groups![i]) { + for (const group in this._groups![i]) { + if (Object.prototype.hasOwnProperty.call(this._groups![i], group)) { + const group_ = this._groups![i][group]; const rect = this.getTailsGroupRect(group_); const startX = rect[0]; const startY = rect[2]; diff --git a/browser/src/control/Control.Header.ts b/browser/src/control/Control.Header.ts index 3704a8847104b..43e461f4eabb1 100644 --- a/browser/src/control/Control.Header.ts +++ b/browser/src/control/Control.Header.ts @@ -34,17 +34,17 @@ export class Header extends app.definitions.canvasSectionObject { _selectionTextColor: string; _selectionBackgroundGradient: string[]; _resizeCursor: string; - _lastMouseOverIndex: number; + _lastMouseOverIndex: number | undefined; _menuData: any; _headerInfo: HeaderInfo; - _dragEntry: HeaderEntryData; - _mouseOverEntry: HeaderEntryData; - _prevMouseOverEntry: HeaderEntryData; - _startSelectionEntry: HeaderEntryData; - _lastSelectedIndex: number; + _dragEntry: HeaderEntryData | null; + _mouseOverEntry: HeaderEntryData | null; + _prevMouseOverEntry: HeaderEntryData | null; + _startSelectionEntry: HeaderEntryData | null; + _lastSelectedIndex: number | null; _hitResizeArea: boolean; _menuItem: any; - _dragDistance: number[]; + _dragDistance: number[] | null | undefined; _isColumn: boolean; cursor: string; @@ -430,16 +430,16 @@ export class Header extends app.definitions.canvasSectionObject { this._map.sendUnoCommand('.uno:FreezePanes'); } - _entryAtPoint(point: number[]): PointEntryQueryResult { + _entryAtPoint(point: number[]): PointEntryQueryResult | undefined | null { if (!this._headerInfo) return undefined; const isColumn = this._headerInfo._isColumn; const position = isColumn ? point[0]: point[1]; - let result:PointEntryQueryResult = null; + let result: PointEntryQueryResult | null = null; const isRTL = isColumn && this.isCalcRTL(); - this._headerInfo.forEachElement(function(entry: HeaderEntryData): boolean { + this._headerInfo.forEachElement(function(entry: HeaderEntryData): boolean | undefined { const end = isRTL ? this.size[0] - entry.pos + entry.size : entry.pos; const start = end - entry.size; if (position >= start && position < end) { @@ -527,8 +527,8 @@ export class Header extends app.definitions.canvasSectionObject { this.containerObject.setPenPosition(this); const isRTL = this.isCalcRTL(); - const x = this._isColumn ? ((isRTL ? this.size[0] - this._dragEntry.pos: this._dragEntry.pos) + this._dragDistance[0]): (isRTL ? 0 : this.size[0]); - const y = this._isColumn ? this.size[1]: (this._dragEntry.pos + this._dragDistance[1]); + const x = this._isColumn ? ((isRTL ? this.size[0] - this._dragEntry!.pos: this._dragEntry!.pos) + this._dragDistance![0]): (isRTL ? 0 : this.size[0]); + const y = this._isColumn ? this.size[1]: (this._dragEntry!.pos + this._dragDistance![1]); this.context.lineWidth = app.dpiScale; this.context.strokeStyle = 'darkblue'; @@ -557,11 +557,11 @@ export class Header extends app.definitions.canvasSectionObject { let isMouseOverResizeArea = false; - this._mouseOverEntry.isOver = true; - this._lastMouseOverIndex = this._mouseOverEntry.index; // used by context menu + this._mouseOverEntry!.isOver = true; + this._lastMouseOverIndex = this._mouseOverEntry!.index; // used by context menu this.containerObject.setPenPosition(this); - this.drawHeaderEntry(result.entry); - isMouseOverResizeArea = result.hit; + this.drawHeaderEntry(result!.entry); + isMouseOverResizeArea = result!.hit; // cypress mobile emulation sometimes triggers resizing unintentionally. if (L.Browser.cypressTest) @@ -582,8 +582,8 @@ export class Header extends app.definitions.canvasSectionObject { if (this._dragEntry) return; const modifier = typeof this._lastSelectedIndex === 'number' && this._lastSelectedIndex >= 0 ? UNOModifier.SHIFT : 0; - this._lastSelectedIndex = this._mouseOverEntry.index; - this.selectIndex(this._mouseOverEntry.index, modifier); + this._lastSelectedIndex = this._mouseOverEntry!.index; + this.selectIndex(this._mouseOverEntry!.index, modifier); } } @@ -613,10 +613,10 @@ export class Header extends app.definitions.canvasSectionObject { // When code is here, this._mouseOverEntry should never be null. this._dragEntry = { // In case dragging takes place, we will remember this entry. - index: this._mouseOverEntry.index, - origsize: this._mouseOverEntry.origsize, - pos: this._mouseOverEntry.pos, - size: this._mouseOverEntry.size + index: this._mouseOverEntry!.index, + origsize: this._mouseOverEntry!.origsize, + pos: this._mouseOverEntry!.pos, + size: this._mouseOverEntry!.size }; } else { @@ -798,15 +798,15 @@ export class HeaderInfo { // first free index const dataFirstFree = this._dimGeom.getElementData(startIdx); - const firstFreeEnd = dataFirstFree.startpos + dataFirstFree.size - startPx + splitPos; + const firstFreeEnd = dataFirstFree!.startpos + dataFirstFree!.size - startPx + splitPos; const firstFreeStart = splitPos; const firstFreeSize = Math.max(0, firstFreeEnd - firstFreeStart); this._elements[startIdx] = { index: startIdx, pos: firstFreeEnd * scale, // end position on the header canvas size: firstFreeSize * scale, - origsize: dataFirstFree.size, - isHighlighted: this.isHeaderEntryHighLighted(cellSelections, dataFirstFree.startpos + dataFirstFree.size * 0.5), + origsize: dataFirstFree!.size, + isHighlighted: this.isHeaderEntryHighLighted(cellSelections, dataFirstFree!.startpos + dataFirstFree!.size * 0.5), isCurrent: startIdx === currentIndex }; diff --git a/browser/src/control/Control.IdleHandler.ts b/browser/src/control/Control.IdleHandler.ts index 7a8af83665c77..0059e50c7cef2 100644 --- a/browser/src/control/Control.IdleHandler.ts +++ b/browser/src/control/Control.IdleHandler.ts @@ -29,8 +29,8 @@ class IdleHandler { _serverRecycling: boolean = false; _documentIdle: boolean = false; _lastActivity: number = Date.now(); - _inactivityTimer: ReturnType = null; - _outOfFocusTimer: ReturnType = null; + _inactivityTimer: ReturnType | null = null; + _outOfFocusTimer: ReturnType | null = null; _active: boolean = true; map: any; dimId: string = app.idleHandlerId; @@ -118,7 +118,7 @@ class IdleHandler { return; } - clearTimeout(this._inactivityTimer); + clearTimeout(this._inactivityTimer!); this._inactivityTimer = setTimeout(() => { this._dimIfInactive(); @@ -138,7 +138,7 @@ class IdleHandler { } _stopOutOfFocusTimer() { - clearTimeout(this._outOfFocusTimer); + clearTimeout(this._outOfFocusTimer!); } _dimIfInactive() { @@ -177,18 +177,18 @@ class IdleHandler { var uiManager = this.map.uiManager; var dialogId = uiManager.generateModalId(this.dimId); uiManager.showInfoModal(this.dimId); - document.getElementById(this.dimId).textContent = message; + document.getElementById(this.dimId)!.textContent = message; var restartConnection = function() { restartConnectionFn(); }.bind(this); if (message === '') { - document.getElementById(dialogId).style.display = 'none'; + document.getElementById(dialogId)!.style.display = 'none'; L.LOUtil.onRemoveHTMLElement(document.getElementById(this.dimId), restartConnection); } else { var overlayId = dialogId + '-overlay'; var overlay = document.getElementById(overlayId); - overlay.onmouseover = () => { restartConnection(); uiManager.closeModal(dialogId); }; + overlay!.onmouseover = () => { restartConnection(); uiManager.closeModal(dialogId); }; L.LOUtil.onRemoveHTMLElement(overlay, restartConnection); } diff --git a/browser/src/control/Control.Mention.ts b/browser/src/control/Control.Mention.ts index bf031e98625b8..2bc1b53313ea4 100644 --- a/browser/src/control/Control.Mention.ts +++ b/browser/src/control/Control.Mention.ts @@ -17,9 +17,9 @@ class Mention extends L.Control.AutoCompletePopup { map: ReturnType; newPopupData: PopupData; - firstChar: string; + firstChar: string | null; users: any; - itemList: Array; + itemList: Array | null; data: MessageEvent; constructor(map: ReturnType) { @@ -65,13 +65,13 @@ class Mention extends L.Control.AutoCompletePopup { this.itemList = this.users; } - if (this.itemList.length !== 0) { + if (this.itemList!.length !== 0) { for (var i in this.itemList) { var entry = { - text: this.itemList[i].username, + text: this.itemList[i as unknown as number].username, columns: [ { - text: this.itemList[i].username, + text: this.itemList[i as unknown as number].username, }, ], row: i.toString(), @@ -90,11 +90,11 @@ class Mention extends L.Control.AutoCompletePopup { var command = { 'Hyperlink.Text': { type: 'string', - value: '@' + this.itemList[index].username, + value: '@' + this.itemList![index].username, }, 'Hyperlink.URL': { type: 'string', - value: this.itemList[index].profile, + value: this.itemList![index].profile, }, 'Hyperlink.ReplacementText': { type: 'string', @@ -104,7 +104,7 @@ class Mention extends L.Control.AutoCompletePopup { this.map.sendUnoCommand('.uno:SetHyperlink', command, true); this.map.fire('postMessage', { msgId: 'UI_Mention', - args: { type: 'selected', username: this.itemList[index].username }, + args: { type: 'selected', username: this.itemList![index].username }, }); this.closeMentionPopup({ typingMention: false } as CloseMessageEvent); } else if (eventType === 'keydown') { diff --git a/browser/src/control/Control.RowGroup.ts b/browser/src/control/Control.RowGroup.ts index 989d65451b21e..c9853e1227278 100644 --- a/browser/src/control/Control.RowGroup.ts +++ b/browser/src/control/Control.RowGroup.ts @@ -56,7 +56,7 @@ export class RowGroup extends GroupBase { // This returns the required width for the section. _computeSectionWidth(): number { - return this._levelSpacing + (this._groupHeadSize + this._levelSpacing) * (this._groups.length + 1); + return this._levelSpacing + (this._groupHeadSize + this._levelSpacing) * (this._groups!.length + 1); } isGroupHeaderVisible (startY: number, startPos: number): boolean { @@ -169,20 +169,20 @@ export class RowGroup extends GroupBase { findClickedLevel (point: number[]): number { if (point[1] < this._cornerHeaderHeight) { let index = (this.transformX(point[0]) / this.size[0]) * 100; // Percentage. - const levelPercentage = (1 / (this._groups.length + 1)) * 100; // There is one more button than the number of levels. + const levelPercentage = (1 / (this._groups!.length + 1)) * 100; // There is one more button than the number of levels. index = Math.floor(index / levelPercentage); return index; } return -1; } - findClickedGroup (point: number[]): GroupEntry { + findClickedGroup (point: number[]): GroupEntry | null { const mirrorX = this.isCalcRTL(); - for (let i = 0; i < this._groups.length; i++) { - if (this._groups[i]) { - for (const group in this._groups[i]) { - if (Object.prototype.hasOwnProperty.call(this._groups[i], group)) { - const group_ = this._groups[i][group]; + for (let i = 0; i < this._groups!.length; i++) { + if (this._groups![i]) { + for (const group in this._groups![i]) { + if (Object.prototype.hasOwnProperty.call(this._groups![i], group)) { + const group_ = this._groups![i][group]; const startX = this._levelSpacing + (this._groupHeadSize + this._levelSpacing) * group_.level; const startY = this.getRelativeY(group_.startPos); const endX = startX + this._groupHeadSize; diff --git a/browser/src/control/Control.RowHeader.ts b/browser/src/control/Control.RowHeader.ts index c0f59988c43ec..40e735a55b4ad 100644 --- a/browser/src/control/Control.RowHeader.ts +++ b/browser/src/control/Control.RowHeader.ts @@ -156,7 +156,7 @@ export class RowHeader extends cool.Header { this.context.strokeRect(offset, startY - offset, this.size[0], entry.size); } - getHeaderEntryBoundingClientRect (index: number): Partial { + getHeaderEntryBoundingClientRect (index: number): Partial | undefined { let entry = this._mouseOverEntry; if (index) @@ -212,10 +212,10 @@ export class RowHeader extends cool.Header { if (dragDistance[1] === 0) return; - let height = this._dragEntry.size; - let row = this._dragEntry.index; + let height = this._dragEntry!.size; + let row = this._dragEntry!.index; - const nextRow = this._headerInfo.getNextIndex(this._dragEntry.index); + const nextRow = this._headerInfo.getNextIndex(this._dragEntry!.index); if (this._headerInfo.isZeroSize(nextRow)) { row = nextRow; height = 0; diff --git a/browser/src/control/Control.Sidebar.ts b/browser/src/control/Control.Sidebar.ts index 738bfccb4bffa..3fc88547bee92 100644 --- a/browser/src/control/Control.Sidebar.ts +++ b/browser/src/control/Control.Sidebar.ts @@ -23,7 +23,7 @@ class Sidebar { container: HTMLDivElement; builder: any; - targetDeckCommand: string; + targetDeckCommand: string | null; constructor( map: any, @@ -132,8 +132,8 @@ class Sidebar { onResize() { var wrapper = document.getElementById('sidebar-dock-wrapper'); - wrapper.style.maxHeight = - document.getElementById('document-container').getBoundingClientRect() + wrapper!.style.maxHeight = + document.getElementById('document-container')!.getBoundingClientRect() .height + 'px'; } @@ -158,11 +158,11 @@ class Sidebar { return ''; } - setupTargetDeck(unoCommand: string) { + setupTargetDeck(unoCommand: string | null) { this.targetDeckCommand = unoCommand; } - getTargetDeck(): string { + getTargetDeck(): string | null { return this.targetDeckCommand; } diff --git a/browser/src/control/Control.UserList.ts b/browser/src/control/Control.UserList.ts index dfd49d3a4f577..17e750974da29 100644 --- a/browser/src/control/Control.UserList.ts +++ b/browser/src/control/Control.UserList.ts @@ -82,7 +82,7 @@ class UserList extends L.Control { } const userListElement = document.getElementById('userListSummary'); - userListElement.setAttribute('aria-label', _('User List Summary')); + userListElement!.setAttribute('aria-label', _('User List Summary')); this.registerHeaderAvatarEvents(); } @@ -226,7 +226,7 @@ class UserList extends L.Control { } registerHeaderAvatarEvents() { - document.getElementById('userListSummary').addEventListener( + document.getElementById('userListSummary')!.addEventListener( 'click', function (e: MouseEvent) { e.stopPropagation(); @@ -250,10 +250,14 @@ class UserList extends L.Control { ); } - getSortedUsers(): Generator<[number, User], undefined, undefined> { + getSortedUsers(): Generator< + [number, User | undefined], + undefined, + undefined + > { return function* ( this: UserList, - ): Generator<[number, User], undefined, undefined> { + ): Generator<[number, User | undefined], undefined, undefined> { const self = this.users.get(this.map._docLayer._viewId); if (this.users.get(this.map._docLayer._viewId) === undefined) { @@ -301,8 +305,8 @@ class UserList extends L.Control { this.hideUserList() || this.users.size === 1 ) { - userListElement.removeAttribute('accesskey'); - userListElementBackground.style.display = 'none'; + userListElement!.removeAttribute('accesskey'); + userListElementBackground!.style.display = 'none'; return; } @@ -320,19 +324,19 @@ class UserList extends L.Control { ); const followed = this.getFollowedUser(); - userListElement.setAttribute('accesskey', 'UP'); + userListElement!.setAttribute('accesskey', 'UP'); - userListElement.replaceChildren( + userListElement!.replaceChildren( ...avatarUsers.map(([viewId, user], index) => { const img = this.createAvatar( - user.cachedHeaderAvatar, + user!.cachedHeaderAvatar, viewId, - user.username, - user.extraInfo, - user.color, + user!.username, + user!.extraInfo, + user!.color, displayCount - index, ); - user.cachedHeaderAvatar = img; + user!.cachedHeaderAvatar = img; if (followed !== undefined && followed[0] === viewId) { img.classList.add('following'); @@ -344,14 +348,14 @@ class UserList extends L.Control { }), ); - userListElementBackground.style.display = 'block'; + userListElementBackground!.style.display = 'block'; } updateUserListCount() { const count = this.users.size; - let text = ''; + let text: string | undefined = ''; if (count > 1) { - text = this.options.nUsers.replace('%n', count.toString()); + text = this.options.nUsers!.replace('%n', count.toString()); } else if (count === 1) { text = this.options.oneUser; } else { @@ -430,7 +434,7 @@ class UserList extends L.Control { showTooltip(text: string) { const userList = $('#userListHeader'); if (userList) { - userList.get(0).title = text; + userList.get(0)!.title = text; userList.tooltip({ content: text, }); @@ -442,7 +446,7 @@ class UserList extends L.Control { hideTooltip() { const userList = $('#userListHeader'); if (userList) { - userList.get(0).title = undefined; + userList.get(0)!.title = ''; userList.tooltip('option', 'disabled', true); } } @@ -470,7 +474,7 @@ class UserList extends L.Control { this.showTooltip(sanitizer.innerHTML); - clearTimeout(this.options.userPopupTimeout); + clearTimeout(this.options.userPopupTimeout!); this.options.userPopupTimeout = setTimeout(() => { this.hideTooltip(); }, 3000); @@ -484,7 +488,7 @@ class UserList extends L.Control { const userElements = users.map(([viewId, user]) => { const userLabel = L.DomUtil.create('div', 'user-list-item--name'); - userLabel.innerText = user.username; + userLabel.innerText = user!.username; const userFollowingLabel = L.DomUtil.create( 'div', @@ -508,13 +512,13 @@ class UserList extends L.Control { } const avatar = this.createAvatar( - user.cachedUserListAvatar, + user!.cachedUserListAvatar, viewId, - user.username, - user.extraInfo, - user.color, + user!.username, + user!.extraInfo, + user!.color, ); - user.cachedUserListAvatar = avatar; + user!.cachedUserListAvatar = avatar; listItem.appendChild(avatar); listItem.appendChild(userLabelContainer); @@ -561,33 +565,33 @@ class UserList extends L.Control { const following = this.getFollowedUser(); if (following === undefined && !app.isFollowingEditor()) { - followingChipBackground.style.display = 'none'; + followingChipBackground!.style.display = 'none'; return; } const topAvatarZIndex = this.options.userLimitHeaderWhenFollowing; if (app.isFollowingEditor()) { - followingChip.innerText = this.options.followingChipTextEditor; - followingChip.style.borderColor = 'var(--color-main-text)'; + followingChip!.innerText = this.options.followingChipTextEditor; + followingChip!.style.borderColor = 'var(--color-main-text)'; } else { - followingChip.innerText = this.options.followingChipTextUser.replace( + followingChip!.innerText = this.options.followingChipTextUser.replace( '{user}', - following[1].username, + following![1].username, ); - followingChip.style.borderColor = following[1].color; + followingChip!.style.borderColor = following![1].color; } - followingChip.onclick = () => { + followingChip!.onclick = () => { this.unfollowAll(); this.renderAll(); }; - followingChip.title = this.options.followingChipTooltipText; - $(followingChip).tooltip(); + followingChip!.title = this.options.followingChipTooltipText; + $(followingChip!).tooltip(); - followingChipBackground.style.display = 'block'; - followingChipBackground.style.zIndex = topAvatarZIndex.toString(); + followingChipBackground!.style.display = 'block'; + followingChipBackground!.style.zIndex = topAvatarZIndex.toString(); } } diff --git a/browser/src/control/VRuler.ts b/browser/src/control/VRuler.ts index 00d081fda2ad6..e5090179405fd 100644 --- a/browser/src/control/VRuler.ts +++ b/browser/src/control/VRuler.ts @@ -36,7 +36,7 @@ interface Options { tabs: any[]; unit: string | null; DraggableConvertRatio: number | null; - timer: ReturnType; + timer: ReturnType | null; showruler: boolean; position: string; disableMarker: boolean; @@ -116,13 +116,13 @@ class VRuler { } _updatePaintTimer() { - clearTimeout(this.options.timer); + clearTimeout(this.options.timer!); this.options.timer = setTimeout(L.bind(this._updateBreakPoints, this), 300); } _resetTopBottomPageSpacing(e?: any) { - this.options.pageTopMargin = undefined; - this.options.pageBottomMargin = undefined; + this.options.pageTopMargin = null; + this.options.pageBottomMargin = null; if (e) this.options.disableMarker = e.disableMarker; } @@ -266,7 +266,7 @@ class VRuler { _updateParagraphIndentations() { // for horizontal Ruler we need to also consider height of navigation and toolbar-wrraper const documentTop: number = document - .getElementById('document-container') + .getElementById('document-container')! .getBoundingClientRect().top; // rTSContainer is the reference element. const pStartPosition: number = @@ -300,7 +300,7 @@ class VRuler { _updateBreakPoints() { if (this.options.margin1 == null || this.options.margin2 == null) return; - const topMargin: number = this.options.leftOffset; + const topMargin: number | null = this.options.leftOffset; const docLayer = this._map._docLayer; // This is surely bogus. We take pageWidth, which is in mm100, and subtract a value @@ -310,7 +310,8 @@ class VRuler { // this._bMarginDrag.style.width near the end of this function), so presumably it // doesn't matter that much what bottomMargin is. const bottomMargin: number = - this.options.pageWidth - (this.options.leftOffset + this.options.margin2); + this.options.pageWidth! - + (this.options.leftOffset! + this.options.margin2); this.options.pageBottomMargin = bottomMargin; const scale: number = this._map.getZoomScale(this._map.getZoom(), 10); @@ -320,14 +321,14 @@ class VRuler { this._fixOffset(); - this.options.DraggableConvertRatio = wPixel / this.options.pageWidth; + this.options.DraggableConvertRatio = wPixel / this.options.pageWidth!; this._rFace.style.width = wPixel + 'px'; this._rBPContainer.style.marginLeft = - -1 * (this.options.DraggableConvertRatio * (500 - (topMargin % 1000))) + + -1 * (this.options.DraggableConvertRatio * (500 - (topMargin! % 1000))) + 1 + 'px'; - let numCounter: number = -1 * Math.floor(topMargin / 1000); + let numCounter: number = -1 * Math.floor(topMargin! / 1000); L.DomUtil.removeChildNodes(this._rBPContainer); @@ -337,7 +338,11 @@ class VRuler { // FIXME: Surely this should be locale-specific, we would want to use inches at // least in the US. (The ruler unit to use doesn't seem to be stored in the document // at least for .odt?) - for (let num: number = 0; num <= this.options.pageWidth / 1000 + 1; num++) { + for ( + let num: number = 0; + num <= this.options.pageWidth! / 1000 + 1; + num++ + ) { const marker = L.DomUtil.create( 'div', 'cool-ruler-maj', @@ -382,17 +387,17 @@ class VRuler { } this._tMarginMarker.style.width = - this.options.DraggableConvertRatio * topMargin + 'px'; + this.options.DraggableConvertRatio * topMargin! + 'px'; this._bMarginMarker.style.width = this.options.DraggableConvertRatio * bottomMargin + 'px'; this._tMarginDrag.style.width = - this.options.DraggableConvertRatio * topMargin + 'px'; + this.options.DraggableConvertRatio * topMargin! + 'px'; this._bMarginDrag.style.width = this.options.DraggableConvertRatio * bottomMargin + 'px'; // Put the _rTSContainer in the right place this._rTSContainer.style.left = - this.options.DraggableConvertRatio * topMargin + 'px'; + this.options.DraggableConvertRatio * topMargin! + 'px'; this._rTSContainer.style.right = this.options.DraggableConvertRatio * bottomMargin + 'px'; @@ -429,7 +434,7 @@ class VRuler { // so if cursor moves to other page we will see how many pages before current page are there // and then add totalHeight of all those pages to our final calculation of rulerOffset const currentPage: number = Math.floor( - this.options.pageOffset / this.options.pageWidth, + this.options.pageOffset! / this.options.pageWidth!, ); let pageoffset: number = 0; if (this._map._docLayer._docPixelSize) @@ -453,26 +458,26 @@ class VRuler { e.clientX = e.center.x; } - const element: HTMLElement = document.getElementById( + const element: HTMLElement | null = document.getElementById( this._indentationElementId, ); // for horizontal Ruler we need to also consider height of navigation and toolbar-wrraper const documentTop = document - .getElementById('document-container') + .getElementById('document-container')! .getBoundingClientRect().top; // User is moving the cursor / their finger on the screen and we are moving the marker. const newLeft: number = - parseInt(element.style.left.replace('px', '')) + + parseInt(element!.style.left.replace('px', '')) + e.clientY - this._lastposition - documentTop; - element.style.left = String(newLeft) + 'px'; + element!.style.left = String(newLeft) + 'px'; this._lastposition = e.clientY - documentTop; // halfWidth.. const halfWidth: number = - (element.getBoundingClientRect().right - - element.getBoundingClientRect().left) * + (element!.getBoundingClientRect().right - + element!.getBoundingClientRect().left) * 0.5; this._markerHorizontalLine.style.left = String(newLeft + halfWidth) + 'px'; } @@ -489,14 +494,14 @@ class VRuler { // The new coordinate of element subject to indentation is sent as a percentage of the page width.. // We need to calculate the percentage. Left margin (leftOffset) is not being added to the indentation (on the core part).. // We can use TabStopContainer's position as the reference point, as they share the same reference point.. - const element: HTMLElement = document.getElementById( + const element: HTMLElement | null = document.getElementById( this._indentationElementId, ); // The halfWidth of the shape.. const halfWidth: number = - (element.getBoundingClientRect().bottom - - element.getBoundingClientRect().top) * + (element!.getBoundingClientRect().bottom - + element!.getBoundingClientRect().top) * 0.5; const params: Params = {}; @@ -508,24 +513,24 @@ class VRuler { ) { // do not change anything if Start marker goes beyond the end marker in that case we hold the last original postions or marker this._fixOffset(); - } else if (element.id == 'lo-vertical-pstart-marker') { + } else if (element!.id == 'lo-vertical-pstart-marker') { const topMarginPX: number = this._pVerticalStartMarker.getBoundingClientRect().top - this._rTSContainer.getBoundingClientRect().top + halfWidth; const top: number = - topMarginPX / this.options.DraggableConvertRatio + - this.options.pageTopMargin; + topMarginPX / this.options.DraggableConvertRatio! + + this.options.pageTopMargin!; // margin should not go above page top this.options.pageTopMargin = top < 0 ? this.options.pageTopMargin : top; - } else if (element.id == 'lo-vertical-pend-marker') { + } else if (element!.id == 'lo-vertical-pend-marker') { const bottomMarginPX: number = this._rTSContainer.getBoundingClientRect().bottom - this._pVerticalEndMarker.getBoundingClientRect().bottom + halfWidth; const bottom: number = - bottomMarginPX / this.options.DraggableConvertRatio + - this.options.pageBottomMargin; + bottomMarginPX / this.options.DraggableConvertRatio! + + this.options.pageBottomMargin!; // margin should not go below page bottom this.options.pageBottomMargin = bottom < 0 ? this.options.pageBottomMargin : bottom; @@ -564,7 +569,7 @@ class VRuler { } // for horizontal Ruler we need to also consider height of navigation and toolbar-wrraper const documentTop: number = document - .getElementById('document-container') + .getElementById('document-container')! .getBoundingClientRect().top; this._initialposition = this._lastposition = e.clientY - documentTop; diff --git a/browser/src/control/jsdialog/Definitions.Menu.ts b/browser/src/control/jsdialog/Definitions.Menu.ts index 67ce7412a170e..e92b2fa4a0139 100644 --- a/browser/src/control/jsdialog/Definitions.Menu.ts +++ b/browser/src/control/jsdialog/Definitions.Menu.ts @@ -375,7 +375,7 @@ menuDefinitions.set('ConditionalFormatMenu', [ text: _UNO('.uno:ConditionalFormatManagerDialog', 'spreadsheet'), uno: '.uno:ConditionalFormatManagerDialog', }, -] as Array); +] as unknown as Array); menuDefinitions.set('BorderStyleMenu', [ { type: 'html', htmlId: 'borderstylepopup' }, @@ -405,7 +405,7 @@ menuDefinitions.set('UsersListMenu', [ menuDefinitions.set('ColorPickerMenu', [ { id: 'colorpickerwidget', type: 'colorpicker' }, { type: 'separator' }, // required to show dropdown arrow -] as Array); +] as unknown as Array); // TODO: should menuDefinitions accept Partial? menuDefinitions.set('LanguageStatusMenu', [ { type: 'separator' }, diff --git a/browser/src/control/jsdialog/Util.KeyboardGridNavigation.ts b/browser/src/control/jsdialog/Util.KeyboardGridNavigation.ts index 3861f20e1f203..16a4533884577 100644 --- a/browser/src/control/jsdialog/Util.KeyboardGridNavigation.ts +++ b/browser/src/control/jsdialog/Util.KeyboardGridNavigation.ts @@ -18,7 +18,7 @@ declare var JSDialog: any; function handleKeyboardNavigation( event: KeyboardEvent, currentElement: HTMLElement, - parentContainer: HTMLElement, + parentContainer: HTMLElement | null, handleSelection?: any, builder?: any, widgetData?: any, @@ -53,7 +53,7 @@ function handleKeyboardNavigation( } function moveFocus( - parentContainer: HTMLElement, + parentContainer: HTMLElement | null, currentElement: HTMLElement, direction: 'next' | 'previous', axis: 'horizontal' | 'vertical', @@ -110,11 +110,11 @@ function moveFocus( const nextElement = direction === 'next' ? JSDialog.FindFocusableElement( - potentialCurrentElement.nextElementSibling, + potentialCurrentElement!.nextElementSibling, 'next', ) : JSDialog.FindFocusableElement( - potentialCurrentElement.previousElementSibling, + potentialCurrentElement!.previousElementSibling, 'previous', ); if (nextElement) { diff --git a/browser/src/control/jsdialog/Util.OnDemandRenderer.ts b/browser/src/control/jsdialog/Util.OnDemandRenderer.ts index 6d338c9bcb28a..4c15ef2e6c424 100644 --- a/browser/src/control/jsdialog/Util.OnDemandRenderer.ts +++ b/browser/src/control/jsdialog/Util.OnDemandRenderer.ts @@ -32,8 +32,8 @@ function onDemandRenderer( placeholder = L.DomUtil.create('img', '', parentContainer); const placeholderImg = placeholder as HTMLImageElement; placeholderImg.src = cachedComboboxEntries.images[entryId]; - placeholderImg.alt = entryText; - placeholderImg.title = entryText; + placeholderImg.alt = entryText!; + placeholderImg.title = entryText!; requestRender = !cachedComboboxEntries.persistent; } diff --git a/browser/src/control/jsdialog/Util.ScrollableBar.ts b/browser/src/control/jsdialog/Util.ScrollableBar.ts index 21e5280a4bedf..0ec35a8f53dce 100644 --- a/browser/src/control/jsdialog/Util.ScrollableBar.ts +++ b/browser/src/control/jsdialog/Util.ScrollableBar.ts @@ -24,7 +24,7 @@ function createScrollButtons(parent: Element, scrollable: Element) { const right = L.DomUtil.create('div', 'ui-scroll-right', parent); JSDialog.AddOnClick(left, () => { - const scroll = $(scrollable).scrollLeft() - 300; + const scroll = $(scrollable).scrollLeft()! - 300; $(scrollable).animate({ scrollLeft: scroll }, 300); setTimeout(function () { JSDialog.RefreshScrollables(); @@ -32,7 +32,7 @@ function createScrollButtons(parent: Element, scrollable: Element) { }); JSDialog.AddOnClick(right, () => { - const scroll = $(scrollable).scrollLeft() + 300; + const scroll = $(scrollable).scrollLeft()! + 300; $(scrollable).animate({ scrollLeft: scroll }, 300); setTimeout(function () { JSDialog.RefreshScrollables(); diff --git a/browser/src/control/jsdialog/Util.SnackbarController.ts b/browser/src/control/jsdialog/Util.SnackbarController.ts index 70ae2a9d176df..72306d93fd0c5 100644 --- a/browser/src/control/jsdialog/Util.SnackbarController.ts +++ b/browser/src/control/jsdialog/Util.SnackbarController.ts @@ -19,7 +19,7 @@ type SnackbarData = { label: string; action: string | undefined; callback: () => void | undefined; - timeout: number; + timeout: number | undefined; hasProgress: boolean | undefined; withDismiss: boolean | undefined; }; @@ -82,7 +82,7 @@ class SnackbarController { this.showingSnackbar = true; } - private showSnackbarImpl(snackbarData: SnackbarData) { + private showSnackbarImpl(snackbarData: SnackbarData | undefined) { var buttonId = 'button'; var labelId = 'label'; @@ -90,42 +90,42 @@ class SnackbarController { id: 'snackbar', jsontype: 'dialog', type: 'snackbar', - timeout: this.extractTimeout(snackbarData), - init_focus_id: snackbarData.action ? buttonId : undefined, + timeout: this.extractTimeout(snackbarData!), + init_focus_id: snackbarData!.action ? buttonId : undefined, children: [ { - id: snackbarData.hasProgress + id: snackbarData!.hasProgress ? 'snackbar-container-progress' : 'snackbar-container', type: 'container', children: [ - snackbarData.action + snackbarData!.action ? { id: labelId, type: 'fixedtext', - text: snackbarData.label, + text: snackbarData!.label, labelFor: buttonId, } : { id: 'label-no-action', type: 'fixedtext', - text: snackbarData.label, + text: snackbarData!.label, }, - snackbarData.withDismiss + snackbarData!.withDismiss ? { id: 'snackbar-dismiss-button', type: 'pushbutton', text: _('Dismiss'), } : {}, - snackbarData.hasProgress + snackbarData!.hasProgress ? { id: 'progress', type: 'progressbar', value: 0, maxValue: 100 } : {}, - snackbarData.action + snackbarData!.action ? { id: buttonId, type: 'pushbutton', - text: snackbarData.action, + text: snackbarData!.action, labelledBy: labelId, } : {}, @@ -158,8 +158,8 @@ class SnackbarController { objectType === 'pushbutton' && eventType === 'click' ) { - if (typeof snackbarData.callback === 'function') - snackbarData.callback(); + if (typeof snackbarData!.callback === 'function') + snackbarData!.callback(); this.closeSnackbar(); } else if ( diff --git a/browser/src/control/jsdialog/Widget.ColorPicker.ts b/browser/src/control/jsdialog/Widget.ColorPicker.ts index befcd391af13d..13d396a2d5ee0 100644 --- a/browser/src/control/jsdialog/Widget.ColorPicker.ts +++ b/browser/src/control/jsdialog/Widget.ColorPicker.ts @@ -150,9 +150,9 @@ function handleColorSelection( } // Update the recent colors list const recentRow = palette[palette.length - 1]; - if (recentRow.indexOf(colorCode) !== -1) - recentRow.splice(recentRow.indexOf(colorCode), 1); - recentRow.unshift(colorCode); + if (recentRow.indexOf(colorCode!) !== -1) + recentRow.splice(recentRow.indexOf(colorCode!), 1); + recentRow.unshift(colorCode!); window.prefs.set('recentColor', JSON.stringify(recentRow)); } diff --git a/browser/src/control/jsdialog/Widget.Containers.ts b/browser/src/control/jsdialog/Widget.Containers.ts index 7f01cda0920c2..2bb1a57255ddd 100644 --- a/browser/src/control/jsdialog/Widget.Containers.ts +++ b/browser/src/control/jsdialog/Widget.Containers.ts @@ -19,11 +19,11 @@ function _getGridChild( children: Array, row: number, col: number, -): WidgetJSON { +): WidgetJSON | null { for (var index in children) { if ( - parseInt(children[index].top) == row && - parseInt(children[index].left) == col + parseInt(children[index].top!) == row && + parseInt(children[index].left!) == col ) return children[index]; } @@ -78,7 +78,7 @@ JSDialog.grid = function ( const isMergedCell = prevChild && prevChild.width && - parseInt(prevChild.left) + parseInt(prevChild.width) > col; + parseInt(prevChild.left!) + parseInt(prevChild.width) > col; if (child) { if (!child.id || child.id === '') diff --git a/browser/src/control/jsdialog/Widget.HTMLContent.ts b/browser/src/control/jsdialog/Widget.HTMLContent.ts index 195cd4f813e85..cf63651956783 100644 --- a/browser/src/control/jsdialog/Widget.HTMLContent.ts +++ b/browser/src/control/jsdialog/Widget.HTMLContent.ts @@ -34,8 +34,8 @@ function sanitizeString(text: string): string { } function getPermissionModeElements( - isReadOnlyMode: boolean, - canUserWrite: boolean, + isReadOnlyMode: boolean | undefined, + canUserWrite: boolean | undefined, ) { const permissionModeDiv = document.createElement('div'); permissionModeDiv.className = 'jsdialog ui-badge'; @@ -56,17 +56,21 @@ function getPermissionModeElements( return permissionModeDiv; } -function getStatusbarItemElements(id: string, title: string, text: string) { +function getStatusbarItemElements( + id: string, + title: string, + text: string | undefined, +) { const div = document.createElement('div'); div.id = id; div.className = 'jsdialog ui-badge'; div.title = title; - div.textContent = text; + div.textContent = text!; return div; } -function getPageNumberElements(text: string) { +function getPageNumberElements(text: string | undefined) { return getStatusbarItemElements( 'StatePageNumber', _('Number of Pages'), @@ -74,19 +78,19 @@ function getPageNumberElements(text: string) { ); } -function getWordCountElements(text: string) { +function getWordCountElements(text: string | undefined) { return getStatusbarItemElements('StateWordCount', _('Word Counter'), text); } -function getStatusDocPosElements(text: string) { +function getStatusDocPosElements(text: string | undefined) { return getStatusbarItemElements('StatusDocPos', _('Number of Sheets'), text); } -function getInsertModeElements(text: string) { +function getInsertModeElements(text: string | undefined) { return getStatusbarItemElements('InsertMode', _('Entering text mode'), text); } -function getSelectionModeElements(text: string) { +function getSelectionModeElements(text: string | undefined) { return getStatusbarItemElements( 'StatusSelectionMode', _('Selection Mode'), @@ -94,7 +98,7 @@ function getSelectionModeElements(text: string) { ); } -function getRowColSelCountElements(text: string) { +function getRowColSelCountElements(text: string | undefined) { return getStatusbarItemElements( 'RowColSelCount', _('Selected range of cells'), @@ -102,7 +106,7 @@ function getRowColSelCountElements(text: string) { ); } -function getStateTableCellElements(text: string) { +function getStateTableCellElements(text: string | undefined) { return getStatusbarItemElements( 'StateTableCell', _('Choice of functions'), @@ -110,11 +114,11 @@ function getStateTableCellElements(text: string) { ); } -function getSlideStatusElements(text: string) { +function getSlideStatusElements(text: string | undefined) { return getStatusbarItemElements('SlideStatus', _('Number of Slides'), text); } -function getPageStatusElements(text: string) { +function getPageStatusElements(text: string | undefined) { return getStatusbarItemElements('PageStatus', _('Number of Pages'), text); } diff --git a/browser/src/core/geometry.ts b/browser/src/core/geometry.ts index 072b96121b042..35e8825d64a1c 100644 --- a/browser/src/core/geometry.ts +++ b/browser/src/core/geometry.ts @@ -70,13 +70,13 @@ export class SimplePoint { // twips. public get x(): number { return this._x; } - public set x(x: number) { this._x = Math.round(x); } + public set x(x: number | undefined) { this._x = Math.round(x!); } public get y(): number { return this._y; } - public set y(y: number) { this._y = Math.round(y); } + public set y(y: number | undefined) { this._y = Math.round(y!); } public equals(point: Array): boolean { return this._x === Math.round(point[0]) && this._y === Math.round(point[1]); } - public toArray(): number[] { return [this._x, this._y]; } + public toArray(): (number | undefined)[] { return [this._x, this._y]; } public distanceTo(point: number[]): number { return Math.sqrt(Math.pow(this._x - point[0], 2) + Math.pow(this._y - point[1], 2)); } // Core / canvas pixel. diff --git a/browser/src/docdispatcher.ts b/browser/src/docdispatcher.ts index 809a88229d5cd..349c688d71306 100644 --- a/browser/src/docdispatcher.ts +++ b/browser/src/docdispatcher.ts @@ -152,7 +152,7 @@ class Dispatcher { } } } - if (!elementToFocus) + if (!elementToFocus!) elementToFocus = document.getElementById( 'Home-tab-label', ) as HTMLButtonElement; @@ -356,7 +356,7 @@ class Dispatcher { app.map.sendUnoCommand('.uno:ToggleRelative'); }; this.actionsMap['focusonaddressinput'] = function () { - document.getElementById('addressInput-input').focus(); + document.getElementById('addressInput-input')!.focus(); }; // sheets toolbar @@ -371,12 +371,12 @@ class Dispatcher { this.actionsMap['nextrecord'] = function () { // TODO: We should get visible tab's width instead of 60px $('#spreadsheet-tab-scroll').scrollLeft( - $('#spreadsheet-tab-scroll').scrollLeft() + 60, + $('#spreadsheet-tab-scroll').scrollLeft()! + 60, ); }; this.actionsMap['prevrecord'] = function () { $('#spreadsheet-tab-scroll').scrollLeft( - $('#spreadsheet-tab-scroll').scrollLeft() - 30, + $('#spreadsheet-tab-scroll').scrollLeft()! - 30, ); }; this.actionsMap['lastrecord'] = function () { diff --git a/browser/src/geometry/Bounds.ts b/browser/src/geometry/Bounds.ts index 52c3fc65f5327..fc05a9c5829a5 100644 --- a/browser/src/geometry/Bounds.ts +++ b/browser/src/geometry/Bounds.ts @@ -18,7 +18,7 @@ export class Bounds { public min: Point; public max: Point; - constructor(a: PointConvertable[] | PointConvertable, b?: PointConvertable) { + constructor(a: PointConvertable[] | PointConvertable | undefined, b?: PointConvertable) { if (!a) return; @@ -29,7 +29,7 @@ export class Bounds { } } - public static parse(rectString: string): Bounds { + public static parse(rectString: string): Bounds | undefined { if (typeof rectString !== 'string') { console.error('invalid input type, expected string'); @@ -49,7 +49,7 @@ export class Bounds { return new Bounds(refPoint1, refPoint2); } - public static parseArray(rectListString: string): Bounds[] { + public static parseArray(rectListString: string): Bounds[] | undefined { if (typeof rectListString !== 'string') { console.error('invalid input type, expected string'); @@ -136,11 +136,11 @@ export class Bounds { bounds = Bounds.toBounds(obj); } - if (bounds) { + if (bounds!) { min = bounds.min; max = bounds.max; } else { - min = max = point; + min = max = point!; } return (min.x >= this.min.x) && @@ -209,7 +209,7 @@ export class Bounds { return Math.max(this.min.y, Math.min(this.max.y, y)); } - public clamp(obj: Point | Bounds): Point | Bounds { + public clamp(obj: Point | Bounds): Point | Bounds | undefined { if (obj instanceof L.Point) { return PointConstruct( this.clampX((obj as Point).x), diff --git a/browser/src/geometry/Point.ts b/browser/src/geometry/Point.ts index 4f6a1f974f2e4..e6237821af136 100644 --- a/browser/src/geometry/Point.ts +++ b/browser/src/geometry/Point.ts @@ -17,12 +17,12 @@ export class Point { public x: number; public y: number; - constructor(x: number, y: number, round: boolean = false) { + constructor(x: number, y: number | undefined, round: boolean = false) { this.x = (round ? Math.round(x) : x); - this.y = (round ? Math.round(y) : y); + this.y = (round ? Math.round(y!) : y!); } - public static parse(pointString: string): Point { // (string) -> Point + public static parse(pointString: string): Point | undefined { // (string) -> Point if (typeof pointString !== 'string') { console.error('invalid point string'); return undefined; @@ -43,7 +43,7 @@ export class Point { /// non-destructive, returns a new point public add(point: Point): Point { - return this.clone()._add(Point.toPoint(point)); + return this.clone()._add(Point.toPoint(point)!); } // destructive, used directly for performance in situations where it's safe to modify existing point @@ -54,7 +54,7 @@ export class Point { } public subtract(point: Point): Point { - return this.clone()._subtract(Point.toPoint(point)); + return this.clone()._subtract(Point.toPoint(point)!); } public _subtract(point: Point): Point { @@ -114,7 +114,7 @@ export class Point { } public distanceTo(point: Point): number { - point = Point.toPoint(point); + point = Point.toPoint(point)!; var x = point.x - this.x; var y = point.y - this.y; @@ -123,7 +123,7 @@ export class Point { } public equals(point: Point): boolean { - point = Point.toPoint(point); + point = Point.toPoint(point)!; // Proper ieee 754 equality comparison. return Math.abs(point.x - this.x) < Number.EPSILON && @@ -131,7 +131,7 @@ export class Point { } public contains(point: Point): boolean { - point = Point.toPoint(point); + point = Point.toPoint(point)!; return Math.abs(point.x) <= Math.abs(this.x) && Math.abs(point.y) <= Math.abs(this.y); @@ -167,7 +167,7 @@ export class Point { Point.formatNum(this.y) + ')'; } - public static toPoint(x: PointConvertable | number, y?: number, round?: boolean): Point { + public static toPoint(x: PointConvertable | number, y?: number, round?: boolean): Point | undefined { if (x instanceof Point) { return x; } diff --git a/browser/src/layer/tile/SheetGeometry.ts b/browser/src/layer/tile/SheetGeometry.ts index 940f22b8fd90a..2f332ab0c2f72 100644 --- a/browser/src/layer/tile/SheetGeometry.ts +++ b/browser/src/layer/tile/SheetGeometry.ts @@ -37,7 +37,7 @@ export interface DimensionStartEndPos { export interface IndexAndSpan { index: number; - span: SpanData; + span: SpanData | undefined; } export interface SheetGeometryCoreData { @@ -188,7 +188,7 @@ export class SheetGeometry { // rowIndex should be zero based. // 'startpos' (start position of the row in core pixels), 'size' (row size in core pixels). // Note: All these fields are computed by assuming zero sizes for hidden/filtered rows. - public getRowData(rowIndex: number): DimensionPosSize { + public getRowData(rowIndex: number): DimensionPosSize | undefined { return this._rows.getElementData(rowIndex); } @@ -304,8 +304,8 @@ export class SheetGeometry { var horizPosSize = this._columns.getElementData(columnIndex, zoomScale); var vertPosSize = this._rows.getElementData(rowIndex, zoomScale); - var topLeft = new L.Point(horizPosSize.startpos, vertPosSize.startpos); - var size = new L.Point(horizPosSize.size, vertPosSize.size); + var topLeft = new L.Point(horizPosSize!.startpos, vertPosSize!.startpos); + var size = new L.Point(horizPosSize!.size, vertPosSize!.size); return new L.Bounds(topLeft, topLeft.add(size)); } @@ -397,7 +397,7 @@ export class SheetGeometry { return true; } - private static getDimensionDataField(dimData: SheetDimensionCoreData, fieldName: string): string { + private static getDimensionDataField(dimData: SheetDimensionCoreData, fieldName: string): string | undefined { switch (fieldName) { case 'sizes': return dimData.sizes; @@ -427,7 +427,7 @@ export class SheetDimension { private _hidden: BoolSpanList; private _filtered: BoolSpanList; private _outlines: DimensionOutlines; - private _visibleSizes: SpanList; + private _visibleSizes: SpanList | undefined; private _maxIndex: number; private _tileSizeTwips: number; @@ -525,7 +525,7 @@ export class SheetDimension { var posCorePx = 0; // position in core pixels. var posPrintTwips = 0; - this._visibleSizes.addCustomDataForEachSpan(function ( + this._visibleSizes!.addCustomDataForEachSpan(function ( index: number, size: number, /* size in twips of one element in the span */ spanLength: number /* #elements in the span */) { @@ -549,11 +549,11 @@ export class SheetDimension { } // returns the element pos/size in core pixels by default. - public getElementData(index: number, zoomScale?: number): DimensionPosSize { + public getElementData(index: number, zoomScale?: number): DimensionPosSize | undefined { if (zoomScale !== undefined) { var startpos = 0; var size = 0; - this._visibleSizes.forEachSpanInRange(0, index, function (spanData) { + this._visibleSizes!.forEachSpanInRange(0, index, function (spanData) { var count = spanData.end - spanData.start + 1; var sizeOneCorePx = Math.floor(spanData.size * zoomScale / 15.0); if (index > spanData.end) { @@ -572,7 +572,7 @@ export class SheetDimension { }; } - var span = this._visibleSizes.getSpanDataByIndex(index); + var span = this._visibleSizes!.getSpanDataByIndex(index); if (span === undefined) { return undefined; } @@ -580,8 +580,8 @@ export class SheetDimension { return this._getElementDataFromSpanByIndex(index, span); } - public getElementDataAny(index: number, unitName: GeometryUnit): DimensionPosSize { - var span = this._visibleSizes.getSpanDataByIndex(index); + public getElementDataAny(index: number, unitName: GeometryUnit): DimensionPosSize | undefined { + var span = this._visibleSizes!.getSpanDataByIndex(index); if (span === undefined) { return undefined; } @@ -590,12 +590,12 @@ export class SheetDimension { } // returns element pos/size in core pixels by default. - private _getElementDataFromSpanByIndex(index: number, span: any): DimensionPosSize { + private _getElementDataFromSpanByIndex(index: number, span: any): DimensionPosSize | undefined { return this._getElementDataAnyFromSpanByIndex(index, span, 'corepixels'); } // returns element pos/size in the requested unit. - private _getElementDataAnyFromSpanByIndex(index: number, span: any, unitName: GeometryUnit): DimensionPosSize { + private _getElementDataAnyFromSpanByIndex(index: number, span: any, unitName: GeometryUnit): DimensionPosSize | undefined { if (span === undefined || index < span.start || span.end < index) { return undefined; @@ -635,7 +635,7 @@ export class SheetDimension { public forEachInRange(start: number, end: number, callback: ((dimIndex: number, posSize: DimensionPosSize) => void)): void { - this._visibleSizes.forEachSpanInRange(start, end, function (span: SpanViewData) { + this._visibleSizes!.forEachSpanInRange(start, end, function (span: SpanViewData) { var first = Math.max(span.start, start); var last = Math.min(span.end, end); for (var index = first; index <= last; ++index) { @@ -646,7 +646,7 @@ export class SheetDimension { // callback with a position and index for each grid line in this pixel range public forEachInCorePixelRange(startPix: number, endPix: number, callback: ((startPosCorePx: number, index: number) => void)): void { - this._visibleSizes.forEachSpan(function (spanData: any) { + this._visibleSizes!.forEachSpan(function (spanData: any) { // do we overlap ? var spanFirstCorePx = spanData.data.poscorepx - (spanData.data.sizecore * (spanData.end - spanData.start + 1)); @@ -670,12 +670,12 @@ export class SheetDimension { // an object with this index and the span data. private _getSpanAndIndexFromTileTwipsPos(pos: number): IndexAndSpan { var result = {} as IndexAndSpan; - var span = this._visibleSizes.getSpanDataByCustomDataField(pos, 'postiletwips'); + var span = this._visibleSizes!.getSpanDataByCustomDataField(pos, 'postiletwips'); result.span = span; if (span === undefined) { // enforce limits. result.index = (pos >= 0) ? this._maxIndex : 0; - result.span = this._visibleSizes.getSpanDataByIndex(result.index); + result.span = this._visibleSizes!.getSpanDataByIndex(result.index); return result; } var elementCount = span.end - span.start + 1; @@ -699,12 +699,12 @@ export class SheetDimension { // an object with this index and the span data. private _getSpanAndIndexFromPrintTwipsPos(pos: number): IndexAndSpan { var result = {} as IndexAndSpan; - var span = this._visibleSizes.getSpanDataByCustomDataField(pos, 'posprinttwips'); + var span = this._visibleSizes!.getSpanDataByCustomDataField(pos, 'posprinttwips'); result.span = span; if (span === undefined) { // enforce limits. result.index = (pos >= 0) ? this._maxIndex : 0; - result.span = this._visibleSizes.getSpanDataByIndex(result.index); + result.span = this._visibleSizes!.getSpanDataByIndex(result.index); return result; } var elementCount = span.end - span.start + 1; @@ -765,7 +765,7 @@ export class SheetDimension { // Accepts a position in display twips at current zoom and returns corresponding // display twips position at the given zoomScale. - public getTileTwipsAtZoom(posTT: number, zoomScale: number): number { + public getTileTwipsAtZoom(posTT: number, zoomScale: number): number | undefined { if (typeof posTT !== 'number' || typeof zoomScale !== 'number') { console.error('Wrong argument types'); return; @@ -777,7 +777,7 @@ export class SheetDimension { // Accepts a position in core-pixels at current zoom and returns corresponding // core-pixels position at the given zoomScale. - public getCorePixelsAtZoom(posCP: number, zoomScale: number): number { + public getCorePixelsAtZoom(posCP: number, zoomScale: number): number | undefined { if (typeof posCP !== 'number' || typeof zoomScale !== 'number') { console.error('Wrong argument types'); return; @@ -785,7 +785,7 @@ export class SheetDimension { var posCPZ = 0; // Position in core-pixels at zoomScale. var posCPRem = posCP; // Unconverted core-pixels position at current zoom. - this._visibleSizes.forEachSpan(function (span) { + this._visibleSizes!.forEachSpan(function (span) { var elementCount = span.end - span.start + 1; var sizeOneCP = span.data.sizecore; var sizeOneCPZ = Math.floor(span.size / 15.0 * zoomScale); @@ -816,7 +816,7 @@ export class SheetDimension { // Accepts a position in core-pixels at *given* zoomScale and returns corresponding // core-pixels position at the current zoom. - public getCorePixelsFromZoom(posCPZ: number, zoomScale: number): number { + public getCorePixelsFromZoom(posCPZ: number, zoomScale: number): number | undefined { if (typeof posCPZ !== 'number' || typeof zoomScale !== 'number') { console.error('Wrong argument types'); return; @@ -824,7 +824,7 @@ export class SheetDimension { var posCP = 0; // Position in core-pixels at current zoom. var posCPZRem = posCPZ; // Unconverted core-pixels position at zoomScale. - this._visibleSizes.forEachSpan(function (span) { + this._visibleSizes!.forEachSpan(function (span) { var elementCount = span.end - span.start + 1; var sizeOneCP = span.data.sizecore; var sizeOneCPZ = Math.floor(span.size / 15.0 * zoomScale); @@ -854,7 +854,7 @@ export class SheetDimension { } // Accepts a position in print twips and returns the corresponding position in tile twips. - public getTileTwipsPosFromPrint(posPT: number, zoomScale?: number): number { + public getTileTwipsPosFromPrint(posPT: number | undefined, zoomScale?: number): number | undefined { if (typeof posPT !== 'number') { console.error('Wrong argument type'); @@ -864,7 +864,7 @@ export class SheetDimension { if (typeof zoomScale === 'number') { var posTT = 0; var posPTInc = 0; - this._visibleSizes.forEachSpan(function (spanData) { + this._visibleSizes!.forEachSpan(function (spanData) { var count = spanData.end - spanData.start + 1; var sizeSpanPT = spanData.size * count; var sizeOneCorePx = Math.floor(spanData.size * zoomScale / 15.0); @@ -896,15 +896,15 @@ export class SheetDimension { var elementDataTT = this._getElementDataAnyFromSpanByIndex(element.index, element.span, 'tiletwips'); var elementDataPT = this._getElementDataAnyFromSpanByIndex(element.index, element.span, 'printtwips'); - var offset = posPT - elementDataPT.startpos; + var offset = posPT - elementDataPT!.startpos; console.assert(offset >= 0, 'offset should not be negative'); // Preserve any offset from the matching column/row start position. - return elementDataTT.startpos + offset; + return elementDataTT!.startpos + offset; } // Accepts a position in tile twips and returns the corresponding position in print twips. - public getPrintTwipsPosFromTile(posTT: number): number { + public getPrintTwipsPosFromTile(posTT: number): number | undefined { if (typeof posTT !== 'number') { console.error('Wrong argument type'); @@ -915,11 +915,11 @@ export class SheetDimension { var elementDataTT = this._getElementDataAnyFromSpanByIndex(element.index, element.span, 'tiletwips'); var elementDataPT = this._getElementDataAnyFromSpanByIndex(element.index, element.span, 'printtwips'); - var offset = posTT - elementDataTT.startpos; + var offset = posTT - elementDataTT!.startpos; console.assert(offset >= 0, 'offset should not be negative'); // Preserve any offset from the matching column/row start position. - return elementDataPT.startpos + offset; + return elementDataPT!.startpos + offset; } // Accepts a start and end positions in print twips, and returns the @@ -933,15 +933,15 @@ export class SheetDimension { // to imitate what core does when it sends cursor/ranges in tile-twips coordinates. var rangeSize = Math.floor(this._twipsPerCorePixel); return { - startpos: startData.startpos, - endpos: startData.startpos + rangeSize + startpos: startData!.startpos, + endpos: startData!.startpos + rangeSize }; } var endElement = this._getSpanAndIndexFromPrintTwipsPos(posEndPT); var endData = this._getElementDataAnyFromSpanByIndex(endElement.index, endElement.span, 'tiletwips'); - var startPos = startData.startpos; - var endPos = endData.startpos + endData.size; + var startPos = startData!.startpos; + var endPos = endData!.startpos + endData!.size; if (endPos < startPos) { endPos = startPos; } @@ -952,7 +952,7 @@ export class SheetDimension { }; } - public getSize(unit: GeometryUnit): number { + public getSize(unit: GeometryUnit): number | undefined { var posSize = this.getElementDataAny(this._maxIndex, unit); if (!posSize) { return undefined; @@ -985,7 +985,7 @@ export class SheetDimension { this._getSpanAndIndexFromTileTwipsPos(pos) : this._getSpanAndIndexFromPrintTwipsPos(pos); - return this._getElementDataAnyFromSpanByIndex(result.index, result.span, origUnit).startpos; + return this._getElementDataAnyFromSpanByIndex(result.index, result.span, origUnit)!.startpos; } public getIndexFromPos(pos: number, unit: GeometryUnit): number { @@ -1071,7 +1071,7 @@ class SpanList { } // Runs in O(#spans in 'this' + #spans in 'other') - public applyZeroValues(other: BoolSpanList) { + public applyZeroValues(other: BoolSpanList | undefined) { if (!(other instanceof BoolSpanList)) { return undefined; @@ -1142,7 +1142,7 @@ class SpanList { }); } - public getSpanDataByIndex(index: number): SpanData { + public getSpanDataByIndex(index: number): SpanData | undefined { if (typeof index != 'number') { return undefined; @@ -1156,7 +1156,7 @@ class SpanList { return this._getSpanData(spanid); } - public getSpanDataByCustomDataField(value: number, fieldName: string): SpanViewData { + public getSpanDataByCustomDataField(value: number, fieldName: string): SpanViewData | undefined { if (typeof value != 'number' || typeof fieldName != 'string' || !fieldName) { return undefined; @@ -1337,7 +1337,7 @@ class BoolSpanList { } -function parseSpanListEncoding(encoding: string, booleanValue: boolean): (ParsedSpanList | ParsedBoolSpanList) { +function parseSpanListEncoding(encoding: string, booleanValue: boolean): ParsedSpanList | ParsedBoolSpanList | undefined { var spanlist: ParsedSpan[] = []; var boolspanlist: BoolSpanData[] = []; diff --git a/browser/src/layer/vector/CEventsHandler.ts b/browser/src/layer/vector/CEventsHandler.ts index 8a5b435f1fd1f..d274cca655915 100644 --- a/browser/src/layer/vector/CEventsHandler.ts +++ b/browser/src/layer/vector/CEventsHandler.ts @@ -39,7 +39,7 @@ abstract class CEventsHandler { } } - on(eventName: string, handler: EventHandlerType): boolean { + on(eventName: string, handler: EventHandlerType): boolean | undefined { var handlerSet = this.handlers.get(eventName); if (handlerSet === undefined) { console.warn('Unknown event type: ' + eventName + ' used to register a handler'); @@ -65,7 +65,7 @@ abstract class CEventsHandler { return true; } - fire(eventName: string, eventData: EventData): boolean { + fire(eventName: string, eventData: EventData): boolean | undefined { var handlerSet = this.handlers.get(eventName); if (handlerSet === undefined) { console.warn('Unknown event type: ' + eventName); @@ -76,4 +76,4 @@ abstract class CEventsHandler { handler.call(this, eventData); }, this); } -} \ No newline at end of file +} diff --git a/browser/src/layer/vector/CLineUtil.ts b/browser/src/layer/vector/CLineUtil.ts index 383e3efee9c51..4908062a4f26a 100644 --- a/browser/src/layer/vector/CLineUtil.ts +++ b/browser/src/layer/vector/CLineUtil.ts @@ -71,10 +71,10 @@ namespace CLineUtil { } if (maxSqDist > sqTolerance) { - markers[index] = true; + markers[index!] = true; - _simplifyDPStep(points, markers, sqTolerance, first, index); - _simplifyDPStep(points, markers, sqTolerance, index, last); + _simplifyDPStep(points, markers, sqTolerance, first, index!); + _simplifyDPStep(points, markers, sqTolerance, index!, last); } } @@ -156,7 +156,7 @@ namespace CLineUtil { y = a.y + dy * (min.x - a.x) / dx; } - return new cool.Point(x, y, round); + return new cool.Point(x!, y!, round); } function _getBitCode(p: cool.Point, bounds: cool.Bounds): number { diff --git a/browser/src/layer/vector/CPath.ts b/browser/src/layer/vector/CPath.ts index eb7c262739b92..02df7a3fdf4b8 100644 --- a/browser/src/layer/vector/CPath.ts +++ b/browser/src/layer/vector/CPath.ts @@ -36,8 +36,8 @@ abstract class CPath extends CEventsHandler { static countObjects: number = 0; private id: number; private isDeleted: boolean = false; - private testDiv: HTMLDivElement; - protected renderer: CanvasOverlay = null; + private testDiv: HTMLDivElement | undefined; + protected renderer: CanvasOverlay | null = null; protected underMouse: boolean = false; private popup: any; private popupHandlersAdded: boolean = false; @@ -97,7 +97,7 @@ abstract class CPath extends CEventsHandler { // Adds a div for cypress-tests (if active) for this CPath if not already done. private addPathTestDiv() { - var testContainer = this.renderer.getTestDiv(); + var testContainer = this.renderer!.getTestDiv(); if (testContainer && !this.testDiv) { this.testDiv = document.createElement('div'); this.testDiv.id = 'test-div-overlay-' + this.name; @@ -110,13 +110,13 @@ abstract class CPath extends CEventsHandler { if (!this.testDiv) return; var bounds = this.getBounds(); - if (this.empty() || !bounds.isValid()) { + if (this.empty() || !bounds!.isValid()) { this.testDiv.innerText = '{}'; return; } - var topLeft = bounds.getTopLeft(); - var size = bounds.getSize(); + var topLeft = bounds!.getTopLeft(); + var size = bounds!.getSize(); this.testDiv.innerText = JSON.stringify({ top: Math.round(topLeft.y), left: Math.round(topLeft.x), @@ -168,7 +168,7 @@ abstract class CPath extends CEventsHandler { } updatePathAllPanes(paintArea?: cool.Bounds) { - var viewBounds = this.renderer.getBounds().clone(); + var viewBounds = this.renderer!.getBounds().clone(); if (this.fixed) { // Ignore freeze-panes. @@ -181,7 +181,7 @@ abstract class CPath extends CEventsHandler { return; } - var splitPanesContext = this.renderer.getSplitPanesContext(); + var splitPanesContext = this.renderer!.getSplitPanesContext(); var paneBoundsList: Array = splitPanesContext ? splitPanesContext.getPxBoundList() : [viewBounds]; @@ -245,7 +245,7 @@ abstract class CPath extends CEventsHandler { } } - getBounds(): cool.Bounds { + getBounds(): cool.Bounds | undefined { // Overridden in implementations. return undefined; } diff --git a/browser/src/layer/vector/CPointSet.ts b/browser/src/layer/vector/CPointSet.ts index 817a512dbd642..dbddcf790a3db 100644 --- a/browser/src/layer/vector/CPointSet.ts +++ b/browser/src/layer/vector/CPointSet.ts @@ -7,8 +7,8 @@ */ class CPointSet { - private points: Array; - private pointSets: Array; + private points: Array | undefined; + private pointSets: Array | undefined; static fromPointArray(array: Array) { var ps = new CPointSet(); @@ -39,14 +39,14 @@ class CPointSet { empty(): boolean { return ( (this.points === undefined && this.pointSets === undefined) || - (this.pointSets === undefined && this.points.length == 0)); + (this.pointSets === undefined && this.points!.length == 0)); } - getPointArray(): Array { + getPointArray(): Array | undefined { return this.points; } - getSetArray(): Array { + getSetArray(): Array | undefined { return this.pointSets; } @@ -76,13 +76,13 @@ class CPointSet { if (source.points) { newPointSet.points = []; source.points.forEach(function(point) { - newPointSet.points.push(point.clone()); + newPointSet.points!.push(point.clone()); }); } else if (source.pointSets) { newPointSet.pointSets = []; source.pointSets.forEach(function (childPointSet) { const clonedChild = CPointSet.cloneImpl(childPointSet); - newPointSet.pointSets.push(clonedChild); + newPointSet.pointSets!.push(clonedChild); }); } @@ -99,31 +99,31 @@ class CPointSet { refPoint.x = 0; refPoint.y = 0; // Compute centroid for this set of points. - pointSet.points.forEach(function (point) { + pointSet.points!.forEach(function (point) { refPoint._add(point); }); - refPoint._divideBy(pointSet.points.length); + refPoint._divideBy(pointSet.points!.length); } - pointSet.points.forEach(function (point, index) { + pointSet.points!.forEach(function (point, index) { if (preRound) - pointSet.points[index]._round(); + pointSet.points![index]._round(); if (point.x < refPoint.x) - pointSet.points[index].x -= offset.x; + pointSet.points![index].x -= offset.x; else - pointSet.points[index].x += offset.x; + pointSet.points![index].x += offset.x; if (point.y < refPoint.y) - pointSet.points[index].y -= offset.y; + pointSet.points![index].y -= offset.y; else - pointSet.points[index].y += offset.y; + pointSet.points![index].y += offset.y; }); return; } // not flat so recurse. - pointSet.pointSets.forEach(function(childPointSet) { + pointSet.pointSets!.forEach(function(childPointSet) { CPointSet.applyOffsetImpl(childPointSet, offset, centroidSymmetry, preRound); }); } diff --git a/browser/src/layer/vector/CPolyUtil.ts b/browser/src/layer/vector/CPolyUtil.ts index f44bef96b6216..cb045442b6e87 100644 --- a/browser/src/layer/vector/CPolyUtil.ts +++ b/browser/src/layer/vector/CPolyUtil.ts @@ -6,7 +6,7 @@ namespace CPolyUtil { - export function rectanglesToPointSet(rectangles: Array>, unitConverter: (point: cool.Point) => cool.Point): CPointSet { + export function rectanglesToPointSet(rectangles: Array>, unitConverter: (point: cool.Point | undefined) => cool.Point): CPointSet { /* An Implementation based on O'ROURKE, Joseph. "Uniqueness of orthogonal connect-the-dots." Machine Intelligence and Pattern Recognition. Vol. 6. North-Holland, 1988. 97-104. http://www.science.smith.edu/~jorourke/Papers/OrthoConnect.pdf @@ -86,8 +86,8 @@ namespace CPolyUtil { var len = getKeys(points).length; i = 0; while (i < len) { - var currY = points.get(sortY[i]).y; - while (i < len && points.get(sortY[i]).y === currY) { + var currY = points.get(sortY[i])!.y; + while (i < len && points.get(sortY[i])!.y === currY) { edgesH.set(sortY[i], sortY[i + 1]); edgesH.set(sortY[i + 1], sortY[i]); i += 2; @@ -96,8 +96,8 @@ namespace CPolyUtil { i = 0; while (i < len) { - var currX = points.get(sortX[i]).x; - while (i < len && points.get(sortX[i]).x === currX) { + var currX = points.get(sortX[i])!.x; + while (i < len && points.get(sortX[i])!.x === currX) { edgesV.set(sortX[i], sortX[i + 1]); edgesV.set(sortX[i + 1], sortX[i]); i += 2; @@ -108,32 +108,32 @@ namespace CPolyUtil { var edgesHKeys = getKeys(edgesH); while (edgesHKeys.length > 0) { - var p: Array<[cool.Point, number]> = [[edgesHKeys[0], 0]]; + var p: Array<[cool.Point | undefined, number]> = [[edgesHKeys[0], 0]]; while (true) { var curr = p[p.length - 1][0]; var e = p[p.length - 1][1]; if (e === 0) { - var nextVertex = edgesV.get(curr); - edgesV.delete(curr); + var nextVertex = edgesV.get(curr!); + edgesV.delete(curr!); p.push([nextVertex, 1]); } else { - var nextVertex = edgesH.get(curr); - edgesH.delete(curr); + var nextVertex = edgesH.get(curr!); + edgesH.delete(curr!); p.push([nextVertex, 0]); } - if (p[p.length - 1][0].equals(p[0][0]) && p[p.length - 1][1] === p[0][1]) { + if (p[p.length - 1][0]!.equals(p[0][0]!) && p[p.length - 1][1] === p[0][1]) { p.pop(); break; } } var polygon = new Array(); for (i = 0; i < p.length; i++) { - polygon.push(unitConverter(points.get(p[i][0]))); - edgesH.delete(p[i][0]); - edgesV.delete(p[i][0]); + polygon.push(unitConverter(points.get(p[i][0]!))); + edgesH.delete(p[i][0]!); + edgesV.delete(p[i][0]!); } - polygon.push(unitConverter(points.get(p[0][0]))); + polygon.push(unitConverter(points.get(p[0][0]!))); edgesHKeys = getKeys(edgesH); polygons.push(CPointSet.fromPointArray(polygon)); } diff --git a/browser/src/layer/vector/CPolygon.ts b/browser/src/layer/vector/CPolygon.ts index 48fd2ecfca5c3..a2889e706d3d1 100644 --- a/browser/src/layer/vector/CPolygon.ts +++ b/browser/src/layer/vector/CPolygon.ts @@ -56,7 +56,7 @@ class CPolygon extends CPolyline { } this.simplifyPoints(); - this.renderer.updatePoly(this, true /* closed? */, paintArea, paneBounds, freezePane); + this.renderer!.updatePoly(this, true /* closed? */, paintArea, paneBounds, freezePane); } anyRingBoundContains(corePxPoint: cool.Point): boolean { diff --git a/browser/src/layer/vector/CPolyline.ts b/browser/src/layer/vector/CPolyline.ts index 456a3f7a06880..992f32d43e4ad 100644 --- a/browser/src/layer/vector/CPolyline.ts +++ b/browser/src/layer/vector/CPolyline.ts @@ -97,7 +97,7 @@ class CPolyline extends CPath { return []; } - getCenter(): cool.Point { + getCenter(): cool.Point | undefined { var i: number; var halfDist: number; var segDist: number; @@ -148,7 +148,7 @@ class CPolyline extends CPath { this.clipPoints(paintArea); this.simplifyPoints(); - this.renderer.updatePoly(this, false /* closed? */, paintArea, paneBounds, freezePane); + this.renderer!.updatePoly(this, false /* closed? */, paintArea, paneBounds, freezePane); } // clip polyline by renderer bounds so that we have less to render for performance @@ -161,7 +161,7 @@ class CPolyline extends CPath { this.parts = new Array>(); var parts = this.parts; - var bounds = paintArea ? paintArea : this.renderer.getBounds(); + var bounds = paintArea ? paintArea : this.renderer!.getBounds(); var i: number; var j: number; var k: number; diff --git a/browser/src/layer/vector/CanvasOverlay.ts b/browser/src/layer/vector/CanvasOverlay.ts index ae2b38fb5855a..c8c8f5abc5dcb 100644 --- a/browser/src/layer/vector/CanvasOverlay.ts +++ b/browser/src/layer/vector/CanvasOverlay.ts @@ -153,10 +153,10 @@ class CanvasOverlay extends app.definitions.canvasSectionObject { this.paths.forEach(function (path:CPath) { var pathBounds = path.getBounds(); - if (!pathBounds.isValid()) + if (!pathBounds!.isValid()) return; - var mouseOverPath = pathBounds.contains(mousePos); + var mouseOverPath = pathBounds!.contains(mousePos); if (mouseOverPath && !path.isUnderMouse()) { path.onMouseEnter(mousePos); path.setUnderMouse(true); @@ -202,7 +202,7 @@ class CanvasOverlay extends app.definitions.canvasSectionObject { this.redraw(path, oldBounds); } - updateStyle(path: CPath, oldBounds: cool.Bounds) { + updateStyle(path: CPath, oldBounds: cool.Bounds | undefined) { this.redraw(path, oldBounds); } @@ -216,9 +216,9 @@ class CanvasOverlay extends app.definitions.canvasSectionObject { private isPathVisible(path: CPath): boolean { var pathBounds = path.getBounds(); - if (!pathBounds.isValid()) + if (!pathBounds!.isValid()) return false; - return this.intersectsVisible(pathBounds); + return this.intersectsVisible(pathBounds!); } private intersectsVisible(queryBounds: cool.Bounds): boolean { @@ -284,13 +284,13 @@ class CanvasOverlay extends app.definitions.canvasSectionObject { }, this); } - private redraw(path: CPath, oldBounds: cool.Bounds) { + private redraw(path: CPath, oldBounds: cool.Bounds | undefined) { if (this.tsManager && this.tsManager.waitForTiles()) { // don't paint anything till tiles arrive for new zoom. return; } - if (!this.isPathVisible(path) && (!oldBounds.isValid() || !this.intersectsVisible(oldBounds))) + if (!this.isPathVisible(path) && (!oldBounds!.isValid() || !this.intersectsVisible(oldBounds!))) return; // This does not get called via onDraw(ie, tiles aren't painted), so ask tileSection to "erase" by painting over. // Repainting the whole canvas is not necessary but finding the minimum area to paint over @@ -514,13 +514,13 @@ class CanvasOverlay extends app.definitions.canvasSectionObject { const bounds = path.getBounds(); if (isVertSplitter) { - this.ctx.fillRect(0, splitPos.y, bounds.max.x, splitPos.y + gradientWidth); + this.ctx.fillRect(0, splitPos.y, bounds!.max.x, splitPos.y + gradientWidth); } else { let x: number = splitPos.x; // Assuming x is a number if (this.isCalcRTL()) { x = splitPos.x - gradientWidth; } - this.ctx.fillRect(x, 0, gradientWidth, bounds.max.y); + this.ctx.fillRect(x, 0, gradientWidth, bounds!.max.y); } } diff --git a/browser/src/map/handler/Map.KeyboardShortcuts.ts b/browser/src/map/handler/Map.KeyboardShortcuts.ts index 9640315e67155..033ea29279508 100644 --- a/browser/src/map/handler/Map.KeyboardShortcuts.ts +++ b/browser/src/map/handler/Map.KeyboardShortcuts.ts @@ -34,15 +34,15 @@ enum ViewType { type shortcutCallback = () => void; class ShortcutDescriptor { - docType: string; // if undefined then all apps match + docType: string | null; // if null then all apps match eventType: string; modifier: Mod; key: string; - unoAction: string; - dispatchAction: string; - viewType: ViewType; + unoAction: string | null | undefined; + dispatchAction: string | null | undefined; + viewType: ViewType | null; - constructor(docType: string, eventType: string, modifier: Mod, key: string, unoAction: string, dispatchAction: string, viewType: ViewType = null) { + constructor(docType: string | null, eventType: string, modifier: Mod, key: string, unoAction: string | null | undefined, dispatchAction: string | null | undefined, viewType: ViewType | null = null) { this.docType = docType; this.eventType = eventType; this.modifier = modifier; @@ -167,7 +167,7 @@ keyboardShortcuts.definitions.set('default', new Array( new ShortcutDescriptor(null, 'keydown', 0, 'F1', null, 'showhelp', null), new ShortcutDescriptor(null, 'keydown', Mod.ALT, 'F1', null, 'focustonotebookbar', null), - new ShortcutDescriptor('spreadsheet', 'keydown', Mod.CTRL | Mod.SHIFT, 'PageUp', undefined, undefined), + new ShortcutDescriptor('spreadsheet', 'keydown', Mod.CTRL | Mod.SHIFT, 'PageUp', undefined, undefined), // FIXME: these undefineds should almost certainly be nulls new ShortcutDescriptor('spreadsheet', 'keydown', Mod.CTRL | Mod.SHIFT, 'PageDown', undefined, undefined), new ShortcutDescriptor('spreadsheet', 'keydown', 0, 'F5', null, null, null), diff --git a/browser/src/slideshow/CanvasLoader.ts b/browser/src/slideshow/CanvasLoader.ts index 3c67be6fb9aad..5d49f310fafad 100644 --- a/browser/src/slideshow/CanvasLoader.ts +++ b/browser/src/slideshow/CanvasLoader.ts @@ -39,12 +39,12 @@ class CanvasLoaderGl extends TextureAnimationBase implements CanvasLoader { public renderUniformValue(): void { this.gl.uniform2f( - this.gl.getUniformLocation(this.program, 'u_resolution'), - this.context.canvas.width, - this.context.canvas.height, + this.gl.getUniformLocation(this.program!, 'u_resolution'), + this.context!.canvas.width, + this.context!.canvas.height, ); this.gl.uniform1f( - this.gl.getUniformLocation(this.program, 'u_time'), + this.gl.getUniformLocation(this.program!, 'u_time'), this.time, ); } @@ -107,8 +107,8 @@ class CanvasLoaderGl extends TextureAnimationBase implements CanvasLoader { this.gl.viewport( 0, 0, - this.context.canvas.width, - this.context.canvas.height, + this.context!.canvas.width, + this.context!.canvas.height, ); this.gl.clearColor(0.0, 0.0, 0.0, 1.0); // Black background this.gl.clear(this.gl.COLOR_BUFFER_BIT); diff --git a/browser/src/slideshow/LayerDrawing.ts b/browser/src/slideshow/LayerDrawing.ts index 255512bbdafd1..fc4264ed459d9 100644 --- a/browser/src/slideshow/LayerDrawing.ts +++ b/browser/src/slideshow/LayerDrawing.ts @@ -64,7 +64,7 @@ interface LayerInfo { } interface LayerEntry { - type: 'bitmap' | 'placeholder' | 'animated'; + type: 'bitmap' | 'placeholder' | 'animated' | undefined; content: LayerContentType; } @@ -73,10 +73,10 @@ class LayerDrawing { private helper: LayersCompositor; private slideCache: SlideCache = new SlideCache(); - private requestedSlideHash: string = null; - private prefetchedSlideHash: string = null; - private nextRequestedSlideHash: string = null; - private nextPrefetchedSlideHash: string = null; + private requestedSlideHash: string | null = null; + private prefetchedSlideHash: string | null = null; + private nextRequestedSlideHash: string | null = null; + private nextPrefetchedSlideHash: string | null = null; private slideRequestTimeout: any = null; private resolutionWidth: number = 960; private resolutionHeight: number = 540; @@ -89,11 +89,11 @@ class LayerDrawing { private cachedTextFields: Map = new Map(); private slideTextFieldsMap: Map> = new Map(); - private offscreenCanvas: OffscreenCanvas = null; - private offscreenContext: OffscreenCanvasRenderingContext2D = null; - private currentCanvas: OffscreenCanvas = null; - private currentCanvasContext: ImageBitmapRenderingContext = null; - private onSlideRenderingCompleteCallback: VoidFunction = null; + private offscreenCanvas: OffscreenCanvas | null = null; + private offscreenContext: OffscreenCanvasRenderingContext2D | null = null; + private currentCanvas: OffscreenCanvas | null = null; + private currentCanvasContext: ImageBitmapRenderingContext | null = null; + private onSlideRenderingCompleteCallback: VoidFunction | null = null; constructor(mapObj: any, helper: LayersCompositor) { this.map = mapObj; @@ -127,19 +127,19 @@ class LayerDrawing { this.map.off('sliderenderingcomplete', this.onSlideRenderingComplete, this); } - private getSlideInfo(slideHash: string) { + private getSlideInfo(slideHash: string | undefined) { return this.helper.getSlideInfo(slideHash); } - public getSlide(slideNumber: number): ImageBitmap { + public getSlide(slideNumber: number): ImageBitmap | undefined { const startSlideHash = this.helper.getSlideHash(slideNumber); - return this.slideCache.get(startSlideHash); + return this.slideCache.get(startSlideHash!); } - public getLayerImage(slideHash: string, targetElement: string): ImageBitmap { + public getLayerImage(slideHash: string, targetElement: string): ImageBitmap | null { const layers = this.cachedDrawPages.get(slideHash); - for (const i in layers) { - const animatedInfo = layers[i].content as AnimatedShapeInfo; + for (const i in layers) { // TODO: const i of layers may save us from some ugly casting... + const animatedInfo = layers[i as unknown as number].content as AnimatedShapeInfo; if ( animatedInfo && animatedInfo.hash === targetElement && @@ -183,7 +183,10 @@ class LayerDrawing { this.offscreenContext = this.offscreenCanvas.getContext('2d'); } - private requestSlideImpl(slideHash: string, prefetch: boolean = false) { + private requestSlideImpl( + slideHash: string | undefined, + prefetch: boolean = false, + ) { const slideInfo = this.getSlideInfo(slideHash); if (!slideInfo) { window.app.console.log( @@ -210,11 +213,11 @@ class LayerDrawing { if (!prefetch) { // maybe user has switched to a new slide clearTimeout(this.slideRequestTimeout); - this.nextRequestedSlideHash = slideHash; + this.nextRequestedSlideHash = slideHash!; this.nextPrefetchedSlideHash = null; } else { // prefetching and nothing already queued - this.nextPrefetchedSlideHash = slideHash; + this.nextPrefetchedSlideHash = slideHash!; } this.slideRequestTimeout = setTimeout(() => { this.slideRequestTimeout = null; @@ -227,22 +230,22 @@ class LayerDrawing { } if (prefetch) { - this.prefetchedSlideHash = slideHash; + this.prefetchedSlideHash = slideHash!; this.requestedSlideHash = null; } else { - this.requestedSlideHash = slideHash; + this.requestedSlideHash = slideHash!; this.prefetchedSlideHash = null; } - if (this.slideCache.has(slideHash)) { + if (this.slideCache.has(slideHash!)) { this.onSlideRenderingComplete(); return; } - const backgroundRendered = this.drawBackground(slideHash); - const masterPageRendered = this.drawMasterPage(slideHash); + const backgroundRendered = this.drawBackground(slideHash!); + const masterPageRendered = this.drawMasterPage(slideHash!); if (backgroundRendered && masterPageRendered) { - if (this.drawDrawPage(slideHash)) { + if (this.drawDrawPage(slideHash!)) { this.onSlideRenderingComplete(); return; } @@ -309,16 +312,16 @@ class LayerDrawing { private handleBackgroundMsg(info: LayerInfo, img: any) { const slideInfo = this.getSlideInfo(info.slideHash); - if (!slideInfo.background) { + if (!slideInfo!.background) { return; } if (info.type === 'bitmap') { const imageInfo = info.content as ImageInfo; if (!this.checkAndAttachImageData(imageInfo, img)) return; - const pageHash = slideInfo.background.isCustom + const pageHash = slideInfo!.background.isCustom ? info.slideHash - : slideInfo.masterPage; + : slideInfo!.masterPage; this.backgroundChecksums.set(pageHash, imageInfo.checksum); this.cachedBackgrounds.set(imageInfo.checksum, imageInfo); @@ -329,14 +332,17 @@ class LayerDrawing { private handleMasterPageLayerMsg(info: LayerInfo, img: any) { const slideInfo = this.getSlideInfo(info.slideHash); - if (!slideInfo.masterPageObjectsVisibility) { + if (!slideInfo!.masterPageObjectsVisibility) { return; } if (info.index === 0) { - this.cachedMasterPages.set(slideInfo.masterPage, new Array()); + this.cachedMasterPages.set( + slideInfo!.masterPage, + new Array(), + ); } - const layers = this.cachedMasterPages.get(slideInfo.masterPage); - if (layers.length !== info.index) { + const layers = this.cachedMasterPages.get(slideInfo!.masterPage); + if (layers!.length !== info.index) { window.app.console.log( 'LayerDrawing.handleMasterPageLayerMsg: missed any layers ?', ); @@ -349,7 +355,7 @@ class LayerDrawing { if (!this.checkAndAttachImageData(layerEntry.content as ImageInfo, img)) return; } - layers.push(layerEntry); + layers!.push(layerEntry); this.drawMasterPageLayer(layerEntry, info.slideHash); } @@ -359,7 +365,7 @@ class LayerDrawing { this.cachedDrawPages.set(info.slideHash, new Array()); } const layers = this.cachedDrawPages.get(info.slideHash); - if (layers.length !== info.index) { + if (layers!.length !== info.index) { window.app.console.log( 'LayerDrawing.handleDrawPageLayerMsg: missed any layers ?', ); @@ -378,37 +384,42 @@ class LayerDrawing { return; } } - layers.push(layerEntry); + layers!.push(layerEntry); this.drawDrawPageLayer(layerEntry); } private clearCanvas() { - this.offscreenContext.clearRect(0, 0, this.canvasWidth, this.canvasHeight); + this.offscreenContext!.clearRect(0, 0, this.canvasWidth, this.canvasHeight); } private drawBackground(slideHash: string) { this.clearCanvas(); // always draw a solid white rectangle behind the background - this.offscreenContext.fillStyle = '#FFFFFF'; - this.offscreenContext.fillRect(0, 0, this.canvasWidth, this.canvasHeight); + this.offscreenContext!.fillStyle = '#FFFFFF'; + this.offscreenContext!.fillRect(0, 0, this.canvasWidth, this.canvasHeight); const slideInfo = this.getSlideInfo(slideHash); - if (!slideInfo.background) return true; + if (!slideInfo!.background) return true; - if (slideInfo.background.fillColor) { - this.offscreenContext.fillStyle = '#' + slideInfo.background.fillColor; + if (slideInfo!.background.fillColor) { + this.offscreenContext!.fillStyle = '#' + slideInfo!.background.fillColor; window.app.console.log( - 'LayerDrawing.drawBackground: ' + this.offscreenContext.fillStyle, + 'LayerDrawing.drawBackground: ' + this.offscreenContext!.fillStyle, + ); + this.offscreenContext!.fillRect( + 0, + 0, + this.canvasWidth, + this.canvasHeight, ); - this.offscreenContext.fillRect(0, 0, this.canvasWidth, this.canvasHeight); return true; } - const pageHash = slideInfo.background.isCustom + const pageHash = slideInfo!.background.isCustom ? slideHash - : slideInfo.masterPage; + : slideInfo!.masterPage; const checksum = this.backgroundChecksums.get(pageHash); if (!checksum) return false; @@ -426,13 +437,13 @@ class LayerDrawing { private drawMasterPage(slideHash: string) { const slideInfo = this.getSlideInfo(slideHash); - if (!slideInfo.masterPageObjectsVisibility) return true; + if (!slideInfo!.masterPageObjectsVisibility) return true; - const layers = this.cachedMasterPages.get(slideInfo.masterPage); + const layers = this.cachedMasterPages.get(slideInfo!.masterPage); if (!layers || layers.length === 0) { window.app.console.log( 'LayerDrawing: No layer cached for master page: ' + - slideInfo.masterPage, + slideInfo!.masterPage, ); return false; } @@ -459,14 +470,14 @@ class LayerDrawing { ); return; } - const imageInfo = this.cachedTextFields.get(checksum).content; + const imageInfo = this.cachedTextFields.get(checksum)!.content; this.drawBitmap(imageInfo); } } private drawDrawPage(slideHash: string) { const slideInfo = this.getSlideInfo(slideHash); - if (slideInfo.empty) { + if (slideInfo!.empty) { return true; } @@ -504,7 +515,11 @@ class LayerDrawing { return; } if (imageInfo.type === 'png') { - this.offscreenContext.drawImage(imageInfo.data as HTMLImageElement, 0, 0); + this.offscreenContext!.drawImage( + imageInfo.data as HTMLImageElement, + 0, + 0, + ); } } @@ -513,7 +528,7 @@ class LayerDrawing { this.prefetchedSlideHash = null; return; } - const reqSlideInfo = this.getSlideInfo(this.requestedSlideHash); + const reqSlideInfo = this.getSlideInfo(this.requestedSlideHash!); this.cacheAndNotify(); // fetch next slide and draw it on offscreen canvas @@ -529,9 +544,9 @@ class LayerDrawing { ); return; } - if (!this.slideCache.has(this.requestedSlideHash)) { + if (!this.slideCache.has(this.requestedSlideHash!)) { const renderedSlide = this.offscreenCanvas.transferToImageBitmap(); - this.slideCache.set(this.requestedSlideHash, renderedSlide); + this.slideCache.set(this.requestedSlideHash!, renderedSlide); } this.requestedSlideHash = null; diff --git a/browser/src/slideshow/LayersCompositor.ts b/browser/src/slideshow/LayersCompositor.ts index c5e69961c6602..11d0ad5c6b000 100644 --- a/browser/src/slideshow/LayersCompositor.ts +++ b/browser/src/slideshow/LayersCompositor.ts @@ -43,11 +43,11 @@ class LayersCompositor extends SlideCompositor { this.layerDrawing.requestSlide(this._initialSlideNumber, () => { const oldCallback = this._onGotSlideCallback; this._onGotSlideCallback = null; - oldCallback(); + oldCallback!(); }); } - public getSlideInfo(slideHash: string) { + public getSlideInfo(slideHash: string | undefined) { return this.metaPresentation.getSlideInfo(slideHash); } @@ -109,11 +109,11 @@ class LayersCompositor extends SlideCompositor { return this.layerDrawing.getCanvasSize(); } - public getSlide(slideNumber: number): ImageBitmap { + public getSlide(slideNumber: number): ImageBitmap | undefined { return this.layerDrawing.getSlide(slideNumber); } - public getLayer(slideHash: string, targetElement: string): ImageBitmap { + public getLayer(slideHash: string, targetElement: string): ImageBitmap | null { return this.layerDrawing.getLayerImage(slideHash, targetElement); } } diff --git a/browser/src/slideshow/PauseTimer.ts b/browser/src/slideshow/PauseTimer.ts index 3fb171392299e..86925c35c1c36 100644 --- a/browser/src/slideshow/PauseTimer.ts +++ b/browser/src/slideshow/PauseTimer.ts @@ -39,8 +39,8 @@ class PauseTimerGl extends StaticTextRenderer implements PauseTimer { private pauseTimeRemaining: number; private pauseDuration: number; private onComplete: () => void; - private textCanvas: HTMLCanvasElement; - private ctx: CanvasRenderingContext2D; + private textCanvas: HTMLCanvasElement | null; + private ctx: CanvasRenderingContext2D | null; constructor( canvasContext: RenderContextGl, @@ -53,8 +53,8 @@ class PauseTimerGl extends StaticTextRenderer implements PauseTimer { this.onComplete = onComplete; this.textCanvas = document.createElement('canvas'); - this.textCanvas.width = this.context.canvas.width; - this.textCanvas.height = this.context.canvas.height; + this.textCanvas.width = this.context!.canvas.width; + this.textCanvas.height = this.context!.canvas.height; this.ctx = this.textCanvas.getContext('2d'); this.textTexture = this.createTextTexture(this.getPauseTextContent()); @@ -69,7 +69,7 @@ class PauseTimerGl extends StaticTextRenderer implements PauseTimer { public animate(): void { if (!this.textCanvas || !this.ctx) return; const currentTime = performance.now(); - const elapsedTime = (currentTime - this.startTime) / 1000; + const elapsedTime = (currentTime - this.startTime!) / 1000; this.pauseTimeRemaining = Math.max(0, this.pauseDuration - elapsedTime); this.textTexture = this.createTextTexture(this.getPauseTextContent()); @@ -87,25 +87,25 @@ class PauseTimerGl extends StaticTextRenderer implements PauseTimer { public createTextTexture(displayText: string): WebGLTexture { this.clearCanvas(); this.drawText(displayText); - return this.load2dCanvasToGlCanvas(this.textCanvas); + return this.load2dCanvasToGlCanvas(this.textCanvas!); } private clearCanvas(): void { - this.ctx.clearRect(0, 0, this.textCanvas.width, this.textCanvas.height); - this.ctx.fillStyle = 'black'; - this.ctx.fillRect(0, 0, this.textCanvas.width, this.textCanvas.height); + this.ctx!.clearRect(0, 0, this.textCanvas!.width, this.textCanvas!.height); + this.ctx!.fillStyle = 'black'; + this.ctx!.fillRect(0, 0, this.textCanvas!.width, this.textCanvas!.height); } // add text on off screen canvas... private drawText(displayText: string): void { - this.ctx.fillStyle = 'white'; - this.ctx.font = '20px sans-serif'; - this.ctx.textAlign = 'center'; - this.ctx.textBaseline = 'middle'; - this.ctx.fillText( + this.ctx!.fillStyle = 'white'; + this.ctx!.font = '20px sans-serif'; + this.ctx!.textAlign = 'center'; + this.ctx!.textBaseline = 'middle'; + this.ctx!.fillText( displayText, - this.textCanvas.width / 2, - this.textCanvas.height / 2, + this.textCanvas!.width / 2, + this.textCanvas!.height / 2, ); } diff --git a/browser/src/slideshow/PerformTransition.ts b/browser/src/slideshow/PerformTransition.ts index 4a7ce8010dd26..54e5991b56a5c 100644 --- a/browser/src/slideshow/PerformTransition.ts +++ b/browser/src/slideshow/PerformTransition.ts @@ -149,13 +149,13 @@ const stringToTransitionSubTypeMap: Record = { SlideShow.PerformTransition = function ( transitionParameters: TransitionParameters, ) { - if (transitionParameters.context.is2dGl()) { - transitionParameters.callback(); + if (transitionParameters.context!.is2dGl()) { + transitionParameters.callback!(); return; } switch ( - stringToTransitionTypeMap[transitionParameters.slideInfo.transitionType] + stringToTransitionTypeMap[transitionParameters.slideInfo!.transitionType!] ) { case TransitionType.FADE: new SlideShow.FadeTransition(transitionParameters).start(); @@ -229,7 +229,7 @@ SlideShow.PerformTransition = function ( new SlideShow.NoTransition(transitionParameters).start(); console.log( 'Unknown transition type', - transitionParameters.slideInfo.transitionType, + transitionParameters.slideInfo!.transitionType, ); break; } diff --git a/browser/src/slideshow/RenderContext.ts b/browser/src/slideshow/RenderContext.ts index 8be36714931b6..8d63dd991711a 100644 --- a/browser/src/slideshow/RenderContext.ts +++ b/browser/src/slideshow/RenderContext.ts @@ -27,7 +27,7 @@ abstract class RenderContext { return this.gl as CanvasRenderingContext2D; } - public createEmptySlide(): WebGLTexture | ImageBitmap { + public createEmptySlide(): WebGLTexture | ImageBitmap | null { return null; } @@ -41,16 +41,19 @@ abstract class RenderContext { public abstract deleteVertexArray(vao: WebGLVertexArrayObject): void; - public abstract createVertexShader(source: string): WebGLShader; + public abstract createVertexShader(source: string): WebGLShader | null; - public abstract createFragmentShader(source: string): WebGLShader; + public abstract createFragmentShader(source: string): WebGLShader | null; - public abstract createShader(type: number, source: string): WebGLShader; + public abstract createShader( + type: number, + source: string, + ): WebGLShader | null; public abstract createProgram( vertexShader: WebGLShader, fragmentShader: WebGLShader, - ): WebGLProgram; + ): WebGLProgram | null; } class RenderContextGl extends RenderContext { @@ -93,7 +96,7 @@ class RenderContextGl extends RenderContext { gl.deleteTexture(vao); } - public createEmptySlide(): WebGLTexture | ImageBitmap { + public createEmptySlide(): WebGLTexture | ImageBitmap | null { const gl = this.getGl(); const texture = gl.createTexture(); if (!texture) { @@ -123,15 +126,15 @@ class RenderContextGl extends RenderContext { return texture; } - public createVertexShader(source: string): WebGLShader { + public createVertexShader(source: string): WebGLShader | null { return this.createShader(this.getGl().VERTEX_SHADER, source); } - public createFragmentShader(source: string): WebGLShader { + public createFragmentShader(source: string): WebGLShader | null { return this.createShader(this.getGl().FRAGMENT_SHADER, source); } - public createShader(type: number, source: string): WebGLShader { + public createShader(type: number, source: string): WebGLShader | null { const gl = this.getGl(); const shader = gl.createShader(type); if (!shader) { @@ -152,16 +155,16 @@ class RenderContextGl extends RenderContext { } public createProgram( - vertexShader: WebGLShader, - fragmentShader: WebGLShader, - ): WebGLProgram { + vertexShader: WebGLShader | null, + fragmentShader: WebGLShader | null, + ): WebGLProgram | null { const gl = this.getGl(); const program = gl.createProgram(); if (!program) { throw new Error('Failed to create program'); } - gl.attachShader(program, vertexShader); - gl.attachShader(program, fragmentShader); + gl.attachShader(program, vertexShader!); + gl.attachShader(program, fragmentShader!); gl.linkProgram(program); if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { const info = gl.getProgramInfoLog(program); @@ -192,15 +195,15 @@ class RenderContext2d extends RenderContext { return image; } - public createVertexShader(source: string): WebGLShader { + public createVertexShader(source: string): WebGLShader | null { return null; } - public createFragmentShader(source: string): WebGLShader { + public createFragmentShader(source: string): WebGLShader | null { return null; } - public createShader(type: number, source: string): WebGLShader { + public createShader(type: number, source: string): WebGLShader | null { return null; } @@ -215,7 +218,7 @@ class RenderContext2d extends RenderContext { public createProgram( vertexShader: WebGLShader, fragmentShader: WebGLShader, - ): WebGLProgram { + ): WebGLProgram | null { return null; } } diff --git a/browser/src/slideshow/SimpleTextureRenderer.ts b/browser/src/slideshow/SimpleTextureRenderer.ts index 6a6ed256b464c..ab3fec27d8253 100644 --- a/browser/src/slideshow/SimpleTextureRenderer.ts +++ b/browser/src/slideshow/SimpleTextureRenderer.ts @@ -12,22 +12,22 @@ abstract class SimpleTextureRenderer { protected gl: WebGL2RenderingContext; - protected program: WebGLProgram; + protected program: WebGLProgram | null; protected vao!: WebGLVertexArrayObject | null; - protected context: RenderContextGl; + protected context: RenderContextGl | null; - constructor(canvasContext: RenderContextGl) { + constructor(canvasContext: RenderContextGl | null) { this.context = canvasContext; - this.gl = this.context.getGl(); + this.gl = this.context!.getGl(); const vertexShaderSource = this.getVertexShader(); const fragmentShaderSource = this.getFragmentShader(); - const vertexShader = this.context.createVertexShader(vertexShaderSource); + const vertexShader = this.context!.createVertexShader(vertexShaderSource); const fragmentShader = - this.context.createFragmentShader(fragmentShaderSource); + this.context!.createFragmentShader(fragmentShaderSource); - this.program = this.context.createProgram(vertexShader, fragmentShader); + this.program = this.context!.createProgram(vertexShader, fragmentShader); } protected getVertexShader(): string { @@ -71,11 +71,11 @@ abstract class SimpleTextureRenderer { this.gl.bindVertexArray(this.vao); const positionLocation = this.gl.getAttribLocation( - this.program, + this.program!, 'a_position', ); const texCoordLocation = this.gl.getAttribLocation( - this.program, + this.program!, 'a_texCoord', ); diff --git a/browser/src/slideshow/SlideCache.ts b/browser/src/slideshow/SlideCache.ts index df7f14e7bf2a3..02228d30bb1fb 100644 --- a/browser/src/slideshow/SlideCache.ts +++ b/browser/src/slideshow/SlideCache.ts @@ -24,7 +24,7 @@ class SlideCache { return this.renderedSlides.has(slideHash); } - public get(slideHash: string): ImageBitmap { + public get(slideHash: string): ImageBitmap | undefined { return this.renderedSlides.get(slideHash); } diff --git a/browser/src/slideshow/SlideCompositor.ts b/browser/src/slideshow/SlideCompositor.ts index 0492d08c8e93b..7c098f96019ef 100644 --- a/browser/src/slideshow/SlideCompositor.ts +++ b/browser/src/slideshow/SlideCompositor.ts @@ -17,9 +17,9 @@ declare var SlideShow: any; abstract class SlideCompositor { - _slideShowPresenter: SlideShowPresenter = null; + _slideShowPresenter: SlideShowPresenter | null = null; _initialSlideNumber: number = 0; - _onGotSlideCallback: VoidFunction = null; + _onGotSlideCallback: VoidFunction | null = null; constructor(slideShowPresenter: SlideShowPresenter) { this._slideShowPresenter = slideShowPresenter; @@ -39,7 +39,9 @@ abstract class SlideCompositor { public abstract getCanvasSize(): [number, number]; // [width, height] - public abstract getSlide(slideNumber: number): ImageBitmap; + public abstract getSlide( + slideNumber: number | undefined, + ): ImageBitmap | undefined; } SlideShow.SlideCompositor = SlideCompositor; diff --git a/browser/src/slideshow/SlideRenderer.ts b/browser/src/slideshow/SlideRenderer.ts index 54a9af3bc5440..942327b443b58 100644 --- a/browser/src/slideshow/SlideRenderer.ts +++ b/browser/src/slideshow/SlideRenderer.ts @@ -13,27 +13,33 @@ declare var SlideShow: any; class VideoRenderInfo { - private texture: WebGLTexture | ImageBitmap = null; + private texture: WebGLTexture | ImageBitmap | null = null; public videoElement: HTMLVideoElement; - private vao: WebGLVertexArrayObject = null; + private vao: WebGLVertexArrayObject | null = null; public pos2d: number[]; public playing: boolean; - public getTexture(): WebGLTexture { + public getTexture(): WebGLTexture | null { return this.texture; } - public replaceTexture(context: RenderContext, newtexture: WebGLTexture) { - context.deleteTexture(this.texture); + public replaceTexture( + context: RenderContext, + newtexture: WebGLTexture | null, + ) { + context.deleteTexture(this.texture!); this.texture = newtexture; } - public getVao(): WebGLVertexArrayObject { + public getVao(): WebGLVertexArrayObject | null { return this.vao; } - public replaceVao(context: RenderContext, newVao: WebGLVertexArrayObject) { - context.deleteVertexArray(this.vao); + public replaceVao( + context: RenderContext, + newVao: WebGLVertexArrayObject | null, + ) { + context.deleteVertexArray(this.vao!); this.vao = newVao; } @@ -44,12 +50,12 @@ class VideoRenderInfo { } abstract class SlideRenderer { - public _context: RenderContext = null; - protected _slideTexture: WebGLTexture | ImageBitmap; + public _context: RenderContext | null = null; + protected _slideTexture: WebGLTexture | ImageBitmap | null; protected _videos: VideoRenderInfo[] = []; protected _canvas: HTMLCanvasElement; - protected _renderedSlideIndex: number = undefined; - protected _requestAnimationFrameId: number = null; + protected _renderedSlideIndex: number | undefined = undefined; + protected _requestAnimationFrameId: number | null = null; protected _isAnyVideoPlaying: boolean = false; constructor(canvas: HTMLCanvasElement) { @@ -61,7 +67,7 @@ abstract class SlideRenderer { } public getSlideTexture(): WebGLTexture { - return this._slideTexture; + return this._slideTexture!; } public getSlideImage(): ImageBitmap { @@ -103,7 +109,7 @@ abstract class SlideRenderer { for (const videoInfo of this._videos) { if (videoInfo.playing) return; } - cancelAnimationFrame(this._requestAnimationFrameId); + cancelAnimationFrame(this._requestAnimationFrameId!); this._isAnyVideoPlaying = false; }, true, @@ -115,15 +121,15 @@ abstract class SlideRenderer { } public renderSlide( - currentSlideTexture: WebGLTexture | ImageBitmap, - slideInfo: SlideInfo, + currentSlideTexture: WebGLTexture | ImageBitmap | null, + slideInfo: SlideInfo | null, docWidth: number, docHeight: number, ) { this.deleteCurrentSlideTexture(); - this._renderedSlideIndex = slideInfo.index; + this._renderedSlideIndex = slideInfo!.index; this._slideTexture = currentSlideTexture; - this.prepareVideos(slideInfo, docWidth, docHeight); + this.prepareVideos(slideInfo!, docWidth, docHeight); requestAnimationFrame(this.render.bind(this)); } @@ -150,7 +156,9 @@ abstract class SlideRenderer { return [xMin, xMax, yMin, yMax]; } - public abstract createTexture(image: ImageBitmap): WebGLTexture | ImageBitmap; + public abstract createTexture( + image: ImageBitmap | undefined, + ): WebGLTexture | ImageBitmap; public abstract deleteCurrentSlideTexture(): void; @@ -162,7 +170,7 @@ abstract class SlideRenderer { protected abstract render(): void; - public createEmptyTexture(): WebGLTexture | ImageBitmap { + public createEmptyTexture(): WebGLTexture | ImageBitmap | null { return null; } } @@ -210,7 +218,7 @@ class SlideRenderer2d extends SlideRenderer { } protected render() { - const gl = this._context.get2dGl(); + const gl = this._context!.get2dGl(); gl.clearRect(0, 0, gl.canvas.width, gl.canvas.height); const slideImage = this.getSlideImage(); @@ -236,8 +244,8 @@ class SlideRenderer2d extends SlideRenderer { } class SlideRendererGl extends SlideRenderer { - private _program: WebGLProgram = null; - private _vao: WebGLVertexArrayObject = null; + private _program: WebGLProgram | null = null; + private _vao: WebGLVertexArrayObject | null = null; constructor(canvas: HTMLCanvasElement) { super(canvas); @@ -250,9 +258,9 @@ class SlideRendererGl extends SlideRenderer { this.getFragmentShader(), ); - this._program = this._context.createProgram(vertexShader, fragmentShader); + this._program = this._context.createProgram(vertexShader!, fragmentShader!); - this._vao = this.setupPositions(-1.0, 1.0, 1.0, -1.0); + this._vao = this.setupPositions(-1.0, 1.0, 1.0, -1.0)!; this._context.getGl().useProgram(this._program); } @@ -284,8 +292,8 @@ class SlideRendererGl extends SlideRenderer { `; } - private updateTexture(texture: WebGLTexture, video: HTMLVideoElement) { - const gl = this._context.getGl(); + private updateTexture(texture: WebGLTexture | null, video: HTMLVideoElement) { + const gl = this._context!.getGl(); gl.bindTexture(gl.TEXTURE_2D, texture); gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, video); } @@ -295,10 +303,10 @@ class SlideRendererGl extends SlideRenderer { xMax: number, yMin: number, yMax: number, - ): WebGLVertexArrayObject { - if (this._context.is2dGl()) return; + ): WebGLVertexArrayObject | undefined { + if (this._context!.is2dGl()) return; - const gl = this._context.getGl(); + const gl = this._context!.getGl(); // 5 numbers -> 3 x vertex X,Y,Z and 2x texture X,Y const positions = new Float32Array([ @@ -316,42 +324,42 @@ class SlideRendererGl extends SlideRenderer { const vao = gl.createVertexArray(); gl.bindVertexArray(vao); - const positionLocation = gl.getAttribLocation(this._program, 'a_position'); + const positionLocation = gl.getAttribLocation(this._program!, 'a_position'); gl.enableVertexAttribArray(positionLocation); gl.vertexAttribPointer(positionLocation, 3, gl.FLOAT, false, 5 * 4, 0); - const texCoordLocation = gl.getAttribLocation(this._program, 'a_texCoord'); + const texCoordLocation = gl.getAttribLocation(this._program!, 'a_texCoord'); gl.enableVertexAttribArray(texCoordLocation); gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 5 * 4, 3 * 4); - return vao; + return vao!; } public createTexture(image: ImageBitmap) { - return this._context.loadTexture(image); + return this._context!.loadTexture(image); } - public createEmptyTexture(): WebGLTexture | ImageBitmap { - return this._context.createEmptySlide(); + public createEmptyTexture(): WebGLTexture | ImageBitmap | null { + return this._context!.createEmptySlide(); } public deleteCurrentSlideTexture(): void { - this._context.deleteTexture(this.getSlideTexture()); + this._context!.deleteTexture(this.getSlideTexture()); this._slideTexture = null; } public deleteResources(): void { this.pauseVideos(); for (var videoRenderInfo of this._videos) { - videoRenderInfo.deleteResources(this._context); + videoRenderInfo.deleteResources(this._context!); } this.deleteCurrentSlideTexture(); } private initTexture() { - const gl = this._context.getGl(); + const gl = this._context!.getGl(); const texture = gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, texture); @@ -387,9 +395,9 @@ class SlideRendererGl extends SlideRenderer { const video = new VideoRenderInfo(); video.videoElement = this.setupVideo(video, videoInfo.url); - video.replaceTexture(this._context, this.initTexture()); + video.replaceTexture(this._context!, this.initTexture()); video.replaceVao( - this._context, + this._context!, this.setupRectangleInDocumentPositions( videoInfo.x, videoInfo.y, @@ -397,7 +405,7 @@ class SlideRendererGl extends SlideRenderer { videoInfo.height, docWidth, docHeight, - ), + )!, ); this._videos.push(video); } @@ -411,7 +419,7 @@ class SlideRendererGl extends SlideRenderer { height: number, docWidth: number, docHeight: number, - ): WebGLVertexArrayObject { + ): WebGLVertexArrayObject | undefined { const positions = this.getDocumentPositions( x, y, @@ -429,7 +437,7 @@ class SlideRendererGl extends SlideRenderer { } protected render() { - const gl = this._context.getGl(); + const gl = this._context!.getGl(); gl.viewport(0, 0, this._canvas.width, this._canvas.height); gl.clearColor(0.0, 0.0, 0.0, 1.0); gl.clear(gl.COLOR_BUFFER_BIT); @@ -438,7 +446,7 @@ class SlideRendererGl extends SlideRenderer { gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, this.getSlideTexture()); - gl.uniform1i(gl.getUniformLocation(this._program, 'slideTexture'), 0); + gl.uniform1i(gl.getUniformLocation(this._program!, 'slideTexture'), 0); gl.bindVertexArray(this._vao); gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); diff --git a/browser/src/slideshow/SlideShowPresenter.ts b/browser/src/slideshow/SlideShowPresenter.ts index 8de42251dfd64..c0c508fe7f4a6 100644 --- a/browser/src/slideshow/SlideShowPresenter.ts +++ b/browser/src/slideshow/SlideShowPresenter.ts @@ -43,8 +43,8 @@ interface SlideInfo { fillColor: string; }; animations: any; - next: string; - prev: string; + next: string | null; + prev: string | null; } interface PresentationInfo { @@ -57,16 +57,16 @@ interface PresentationInfo { class SlideShowPresenter { _map: any = null; - _presentationInfo: PresentationInfo = null; - _slideCompositor: SlideCompositor = null; - _fullscreen: Element = null; - _presenterContainer: HTMLDivElement = null; - _slideShowCanvas: HTMLCanvasElement = null; + _presentationInfo: PresentationInfo | null = null; + _slideCompositor: SlideCompositor | null = null; + _fullscreen: Element | null = null; + _presenterContainer: HTMLDivElement | null = null; + _slideShowCanvas: HTMLCanvasElement | null = null; _slideShowWindowProxy: ReturnType = null; - _windowCloseInterval: ReturnType = null; + _windowCloseInterval: ReturnType | null = null; _currentSlide: number = 0; - _slideRenderer: SlideRenderer = null; - _animationsHandler: SlideAnimations = null; + _slideRenderer: SlideRenderer | null = null; + _animationsHandler: SlideAnimations | null = null; _canvasLoader: CanvasLoader | null = null; _isAnimationPlaying: boolean = false; _isPresentInWindow: boolean = false; @@ -120,7 +120,7 @@ class SlideShowPresenter { return !!this._fullscreen; } - public getCanvas(): HTMLCanvasElement { + public getCanvas(): HTMLCanvasElement | null { return this._slideShowCanvas; } @@ -141,7 +141,7 @@ class SlideShowPresenter { _stopFullScreen() { if (!this._slideShowCanvas) return; - this._slideRenderer.deleteResources(); + this._slideRenderer!.deleteResources(); // window.removeEventListener('keydown', this._onCanvasKeyDown.bind(this)); window.removeEventListener( @@ -179,14 +179,14 @@ class SlideShowPresenter { return; } - this.startTimer(info.loopAndRepeatDuration); + this.startTimer(info.loopAndRepeatDuration!); return; } - this._slideCompositor.fetchAndRun(this._currentSlide, () => { + this._slideCompositor!.fetchAndRun(this._currentSlide, () => { this._currentSlide++; this._doTransition( - this._slideRenderer.getSlideTexture(), + this._slideRenderer!.getSlideTexture(), this._currentSlide, ); }); @@ -203,13 +203,13 @@ class SlideShowPresenter { // if we are at exit text slide, we have to go back.... if (this._currentSlide === this._getSlidesCount()) { this._currentSlide--; - this._slideCompositor.fetchAndRun(this._currentSlide, () => { + this._slideCompositor!.fetchAndRun(this._currentSlide, () => { this._doPresentation(); }); return; } - this._slideCompositor.fetchAndRun(this._currentSlide, () => { + this._slideCompositor!.fetchAndRun(this._currentSlide, () => { this._currentSlide--; this._doPresentation(); }); @@ -290,27 +290,28 @@ class SlideShowPresenter { this._slideRenderer = new SlideRenderer2d(canvas); } - if (this._slideRenderer._context.is2dGl()) this._slideShowHandler.disable(); + if (this._slideRenderer._context!.is2dGl()) + this._slideShowHandler.disable(); return canvas; } private exitSlideshowWithWarning() { - new SlideShow.StaticTextRenderer(this._slideRenderer._context).display( + new SlideShow.StaticTextRenderer(this._slideRenderer!._context).display( _('Click to exit presentation...'), ); } private startTimer(loopAndRepeatDuration: number) { console.debug('SlideShowPresenter.startTimer'); - const renderContext = this._slideRenderer._context; + const renderContext = this._slideRenderer!._context; const onTimeoutHandler = this._slideShowNavigator.goToFirstSlide.bind( this._slideShowNavigator, ); const PauseTimerType = renderContext instanceof RenderContextGl ? PauseTimerGl : PauseTimer2d; const pauseTimer: PauseTimer = new PauseTimerType( - renderContext, + renderContext!, loopAndRepeatDuration, onTimeoutHandler, ); @@ -321,7 +322,7 @@ class SlideShowPresenter { endPresentation(force: boolean) { console.debug('SlideShowPresenter.endPresentation'); const settings = this._presentationInfo; - if (force || !settings.isEndless) { + if (force || !settings!.isEndless) { if (!force) { this.exitSlideshowWithWarning(); return; @@ -330,17 +331,17 @@ class SlideShowPresenter { this._stopFullScreen(); return; } - this.startTimer(settings.loopAndRepeatDuration); + this.startTimer(settings!.loopAndRepeatDuration!); } private startLoader(): void { try { - this._canvasLoader = new CanvasLoaderGl(this._slideRenderer._context); + this._canvasLoader = new CanvasLoaderGl(this._slideRenderer!._context!); } catch (error) { - this._canvasLoader = new CanvasLoader2d(this._slideRenderer._context); + this._canvasLoader = new CanvasLoader2d(this._slideRenderer!._context!); } - this._canvasLoader.startLoader(); + this._canvasLoader!.startLoader(); } public stopLoader(): void { @@ -354,34 +355,34 @@ class SlideShowPresenter { // port to SlideShowHandler transitionType = 'NONE' (?) // to be removed _doTransition( - currentTexture: WebGLTexture | ImageBitmap, + currentTexture: WebGLTexture | ImageBitmap | null, nextSlideNumber: number, ) { - this._slideCompositor.fetchAndRun(nextSlideNumber, () => { + this._slideCompositor!.fetchAndRun(nextSlideNumber, () => { const slideInfo = this.getSlideInfo(nextSlideNumber); if ( - slideInfo.transitionType == undefined || - slideInfo.transitionType.length == 0 + slideInfo!.transitionType == undefined || + slideInfo!.transitionType.length == 0 ) { - slideInfo.transitionType = 'NONE'; + slideInfo!.transitionType = 'NONE'; } this.stopLoader(); - const nextSlide = this._slideCompositor.getSlide(nextSlideNumber); - const nextTexture = this._slideRenderer.createTexture(nextSlide); + const nextSlide = this._slideCompositor!.getSlide(nextSlideNumber); + const nextTexture = this._slideRenderer!.createTexture(nextSlide); const transitionParameters = new TransitionParameters(); - transitionParameters.context = this._slideRenderer._context; + transitionParameters.context = this._slideRenderer!._context; transitionParameters.current = currentTexture; transitionParameters.next = nextTexture; transitionParameters.slideInfo = slideInfo; transitionParameters.callback = () => { - this._slideRenderer.renderSlide( + this._slideRenderer!.renderSlide( nextTexture, - slideInfo, - this._presentationInfo.docWidth, - this._presentationInfo.docHeight, + slideInfo!, + this._presentationInfo!.docWidth, + this._presentationInfo!.docHeight, ); }; @@ -424,7 +425,7 @@ class SlideShowPresenter { // TODO _doPresentation (don't hack this, no more used) to be removed _doPresentation(isStarting = false) { - this._slideRenderer.pauseVideos(); + this._slideRenderer!.pauseVideos(); const slideInfo = this.getSlideInfo(this._currentSlide); // To speed up the process, if we have transition info, then only render // a black empty slide as the first slide. otherwise, directly render the first slide. @@ -434,19 +435,19 @@ class SlideShowPresenter { slideInfo.transitionType != 'NONE' ) { // generate empty black slide - const blankTexture = this._slideRenderer.createEmptyTexture(); + const blankTexture = this._slideRenderer!.createEmptyTexture(); this._doTransition(blankTexture, this._currentSlide); } else { - this._slideCompositor.fetchAndRun(this._currentSlide, () => { + this._slideCompositor!.fetchAndRun(this._currentSlide, () => { const slideInfo = this.getSlideInfo(this._currentSlide); - const slideImage = this._slideCompositor.getSlide(this._currentSlide); - const currentTexture = this._slideRenderer.createTexture(slideImage); - this._slideRenderer.renderSlide( + const slideImage = this._slideCompositor!.getSlide(this._currentSlide); + const currentTexture = this._slideRenderer!.createTexture(slideImage); + this._slideRenderer!.renderSlide( currentTexture, - slideInfo, - this._presentationInfo.docWidth, - this._presentationInfo.docHeight, + slideInfo!, + this._presentationInfo!.docWidth, + this._presentationInfo!.docHeight, ); this.stopLoader(); }); @@ -493,11 +494,11 @@ class SlideShowPresenter { const body = this._slideShowWindowProxy.document.querySelector('#root-in-window'); this._presenterContainer = this._createPresenterHTML( - body, + body!, window.screen.width, window.screen.height, ); - this._slideShowCanvas.focus(); + this._slideShowCanvas!.focus(); this._slideShowWindowProxy.addEventListener( 'resize', @@ -571,7 +572,7 @@ class SlideShowPresenter { window.screen.width, window.screen.height, ); - if (this._presenterContainer.requestFullscreen) { + if (this._presenterContainer?.requestFullscreen) { this._presenterContainer .requestFullscreen() .then(() => { @@ -687,10 +688,10 @@ class SlideShowPresenter { ); } - this._slideCompositor.onUpdatePresentationInfo(); - const canvasSize = this._slideCompositor.getCanvasSize(); - this._slideShowCanvas.width = canvasSize[0]; - this._slideShowCanvas.height = canvasSize[1]; + this._slideCompositor!.onUpdatePresentationInfo(); + const canvasSize = this._slideCompositor!.getCanvasSize(); + this._slideShowCanvas!.width = canvasSize[0]; + this._slideShowCanvas!.height = canvasSize[1]; this.centerCanvas(); this.startLoader(); diff --git a/browser/src/slideshow/StaticTextRenderer.ts b/browser/src/slideshow/StaticTextRenderer.ts index 560a80d2ee1a3..1b387fd1f27d8 100644 --- a/browser/src/slideshow/StaticTextRenderer.ts +++ b/browser/src/slideshow/StaticTextRenderer.ts @@ -43,21 +43,21 @@ class StaticTextRenderer extends TextureAnimationBase { // Create an off-screen 2D canvas with text centered public create2DCanvasWithText(displayText: string): HTMLCanvasElement { const canvas = document.createElement('canvas'); - canvas.width = this.context.canvas.width; - canvas.height = this.context.canvas.height; + canvas.width = this.context!.canvas.width; + canvas.height = this.context!.canvas.height; const ctx = canvas.getContext('2d'); // Set background color - ctx.fillStyle = 'black'; - ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx!.fillStyle = 'black'; + ctx!.fillRect(0, 0, canvas.width, canvas.height); // Set text attributes - ctx.fillStyle = 'white'; - ctx.font = '20px sans-serif'; - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; + ctx!.fillStyle = 'white'; + ctx!.font = '20px sans-serif'; + ctx!.textAlign = 'center'; + ctx!.textBaseline = 'middle'; - ctx.fillText(displayText, canvas.width / 2, canvas.height / 2); + ctx!.fillText(displayText, canvas.width / 2, canvas.height / 2); return canvas; } @@ -104,8 +104,8 @@ class StaticTextRenderer extends TextureAnimationBase { this.gl.viewport( 0, 0, - this.context.canvas.width, - this.context.canvas.height, + this.context!.canvas.width, + this.context!.canvas.height, ); this.gl.clearColor(0.0, 0.0, 0.0, 1.0); this.gl.clear(this.gl.COLOR_BUFFER_BIT); @@ -116,7 +116,7 @@ class StaticTextRenderer extends TextureAnimationBase { this.gl.bindTexture(this.gl.TEXTURE_2D, this.textTexture); const textureLocation = this.gl.getUniformLocation( - this.program, + this.program!, 'u_texture', ); this.gl.uniform1i(textureLocation, 0); diff --git a/browser/src/slideshow/Transition2d.ts b/browser/src/slideshow/Transition2d.ts index 3889f37d84bfd..19a13e6cdb319 100644 --- a/browser/src/slideshow/Transition2d.ts +++ b/browser/src/slideshow/Transition2d.ts @@ -13,15 +13,15 @@ declare var SlideShow: any; class TransitionParameters { - public context: RenderContext = null; - public current: WebGLTexture | ImageBitmap = null; - public next: WebGLTexture | ImageBitmap = null; - public slideInfo: SlideInfo = null; - public callback: VoidFunction = null; + public context: RenderContext | null = null; + public current: WebGLTexture | ImageBitmap | null = null; + public next: WebGLTexture | ImageBitmap | null = null; + public slideInfo: SlideInfo | null = null; + public callback: VoidFunction | null = null; } abstract class TransitionBase extends SlideChangeGl { - protected slideInfo: SlideInfo = null; + protected slideInfo: SlideInfo | null = null; protected constructor(transitionParameters: TransitionParameters) { super(transitionParameters); @@ -59,10 +59,10 @@ abstract class TransitionBase extends SlideChangeGl { this.gl.bindTexture(this.gl.TEXTURE_2D, null); // Detach and delete shaders from the program - const attachedShaders = this.gl.getAttachedShaders(this.program); + const attachedShaders = this.gl.getAttachedShaders(this.program!); if (attachedShaders) { attachedShaders.forEach((shader) => { - this.gl.detachShader(this.program, shader); + this.gl.detachShader(this.program!, shader); this.gl.deleteShader(shader); }); } @@ -103,21 +103,24 @@ class Transition2d extends TransitionBase { public render(nT: number) { const gl = this.gl; - gl.viewport(0, 0, this.context.canvas.width, this.context.canvas.height); + gl.viewport(0, 0, this.context!.canvas.width, this.context!.canvas.height); gl.clearColor(0.0, 0.0, 0.0, 1.0); gl.clear(gl.COLOR_BUFFER_BIT); gl.useProgram(this.program); - gl.uniform1f(gl.getUniformLocation(this.program, 'time'), nT); + gl.uniform1f(gl.getUniformLocation(this.program!, 'time'), nT); gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, this.leavingSlide); - gl.uniform1i(gl.getUniformLocation(this.program, 'leavingSlideTexture'), 0); + gl.uniform1i( + gl.getUniformLocation(this.program!, 'leavingSlideTexture'), + 0, + ); gl.activeTexture(gl.TEXTURE1); gl.bindTexture(gl.TEXTURE_2D, this.enteringSlide); gl.uniform1i( - gl.getUniformLocation(this.program, 'enteringSlideTexture'), + gl.getUniformLocation(this.program!, 'enteringSlideTexture'), 1, ); diff --git a/browser/src/slideshow/Transition3d.ts b/browser/src/slideshow/Transition3d.ts index d1cfda9438cfe..dbf9dded69c26 100644 --- a/browser/src/slideshow/Transition3d.ts +++ b/browser/src/slideshow/Transition3d.ts @@ -169,14 +169,14 @@ class Transition3d extends TransitionBase { const modelViewMatrix = this.calculateModelViewMatrix(); this.gl.uniformMatrix4fv( - this.gl.getUniformLocation(this.program, 'u_modelViewMatrix'), + this.gl.getUniformLocation(this.program!, 'u_modelViewMatrix'), false, modelViewMatrix, ); const projectionMatrix = this.calculateProjectionMatrix(); this.gl.uniformMatrix4fv( - this.gl.getUniformLocation(this.program, 'u_projectionMatrix'), + this.gl.getUniformLocation(this.program!, 'u_projectionMatrix'), false, projectionMatrix, ); @@ -189,7 +189,7 @@ class Transition3d extends TransitionBase { 0, 0, 0, 1 ]); this.gl.uniformMatrix4fv( - this.gl.getUniformLocation(this.program, 'u_sceneTransformMatrix'), + this.gl.getUniformLocation(this.program!, 'u_sceneTransformMatrix'), false, sceneTransformMatrix, ); @@ -202,7 +202,7 @@ class Transition3d extends TransitionBase { 0, 0, 0, 1 ]); this.gl.uniformMatrix4fv( - this.gl.getUniformLocation(this.program, 'u_primitiveTransformMatrix'), + this.gl.getUniformLocation(this.program!, 'u_primitiveTransformMatrix'), false, primitiveTransformMatrix, ); @@ -215,7 +215,7 @@ class Transition3d extends TransitionBase { 0, 0, 0, 1 ]); this.gl.uniformMatrix4fv( - this.gl.getUniformLocation(this.program, 'u_operationsTransformMatrix'), + this.gl.getUniformLocation(this.program!, 'u_operationsTransformMatrix'), false, operationsTransformMatrix, ); @@ -232,26 +232,26 @@ class Transition3d extends TransitionBase { this.gl.viewport( 0, 0, - this.context.canvas.width, - this.context.canvas.height, + this.context!.canvas.width, + this.context!.canvas.height, ); this.gl.clearColor(0.0, 0.0, 0.0, 1.0); this.gl.clear(this.gl.COLOR_BUFFER_BIT); this.gl.useProgram(this.program); - this.gl.uniform1f(this.gl.getUniformLocation(this.program, 'time'), nT); + this.gl.uniform1f(this.gl.getUniformLocation(this.program!, 'time'), nT); this.gl.activeTexture(this.gl.TEXTURE0); this.gl.bindTexture(this.gl.TEXTURE_2D, this.leavingSlide); this.gl.uniform1i( - this.gl.getUniformLocation(this.program, 'leavingSlideTexture'), + this.gl.getUniformLocation(this.program!, 'leavingSlideTexture'), 0, ); this.gl.activeTexture(this.gl.TEXTURE1); this.gl.bindTexture(this.gl.TEXTURE_2D, this.enteringSlide); this.gl.uniform1i( - this.gl.getUniformLocation(this.program, 'enteringSlideTexture'), + this.gl.getUniformLocation(this.program!, 'enteringSlideTexture'), 1, ); diff --git a/browser/src/slideshow/engine/ActivityFactory.ts b/browser/src/slideshow/engine/ActivityFactory.ts index d54844deaef65..976109338f1ef 100644 --- a/browser/src/slideshow/engine/ActivityFactory.ts +++ b/browser/src/slideshow/engine/ActivityFactory.ts @@ -15,8 +15,8 @@ function createActivity( aActivityParamSet: ActivityParamSet, aAnimationNode: AnimationBaseNode3, aAnimation: AnimationBase, - aInterpolator: PropertyInterpolatorType, -): AnimationActivity { + aInterpolator: PropertyInterpolatorType | null | undefined, +): AnimationActivity | null | undefined { const eCalcMode = aAnimationNode.getCalcMode(); const sAttributeName = aAnimationNode.getAttributeName(); @@ -40,15 +40,15 @@ function createActivity( ); if (aAnimationNode.getFormula()) { - let sFormula: string = aAnimationNode.getFormula(); + let sFormula: string | null | undefined = aAnimationNode.getFormula(); const reMath = /abs|sqrt|asin|acos|atan|sin|cos|tan|exp|log|min|max/g; - sFormula = sFormula.replace(reMath, 'Math.$&'); + sFormula = sFormula!.replace(reMath, 'Math.$&'); sFormula = sFormula.replace(/pi(?!\w)/g, 'Math.PI'); sFormula = sFormula.replace(/e(?!\w)/g, 'Math.E'); sFormula = sFormula.replace(/\$/g, '__PARAM0__'); const aAnimatedElement = aAnimationNode.getAnimatedElement(); - const aBBox = aAnimatedElement.getBaseBBox(); + const aBBox = aAnimatedElement!.getBaseBBox(); // the following variable are used for evaluating sFormula /* eslint-disable no-unused-vars */ @@ -58,7 +58,7 @@ function createActivity( const y = (aBBox.y + aBBox.height / 2) / aActivityParamSet.nSlideHeight; aActivityParamSet.aFormula = function (__PARAM0__: any) { - return eval(sFormula); + return eval(sFormula!); }; /* eslint-enable no-unused-vars */ } @@ -67,13 +67,13 @@ function createActivity( // do we have a value list ? const aValueSet = aAnimationNode.getValues(); - const nValueSetSize = aValueSet.length; + const nValueSetSize = aValueSet!.length; if (nValueSetSize != 0) { // Value list activity - if (aActivityParamSet.aDiscreteTimes.length == 0) { + if (aActivityParamSet.aDiscreteTimes!.length == 0) { for (let i = 0; i < nValueSetSize; ++i) - aActivityParamSet.aDiscreteTimes.push(i / nValueSetSize); + aActivityParamSet.aDiscreteTimes!.push(i / nValueSetSize); } switch (eCalcMode) { @@ -94,7 +94,8 @@ function createActivity( ); default: window.app.console.log( - 'createActivity: unexpected calculation mode: ' + CalcMode[eCalcMode], + 'createActivity: unexpected calculation mode: ' + + CalcMode[eCalcMode!], ); // FALLTHROUGH intended case CalcMode.Paced: @@ -130,7 +131,8 @@ function createActivity( default: window.app.console.log( - 'createActivity: unexpected calculation mode: ' + CalcMode[eCalcMode], + 'createActivity: unexpected calculation mode: ' + + CalcMode[eCalcMode!], ); // FALLTHROUGH intended case CalcMode.Paced: @@ -153,8 +155,8 @@ function createValueListActivity( aActivityParamSet: ActivityParamSet, aAnimationNode: AnimationBaseNode3, aAnimation: AnimationBase, - aInterpolator: PropertyInterpolatorType, - ValueListActivityCtor: ValueListActivityCtorType, + aInterpolator: PropertyInterpolatorType | null | undefined, + ValueListActivityCtor: ValueListActivityCtorType | null | undefined, bAccumulate: boolean, eValueType: PropertyValueType, ): AnimationActivity { @@ -170,7 +172,7 @@ function createValueListActivity( eValueType, aValueList, aValueSet, - aAnimatedElement.getBaseBBox(), + aAnimatedElement!.getBaseBBox(), aActivityParamSet.nSlideWidth, aActivityParamSet.nSlideHeight, ); @@ -181,7 +183,7 @@ function createValueListActivity( ); } - return new ValueListActivityCtor( + return new ValueListActivityCtor!( aValueList, aActivityParamSet, aAnimation, @@ -195,7 +197,7 @@ function createFromToByActivity( aActivityParamSet: ActivityParamSet, aAnimationNode: AnimationBaseNode3, aAnimation: any, - aInterpolator: PropertyInterpolatorType, + aInterpolator: PropertyInterpolatorType | null | undefined, ClassTemplateInstance: FromToByActivityCtorType, bAccumulate: boolean, eValueType: PropertyValueType, @@ -226,7 +228,7 @@ function createFromToByActivity( eValueType, aValueList, aValueSet, - aAnimatedElement.getBaseBBox(), + aAnimatedElement!.getBaseBBox(), aActivityParamSet.nSlideWidth, aActivityParamSet.nSlideHeight, ); @@ -256,7 +258,7 @@ function createFromToByActivity( function extractAttributeValues( eValueType: PropertyValueType, aValueList: any[], - aValueSet: any[], + aValueSet: any[] | null, aBBox: DOMRect, nSlideWidth: number, nSlideHeight: number, @@ -273,31 +275,31 @@ function extractAttributeValues( ); break; case PropertyValueType.Bool: - for (i = 0; i < aValueSet.length; ++i) { - const aValue = booleanParser(aValueSet[i]); + for (i = 0; i < aValueSet!.length; ++i) { + const aValue = booleanParser(aValueSet![i]); aValueList.push(aValue); } break; case PropertyValueType.String: - for (i = 0; i < aValueSet.length; ++i) { - aValueList.push(aValueSet[i]); + for (i = 0; i < aValueSet!.length; ++i) { + aValueList.push(aValueSet![i]); } break; case PropertyValueType.Enum: - for (i = 0; i < aValueSet.length; ++i) { - aValueList.push(aValueSet[i]); + for (i = 0; i < aValueSet!.length; ++i) { + aValueList.push(aValueSet![i]); } break; case PropertyValueType.Color: - for (i = 0; i < aValueSet.length; ++i) { + for (i = 0; i < aValueSet!.length; ++i) { const aValue: any = null; aValueList.push(aValue); } break; case PropertyValueType.TupleNumber: - for (i = 0; i < aValueSet.length; ++i) { - if (typeof aValueSet[i] === 'string') { - const aTuple = aValueSet[i].split(','); + for (i = 0; i < aValueSet!.length; ++i) { + if (typeof aValueSet![i] === 'string') { + const aTuple = aValueSet![i].split(','); const aValue: number[] = []; evalValuesAttribute(aValue, aTuple, aBBox, nSlideWidth, nSlideHeight); aValueList.push(aValue); @@ -315,7 +317,7 @@ function extractAttributeValues( function evalValuesAttribute( aValueList: number[], - aValueSet: any[], + aValueSet: any[] | null, aBBox: DOMRect, nSlideWidth: number, nSlideHeight: number, @@ -330,8 +332,8 @@ function evalValuesAttribute( const reMath = /abs|sqrt|asin|acos|atan|sin|cos|tan|exp|log|min|max/g; - for (let i = 0; i < aValueSet.length; ++i) { - let sValue: string = aValueSet[i]; + for (let i = 0; i < aValueSet!.length; ++i) { + let sValue: string = aValueSet![i]; if (sValue) { sValue = sValue.replace(reMath, 'Math.$&'); sValue = sValue.replace(/pi(?!\w)/g, 'Math.PI'); diff --git a/browser/src/slideshow/engine/ActivityQueue.ts b/browser/src/slideshow/engine/ActivityQueue.ts index 2419963756939..49242132109c4 100644 --- a/browser/src/slideshow/engine/ActivityQueue.ts +++ b/browser/src/slideshow/engine/ActivityQueue.ts @@ -49,14 +49,14 @@ class ActivityQueue { while (this.aCurrentActivityWaitingSet.length != 0) { const aActivity = this.aCurrentActivityWaitingSet.shift(); - let bReinsert = false; + let bReinsert: boolean | undefined = false; - bReinsert = aActivity.perform(); + bReinsert = aActivity!.perform(); if (bReinsert) { - this.aCurrentActivityReinsertSet.push(aActivity); + this.aCurrentActivityReinsertSet.push(aActivity!); } else { - this.aDequeuedActivitySet.push(aActivity); + this.aDequeuedActivitySet.push(aActivity!); } } diff --git a/browser/src/slideshow/engine/AnimatedElement.ts b/browser/src/slideshow/engine/AnimatedElement.ts index a8d6d125b0d13..87764461f5f67 100644 --- a/browser/src/slideshow/engine/AnimatedElement.ts +++ b/browser/src/slideshow/engine/AnimatedElement.ts @@ -114,18 +114,18 @@ namespace PropertyInterpolator { aLerpFunctorMap.set(CalcMode.Linear, aLinearLerpFunctor); export function getInterpolator( - eCalcMode: CalcMode, + eCalcMode: CalcMode | undefined, eValueType: PropertyValueType, - ): PropertyInterpolatorType { + ): PropertyInterpolatorType | undefined | null { if ( - aLerpFunctorMap.has(eCalcMode) && - aLerpFunctorMap.get(eCalcMode).has(eValueType) + aLerpFunctorMap.has(eCalcMode!) && + aLerpFunctorMap.get(eCalcMode!)!.has(eValueType) ) { - return aLerpFunctorMap.get(eCalcMode).get(eValueType); + return aLerpFunctorMap.get(eCalcMode!)!.get(eValueType); } window.app.console.log( 'aInterpolatorHandler.getInterpolator: not found any valid interpolator for calc mode ' + - CalcMode[eCalcMode] + + CalcMode[eCalcMode!] + ' and value type ' + PropertyValueType[eValueType], ); @@ -222,14 +222,14 @@ interface AnimatedElementState { class AnimatedElement { private sId: string; private slideHash: string; - private aLayer: HTMLImageElement; + private aLayer: HTMLImageElement | null; private aBaseBBox: BoundingBoxType; private aBaseElement: AnimatedObjectType; private aActiveBBox: BoundingBoxType; private aActiveElement: AnimatedObjectType; private nBaseCenterX: number; private nBaseCenterY: number; - private aClipPath: SVGPathElement = null; + private aClipPath: SVGPathElement | null = null; private aPreviousElement: AnimatedObjectType = null; private aStateSet = new Map(); private eAdditiveMode = AdditiveMode.Replace; @@ -247,8 +247,8 @@ class AnimatedElement { constructor( sId: string, slideHash: string, - aLayer: HTMLImageElement, - aBBox: BoundingBoxType, + aLayer: HTMLImageElement | null, + aBBox: BoundingBoxType | null, ) { if (!aLayer) { window.app.console.log( @@ -448,16 +448,16 @@ class AnimatedElement { ')', ); const aState = this.aStateSet.get(nAnimationNodeId); - const bRet = this.setToElement(aState.aElement); + const bRet = this.setToElement(aState!.aElement); if (bRet) { - this.nCenterX = aState.nCenterX; - this.nCenterY = aState.nCenterY; - this.nScaleFactorX = aState.nScaleFactorX; - this.nScaleFactorY = aState.nScaleFactorY; - this.nRotationAngle = aState.nRotationAngle; - this.aTMatrix = aState.aTMatrix; - this.nOpacity = aState.nOpacity; - this.bVisible = aState.bVisible; + this.nCenterX = aState!.nCenterX; + this.nCenterY = aState!.nCenterY; + this.nScaleFactorX = aState!.nScaleFactorX; + this.nScaleFactorY = aState!.nScaleFactorY; + this.nRotationAngle = aState!.nRotationAngle; + this.aTMatrix = aState!.aTMatrix; + this.nOpacity = aState!.nOpacity; + this.bVisible = aState!.bVisible; } return bRet; } @@ -483,7 +483,7 @@ class AnimatedElement { // this.aActiveBBox.y); // aClipPath.matrixTransform( aTranslation ); const sPathData = aClipPath.getAttribute('d'); - this.aClipPath.setAttribute('d', sPathData); + this.aClipPath.setAttribute('d', sPathData!); } } diff --git a/browser/src/slideshow/engine/AnimationFactory.ts b/browser/src/slideshow/engine/AnimationFactory.ts index ce3f27bc0cf6a..036cdcbe5a80c 100644 --- a/browser/src/slideshow/engine/AnimationFactory.ts +++ b/browser/src/slideshow/engine/AnimationFactory.ts @@ -15,7 +15,7 @@ type GetterType = () => any; type SetterType = (x: any) => any; abstract class AnimationBase { - public abstract start(aAnimatableElement: AnimatedElement): void; + public abstract start(aAnimatableElement: AnimatedElement | null): void; public abstract perform(aValue: any, last?: boolean): void; @@ -27,9 +27,9 @@ abstract class AnimationBase { class GenericAnimation extends AnimationBase { protected readonly aGetValueFunc: GetterType; protected readonly aSetValueFunc: SetterType; - private readonly aGetModifier: SetterType; - private readonly aSetModifier: SetterType; - private aAnimatableElement: AnimatedElement; + private readonly aGetModifier: SetterType | undefined; + private readonly aSetModifier: SetterType | undefined; + private aAnimatableElement: AnimatedElement | null; private bAnimationStarted: boolean; constructor( @@ -41,7 +41,7 @@ class GenericAnimation extends AnimationBase { super(); assert( - aGetValueFunc && aSetValueFunc, + aGetValueFunc! && aSetValueFunc, 'GenericAnimation constructor: get value functor and/or set value functor are not valid', ); @@ -60,7 +60,7 @@ class GenericAnimation extends AnimationBase { ); this.aAnimatableElement = aAnimatableElement; - this.aAnimatableElement.notifyAnimationStart(); + this.aAnimatableElement!.notifyAnimationStart(); if (!this.bAnimationStarted) this.bAnimationStarted = true; } @@ -68,7 +68,7 @@ class GenericAnimation extends AnimationBase { end(): void { if (this.bAnimationStarted) { this.bAnimationStarted = false; - this.aAnimatableElement.notifyAnimationEnd(); + this.aAnimatableElement!.notifyAnimationEnd(); } } @@ -136,11 +136,11 @@ class TupleAnimation extends GenericAnimation { } function createPropertyAnimation( - sAttrName: string, - aAnimatedElement: AnimatedElement, + sAttrName: string | undefined, + aAnimatedElement: AnimatedElement | undefined | null, nWidth: number, nHeight: number, -): AnimationBase { +): AnimationBase | null { const sPropNameAsKey = sAttrName as PropertyGetterSetterMapKeyType; if (!aPropertyGetterSetterMap[sPropNameAsKey]) { window.app.console.log( @@ -161,13 +161,23 @@ function createPropertyAnimation( } // nWidth, nHeight are used here - const aGetModifier = eval(aFunctorSet.getmod); - const aSetModifier = eval(aFunctorSet.setmod); + const aGetModifier = eval(aFunctorSet.getmod!); + const aSetModifier = eval(aFunctorSet.setmod!); const aGetValueMethod = - aAnimatedElement[sGetValueMethod as keyof typeof aAnimatedElement]; + aAnimatedElement![ + sGetValueMethod as keyof Exclude< + typeof aAnimatedElement, + null | undefined + > + ]; const aSetValueMethod = - aAnimatedElement[sSetValueMethod as keyof typeof aAnimatedElement]; + aAnimatedElement![ + sSetValueMethod as keyof Exclude< + typeof aAnimatedElement, + null | undefined + > + ]; return new GenericAnimation( aGetValueMethod.bind(aAnimatedElement), aSetValueMethod.bind(aAnimatedElement), @@ -177,11 +187,11 @@ function createPropertyAnimation( } function createPairPropertyAnimation( - sTransformType: string, - aAnimatedElement: AnimatedElement, + sTransformType: string | undefined, + aAnimatedElement: AnimatedElement | null | undefined, nWidth: number, nHeight: number, -): AnimationBase { +): AnimationBase | null { const sTransformTypeAsKey = sTransformType as PropertyGetterSetterMapKeyType; const aFunctorSet: PropertyGetterSetter = aPropertyGetterSetterMap[sTransformTypeAsKey]; @@ -191,12 +201,13 @@ function createPairPropertyAnimation( const aDefaultValue: any[] = []; const aSizeReference: any[] = []; if (sTransformType === 'scale') { - aDefaultValue[0] = aSizeReference[0] = aAnimatedElement.getBaseBBox().width; + aDefaultValue[0] = aSizeReference[0] = + aAnimatedElement!.getBaseBBox().width; aDefaultValue[1] = aSizeReference[1] = - aAnimatedElement.getBaseBBox().height; + aAnimatedElement!.getBaseBBox().height; } else if (sTransformType === 'translate') { - aDefaultValue[0] = aAnimatedElement.getBaseCenterX(); - aDefaultValue[1] = aAnimatedElement.getBaseCenterY(); + aDefaultValue[0] = aAnimatedElement!.getBaseCenterX(); + aDefaultValue[1] = aAnimatedElement!.getBaseCenterY(); aSizeReference[0] = nWidth; aSizeReference[1] = nHeight; } else { @@ -207,9 +218,19 @@ function createPairPropertyAnimation( } const aGetValueMethod = - aAnimatedElement[sGetValueMethod as keyof typeof aAnimatedElement]; + aAnimatedElement![ + sGetValueMethod as keyof Exclude< + typeof aAnimatedElement, + null | undefined + > + ]; const aSetValueMethod = - aAnimatedElement[sSetValueMethod as keyof typeof aAnimatedElement]; + aAnimatedElement![ + sSetValueMethod as keyof Exclude< + typeof aAnimatedElement, + null | undefined + > + ]; return new TupleAnimation( aGetValueMethod.bind(aAnimatedElement), aSetValueMethod.bind(aAnimatedElement), @@ -225,15 +246,15 @@ enum TransitionClass { } function createClipPolyPolygon( - eTransitionType: TransitionType, - eTransitionSubType: TransitionSubType, + eTransitionType: TransitionType | undefined, + eTransitionSubType: TransitionSubType | undefined, ): any { // TODO implement createClipPolyPolygon window.app.console.log( 'createClipPolyPolygon: Transition Type: ' + - TransitionType[eTransitionType] + + TransitionType[eTransitionType!] + ', Transition SubType: ' + - TransitionSubType[eTransitionSubType], + TransitionSubType[eTransitionSubType!], ); return null; } @@ -311,11 +332,11 @@ aTransitionInfoTable[TransitionType.FADE][TransitionSubType.CROSSFADE] = function createShapeTransition( aActivityParamSet: ActivityParamSet, - aAnimatedElement: AnimatedElement, + aAnimatedElement: AnimatedElement | null | undefined, nSlideWidth: number, nSlideHeight: number, aAnimatedTransitionFilterNode: AnimationTransitionFilterNode, -): AnimationActivity { +): AnimationActivity | null { if (!aAnimatedTransitionFilterNode) { window.app.console.log( 'createShapeTransition: the animated transition filter node is not valid.', @@ -331,8 +352,9 @@ function createShapeTransition( aAnimatedTransitionFilterNode.getTransitionMode() == TransitionMode.in; let aTransitionInfo = null; - if (aTransitionInfoTable[eTransitionType]) - aTransitionInfo = aTransitionInfoTable[eTransitionType][eTransitionSubType]; + if (aTransitionInfoTable[eTransitionType!]) + aTransitionInfo = + aTransitionInfoTable[eTransitionType!][eTransitionSubType!]; const eTransitionClass: TransitionClass = aTransitionInfo ? aTransitionInfo['class'] diff --git a/browser/src/slideshow/engine/Duration.ts b/browser/src/slideshow/engine/Duration.ts index b357792d933db..bfae81983c972 100644 --- a/browser/src/slideshow/engine/Duration.ts +++ b/browser/src/slideshow/engine/Duration.ts @@ -13,10 +13,10 @@ class Duration { private bIndefinite: boolean; private bMedia: boolean; - private nValue: number; + private nValue: number | undefined; private bDefined: boolean; - constructor(sDuration: string) { + constructor(sDuration: string | undefined | null) { this.bIndefinite = false; this.bMedia = false; this.nValue = undefined; @@ -28,7 +28,7 @@ class Duration { else if (sDuration === 'media') this.bMedia = true; else { this.nValue = Timing.parseClockValue(sDuration); - if (this.nValue <= 0.0) this.nValue = 0.001; // duration must be always greater than 0 + if (this.nValue! <= 0.0) this.nValue = 0.001; // duration must be always greater than 0 } this.bDefined = true; } diff --git a/browser/src/slideshow/engine/ElapsedTime.ts b/browser/src/slideshow/engine/ElapsedTime.ts index 2bcb4f220f94c..d4c786f133c22 100644 --- a/browser/src/slideshow/engine/ElapsedTime.ts +++ b/browser/src/slideshow/engine/ElapsedTime.ts @@ -10,7 +10,7 @@ */ class ElapsedTime { - private aTimeBase: ElapsedTime = null; + private aTimeBase: ElapsedTime | null | undefined = null; private nLastQueriedTime: number; private nStartTime: number; private nFrozenTime: number; diff --git a/browser/src/slideshow/engine/Event.ts b/browser/src/slideshow/engine/Event.ts index 53892ded57782..25fe10bf94e0b 100644 --- a/browser/src/slideshow/engine/Event.ts +++ b/browser/src/slideshow/engine/Event.ts @@ -77,10 +77,10 @@ class WakeupEvent extends EventBase { private aActivity: any = null; private aActivityQueue: any; - constructor(aTimer: ElapsedTime, aActivityQueue: any) { + constructor(aTimer: ElapsedTime | null | undefined, aActivityQueue: any) { super(); - this.aTimer = new ElapsedTime(aTimer); + this.aTimer = new ElapsedTime(aTimer!); this.aActivityQueue = aActivityQueue; } @@ -152,16 +152,16 @@ function registerEvent( ); if (eTimingType == TimingType.Offset) { - aSlideShowContext.aTimerEventQueue.addEvent(aEvent); + aSlideShowContext!.aTimerEventQueue.addEvent(aEvent); } else if (aNodeContext.bFirstRun) { - const aEventMultiplexer = aSlideShowContext.aEventMultiplexer; + const aEventMultiplexer = aSlideShowContext!.aEventMultiplexer; if (!aEventMultiplexer) { window.app.console.log( 'registerEvent: event multiplexer not initialized', ); return; } - const aNextEffectEventArray = aSlideShowContext.aNextEffectEventArray; + const aNextEffectEventArray = aSlideShowContext!.aNextEffectEventArray; if (!aNextEffectEventArray) { window.app.console.log( 'registerEvent: next effect event array not initialized', @@ -169,7 +169,7 @@ function registerEvent( return; } const aInteractiveAnimationSequenceMap = - aSlideShowContext.aInteractiveAnimationSequenceMap; + aSlideShowContext!.aInteractiveAnimationSequenceMap; if (!aInteractiveAnimationSequenceMap) { window.app.console.log( 'registerEvent: interactive animation sequence map not initialized', @@ -211,12 +211,12 @@ function registerEvent( case EventTrigger.OnClick: aEventMultiplexer.registerEvent( eEventType, - aSourceEventElement.getId(), + aSourceEventElement!.getId(), aEvent, ); aEventMultiplexer.registerRewindedEffectHandler( - aSourceEventElement.getId(), - aSourceEventElement.charge.bind(aSourceEventElement), + aSourceEventElement!.getId(), + aSourceEventElement!.charge.bind(aSourceEventElement), ); bEventRegistered = true; break; @@ -227,14 +227,14 @@ function registerEvent( } if (bEventRegistered) { const aStartEvent = aInteractiveAnimationSequenceMap - .get(nNodeId) + .get(nNodeId)! .getStartEvent(); const aEndEvent = aInteractiveAnimationSequenceMap - .get(nNodeId) + .get(nNodeId)! .getEndEvent(); aEventMultiplexer.registerEvent( eEventType, - aSourceEventElement.getId(), + aSourceEventElement!.getId(), aStartEvent, ); aEventMultiplexer.registerEvent( @@ -245,7 +245,7 @@ function registerEvent( aEventMultiplexer.registerRewindedEffectHandler( nNodeId, aInteractiveAnimationSequenceMap - .get(nNodeId) + .get(nNodeId)! .chargeEvents.bind( aInteractiveAnimationSequenceMap.get(nNodeId), ), @@ -271,7 +271,7 @@ function registerEvent( const sEventBaseElemId = aTiming.getEventBaseElementId(); if (sEventBaseElemId) { const aAnimationNode = - aNodeContext.aAnimationNodeMap.get(sEventBaseElemId); + aNodeContext.aAnimationNodeMap!.get(sEventBaseElemId); if (!aAnimationNode) { window.app.console.log( 'registerEvent: TimingType.SyncBase: event base element not found: ' + diff --git a/browser/src/slideshow/engine/EventMultiplexer.ts b/browser/src/slideshow/engine/EventMultiplexer.ts index 9327b169d90ce..1652097b81eec 100644 --- a/browser/src/slideshow/engine/EventMultiplexer.ts +++ b/browser/src/slideshow/engine/EventMultiplexer.ts @@ -11,28 +11,39 @@ */ interface MouseClickHandler { - handleClick: (aMouseEvent?: any) => boolean; + handleClick: ((aMouseEvent?: any) => boolean) | null; } class EventMultiplexer { private static CURR_UNIQUE_ID = 0; private nId: number; private aTimerEventQueue: TimerEventQueue; - private aEventMap = new Map>(); - private aAnimationsEndHandler: Handler0 = null; - private aSkipEffectEndHandlerSet: Handler0[] = []; - private aMouseClickHandlerSet: PriorityQueue = null; - private aSkipEffectEvent: DelayEvent = null; - private aRewindCurrentEffectEvent: DelayEvent = null; - private aRewindLastEffectEvent: DelayEvent = null; - private aSkipInteractiveEffectEventSet = new Map(); - private aRewindRunningInteractiveEffectEventSet = new Map< + private aEventMap: Map> | null = + new Map>(); + private aAnimationsEndHandler: Handler0 | null = null; + private aSkipEffectEndHandlerSet: Handler0[] | null = []; + private aMouseClickHandlerSet: PriorityQueue | null = null; + private aSkipEffectEvent: DelayEvent | null = null; + private aRewindCurrentEffectEvent: DelayEvent | null = null; + private aRewindLastEffectEvent: DelayEvent | null = null; + private aSkipInteractiveEffectEventSet: Map | null = + new Map(); + private aRewindRunningInteractiveEffectEventSet: Map< number, DelayEvent + > | null = new Map(); + private aRewindEndedInteractiveEffectEventSet: Map< + number, + DelayEvent + > | null = new Map(); + private aRewindedEffectHandlerSet: Map | null = new Map< + string, + Handler0 + >(); + private aElementChangedHandlerSet: Map | null = new Map< + string, + Handler1 >(); - private aRewindEndedInteractiveEffectEventSet = new Map(); - private aRewindedEffectHandlerSet = new Map(); - private aElementChangedHandlerSet = new Map(); constructor(aTimerEventQueue: TimerEventQueue) { this.nId = EventMultiplexer.getUniqueId(); @@ -46,20 +57,20 @@ class EventMultiplexer { } clear() { - this.aEventMap.clear(); + this.aEventMap!.clear(); this.aEventMap = null; this.aSkipEffectEndHandlerSet = null; - this.aMouseClickHandlerSet.clear(); + this.aMouseClickHandlerSet!.clear(); this.aMouseClickHandlerSet = null; - this.aSkipInteractiveEffectEventSet.clear(); + this.aSkipInteractiveEffectEventSet!.clear(); this.aSkipInteractiveEffectEventSet = null; - this.aRewindRunningInteractiveEffectEventSet.clear(); + this.aRewindRunningInteractiveEffectEventSet!.clear(); this.aRewindRunningInteractiveEffectEventSet = null; - this.aRewindEndedInteractiveEffectEventSet.clear(); + this.aRewindEndedInteractiveEffectEventSet!.clear(); this.aRewindEndedInteractiveEffectEventSet = null; - this.aRewindedEffectHandlerSet.clear(); + this.aRewindedEffectHandlerSet!.clear(); this.aRewindedEffectHandlerSet = null; - this.aElementChangedHandlerSet.clear(); + this.aElementChangedHandlerSet!.clear(); this.aElementChangedHandlerSet = null; } @@ -68,16 +79,16 @@ class EventMultiplexer { } hasRegisteredMouseClickHandlers() { - return !this.aMouseClickHandlerSet.isEmpty(); + return !this.aMouseClickHandlerSet!.isEmpty(); } registerMouseClickHandler(aHandler: MouseClickHandler, nPriority: number) { const aHandlerEntry = new PriorityEntry(aHandler, nPriority); - this.aMouseClickHandlerSet.push(aHandlerEntry); + this.aMouseClickHandlerSet!.push(aHandlerEntry); } notifyMouseClick(aMouseEvent: any) { - const aMouseClickHandlerSet = this.aMouseClickHandlerSet.clone(); + const aMouseClickHandlerSet = this.aMouseClickHandlerSet!.clone(); while (!aMouseClickHandlerSet.isEmpty()) { const aHandlerEntry = aMouseClickHandlerSet.top(); aMouseClickHandlerSet.pop(); @@ -94,24 +105,24 @@ class EventMultiplexer { ) { const sNotifierId = '' + aNotifierId; this.DBG('registerEvent', eEventType, sNotifierId); - if (!this.aEventMap.has(eEventType)) { - this.aEventMap.set(eEventType, new Map()); + if (!this.aEventMap!.has(eEventType)) { + this.aEventMap!.set(eEventType, new Map()); } - if (!this.aEventMap.get(eEventType).has(sNotifierId)) { - this.aEventMap.get(eEventType).set(sNotifierId, []); + if (!this.aEventMap!.get(eEventType)!.has(sNotifierId)) { + this.aEventMap!.get(eEventType)!.set(sNotifierId, []); } - this.aEventMap.get(eEventType).get(sNotifierId).push(aEvent); + this.aEventMap!.get(eEventType)!.get(sNotifierId)!.push(aEvent); } notifyEvent(eEventType: EventTrigger, aNotifierId: number | string) { const sNotifierId = '' + aNotifierId; this.DBG('notifyEvent', eEventType, sNotifierId); - if (this.aEventMap.has(eEventType)) { - if (this.aEventMap.get(eEventType).has(sNotifierId)) { - const aEventArray = this.aEventMap.get(eEventType).get(sNotifierId); - const nSize = aEventArray.length; + if (this.aEventMap!.has(eEventType)) { + if (this.aEventMap!.get(eEventType)!.has(sNotifierId)) { + const aEventArray = this.aEventMap!.get(eEventType)!.get(sNotifierId); + const nSize = aEventArray!.length; for (let i = 0; i < nSize; ++i) { - this.aTimerEventQueue.addEvent(aEventArray[i]); + this.aTimerEventQueue.addEvent(aEventArray![i]); } } } @@ -126,13 +137,13 @@ class EventMultiplexer { } registerNextEffectEndHandler(aHandler: Handler0) { - this.aSkipEffectEndHandlerSet.push(aHandler); + this.aSkipEffectEndHandlerSet!.push(aHandler); } notifyNextEffectEndEvent() { - const nSize = this.aSkipEffectEndHandlerSet.length; + const nSize = this.aSkipEffectEndHandlerSet!.length; for (let i = 0; i < nSize; ++i) { - this.aSkipEffectEndHandlerSet[i](); + this.aSkipEffectEndHandlerSet![i](); } this.aSkipEffectEndHandlerSet = []; } @@ -171,13 +182,13 @@ class EventMultiplexer { } registerSkipInteractiveEffectEvent(nNotifierId: number, aEvent: DelayEvent) { - this.aSkipInteractiveEffectEventSet.set(nNotifierId, aEvent); + this.aSkipInteractiveEffectEventSet!.set(nNotifierId, aEvent); } notifySkipInteractiveEffectEvent(nNotifierId: number) { - if (this.aSkipInteractiveEffectEventSet.has(nNotifierId)) { + if (this.aSkipInteractiveEffectEventSet!.has(nNotifierId)) { this.aTimerEventQueue.addEvent( - this.aSkipInteractiveEffectEventSet.get(nNotifierId), + this.aSkipInteractiveEffectEventSet!.get(nNotifierId), ); } } @@ -186,13 +197,13 @@ class EventMultiplexer { nNotifierId: number, aEvent: DelayEvent, ) { - this.aRewindRunningInteractiveEffectEventSet.set(nNotifierId, aEvent); + this.aRewindRunningInteractiveEffectEventSet!.set(nNotifierId, aEvent); } notifyRewindRunningInteractiveEffectEvent(nNotifierId: number) { - if (this.aRewindRunningInteractiveEffectEventSet.has(nNotifierId)) { + if (this.aRewindRunningInteractiveEffectEventSet!.has(nNotifierId)) { this.aTimerEventQueue.addEvent( - this.aRewindRunningInteractiveEffectEventSet.get(nNotifierId), + this.aRewindRunningInteractiveEffectEventSet!.get(nNotifierId), ); } } @@ -201,13 +212,13 @@ class EventMultiplexer { nNotifierId: number, aEvent: DelayEvent, ) { - this.aRewindEndedInteractiveEffectEventSet.set(nNotifierId, aEvent); + this.aRewindEndedInteractiveEffectEventSet!.set(nNotifierId, aEvent); } notifyRewindEndedInteractiveEffectEvent(nNotifierId: number) { - if (this.aRewindEndedInteractiveEffectEventSet.has(nNotifierId)) { + if (this.aRewindEndedInteractiveEffectEventSet!.has(nNotifierId)) { this.aTimerEventQueue.addEvent( - this.aRewindEndedInteractiveEffectEventSet.get(nNotifierId), + this.aRewindEndedInteractiveEffectEventSet!.get(nNotifierId), ); } } @@ -217,23 +228,23 @@ class EventMultiplexer { aHandler: Handler0, ) { const sNotifierId = '' + aNotifierId; - this.aRewindedEffectHandlerSet.set(sNotifierId, aHandler); + this.aRewindedEffectHandlerSet!.set(sNotifierId, aHandler); } notifyRewindedEffectEvent(aNotifierId: number | string) { const sNotifierId = '' + aNotifierId; - if (this.aRewindedEffectHandlerSet.has(sNotifierId)) { - this.aRewindedEffectHandlerSet.get(sNotifierId)(); + if (this.aRewindedEffectHandlerSet!.has(sNotifierId)) { + this.aRewindedEffectHandlerSet!.get(sNotifierId)!(); } } registerElementChangedHandler(aNotifierId: string, aHandler: Handler1) { - this.aElementChangedHandlerSet.set(aNotifierId, aHandler); + this.aElementChangedHandlerSet!.set(aNotifierId, aHandler); } notifyElementChangedEvent(aNotifierId: string, aElement: any) { - if (this.aElementChangedHandlerSet.has(aNotifierId)) { - this.aElementChangedHandlerSet.get(aNotifierId)(aElement); + if (this.aElementChangedHandlerSet!.has(aNotifierId)) { + this.aElementChangedHandlerSet!.get(aNotifierId)!(aElement); } } diff --git a/browser/src/slideshow/engine/InteractiveAnimationSequence.ts b/browser/src/slideshow/engine/InteractiveAnimationSequence.ts index c6707da55b4a8..0f4c6305f0984 100644 --- a/browser/src/slideshow/engine/InteractiveAnimationSequence.ts +++ b/browser/src/slideshow/engine/InteractiveAnimationSequence.ts @@ -14,8 +14,8 @@ class InteractiveAnimationSequence { private nId: number; private aSlideShow: SlideShowHandler; private bIsRunning = false; - private aStartEvent: DelayEvent = null; - private aEndEvent: DelayEvent = null; + private aStartEvent: DelayEvent | null = null; + private aEndEvent: DelayEvent | null = null; constructor(nNodeId: number, aSlideShow: SlideShowHandler) { this.nId = nNodeId; diff --git a/browser/src/slideshow/engine/MetaPresentation.ts b/browser/src/slideshow/engine/MetaPresentation.ts index 7ce1f4c8c3a0b..f19f6ddb30eee 100644 --- a/browser/src/slideshow/engine/MetaPresentation.ts +++ b/browser/src/slideshow/engine/MetaPresentation.ts @@ -105,48 +105,50 @@ class MetaPresentation { return this.docHeight; } - public getCurrentSlideIndex(): number { + public getCurrentSlideIndex(): number | undefined { return this.slideShowNavigator.currentSlideIndex; } - public getCurrentSlideHash(): string { + public getCurrentSlideHash(): string | undefined { return this.getSlideHash(this.getCurrentSlideIndex()); } - public getSlideHash(slideIndex: number) { - return this.partHashes.get(slideIndex); + public getSlideHash(slideIndex: number | undefined) { + return this.partHashes.get(slideIndex!); } public isFirstSlide(hash: string) { return hash === this.firstSlideHash; } - public isLastSlide(hash: string) { + public isLastSlide(hash: string | undefined) { return hash === this.lastSlideHash; } - public getMetaSlide(slideHash: string): MetaSlide { - return this.metaSlides.get(slideHash); + public getMetaSlide(slideHash: string | undefined): MetaSlide | undefined { + return this.metaSlides.get(slideHash!); } - public getMetaSlideByIndex(slideIndex: number): MetaSlide { - return this.metaSlides.get(this.getSlideHash(slideIndex)); + public getMetaSlideByIndex( + slideIndex: number | undefined, + ): MetaSlide | undefined { + return this.metaSlides.get(this.getSlideHash(slideIndex)!); } - public getSlideInfo(slideHash: string): SlideInfo { - return this.metaSlides.get(slideHash).info; + public getSlideInfo(slideHash: string | undefined): SlideInfo { + return this.metaSlides.get(slideHash!)!.info; } - public getSlideInfoByIndex(slideIndex: number): SlideInfo { + public getSlideInfoByIndex(slideIndex: number): SlideInfo | null { const slideHash = this.getSlideHash(slideIndex); - return slideHash ? this.metaSlides.get(slideHash).info : null; + return slideHash ? this.metaSlides.get(slideHash)!.info : null; } public setCurrentSlide(nSlideIndex: number) { if (nSlideIndex >= 0 && nSlideIndex < this.numberOfSlides) { const nCurSlide = this.getCurrentSlideIndex(); - if (nCurSlide !== undefined) this.getMetaSlideByIndex(nCurSlide).hide(); - this.getMetaSlideByIndex(nCurSlide).show(); + if (nCurSlide !== undefined) this.getMetaSlideByIndex(nCurSlide)!.hide(); + this.getMetaSlideByIndex(nCurSlide)!.show(); } else { window.app.console.log( 'MetaPresentation.setCurrentSlide: slide index out of range: ' + diff --git a/browser/src/slideshow/engine/MetaSlide.ts b/browser/src/slideshow/engine/MetaSlide.ts index 889053972632a..5162ed7e41a8d 100644 --- a/browser/src/slideshow/engine/MetaSlide.ts +++ b/browser/src/slideshow/engine/MetaSlide.ts @@ -38,18 +38,18 @@ class MetaSlide { } public hasTransition(): boolean { - return !!stringToTransitionTypeMap[this._info.transitionType]; + return !!stringToTransitionTypeMap[this._info.transitionType!]; } public get info(): SlideInfo { return this._info; } - public get next(): MetaSlide { + public get next(): MetaSlide | null | undefined { return this.info.next ? this._metaPres.getMetaSlide(this.info.next) : null; } - public get prev(): MetaSlide { + public get prev(): MetaSlide | null | undefined { return this.info.prev ? this._metaPres.getMetaSlide(this.info.prev) : null; } diff --git a/browser/src/slideshow/engine/SlideAnimations.ts b/browser/src/slideshow/engine/SlideAnimations.ts index 9d6efd97f09c3..bad5c0fda428e 100644 --- a/browser/src/slideshow/engine/SlideAnimations.ts +++ b/browser/src/slideshow/engine/SlideAnimations.ts @@ -40,15 +40,15 @@ function getNodeChildren(aNode: ContainerNodeInfo): Array { function createAnimationTree( aAnimationRoot: AnimationNodeInfo, aNodeContext: NodeContext, -): BaseNode { +): BaseNode | null | undefined { return createAnimationNode(aAnimationRoot, null, aNodeContext); } function createAnimationNode( aNodeInfo: AnimationNodeInfo, - aParentNode: BaseContainerNode, + aParentNode: BaseContainerNode | null, aNodeContext: NodeContext, -): BaseNode { +): BaseNode | null | undefined { assert(aNodeInfo, 'createAnimationNode: invalid animation node'); const eAnimationNodeType = getAnimationNodeType(aNodeInfo); @@ -153,7 +153,7 @@ function createChildNode( } class SlideAnimations { - private aRootNode: BaseNode; + private aRootNode: BaseNode | null | undefined; private aContext: NodeContext; private aSlideShowHandler: SlideShowHandler; private aAnimationNodeMap: AnimationNodeMap; @@ -209,7 +209,7 @@ class SlideAnimations { isAnimated() { if (!this.bElementsParsed) return false; - return this.aRootNode.hasPendingAnimation(); + return this.aRootNode!.hasPendingAnimation(); } start() { @@ -228,22 +228,22 @@ class SlideAnimations { else if (this.aContext.bFirstRun) this.aContext.bFirstRun = false; // init all nodes - this.aContext.bIsInvalid = !this.aRootNode.init(); + this.aContext.bIsInvalid = !this.aRootNode!.init(); if (this.aContext.bIsInvalid) { ANIMDBG.print('SlideAnimationsthis.start: aContext.bIsInvalid'); return false; } // resolve root node - return this.aRootNode.resolve(); + return this.aRootNode!.resolve(); } end(bLeftEffectsSkipped: boolean) { if (!this.bElementsParsed) return; // no animations there // end root node - this.aRootNode.deactivate(); - this.aRootNode.end(); + this.aRootNode!.deactivate(); + this.aRootNode!.end(); if (bLeftEffectsSkipped && this.isFirstRun()) { // in case this is the first run and left events have been skipped diff --git a/browser/src/slideshow/engine/SlideChangeBase.ts b/browser/src/slideshow/engine/SlideChangeBase.ts index 5e2cc351465ad..7e56185e27943 100644 --- a/browser/src/slideshow/engine/SlideChangeBase.ts +++ b/browser/src/slideshow/engine/SlideChangeBase.ts @@ -21,11 +21,11 @@ abstract class ISlideChangeBase { function SlideChangeTemplate>(BaseType: T) { abstract class SlideChangeBase extends BaseType implements ISlideChangeBase { private isFinished: boolean; - protected requestAnimationFrameId: number; + protected requestAnimationFrameId: number | null; protected transitionParameters: TransitionParameters; - protected leavingSlide: WebGLTexture | ImageBitmap; - protected enteringSlide: WebGLTexture | ImageBitmap; - protected time: number; + protected leavingSlide: WebGLTexture | ImageBitmap | null; + protected enteringSlide: WebGLTexture | ImageBitmap | null; + protected time: number | null; protected isLastFrame: boolean; constructor(...args: any[]) { diff --git a/browser/src/slideshow/engine/SlideShowHandler.ts b/browser/src/slideshow/engine/SlideShowHandler.ts index bc0c80d7d6064..d2eca062f33a6 100644 --- a/browser/src/slideshow/engine/SlideShowHandler.ts +++ b/browser/src/slideshow/engine/SlideShowHandler.ts @@ -19,9 +19,9 @@ type InteractiveAnimationSequenceMap = Map< class SlideShowContext { public aSlideShowHandler: SlideShowHandler; public aTimerEventQueue: TimerEventQueue; - public aEventMultiplexer: EventMultiplexer; - public aNextEffectEventArray: NextEffectEventArray; - public aInteractiveAnimationSequenceMap: InteractiveAnimationSequenceMap; + public aEventMultiplexer: EventMultiplexer | null; + public aNextEffectEventArray: NextEffectEventArray | null; + public aInteractiveAnimationSequenceMap: InteractiveAnimationSequenceMap | null; public aActivityQueue: ActivityQueue; public bIsSkipping: boolean; public nSlideWidth: number; @@ -30,9 +30,9 @@ class SlideShowContext { constructor( aSlideShowHandler: SlideShowHandler, aTimerEventQueue: TimerEventQueue, - aEventMultiplexer: EventMultiplexer, - aNextEffectEventArray: NextEffectEventArray, - aInteractiveAnimationSequenceMap: InteractiveAnimationSequenceMap, + aEventMultiplexer: EventMultiplexer | null, + aNextEffectEventArray: NextEffectEventArray | null, + aInteractiveAnimationSequenceMap: InteractiveAnimationSequenceMap | null, aActivityQueue: ActivityQueue, ) { this.aSlideShowHandler = aSlideShowHandler; @@ -62,9 +62,9 @@ class SlideShowHandler { private aFrameSynchronization: FrameSynchronization; private aTimerEventQueue: TimerEventQueue; private aActivityQueue: ActivityQueue; - private aNextEffectEventArray: NextEffectEventArray; - private aInteractiveAnimationSequenceMap: InteractiveAnimationSequenceMap; - private aEventMultiplexer: EventMultiplexer; + private aNextEffectEventArray: NextEffectEventArray | null; + private aInteractiveAnimationSequenceMap: InteractiveAnimationSequenceMap | null; + private aEventMultiplexer: EventMultiplexer | null; private aContext: SlideShowContext; private bIsIdle: boolean; private bIsEnabled: boolean; @@ -78,8 +78,8 @@ class SlideShowHandler { private nTotalInteractivePlayingEffects: number; private aStartedEffectList: Effect[]; private aStartedEffectIndexMap: Map; - private automaticAdvanceTimeout: number | { rewindedEffect: number }; - private enteringSlideTexture: WebGLTexture | ImageBitmap; + private automaticAdvanceTimeout: number | { rewindedEffect: number } | null; + private enteringSlideTexture: WebGLTexture | ImageBitmap | null; public isStarting: boolean; constructor() { @@ -172,14 +172,14 @@ class SlideShowHandler { aSlideTransitionHandler: SlideTransition, transitionParameters: TransitionParameters, aTransitionEndEvent: DelayEvent, - ): SimpleActivity { + ): SimpleActivity | null { if (this.bNoSlideTransition) return null; const aSlideTransition = aSlideTransitionHandler.createSlideTransition(transitionParameters); if (!aSlideTransition) return null; - let nDuration = 0.001; + let nDuration: number | undefined = 0.001; if (aSlideTransitionHandler.getDuration().isValue()) { nDuration = aSlideTransitionHandler.getDuration().getValue(); } else { @@ -246,7 +246,7 @@ class SlideShowHandler { ANIMDBG.print('SlideShowHandler.notifyNextEffectStart invoked.'); this.bIsNextEffectRunning = true; - this.aEventMultiplexer.registerNextEffectEndHandler( + this.aEventMultiplexer!.registerNextEffectEndHandler( this.notifyNextEffectEnd.bind(this), ); const aEffect = new Effect(); @@ -256,9 +256,9 @@ class SlideShowHandler { const sCurSlideHash = this.theMetaPres.getCurrentSlideHash(); const curMetaSlide = this.theMetaPres.getMetaSlide(sCurSlideHash); - if (curMetaSlide.animationsHandler) { + if (curMetaSlide!.animationsHandler) { const aAnimatedElementMap = - curMetaSlide.animationsHandler.getAnimatedElementMap(); + curMetaSlide!.animationsHandler.getAnimatedElementMap(); aAnimatedElementMap.forEach((aAnimatedElement: AnimatedElement) => { aAnimatedElement.notifyNextEffectStart(this.nCurrentEffect); }); @@ -274,7 +274,7 @@ class SlideShowHandler { ANIMDBG.print('SlideShowHandler.notifyNextEffectEnd invoked.'); this.bIsNextEffectRunning = false; - this.aStartedEffectList[this.aStartedEffectIndexMap.get(-1)].end(); + this.aStartedEffectList[this.aStartedEffectIndexMap.get(-1)!].end(); if (this.automaticAdvanceTimeout !== null) { if (this.automaticAdvanceTimeoutRewindedEffect === this.nCurrentEffect) { this.automaticAdvanceTimeout = null; @@ -311,7 +311,7 @@ class SlideShowHandler { } } - notifySlideStart(nNewSlideIndex: number, nOldSlideIndex: number) { + notifySlideStart(nNewSlideIndex: number, nOldSlideIndex: number | undefined) { this.nCurrentEffect = 0; this.bIsRewinding = false; this.bIsSkipping = false; @@ -323,9 +323,9 @@ class SlideShowHandler { if (nOldSlideIndex !== undefined) { const metaOldSlide = this.theMetaPres.getMetaSlideByIndex(nOldSlideIndex); - if (metaOldSlide.animationsHandler) { + if (metaOldSlide!.animationsHandler) { const aAnimatedElementMap = - metaOldSlide.animationsHandler.getAnimatedElementMap(); + metaOldSlide!.animationsHandler.getAnimatedElementMap(); aAnimatedElementMap.forEach((aAnimatedElement: AnimatedElement) => { aAnimatedElement.notifySlideEnd(); @@ -333,9 +333,9 @@ class SlideShowHandler { } } const metaNewSlide = this.theMetaPres.getMetaSlideByIndex(nNewSlideIndex); - if (metaNewSlide.animationsHandler) { + if (metaNewSlide!.animationsHandler) { const aAnimatedElementMap = - metaNewSlide.animationsHandler.getAnimatedElementMap(); + metaNewSlide!.animationsHandler.getAnimatedElementMap(); aAnimatedElementMap.forEach((aAnimatedElement: AnimatedElement) => { aAnimatedElement.notifySlideStart(this.aContext); @@ -354,7 +354,7 @@ class SlideShowHandler { ); this.bIsTransitionRunning = false; if (this.bIsRewinding) { - this.theMetaPres.getMetaSlideByIndex(nNewSlide).hide(); + this.theMetaPres.getMetaSlideByIndex(nNewSlide)!.hide(); this.slideShowNavigator.displaySlide(nOldSlide, true); this.skipAllEffects(); this.bIsRewinding = false; @@ -378,11 +378,11 @@ class SlideShowHandler { const sCurSlideHash = this.theMetaPres.getCurrentSlideHash(); const aCurrentSlide = this.theMetaPres.getMetaSlide(sCurSlideHash); if ( - aCurrentSlide.animationsHandler && - aCurrentSlide.animationsHandler.elementsParsed() + aCurrentSlide!.animationsHandler && + aCurrentSlide!.animationsHandler.elementsParsed() ) { - aCurrentSlide.animationsHandler.start(); - this.aEventMultiplexer.registerAnimationsEndHandler( + aCurrentSlide!.animationsHandler.start(); + this.aEventMultiplexer!.registerAnimationsEndHandler( this.notifyAnimationsEnd.bind(this), ); } else this.notifyAnimationsEnd(); @@ -405,7 +405,7 @@ class SlideShowHandler { 'SlideShow.notifyInteractiveAnimationSequenceEnd: no interactive effect playing.', ); - this.aStartedEffectList[this.aStartedEffectIndexMap.get(nNodeId)].end(); + this.aStartedEffectList[this.aStartedEffectIndexMap.get(nNodeId)!].end(); --this.nTotalInteractivePlayingEffects; } @@ -471,9 +471,9 @@ class SlideShowHandler { const aEffect = this.aStartedEffectList[i]; if (aEffect.isPlaying()) { if (aEffect.isMainEffect()) - this.aEventMultiplexer.notifySkipEffectEvent(); + this.aEventMultiplexer!.notifySkipEffectEvent(); else - this.aEventMultiplexer.notifySkipInteractiveEffectEvent( + this.aEventMultiplexer!.notifySkipInteractiveEffectEvent( aEffect.getId(), ); } @@ -504,7 +504,7 @@ class SlideShowHandler { this.bIsSkipping = true; this.aNextEffectEventArray.at(this.nCurrentEffect).fire(); - this.aEventMultiplexer.notifySkipEffectEvent(); + this.aEventMultiplexer!.notifySkipEffectEvent(); ++this.nCurrentEffect; this.update(); this.bIsSkipping = false; @@ -561,7 +561,7 @@ class SlideShowHandler { // effect has notified to be deactivated to the main sequence time container. // So you should avoid any optimization here because the size of // aNextEffectEventArray will going on increasing after every skip action. - while (this.nCurrentEffect < this.aNextEffectEventArray.size()) { + while (this.nCurrentEffect < this.aNextEffectEventArray!.size()) { this.skipNextEffect(); } this.bIsSkippingAll = false; @@ -622,19 +622,19 @@ class SlideShowHandler { const aEffect = this.aStartedEffectList[i]; if (aEffect.isPlaying()) { if (aEffect.isMainEffect()) { - this.aEventMultiplexer.notifyRewindCurrentEffectEvent(); + this.aEventMultiplexer!.notifyRewindCurrentEffectEvent(); if (this.nCurrentEffect > 0) --this.nCurrentEffect; } else { - this.aEventMultiplexer.notifyRewindRunningInteractiveEffectEvent( + this.aEventMultiplexer!.notifyRewindRunningInteractiveEffectEvent( aEffect.getId(), ); } } else if (aEffect.isEnded()) { if (aEffect.isMainEffect()) { - this.aEventMultiplexer.notifyRewindLastEffectEvent(); + this.aEventMultiplexer!.notifyRewindLastEffectEvent(); if (this.nCurrentEffect > 0) --this.nCurrentEffect; } else { - this.aEventMultiplexer.notifyRewindEndedInteractiveEffectEvent( + this.aEventMultiplexer!.notifyRewindEndedInteractiveEffectEvent( aEffect.getId(), ); } @@ -647,22 +647,22 @@ class SlideShowHandler { i = this.aStartedEffectList.length - 1; for (; i >= nFirstPlayingEffectIndex; --i) { const aEffect = this.aStartedEffectList.pop(); - if (!aEffect.isMainEffect()) - this.aStartedEffectIndexMap.delete(aEffect.getId()); + if (!aEffect!.isMainEffect()) + this.aStartedEffectIndexMap.delete(aEffect!.getId()); } } // there is no playing effect else { const aEffect = this.aStartedEffectList.pop(); - if (!aEffect.isMainEffect()) - this.aStartedEffectIndexMap.delete(aEffect.getId()); - if (aEffect.isEnded()) { + if (!aEffect!.isMainEffect()) + this.aStartedEffectIndexMap.delete(aEffect!.getId()); + if (aEffect!.isEnded()) { // Well that is almost an assertion. - if (aEffect.isMainEffect()) { - this.aEventMultiplexer.notifyRewindLastEffectEvent(); + if (aEffect!.isMainEffect()) { + this.aEventMultiplexer!.notifyRewindLastEffectEvent(); if (this.nCurrentEffect > 0) --this.nCurrentEffect; } else { - this.aEventMultiplexer.notifyRewindEndedInteractiveEffectEvent( - aEffect.getId(), + this.aEventMultiplexer!.notifyRewindEndedInteractiveEffectEvent( + aEffect!.getId(), ); } } @@ -724,8 +724,8 @@ class SlideShowHandler { this.skipTransition(); } - if (this.slideRenderer.isAnyVideoPlaying) { - this.slideRenderer.pauseVideos(); + if (this.slideRenderer!.isAnyVideoPlaying) { + this.slideRenderer!.pauseVideos(); } // handle current slide @@ -733,11 +733,11 @@ class SlideShowHandler { const oldMetaSlide = aMetaDoc.getMetaSlideByIndex(nOldSlide); if (this.isEnabled()) { if ( - oldMetaSlide.animationsHandler && - oldMetaSlide.animationsHandler.isAnimated() + oldMetaSlide!.animationsHandler && + oldMetaSlide!.animationsHandler.isAnimated() ) { // force end animations - oldMetaSlide.animationsHandler.end(bSkipSlideTransition); + oldMetaSlide!.animationsHandler.end(bSkipSlideTransition); // clear all queues this.dispose(); @@ -767,7 +767,7 @@ class SlideShowHandler { // } const aNewMetaSlide = aMetaDoc.getMetaSlideByIndex(nNewSlide); - const aSlideTransitionHandler = aNewMetaSlide.transitionHandler; + const aSlideTransitionHandler = aNewMetaSlide!.transitionHandler; if (aSlideTransitionHandler && aSlideTransitionHandler.isValid()) { const aTransitionEndEvent = makeEvent( this.notifyTransitionEnd.bind(this, nNewSlide, nOldSlide), @@ -854,30 +854,32 @@ class SlideShowHandler { return this.aContext; } - private get slideRenderer(): SlideRenderer { + private get slideRenderer(): SlideRenderer | null { return this.presenter._slideRenderer; } - private get slideCompositor(): SlideCompositor { + private get slideCompositor(): SlideCompositor | null { return this.presenter._slideCompositor; } - getSlideInfo(nSlideIndex: number): SlideInfo { + getSlideInfo(nSlideIndex: number): SlideInfo | null { return this.theMetaPres.getSlideInfoByIndex(nSlideIndex); } - private getTexture(nSlideIndex: number): WebGLTexture | ImageBitmap | null { - const slideImage = this.slideCompositor.getSlide(nSlideIndex); + private getTexture( + nSlideIndex: number | undefined, + ): WebGLTexture | ImageBitmap | null { + const slideImage = this.slideCompositor!.getSlide(nSlideIndex); if (!slideImage) { console.error('SlideShowHandler: cannot get texture'); return null; } - return this.slideRenderer.createTexture(slideImage); + return this.slideRenderer!.createTexture(slideImage); } private presentSlide(nSlideIndex: number) { let slideTexture = this.enteringSlideTexture; if (!slideTexture) slideTexture = this.getTexture(nSlideIndex); - this.slideRenderer.renderSlide( + this.slideRenderer!.renderSlide( slideTexture, this.getSlideInfo(nSlideIndex), this.theMetaPres.slideWidth, @@ -888,21 +890,21 @@ class SlideShowHandler { private createTransitionParameters( nNewSlide: number, - nOldSlide: number, + nOldSlide: number | undefined, ): TransitionParameters { let leavingSlideTexture = null; if (this.isStarting) { - leavingSlideTexture = this.slideRenderer.createEmptyTexture(); + leavingSlideTexture = this.slideRenderer!.createEmptyTexture(); } else { leavingSlideTexture = nOldSlide !== undefined && - this.slideRenderer.lastRenderedSlideIndex === nOldSlide - ? this.slideRenderer.getSlideTexture() + this.slideRenderer!.lastRenderedSlideIndex === nOldSlide + ? this.slideRenderer!.getSlideTexture() : this.getTexture(nOldSlide); } const enteringSlideTexture = this.getTexture(nNewSlide); const transitionParameters = new TransitionParameters(); - transitionParameters.context = this.slideRenderer._context; + transitionParameters.context = this.slideRenderer!._context; transitionParameters.current = leavingSlideTexture; transitionParameters.next = enteringSlideTexture; transitionParameters.slideInfo = this.getSlideInfo(nNewSlide); diff --git a/browser/src/slideshow/engine/SlideShowNavigator.ts b/browser/src/slideshow/engine/SlideShowNavigator.ts index ce598d5d10adb..6aa5b75948cdf 100644 --- a/browser/src/slideshow/engine/SlideShowNavigator.ts +++ b/browser/src/slideshow/engine/SlideShowNavigator.ts @@ -13,13 +13,13 @@ declare var app: any; class SlideShowNavigator { - private theMetaPres: MetaPresentation = null; + private theMetaPres: MetaPresentation | null = null; private slideShowHandler: SlideShowHandler; private presenter: SlideShowPresenter; private keyHandlerMap: Record void>; private _canvasClickHandler: MouseClickHandler; - private currentSlide: number; - private prevSlide: number; + private currentSlide: number | undefined; + private prevSlide: number | undefined; constructor(slideShowHandler: SlideShowHandler) { this.slideShowHandler = slideShowHandler; @@ -59,7 +59,7 @@ class SlideShowNavigator { this.theMetaPres = metaPres; } - public get currentSlideIndex(): number { + public get currentSlideIndex(): number | undefined { return this.currentSlide; } @@ -125,11 +125,11 @@ class SlideShowNavigator { NAVDBG.print( 'SlideShowNavigator.goToLastSlide: current index: ' + this.currentSlide, ); - this.displaySlide(this.theMetaPres.numberOfSlides - 1, true); + this.displaySlide(this.theMetaPres!.numberOfSlides - 1, true); } private backToLastSlide(): boolean { - if (this.currentSlide >= this.theMetaPres.numberOfSlides) { + if (this.currentSlide! >= this.theMetaPres!.numberOfSlides) { this.goToLastSlide(); return true; } @@ -145,10 +145,10 @@ class SlideShowNavigator { switchSlide(nOffset: number, bSkipTransition: boolean) { NAVDBG.print('SlideShowNavigator.switchSlide: nOffset: ' + nOffset); - this.displaySlide(this.currentSlide + nOffset, bSkipTransition); + this.displaySlide(this.currentSlide! + nOffset, bSkipTransition); } - displaySlide(nNewSlide: number, bSkipTransition: boolean) { + displaySlide(nNewSlide: number | undefined, bSkipTransition: boolean) { NAVDBG.print( 'SlideShowNavigator.displaySlide: current index: ' + this.currentSlide + @@ -158,13 +158,13 @@ class SlideShowNavigator { bSkipTransition, ); if (nNewSlide === undefined || nNewSlide < 0) return; - if (nNewSlide >= this.theMetaPres.numberOfSlides) { + if (nNewSlide >= this.theMetaPres!.numberOfSlides) { this.currentSlide = nNewSlide; - const force = nNewSlide > this.theMetaPres.numberOfSlides; + const force = nNewSlide > this.theMetaPres!.numberOfSlides; this.endPresentation(force); return; } - this.slideCompositor.fetchAndRun(nNewSlide, () => { + this.slideCompositor!.fetchAndRun(nNewSlide, () => { assert( this instanceof SlideShowNavigator, 'SlideShowNavigator.displaySlide: slideCompositor.fetchAndRun: ' + @@ -172,7 +172,7 @@ class SlideShowNavigator { ); this.prevSlide = this.currentSlide; - if (this.prevSlide >= this.theMetaPres.numberOfSlides) + if (this.prevSlide! >= this.theMetaPres!.numberOfSlides) this.prevSlide = undefined; this.currentSlide = nNewSlide; this.slideShowHandler.displaySlide( @@ -202,7 +202,7 @@ class SlideShowNavigator { aEvent.preventDefault(); aEvent.stopPropagation(); - const metaSlide = this.theMetaPres.getMetaSlideByIndex(this.currentSlide); + const metaSlide = this.theMetaPres!.getMetaSlideByIndex(this.currentSlide!); if (!metaSlide) window.app.console.log( 'SlideShowNavigator.onClick: no meta slide available for index: ' + @@ -237,7 +237,7 @@ class SlideShowNavigator { this.presenter = presenter; } - private get slideCompositor(): SlideCompositor { + private get slideCompositor(): SlideCompositor | null { return this.presenter._slideCompositor; } } diff --git a/browser/src/slideshow/engine/SlideTransition.ts b/browser/src/slideshow/engine/SlideTransition.ts index ad580307e2f86..e6380bbd3cb52 100644 --- a/browser/src/slideshow/engine/SlideTransition.ts +++ b/browser/src/slideshow/engine/SlideTransition.ts @@ -34,7 +34,7 @@ class SlideTransition { // set up min frame count value; this.nMinFrameCount = this.getDuration().isValue() - ? this.getDuration().getValue() * + ? this.getDuration().getValue()! * SlideShowHandler.MINIMUM_FRAMES_PER_SECONDS : SlideShowHandler.MINIMUM_FRAMES_PER_SECONDS; if (this.nMinFrameCount < 1.0) this.nMinFrameCount = 1; @@ -48,7 +48,7 @@ class SlideTransition { createSlideTransition( transitionParameters: TransitionParameters, - ): ISlideChangeBase { + ): ISlideChangeBase | null { if (!this.isValid()) return null; switch (this.getType()) { @@ -106,18 +106,18 @@ class SlideTransition { default: console.log( 'Unknown transition type', - transitionParameters.slideInfo.transitionType, + transitionParameters.slideInfo!.transitionType, ); return new SlideShow.NoTransition(transitionParameters); } } public getType() { - return stringToTransitionTypeMap[this.slideInfo.transitionType]; + return stringToTransitionTypeMap[this.slideInfo.transitionType!]; } public getSubType() { - return stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype]; + return stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype!]; } public getFadeColor(): string { diff --git a/browser/src/slideshow/engine/SourceEventElement.ts b/browser/src/slideshow/engine/SourceEventElement.ts index 21d202a03bd1f..8f0435b7f3805 100644 --- a/browser/src/slideshow/engine/SourceEventElement.ts +++ b/browser/src/slideshow/engine/SourceEventElement.ts @@ -16,7 +16,7 @@ // maybe later rename to LayerEventSource class SourceEventElement implements MouseClickHandler { private sId: string; - private aSlideShow: SlideShowHandler = null; + private aSlideShow: SlideShowHandler | null = null; private aElement: any; private aEventMultiplexer: EventMultiplexer; private bClickHandled = false; @@ -69,7 +69,7 @@ class SourceEventElement implements MouseClickHandler { if (this.bClickHandled) return false; this.aEventMultiplexer.notifyEvent(EventTrigger.OnClick, this.getId()); - this.aSlideShow.update(); + this.aSlideShow!.update(); this.bClickHandled = true; this.setDefaultCursor(); return true; diff --git a/browser/src/slideshow/engine/TimerEventQueue.ts b/browser/src/slideshow/engine/TimerEventQueue.ts index 2ed062275a6cf..a1521449dd52b 100644 --- a/browser/src/slideshow/engine/TimerEventQueue.ts +++ b/browser/src/slideshow/engine/TimerEventQueue.ts @@ -19,9 +19,9 @@ class TimerEventQueue { this.aEventSet = new PriorityQueue(EventEntry.compare); } - addEvent(aEvent: EventBase) { + addEvent(aEvent: EventBase | undefined) { this.DBG( - 'TimerEventQueue.addEvent event(' + aEvent.getId() + ') appended.', + 'TimerEventQueue.addEvent event(' + aEvent!.getId() + ') appended.', ); if (!aEvent) { window.app.console.log('TimerEventQueue.addEvent: null event'); diff --git a/browser/src/slideshow/engine/Timing.ts b/browser/src/slideshow/engine/Timing.ts index bf0b4b7b040f8..b234adf2d4ddf 100644 --- a/browser/src/slideshow/engine/Timing.ts +++ b/browser/src/slideshow/engine/Timing.ts @@ -57,7 +57,7 @@ class Timing { private static CHARCODE_0 = '0'.charCodeAt(0); private static CHARCODE_9 = '9'.charCodeAt(0); - constructor(aAnimationNode: BaseNode, sTimingAttribute: string) { + constructor(aAnimationNode: BaseNode, sTimingAttribute: string | undefined) { this.aAnimationNode = aAnimationNode; // the node, the timing attribute belongs to this.sTimingDescription = removeWhiteSpaces(sTimingAttribute); @@ -170,34 +170,34 @@ class Timing { if (reFullClockValue.test(sClockValue)) { const aClockTimeParts = reFullClockValue.exec(sClockValue); - const nHours = parseInt(aClockTimeParts[1]); - const nMinutes = parseInt(aClockTimeParts[2]); - let nSeconds = parseInt(aClockTimeParts[3]); - if (aClockTimeParts[4]) nSeconds += parseFloat(aClockTimeParts[4]); + const nHours = parseInt(aClockTimeParts![1]); + const nMinutes = parseInt(aClockTimeParts![2]); + let nSeconds = parseInt(aClockTimeParts![3]); + if (aClockTimeParts![4]) nSeconds += parseFloat(aClockTimeParts![4]); nTimeInSec = (nHours * 60 + nMinutes) * 60 + nSeconds; } else if (rePartialClockValue.test(sClockValue)) { const aClockTimeParts = rePartialClockValue.exec(sClockValue); - const nMinutes = parseInt(aClockTimeParts[1]); - let nSeconds = parseInt(aClockTimeParts[2]); - if (aClockTimeParts[3]) nSeconds += parseFloat(aClockTimeParts[3]); + const nMinutes = parseInt(aClockTimeParts![1]); + let nSeconds = parseInt(aClockTimeParts![2]); + if (aClockTimeParts![3]) nSeconds += parseFloat(aClockTimeParts![3]); nTimeInSec = nMinutes * 60 + nSeconds; } else if (reTimeCountValue.test(sClockValue)) { const aClockTimeParts = reTimeCountValue.exec(sClockValue); - let nTimeCount = parseInt(aClockTimeParts[1]); - if (aClockTimeParts[2]) nTimeCount += parseFloat(aClockTimeParts[2]); + let nTimeCount = parseInt(aClockTimeParts![1]); + if (aClockTimeParts![2]) nTimeCount += parseFloat(aClockTimeParts![2]); - if (aClockTimeParts[3]) { - if (aClockTimeParts[3] == 'h') { + if (aClockTimeParts![3]) { + if (aClockTimeParts![3] == 'h') { nTimeInSec = nTimeCount * 3600; - } else if (aClockTimeParts[3] == 'min') { + } else if (aClockTimeParts![3] == 'min') { nTimeInSec = nTimeCount * 60; - } else if (aClockTimeParts[3] == 's') { + } else if (aClockTimeParts![3] == 's') { nTimeInSec = nTimeCount; - } else if (aClockTimeParts[3] == 'ms') { + } else if (aClockTimeParts![3] == 'ms') { nTimeInSec = nTimeCount / 1000; } } else { diff --git a/browser/src/slideshow/engine/activities/ActivityBase.ts b/browser/src/slideshow/engine/activities/ActivityBase.ts index cc20b5c08bd79..dce75c708559d 100644 --- a/browser/src/slideshow/engine/activities/ActivityBase.ts +++ b/browser/src/slideshow/engine/activities/ActivityBase.ts @@ -14,9 +14,9 @@ declare var app: any; abstract class ActivityBase extends AnimationActivity { private aTargetElement: null; - private aEndEvent: DelayEvent; + private aEndEvent: DelayEvent | null; private aTimerEventQueue: TimerEventQueue; - private nRepeats: number; + private nRepeats: number | undefined; private nAccelerationFraction: number; private nDecelerationFraction: number; private bAutoReverse: boolean; diff --git a/browser/src/slideshow/engine/activities/AnimationActivity.ts b/browser/src/slideshow/engine/activities/AnimationActivity.ts index faf9e1c986ae5..592a90a242346 100644 --- a/browser/src/slideshow/engine/activities/AnimationActivity.ts +++ b/browser/src/slideshow/engine/activities/AnimationActivity.ts @@ -15,16 +15,16 @@ class ActivityParamSet { aWakeupEvent: WakeupEvent; aTimerEventQueue: TimerEventQueue; aActivityQueue: ActivityQueue; - nMinDuration: number; + nMinDuration: number | undefined; nMinNumberOfFrames: number = SlideShowHandler.MINIMUM_FRAMES_PER_SECONDS; bAutoReverse: boolean = false; - nRepeatCount: number = 1.0; + nRepeatCount: number | undefined = 1.0; nAccelerationFraction: number = 0; nDecelerationFraction: number = 0; nSlideWidth: number; nSlideHeight: number; aFormula: (x: any) => any; - aDiscreteTimes: Array = []; + aDiscreteTimes: Array | null = []; } abstract class AnimationActivity { @@ -46,7 +46,7 @@ abstract class AnimationActivity { abstract activate(aEvent: EventBase): void; abstract dispose(): void; abstract calcTimeLag(): number; - abstract perform(): boolean; + abstract perform(): boolean | undefined; abstract isActive(): void; abstract dequeued(): void; abstract end(): void; diff --git a/browser/src/slideshow/engine/activities/ContinuousKeyTimeActivityBase.ts b/browser/src/slideshow/engine/activities/ContinuousKeyTimeActivityBase.ts index 1330294e54e14..3cb0f47a35d27 100644 --- a/browser/src/slideshow/engine/activities/ContinuousKeyTimeActivityBase.ts +++ b/browser/src/slideshow/engine/activities/ContinuousKeyTimeActivityBase.ts @@ -86,23 +86,23 @@ abstract class ContinuousKeyTimeActivityBase extends SimpleContinuousActivityBas protected constructor(aCommonParamSet: ActivityParamSet) { super(aCommonParamSet); - const nSize = aCommonParamSet.aDiscreteTimes.length; + const nSize = aCommonParamSet.aDiscreteTimes!.length; assert( nSize > 1, 'ContinuousKeyTimeActivityBase constructor: assertion (aDiscreteTimes.length > 1) failed', ); assert( - aCommonParamSet.aDiscreteTimes[0] == 0.0, + aCommonParamSet.aDiscreteTimes![0] == 0.0, 'ContinuousKeyTimeActivityBase constructor: assertion (aDiscreteTimes.front() == 0.0) failed', ); assert( - aCommonParamSet.aDiscreteTimes[nSize - 1] <= 1.0, + aCommonParamSet.aDiscreteTimes![nSize - 1] <= 1.0, 'ContinuousKeyTimeActivityBase constructor: assertion (aDiscreteTimes.back() <= 1.0) failed', ); - this.aLerper = new KeyStopLerp(aCommonParamSet.aDiscreteTimes); + this.aLerper = new KeyStopLerp(aCommonParamSet.aDiscreteTimes!); } public activate(aEndElement: any) { diff --git a/browser/src/slideshow/engine/activities/DiscreteActivityBase.ts b/browser/src/slideshow/engine/activities/DiscreteActivityBase.ts index b0a48f1c5b7ff..f6cccea271ded 100644 --- a/browser/src/slideshow/engine/activities/DiscreteActivityBase.ts +++ b/browser/src/slideshow/engine/activities/DiscreteActivityBase.ts @@ -14,9 +14,9 @@ declare var app: any; abstract class DiscreteActivityBase extends ActivityBase { private aOriginalWakeupEvent: WakeupEvent; - private aWakeupEvent: WakeupEvent; - private aDiscreteTimes: Array; - protected nMinSimpleDuration: number; + private aWakeupEvent: WakeupEvent | null; + private aDiscreteTimes: Array | null; + protected nMinSimpleDuration: number | undefined; protected nCurrPerformCalls: number; protected constructor(aCommonParamSet: ActivityParamSet) { @@ -42,7 +42,7 @@ abstract class DiscreteActivityBase extends ActivityBase { } public startAnimation() { - this.aWakeupEvent.start(); + this.aWakeupEvent!.start(); } public calcFrameIndex(nCurrCalls: number, nVectorSize: number) { @@ -82,7 +82,7 @@ abstract class DiscreteActivityBase extends ActivityBase { // call base class, for start() calls and end handling if (!super.perform()) return false; // done, we're ended - const nVectorSize = this.aDiscreteTimes.length; + const nVectorSize = this.aDiscreteTimes!.length; const nFrameIndex = this.calcFrameIndex( this.nCurrPerformCalls, @@ -108,7 +108,7 @@ abstract class DiscreteActivityBase extends ActivityBase { // schedule next frame, if either repeat is indefinite // (repeat forever), or we've not yet reached the requested // repeat count - if (!this.isRepeatCountValid() || nCurrRepeat < this.getRepeatCount()) { + if (!this.isRepeatCountValid() || nCurrRepeat < this.getRepeatCount()!) { // add wake-up event to queue (modulo vector size, to cope with repeats). // repeat is handled locally, only apply acceleration/deceleration. @@ -122,17 +122,17 @@ abstract class DiscreteActivityBase extends ActivityBase { this.nCurrPerformCalls, nVectorSize, ); - const nCurrentRepeatTime = this.aDiscreteTimes[nFrameIndex]; + const nCurrentRepeatTime = this.aDiscreteTimes![nFrameIndex]; const nRepeatCount = this.calcRepeatCount( this.nCurrPerformCalls, nVectorSize, ); const nNextTimeout = - this.nMinSimpleDuration * + this.nMinSimpleDuration! * (nRepeatCount + this.calcAcceleratedTime(nCurrentRepeatTime)); - this.aWakeupEvent.setNextTimeout(nNextTimeout); + this.aWakeupEvent!.setNextTimeout(nNextTimeout); - this.getEventQueue().addEvent(this.aWakeupEvent); + this.getEventQueue().addEvent(this.aWakeupEvent!); } else { // release event reference (relation to wake up event is circular!) this.aWakeupEvent = null; diff --git a/browser/src/slideshow/engine/activities/FromToByActivity.ts b/browser/src/slideshow/engine/activities/FromToByActivity.ts index 52d0aeeb08635..a69e465585e8a 100644 --- a/browser/src/slideshow/engine/activities/FromToByActivity.ts +++ b/browser/src/slideshow/engine/activities/FromToByActivity.ts @@ -290,7 +290,7 @@ type FromToByActivityCtorType = new ( aByValue: any, aActivityParamSet: ActivityParamSet, aAnimation: AnimationBase, - aInterpolator: PropertyInterpolatorType, - aOperatorSet: PropertyOperatorSet, + aInterpolator: PropertyInterpolatorType | null | undefined, + aOperatorSet: PropertyOperatorSet | undefined, bAccumulate: boolean, ) => ActivityBase; diff --git a/browser/src/slideshow/engine/activities/SetActivity.ts b/browser/src/slideshow/engine/activities/SetActivity.ts index b19f8e5b65f53..fa8734bfd3e9e 100644 --- a/browser/src/slideshow/engine/activities/SetActivity.ts +++ b/browser/src/slideshow/engine/activities/SetActivity.ts @@ -13,7 +13,7 @@ declare var app: any; class SetActivity extends AnimationActivity { - private aAnimation: AnimationBase; + private aAnimation: AnimationBase | null; private aTargetElement: null; private aEndEvent: DelayEvent; private aTimerEventQueue: TimerEventQueue; @@ -22,7 +22,7 @@ class SetActivity extends AnimationActivity { constructor( aCommonParamSet: ActivityParamSet, - aAnimation: AnimationBase, + aAnimation: AnimationBase | null, aToAttr: string, ) { super(); diff --git a/browser/src/slideshow/engine/activities/SimpleActivity.ts b/browser/src/slideshow/engine/activities/SimpleActivity.ts index 6edc259730467..08f5ba1c42ddf 100644 --- a/browser/src/slideshow/engine/activities/SimpleActivity.ts +++ b/browser/src/slideshow/engine/activities/SimpleActivity.ts @@ -18,12 +18,12 @@ enum DirectionType { } class SimpleActivity extends ContinuousActivityBase { - private aAnimation: AnimationBase; + private aAnimation: AnimationBase | null; private nDirection: number; constructor( aCommonParamSet: ActivityParamSet, - aNumberAnimation: AnimationBase, + aNumberAnimation: AnimationBase | null, eDirection: DirectionType, ) { super(aCommonParamSet); diff --git a/browser/src/slideshow/engine/activities/SimpleContinuousActivityBase.ts b/browser/src/slideshow/engine/activities/SimpleContinuousActivityBase.ts index e3ac283ba17c8..6c45dc9235fbc 100644 --- a/browser/src/slideshow/engine/activities/SimpleContinuousActivityBase.ts +++ b/browser/src/slideshow/engine/activities/SimpleContinuousActivityBase.ts @@ -14,7 +14,7 @@ declare var app: any; abstract class SimpleContinuousActivityBase extends ActivityBase { private aTimer: ElapsedTime; - protected nMinSimpleDuration: number; + protected nMinSimpleDuration: number | undefined; private nMinNumberOfFrames: number; protected nCurrPerformCalls: number; constructor(aCommonParamSet: ActivityParamSet) { @@ -52,7 +52,7 @@ abstract class SimpleContinuousActivityBase extends ActivityBase { // times. // fraction of time elapsed - const nFractionElapsedTime = nCurrElapsedTime / this.nMinSimpleDuration; + const nFractionElapsedTime = nCurrElapsedTime / this.nMinSimpleDuration!; // fraction of minimum calls performed const nFractionRequiredCalls = @@ -79,7 +79,7 @@ abstract class SimpleContinuousActivityBase extends ActivityBase { // lag global time, so all other animations lag, too: return ( (nFractionElapsedTime - nFractionRequiredCalls) * - this.nMinSimpleDuration + this.nMinSimpleDuration! ); } } @@ -90,7 +90,7 @@ abstract class SimpleContinuousActivityBase extends ActivityBase { // get relative animation position const nCurrElapsedTime = this.aTimer.getElapsedTime(); - let nT = nCurrElapsedTime / this.nMinSimpleDuration; + let nT = nCurrElapsedTime / this.nMinSimpleDuration!; // one of the stop criteria reached? @@ -103,18 +103,18 @@ abstract class SimpleContinuousActivityBase extends ActivityBase { // When we've autoreverse on, the repeat count doubles const nRepeatCount = this.getRepeatCount(); const nEffectiveRepeat = this.isAutoReverse() - ? 2.0 * nRepeatCount + ? 2.0 * nRepeatCount! : nRepeatCount; // time (or frame count) elapsed? - if (nEffectiveRepeat <= nT) { + if (nEffectiveRepeat! <= nT) { // Ok done for now. Will not exit right here, // to give animation the chance to render the last // frame below bActivityEnding = true; // clamp animation to max permissible value - nT = nEffectiveRepeat; + nT = nEffectiveRepeat!; } } @@ -154,7 +154,7 @@ abstract class SimpleContinuousActivityBase extends ActivityBase { nRelativeSimpleTime = nT - nRepeats; // clamp repeats to max permissible value (maRepeats.getValue() - 1.0) - if (this.isRepeatCountValid() && nRepeats >= this.getRepeatCount()) { + if (this.isRepeatCountValid() && nRepeats >= this.getRepeatCount()!) { // Note that this code here only gets // triggered if this.nRepeats is an // _integer_. Otherwise, nRepeats will never diff --git a/browser/src/slideshow/engine/activities/ValueListActivity.ts b/browser/src/slideshow/engine/activities/ValueListActivity.ts index 65939f4b9b8b3..27b1db7717a5d 100644 --- a/browser/src/slideshow/engine/activities/ValueListActivity.ts +++ b/browser/src/slideshow/engine/activities/ValueListActivity.ts @@ -221,7 +221,7 @@ type ValueListActivityCtorType = new ( aValueList: any[], aActivityParamSet: ActivityParamSet, aAnimation: AnimationBase, - aInterpolator: PropertyInterpolatorType, - aOperatorSet: PropertyOperatorSet, + aInterpolator: PropertyInterpolatorType | null | undefined, + aOperatorSet: PropertyOperatorSet | undefined, bAccumulate: boolean, ) => ActivityBase; diff --git a/browser/src/slideshow/engine/animationnodes/AnimationBaseNode.ts b/browser/src/slideshow/engine/animationnodes/AnimationBaseNode.ts index 5ec1ab51cdf8e..991373db42d44 100644 --- a/browser/src/slideshow/engine/animationnodes/AnimationBaseNode.ts +++ b/browser/src/slideshow/engine/animationnodes/AnimationBaseNode.ts @@ -13,16 +13,16 @@ declare var app: any; abstract class AnimationBaseNode extends BaseNode { - private aTargetHash: string; - private bIsTargetTextElement: boolean; - private aAnimatedElement: AnimatedElement; - private aActivity: AnimationActivity; + private aTargetHash: string | undefined; + private bIsTargetTextElement: boolean | undefined | ''; // FIXME: can be '' because we use (x && y) which actually returns x if it's falsey, and x is a string. We should convert to a boolean + private aAnimatedElement: AnimatedElement | null | undefined; + private aActivity: AnimationActivity | null | undefined; private nMinFrameCount: number; private eAdditiveMode: AdditiveMode; protected constructor( aNodeInfo: AnimationNodeInfo, - aParentNode: BaseContainerNode, + aParentNode: BaseContainerNode | null, aNodeContext: NodeContext, ) { super(aNodeInfo, aParentNode, aNodeContext); @@ -70,23 +70,23 @@ abstract class AnimationBaseNode extends BaseNode { this.nMinFrameCount = SlideShowHandler.MINIMUM_FRAMES_PER_SECONDS; if (this.aTargetHash) { - if (!this.aNodeContext.aAnimatedElementMap.has(this.aTargetHash)) { - const slideHash = this.aNodeContext.metaSlide.info.hash; + if (!this.aNodeContext.aAnimatedElementMap!.has(this.aTargetHash)) { + const slideHash = this.aNodeContext.metaSlide!.info.hash; const aAnimatedElement = this.bIsTargetTextElement ? new AnimatedTextElement(this.aTargetHash, slideHash, null, null) : new AnimatedElement(this.aTargetHash, slideHash, null, null); - this.aNodeContext.aAnimatedElementMap.set( + this.aNodeContext.aAnimatedElementMap!.set( this.aTargetHash, aAnimatedElement, ); } - this.aAnimatedElement = this.aNodeContext.aAnimatedElementMap.get( + this.aAnimatedElement = this.aNodeContext.aAnimatedElementMap!.get( this.aTargetHash, ); // set additive mode - this.aAnimatedElement.setAdditiveMode(this.eAdditiveMode); + this.aAnimatedElement!.setAdditiveMode(this.eAdditiveMode); } } @@ -105,10 +105,10 @@ abstract class AnimationBaseNode extends BaseNode { if (this.aActivity) { this.saveStateOfAnimatedElement(); this.aActivity.setTargets(this.getAnimatedElement()); - if (this.getContext().bIsSkipping) { + if (this.getContext()!.bIsSkipping) { this.aActivity.end(); } else { - this.getContext().aActivityQueue.addActivity(this.aActivity); + this.getContext()!.aActivityQueue.addActivity(this.aActivity); } } else { super.scheduleDeactivationEvent(); @@ -126,7 +126,7 @@ abstract class AnimationBaseNode extends BaseNode { } } - public abstract createActivity(): AnimationActivity; + public abstract createActivity(): AnimationActivity | null | undefined; public fillActivityParams() { // compute duration @@ -143,16 +143,16 @@ abstract class AnimationBaseNode extends BaseNode { const aActivityParamSet = new ActivityParamSet(); aActivityParamSet.aEndEvent = makeEvent(this.deactivate.bind(this)); - aActivityParamSet.aTimerEventQueue = this.aContext.aTimerEventQueue; - aActivityParamSet.aActivityQueue = this.aContext.aActivityQueue; + aActivityParamSet.aTimerEventQueue = this.aContext!.aTimerEventQueue; + aActivityParamSet.aActivityQueue = this.aContext!.aActivityQueue; aActivityParamSet.nMinDuration = nDuration; aActivityParamSet.nMinNumberOfFrames = this.getMinFrameCount(); aActivityParamSet.bAutoReverse = this.isAutoReverseEnabled(); aActivityParamSet.nRepeatCount = this.getRepeatCount(); aActivityParamSet.nAccelerationFraction = this.getAccelerateValue(); aActivityParamSet.nDecelerationFraction = this.getDecelerateValue(); - aActivityParamSet.nSlideWidth = this.aNodeContext.aContext.nSlideWidth; - aActivityParamSet.nSlideHeight = this.aNodeContext.aContext.nSlideHeight; + aActivityParamSet.nSlideWidth = this.aNodeContext.aContext!.nSlideWidth; + aActivityParamSet.nSlideHeight = this.aNodeContext.aContext!.nSlideHeight; return aActivityParamSet; } @@ -162,11 +162,11 @@ abstract class AnimationBaseNode extends BaseNode { } public saveStateOfAnimatedElement() { - this.getAnimatedElement().saveState(this.getId()); + this.getAnimatedElement()!.saveState(this.getId()); } public removeEffect() { - this.getAnimatedElement().restoreState(this.getId()); + this.getAnimatedElement()!.restoreState(this.getId()); } public getTargetHash() { @@ -214,12 +214,12 @@ abstract class AnimationBaseNode extends BaseNode { } abstract class AnimationBaseNode2 extends AnimationBaseNode { - protected attributeName: string = ''; - private aToValue: string = null; + protected attributeName: string | undefined = ''; + private aToValue: string | null | undefined = null; protected constructor( aNodeInfo: AnimationNodeInfo, - aParentNode: BaseContainerNode, + aParentNode: BaseContainerNode | null, aNodeContext: NodeContext, ) { super(aNodeInfo, aParentNode, aNodeContext); @@ -242,7 +242,7 @@ abstract class AnimationBaseNode2 extends AnimationBaseNode { this.aToValue = aNodeInfo.to; } - public getAttributeName(): string { + public getAttributeName(): string | undefined { return this.attributeName; } @@ -264,17 +264,17 @@ abstract class AnimationBaseNode2 extends AnimationBaseNode { } abstract class AnimationBaseNode3 extends AnimationBaseNode2 { - private eAccumulate: AccumulateMode; - private eCalcMode: CalcMode; - private aFromValue: string; - private aByValue: string; - private aKeyTimes: Array; - private aValues: Array; - private aFormula: string; + private eAccumulate: AccumulateMode | undefined; + private eCalcMode: CalcMode | undefined; + private aFromValue: string | null | undefined; + private aByValue: string | null | undefined; + private aKeyTimes: Array | null; + private aValues: Array | null; + private aFormula: string | null | undefined; protected constructor( aNodeInfo: AnimationNodeInfo, - aParentNode: BaseContainerNode, + aParentNode: BaseContainerNode | null, aNodeContext: NodeContext, ) { super(aNodeInfo, aParentNode, aNodeContext); @@ -326,31 +326,31 @@ abstract class AnimationBaseNode3 extends AnimationBaseNode2 { this.aFormula = aNodeInfo.formula; } - public getAccumulate(): AccumulateMode { + public getAccumulate(): AccumulateMode | undefined { return this.eAccumulate; } - public getCalcMode(): CalcMode { + public getCalcMode(): CalcMode | undefined { return this.eCalcMode; } - public getFromValue(): string { + public getFromValue(): string | null | undefined { return this.aFromValue; } - public getByValue(): string { + public getByValue(): string | null | undefined { return this.aByValue; } - public getKeyTimes(): Array { + public getKeyTimes(): Array | null { return this.aKeyTimes; } - public getValues(): Array { + public getValues(): Array | null { return this.aValues; } - public getFormula(): string { + public getFormula(): string | null | undefined { return this.aFormula; } @@ -360,10 +360,10 @@ abstract class AnimationBaseNode3 extends AnimationBaseNode2 { if (verbose) { // accumulate mode if (this.getAccumulate()) - sInfo += '; accumulate: ' + AccumulateMode[this.getAccumulate()]; + sInfo += '; accumulate: ' + AccumulateMode[this.getAccumulate()!]; // calcMode - sInfo += '; calcMode: ' + CalcMode[this.getCalcMode()]; + sInfo += '; calcMode: ' + CalcMode[this.getCalcMode()!]; // from if (this.getFromValue()) sInfo += '; from: ' + this.getFromValue(); @@ -372,12 +372,12 @@ abstract class AnimationBaseNode3 extends AnimationBaseNode2 { if (this.getByValue()) sInfo += '; by: ' + this.getByValue(); // keyTimes - if (this.getKeyTimes().length) - sInfo += '; keyTimes: ' + this.getKeyTimes().join(','); + if (this.getKeyTimes()!.length) + sInfo += '; keyTimes: ' + this.getKeyTimes()!.join(','); // values - if (this.getValues().length) - sInfo += '; values: ' + this.getValues().join(','); + if (this.getValues()!.length) + sInfo += '; values: ' + this.getValues()!.join(','); // formula if (this.getFormula()) sInfo += '; formula: ' + this.getFormula(); diff --git a/browser/src/slideshow/engine/animationnodes/AnimationSetNode.ts b/browser/src/slideshow/engine/animationnodes/AnimationSetNode.ts index 7501e8ef9d153..7a34c3e8e20ab 100644 --- a/browser/src/slideshow/engine/animationnodes/AnimationSetNode.ts +++ b/browser/src/slideshow/engine/animationnodes/AnimationSetNode.ts @@ -15,7 +15,7 @@ declare var app: any; class AnimationSetNode extends AnimationBaseNode2 { constructor( aNodeInfo: AnimationNodeInfo, - aParentNode: BaseContainerNode, + aParentNode: BaseContainerNode | null, aNodeContext: NodeContext, ) { super(aNodeInfo, aParentNode, aNodeContext); @@ -26,8 +26,8 @@ class AnimationSetNode extends AnimationBaseNode2 { const aAnimation = createPropertyAnimation( this.getAttributeName(), this.getAnimatedElement(), - this.aNodeContext.aContext.nSlideWidth, - this.aNodeContext.aContext.nSlideHeight, + this.aNodeContext.aContext!.nSlideWidth, + this.aNodeContext.aContext!.nSlideHeight, ); const aActivityParamSet = this.fillActivityParams(); diff --git a/browser/src/slideshow/engine/animationnodes/AnimationTransformNode.ts b/browser/src/slideshow/engine/animationnodes/AnimationTransformNode.ts index f4b0fd77d33b9..eca29e6792fd0 100644 --- a/browser/src/slideshow/engine/animationnodes/AnimationTransformNode.ts +++ b/browser/src/slideshow/engine/animationnodes/AnimationTransformNode.ts @@ -15,7 +15,7 @@ declare var app: any; class AnimationTransformNode extends AnimationBaseNode3 { constructor( aNodeInfo: AnimationNodeInfo, - aParentNode: BaseContainerNode, + aParentNode: BaseContainerNode | null, aNodeContext: NodeContext, ) { super(aNodeInfo, aParentNode, aNodeContext); @@ -49,7 +49,7 @@ class AnimationTransformNode extends AnimationBaseNode3 { } } - public createActivity(): AnimationActivity { + public createActivity(): AnimationActivity | null | undefined { const aActivityParamSet = this.fillActivityParams(); let aAnimation = null; @@ -60,15 +60,15 @@ class AnimationTransformNode extends AnimationBaseNode3 { aAnimation = createPairPropertyAnimation( this.getAttributeName(), this.getAnimatedElement(), - this.aNodeContext.aContext.nSlideWidth, - this.aNodeContext.aContext.nSlideHeight, + this.aNodeContext.aContext!.nSlideWidth, + this.aNodeContext.aContext!.nSlideHeight, ); } else { aAnimation = createPropertyAnimation( this.getAttributeName(), this.getAnimatedElement(), - this.aNodeContext.aContext.nSlideWidth, - this.aNodeContext.aContext.nSlideHeight, + this.aNodeContext.aContext!.nSlideWidth, + this.aNodeContext.aContext!.nSlideHeight, ); } @@ -79,7 +79,7 @@ class AnimationTransformNode extends AnimationBaseNode3 { return null; } - const aInterpolator: PropertyInterpolatorType = null; // createActivity will compute it; + const aInterpolator: PropertyInterpolatorType | null = null; // createActivity will compute it; return createActivity(aActivityParamSet, this, aAnimation, aInterpolator); } diff --git a/browser/src/slideshow/engine/animationnodes/AnimationTransitionFilterNode.ts b/browser/src/slideshow/engine/animationnodes/AnimationTransitionFilterNode.ts index ddfc65e4230a4..5fc98403155ea 100644 --- a/browser/src/slideshow/engine/animationnodes/AnimationTransitionFilterNode.ts +++ b/browser/src/slideshow/engine/animationnodes/AnimationTransitionFilterNode.ts @@ -13,14 +13,14 @@ declare var app: any; class AnimationTransitionFilterNode extends AnimationBaseNode { - private eTransitionType: TransitionType; - private eTransitionSubType: TransitionSubType; + private eTransitionType: TransitionType | undefined; + private eTransitionSubType: TransitionSubType | undefined; private bIsReverseDirection: boolean = false; private eTransitionMode: TransitionMode; constructor( aNodeInfo: AnimationNodeInfo, - aParentNode: BaseContainerNode, + aParentNode: BaseContainerNode | null, aNodeContext: NodeContext, ) { super(aNodeInfo, aParentNode, aNodeContext); @@ -89,14 +89,14 @@ class AnimationTransitionFilterNode extends AnimationBaseNode { } } - public createActivity(): AnimationActivity { + public createActivity(): AnimationActivity | null { const aActivityParamSet = this.fillActivityParams(); return createShapeTransition( aActivityParamSet, this.getAnimatedElement(), - this.aNodeContext.aContext.nSlideWidth, - this.aNodeContext.aContext.nSlideHeight, + this.aNodeContext.aContext!.nSlideWidth, + this.aNodeContext.aContext!.nSlideHeight, this, ); } @@ -122,10 +122,11 @@ class AnimationTransitionFilterNode extends AnimationBaseNode { if (verbose) { if (this.getTransitionType()) - sInfo += '; type: ' + TransitionType[this.getTransitionType()]; + sInfo += '; type: ' + TransitionType[this.getTransitionType()!]; if (this.getTransitionSubtype()) - sInfo += '; subtype: ' + TransitionSubType[this.getTransitionSubtype()]; + sInfo += + '; subtype: ' + TransitionSubType[this.getTransitionSubtype()!]; sInfo += '; is reverse direction: ' + this.getReverseDirection(); diff --git a/browser/src/slideshow/engine/animationnodes/BaseContainerNode.ts b/browser/src/slideshow/engine/animationnodes/BaseContainerNode.ts index e47152a777e80..b6a6600baea61 100644 --- a/browser/src/slideshow/engine/animationnodes/BaseContainerNode.ts +++ b/browser/src/slideshow/engine/animationnodes/BaseContainerNode.ts @@ -16,8 +16,8 @@ abstract class BaseContainerNode extends BaseNode { protected aChildrenArray: Array; protected nFinishedChildren: number; private bDurationIndefinite: boolean; - private nLeftIterations: number; - private eImpressNodeType: ImpressNodeType; + private nLeftIterations: number | undefined; + private eImpressNodeType: ImpressNodeType | undefined; protected constructor( aNodeInfo: AnimationNodeInfo, @@ -162,13 +162,13 @@ abstract class BaseContainerNode extends BaseNode { let bFinished = this.nFinishedChildren >= nChildrenCount; if (bFinished && this.isDurationIndefinite()) { - if (this.nLeftIterations >= 1.0) { - this.nLeftIterations -= 1.0; + if (this.nLeftIterations! >= 1.0) { + this.nLeftIterations! -= 1.0; } - if (this.nLeftIterations >= 1.0) { + if (this.nLeftIterations! >= 1.0) { bFinished = false; const aRepetitionEvent = makeDelay(this.repeat.bind(this), 0.0); - this.aContext.aTimerEventQueue.addEvent(aRepetitionEvent); + this.aContext!.aTimerEventQueue.addEvent(aRepetitionEvent); } else { this.deactivate(); } @@ -229,7 +229,7 @@ abstract class BaseContainerNode extends BaseNode { } } - public getImpressNodeType(): ImpressNodeType { + public getImpressNodeType(): ImpressNodeType | undefined { return this.eImpressNodeType; } @@ -247,7 +247,7 @@ abstract class BaseContainerNode extends BaseNode { if (verbose) { if (this.getImpressNodeType()) - sInfo += '; nodeType: ' + ImpressNodeType[this.getImpressNodeType()]; + sInfo += '; nodeType: ' + ImpressNodeType[this.getImpressNodeType()!]; } for (const child of this.aChildrenArray) { @@ -294,9 +294,9 @@ class ParallelTimeContainer extends BaseContainerNode { class SequentialTimeContainer extends BaseContainerNode { private bIsRewinding: boolean; - private aCurrentSkipEvent: DelayEvent; - private aRewindCurrentEffectEvent: DelayEvent; - private aRewindLastEffectEvent: DelayEvent; + private aCurrentSkipEvent: DelayEvent | null; + private aRewindCurrentEffectEvent: DelayEvent | null; + private aRewindLastEffectEvent: DelayEvent | null; constructor(aNodeInfo: any, aParentNode: any, aNodeContext: any) { super(aNodeInfo, aParentNode, aNodeContext); @@ -368,16 +368,16 @@ class SequentialTimeContainer extends BaseContainerNode { public skipEffect(aChildNode: BaseNode) { if (this.isChildNode(aChildNode)) { // First off we end all queued activities. - this.getContext().aActivityQueue.endAll(); + this.getContext()!.aActivityQueue.endAll(); // We signal that we are going to skip all subsequent animations by // setting the bIsSkipping flag to 'true', then all queued events are // fired immediately. In such a way the correct order of the various // events that belong to the animation time-line is preserved. - this.getContext().bIsSkipping = true; - this.getContext().aTimerEventQueue.forceEmpty(); - this.getContext().bIsSkipping = false; + this.getContext()!.bIsSkipping = true; + this.getContext()!.aTimerEventQueue.forceEmpty(); + this.getContext()!.bIsSkipping = false; const aEvent = makeEvent(aChildNode.deactivate.bind(aChildNode)); - this.getContext().aTimerEventQueue.addEvent(aEvent); + this.getContext()!.aTimerEventQueue.addEvent(aEvent); } else { window.app.console.log( 'SequentialTimeContainer.skipEffect: unknown child: ' + @@ -406,17 +406,17 @@ class SequentialTimeContainer extends BaseContainerNode { // resolve the next child. this.bIsRewinding = true; // First off we end all queued activities. - this.getContext().aActivityQueue.endAll(); + this.getContext()!.aActivityQueue.endAll(); // We signal that we are going to skip all subsequent animations by // setting the bIsSkipping flag to 'true', then all queued events are // fired immediately. In such a way the correct order of the various // events that belong to the animation time-line is preserved. - this.getContext().bIsSkipping = true; - this.getContext().aTimerEventQueue.forceEmpty(); - this.getContext().bIsSkipping = false; + this.getContext()!.bIsSkipping = true; + this.getContext()!.aTimerEventQueue.forceEmpty(); + this.getContext()!.bIsSkipping = false; // We end all new activities appended to the activity queue by // the fired events. - this.getContext().aActivityQueue.endAll(); + this.getContext()!.aActivityQueue.endAll(); // Now we perform a final 'end' and restore the animated shape to // the state it was before the current effect was applied. @@ -456,8 +456,8 @@ class SequentialTimeContainer extends BaseContainerNode { // resolve the next child. this.bIsRewinding = true; // We end the current effect. - this.getContext().aTimerEventQueue.forceEmpty(); - this.getContext().aActivityQueue.clear(); + this.getContext()!.aTimerEventQueue.forceEmpty(); + this.getContext()!.aActivityQueue.clear(); aChildNode.end(); // Invoking the end method on the current child node that has not yet // been activated should not lead to any change on the animated shape. @@ -528,25 +528,25 @@ class SequentialTimeContainer extends BaseContainerNode { ); if (this.isMainSequenceRootNode()) { - this.aContext.aEventMultiplexer.registerSkipEffectEvent( + this.aContext!.aEventMultiplexer!.registerSkipEffectEvent( this.aCurrentSkipEvent, ); - this.aContext.aEventMultiplexer.registerRewindCurrentEffectEvent( + this.aContext!.aEventMultiplexer!.registerRewindCurrentEffectEvent( this.aRewindCurrentEffectEvent, ); - this.aContext.aEventMultiplexer.registerRewindLastEffectEvent( + this.aContext!.aEventMultiplexer!.registerRewindLastEffectEvent( this.aRewindLastEffectEvent, ); } else if (this.isInteractiveSequenceRootNode()) { - this.aContext.aEventMultiplexer.registerSkipInteractiveEffectEvent( + this.aContext!.aEventMultiplexer!.registerSkipInteractiveEffectEvent( aChildNode.getId(), this.aCurrentSkipEvent, ); - this.aContext.aEventMultiplexer.registerRewindRunningInteractiveEffectEvent( + this.aContext!.aEventMultiplexer!.registerRewindRunningInteractiveEffectEvent( aChildNode.getId(), this.aRewindCurrentEffectEvent, ); - this.aContext.aEventMultiplexer.registerRewindEndedInteractiveEffectEvent( + this.aContext!.aEventMultiplexer!.registerRewindEndedInteractiveEffectEvent( aChildNode.getId(), this.aRewindLastEffectEvent, ); @@ -557,13 +557,13 @@ class SequentialTimeContainer extends BaseContainerNode { public notifyRewindedEvent(aChildNode: BaseNode) { if (this.isInteractiveSequenceRootNode()) { - this.aContext.aEventMultiplexer.notifyRewindedEffectEvent( + this.aContext!.aEventMultiplexer!.notifyRewindedEffectEvent( aChildNode.getId(), ); const sId = aChildNode.getBegin().getEventBaseElementId(); if (sId) { - this.aContext.aEventMultiplexer.notifyRewindedEffectEvent(sId); + this.aContext!.aEventMultiplexer!.notifyRewindedEffectEvent(sId); } } } diff --git a/browser/src/slideshow/engine/animationnodes/BaseNode.ts b/browser/src/slideshow/engine/animationnodes/BaseNode.ts index a22afd1a8a3a8..166424e2f0c91 100644 --- a/browser/src/slideshow/engine/animationnodes/BaseNode.ts +++ b/browser/src/slideshow/engine/animationnodes/BaseNode.ts @@ -93,7 +93,7 @@ function createStateTransitionTable() { [NodeState.Frozen, NodeState.Invalid], // this state is unreachable here [NodeState.Ended, NodeState.Ended], // this state is a sink here (cannot restart) ]); - aSTT.get(RestartMode.Never).set(FillModes.Remove, aTable0); + aSTT.get(RestartMode.Never)!.set(FillModes.Remove, aTable0); // transition table for restart=NEVER, fill=FREEZE, HOLD, TRANSITION const aTable1 = new Map([ @@ -105,9 +105,9 @@ function createStateTransitionTable() { [NodeState.Ended, NodeState.Ended], // this state is a sink here (cannot restart) ]); - aSTT.get(RestartMode.Never).set(FillModes.Freeze, aTable1); - aSTT.get(RestartMode.Never).set(FillModes.Hold, aTable1); - aSTT.get(RestartMode.Never).set(FillModes.Transition, aTable1); + aSTT.get(RestartMode.Never)!.set(FillModes.Freeze, aTable1); + aSTT.get(RestartMode.Never)!.set(FillModes.Hold, aTable1); + aSTT.get(RestartMode.Never)!.set(FillModes.Transition, aTable1); // transition table for restart=WHEN_NOT_ACTIVE, fill=REMOVE const aTable2 = new Map([ @@ -118,7 +118,7 @@ function createStateTransitionTable() { [NodeState.Frozen, NodeState.Invalid], // this state is unreachable here [NodeState.Ended, NodeState.Resolved | NodeState.Active | NodeState.Ended], // restart is possible ]); - aSTT.get(RestartMode.WhenNotActive).set(FillModes.Remove, aTable2); + aSTT.get(RestartMode.WhenNotActive)!.set(FillModes.Remove, aTable2); // transition table for restart=WHEN_NOT_ACTIVE, fill=FREEZE, HOLD, TRANSITION const aTable3 = new Map([ @@ -129,9 +129,9 @@ function createStateTransitionTable() { [NodeState.Frozen, NodeState.Resolved | NodeState.Active | NodeState.Ended], // restart is possible [NodeState.Ended, NodeState.Resolved | NodeState.Active | NodeState.Ended], // restart is possible ]); - aSTT.get(RestartMode.WhenNotActive).set(FillModes.Freeze, aTable3); - aSTT.get(RestartMode.WhenNotActive).set(FillModes.Hold, aTable3); - aSTT.get(RestartMode.WhenNotActive).set(FillModes.Transition, aTable3); + aSTT.get(RestartMode.WhenNotActive)!.set(FillModes.Freeze, aTable3); + aSTT.get(RestartMode.WhenNotActive)!.set(FillModes.Hold, aTable3); + aSTT.get(RestartMode.WhenNotActive)!.set(FillModes.Transition, aTable3); // transition table for restart=ALWAYS, fill=REMOVE const aTable4 = new Map([ @@ -142,7 +142,7 @@ function createStateTransitionTable() { [NodeState.Frozen, NodeState.Invalid], // this state is unreachable here [NodeState.Ended, NodeState.Resolved | NodeState.Active | NodeState.Ended], // restart is possible ]); - aSTT.get(RestartMode.Always).set(FillModes.Remove, aTable4); + aSTT.get(RestartMode.Always)!.set(FillModes.Remove, aTable4); // transition table for restart=ALWAYS, fill=FREEZE, HOLD, TRANSITION const aTable5 = new Map([ @@ -159,9 +159,9 @@ function createStateTransitionTable() { [NodeState.Frozen, NodeState.Resolved | NodeState.Active | NodeState.Ended], // restart is possible [NodeState.Ended, NodeState.Resolved | NodeState.Active | NodeState.Ended], // restart is possible ]); - aSTT.get(RestartMode.Always).set(FillModes.Freeze, aTable5); - aSTT.get(RestartMode.Always).set(FillModes.Hold, aTable5); - aSTT.get(RestartMode.Always).set(FillModes.Transition, aTable5); + aSTT.get(RestartMode.Always)!.set(FillModes.Freeze, aTable5); + aSTT.get(RestartMode.Always)!.set(FillModes.Hold, aTable5); + aSTT.get(RestartMode.Always)!.set(FillModes.Transition, aTable5); return aSTT; } @@ -186,7 +186,7 @@ function getTransitionTable(eRestartMode: RestartMode, eFillMode: FillModes) { eFillMode = FillModes.Remove; } - return aStateTransitionTable.get(eRestartMode).get(eFillMode); + return aStateTransitionTable.get(eRestartMode)!.get(eFillMode); } class StateTransition { @@ -242,34 +242,34 @@ abstract class BaseNode { public readonly eAnimationNodeType: AnimationNodeType; protected bIsContainer: boolean; protected readonly aNodeInfo: AnimationNodeInfo; - protected readonly aParentNode: BaseContainerNode; + protected readonly aParentNode: BaseContainerNode | null; protected readonly aNodeContext: NodeContext; - protected aContext: SlideShowContext; + protected aContext: SlideShowContext | null; private nStartDelay: number; protected eCurrentState: NodeState; public nCurrentStateTransition: number; private aDeactivatingListenerArray: BaseNode[]; - private aActivationEvent: DelayEvent; - private aDeactivationEvent: DelayEvent; + private aActivationEvent: DelayEvent | null; + private aDeactivationEvent: DelayEvent | null; - private aBegin: Timing; - private aEnd: Timing; - private aDuration: Duration; + private aBegin: Timing | null; + private aEnd: Timing | null; + private aDuration: Duration | null; protected bIsMainSequenceRootNode: boolean = false; protected bIsInteractiveSequenceRootNode: boolean = false; private eFillMode: FillModes; private eRestartMode: RestartMode; - private nRepeatCount: number; + private nRepeatCount: number | undefined; private nAccelerate: number; private nDecelerate: number; private bAutoReverse: boolean; private aAnimationNodeMap: AnimationNodeMap; - private aStateTransTable: Map; + private aStateTransTable: Map | undefined; protected constructor( aNodeInfo: AnimationNodeInfo, - aParentNode: BaseContainerNode, + aParentNode: BaseContainerNode | null, aNodeContext: NodeContext, ) { this.nId = BaseNode.getUniqueId(); @@ -327,7 +327,7 @@ abstract class BaseNode { public parseNodeInfo() { if (this.aNodeInfo.id) - this.aNodeContext.aAnimationNodeMap.set(this.aNodeInfo.id, this); + this.aNodeContext.aAnimationNodeMap!.set(this.aNodeInfo.id, this); this.aBegin = new Timing(this, this.aNodeInfo.begin); this.aBegin.parse(); @@ -381,7 +381,7 @@ abstract class BaseNode { // resolve fill value if (this.eFillMode === FillModes.Default) { if (this.getParentNode()) - this.eFillMode = this.getParentNode().getFillMode(); + this.eFillMode = this.getParentNode()!.getFillMode(); else this.eFillMode = FillModes.Auto; } @@ -398,7 +398,7 @@ abstract class BaseNode { // resolve restart value if (this.eRestartMode === RestartMode.Default) { if (this.getParentNode()) - this.eRestartMode = this.getParentNode().getRestartMode(); + this.eRestartMode = this.getParentNode()!.getRestartMode(); // SMIL recommendation document says to set it to 'always' else this.eRestartMode = RestartMode.Always; } @@ -419,7 +419,7 @@ abstract class BaseNode { ); } - public getParentNode(): BaseContainerNode { + public getParentNode(): BaseContainerNode | null { return this.aParentNode; } @@ -461,7 +461,7 @@ abstract class BaseNode { } registerEvent( this.getId(), - this.aNodeContext.aContext.aSlideShowHandler, + this.aNodeContext.aContext!.aSlideShowHandler, this.getBegin(), this.aActivationEvent, this.aNodeContext, @@ -486,11 +486,11 @@ abstract class BaseNode { if (aStateTrans.enter(NodeState.Active)) { this.activate_st(); aStateTrans.commit(); - if (!this.aContext.aEventMultiplexer) + if (!this.aContext!.aEventMultiplexer) window.app.console.log( 'BaseNode.activate: this.aContext.aEventMultiplexer is not valid', ); - this.aContext.aEventMultiplexer.notifyEvent( + this.aContext!.aEventMultiplexer!.notifyEvent( EventTrigger.BeginEvent, this.getId(), ); @@ -601,7 +601,7 @@ abstract class BaseNode { return this.bIsInteractiveSequenceRootNode; } - public makeDeactivationEvent(nDelay: number): EventBase { + public makeDeactivationEvent(nDelay: number): EventBase | null { if (this.aDeactivationEvent) { this.aDeactivationEvent.charge(); } else if (typeof nDelay == typeof 0) { @@ -612,7 +612,7 @@ abstract class BaseNode { return this.aDeactivationEvent; } - public scheduleDeactivationEvent(aEvent?: EventBase) { + public scheduleDeactivationEvent(aEvent?: EventBase | null) { this.DBG(this.callInfo('scheduleDeactivationEvent')); if (!aEvent) { @@ -620,7 +620,7 @@ abstract class BaseNode { aEvent = this.makeDeactivationEvent(this.getDuration().getValue()); } if (aEvent) { - this.aContext.aTimerEventQueue.addEvent(aEvent); + this.aContext!.aTimerEventQueue.addEvent(aEvent); } } @@ -651,15 +651,15 @@ abstract class BaseNode { this.aDeactivatingListenerArray[i].notifyDeactivating(this); } - this.aContext.aEventMultiplexer.notifyEvent( + this.aContext!.aEventMultiplexer!.notifyEvent( EventTrigger.EndEvent, this.getId(), ); - if (this.getParentNode() && this.getParentNode().isMainSequenceRootNode()) - this.aContext.aEventMultiplexer.notifyNextEffectEndEvent(); + if (this.getParentNode() && this.getParentNode()!.isMainSequenceRootNode()) + this.aContext!.aEventMultiplexer!.notifyNextEffectEndEvent(); if (this.isMainSequenceRootNode()) - this.aContext.aEventMultiplexer.notifyAnimationsEndEvent(); + this.aContext!.aEventMultiplexer!.notifyAnimationsEndEvent(); } public getContext() { @@ -667,7 +667,7 @@ abstract class BaseNode { } public isTransition(eFromState: NodeState, eToState: NodeState) { - return (this.aStateTransTable.get(eFromState) & eToState) !== 0; + return (this.aStateTransTable!.get(eFromState)! & eToState) !== 0; } public inStateOrTransition(nMask: number) { diff --git a/browser/src/slideshow/engine/animationnodes/NodeContext.ts b/browser/src/slideshow/engine/animationnodes/NodeContext.ts index a332637ee1509..ff18b26bed9a0 100644 --- a/browser/src/slideshow/engine/animationnodes/NodeContext.ts +++ b/browser/src/slideshow/engine/animationnodes/NodeContext.ts @@ -13,11 +13,11 @@ declare var app: any; class NodeContext { - public aContext: SlideShowContext = null; - public aAnimationNodeMap: AnimationNodeMap = null; - public aAnimatedElementMap: Map = null; - public aSourceEventElementMap: Map = null; - public metaSlide: MetaSlide = null; + public aContext: SlideShowContext | null = null; + public aAnimationNodeMap: AnimationNodeMap | null = null; + public aAnimatedElementMap: Map | null = null; + public aSourceEventElementMap: Map | null = null; + public metaSlide: MetaSlide | null = null; public nStartDelay = 0.0; public bFirstRun: boolean | undefined = undefined; public bIsInvalid = false; @@ -38,24 +38,24 @@ class NodeContext { return null; } - if (!this.aContext.aEventMultiplexer) { + if (!this.aContext!.aEventMultiplexer) { window.app.console.log( 'NodeContext.makeSourceEventElement: event multiplexer not initialized', ); return null; } - if (!this.aSourceEventElementMap.has(sId)) { - this.aSourceEventElementMap.set( + if (!this.aSourceEventElementMap!.has(sId)) { + this.aSourceEventElementMap!.set( sId, new SourceEventElement( sId, aSlideShow, aEventBaseElem, - this.aContext.aEventMultiplexer, + this.aContext!.aEventMultiplexer, ), ); } - return this.aSourceEventElementMap.get(sId); + return this.aSourceEventElementMap!.get(sId); } } diff --git a/browser/src/slideshow/engine/animationnodes/PropertyAnimationNode.ts b/browser/src/slideshow/engine/animationnodes/PropertyAnimationNode.ts index 73dad75803819..a4ea98f4bb2f7 100644 --- a/browser/src/slideshow/engine/animationnodes/PropertyAnimationNode.ts +++ b/browser/src/slideshow/engine/animationnodes/PropertyAnimationNode.ts @@ -15,21 +15,21 @@ declare var app: any; class PropertyAnimationNode extends AnimationBaseNode3 { constructor( aNodeInfo: AnimationNodeInfo, - aParentNode: BaseContainerNode, + aParentNode: BaseContainerNode | null, aNodeContext: NodeContext, ) { super(aNodeInfo, aParentNode, aNodeContext); this.sClassName = 'PropertyAnimationNode'; } - createActivity(): AnimationActivity { + createActivity(): AnimationActivity | null | undefined { const aActivityParamSet = this.fillActivityParams(); const aAnimation = createPropertyAnimation( this.getAttributeName(), this.getAnimatedElement(), - this.aNodeContext.aContext.nSlideWidth, - this.aNodeContext.aContext.nSlideHeight, + this.aNodeContext.aContext!.nSlideWidth, + this.aNodeContext.aContext!.nSlideHeight, ); if (!aAnimation) { @@ -39,7 +39,7 @@ class PropertyAnimationNode extends AnimationBaseNode3 { return null; } // TODO Interpolator = null ? - const aInterpolator: PropertyInterpolatorType = null; // createActivity will compute it; + const aInterpolator: PropertyInterpolatorType | null = null; // createActivity will compute it; return createActivity(aActivityParamSet, this, aAnimation, aInterpolator); } } diff --git a/browser/src/slideshow/engine/tools.ts b/browser/src/slideshow/engine/tools.ts index 787662c0f85bc..a8af08aa433fb 100644 --- a/browser/src/slideshow/engine/tools.ts +++ b/browser/src/slideshow/engine/tools.ts @@ -29,7 +29,7 @@ function getCurrentSystemTime() { } // Remove any whitespace inside a string -function removeWhiteSpaces(str: string) { +function removeWhiteSpaces(str: string | undefined) { if (!str) return ''; const re = / */; diff --git a/browser/src/slideshow/transition/BarWipeTransition.ts b/browser/src/slideshow/transition/BarWipeTransition.ts index e80924f93d84d..cf030bce831a1 100644 --- a/browser/src/slideshow/transition/BarWipeTransition.ts +++ b/browser/src/slideshow/transition/BarWipeTransition.ts @@ -15,7 +15,7 @@ declare var SlideShow: any; function BarWipeTransition(transitionParameters: TransitionParameters) { const transitionSubType = stringToTransitionSubTypeMap[ - transitionParameters.slideInfo.transitionSubtype + transitionParameters.slideInfo!.transitionSubtype! ]; if (transitionSubType == TransitionSubType.FADEOVERCOLOR) { return new SlideShow.CutTransition(transitionParameters); diff --git a/browser/src/slideshow/transition/BarsTransition.ts b/browser/src/slideshow/transition/BarsTransition.ts index 034355b416807..46b1493044db0 100644 --- a/browser/src/slideshow/transition/BarsTransition.ts +++ b/browser/src/slideshow/transition/BarsTransition.ts @@ -26,7 +26,7 @@ class BarsTransition extends Transition2d { public start(): void { const transitionSubType = - stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype]; + stringToTransitionSubTypeMap[this.slideInfo!.transitionSubtype!]; if (transitionSubType == TransitionSubType.VERTICAL) { this.direction = BarsSubType.VERTICAL; @@ -39,7 +39,7 @@ class BarsTransition extends Transition2d { // jscpd:ignore-start public renderUniformValue(): void { this.gl.uniform1i( - this.gl.getUniformLocation(this.program, 'direction'), + this.gl.getUniformLocation(this.program!, 'direction'), this.direction, ); } diff --git a/browser/src/slideshow/transition/BoxTransition.ts b/browser/src/slideshow/transition/BoxTransition.ts index 069b37ccbb735..1766c46edcf6b 100644 --- a/browser/src/slideshow/transition/BoxTransition.ts +++ b/browser/src/slideshow/transition/BoxTransition.ts @@ -26,10 +26,10 @@ class BoxTransition extends Transition2d { public start(): void { const transitionSubType = - stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype]; + stringToTransitionSubTypeMap[this.slideInfo!.transitionSubtype!]; if ( transitionSubType == TransitionSubType.RECTANGLE && - this.slideInfo.transitionDirection + this.slideInfo!.transitionDirection ) { this.direction = BoxSubType.HORIZONTAL; } else { @@ -42,7 +42,7 @@ class BoxTransition extends Transition2d { // jscpd:ignore-start public renderUniformValue(): void { this.gl.uniform1i( - this.gl.getUniformLocation(this.program, 'direction'), + this.gl.getUniformLocation(this.program!, 'direction'), this.direction, ); } diff --git a/browser/src/slideshow/transition/CheckersTransition.ts b/browser/src/slideshow/transition/CheckersTransition.ts index b1869a5f6ed3a..2a76b7bd6f124 100644 --- a/browser/src/slideshow/transition/CheckersTransition.ts +++ b/browser/src/slideshow/transition/CheckersTransition.ts @@ -26,7 +26,7 @@ class CheckersTransition extends Transition2d { public start(): void { const transitionSubType = - stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype]; + stringToTransitionSubTypeMap[this.slideInfo!.transitionSubtype!]; if (transitionSubType == TransitionSubType.DOWN) { this.direction = CheckersSubType.DOWN; @@ -40,7 +40,7 @@ class CheckersTransition extends Transition2d { // jscpd:ignore-start public renderUniformValue(): void { this.gl.uniform1i( - this.gl.getUniformLocation(this.program, 'direction'), + this.gl.getUniformLocation(this.program!, 'direction'), this.direction, ); } diff --git a/browser/src/slideshow/transition/CombTransition.ts b/browser/src/slideshow/transition/CombTransition.ts index b402b6d082264..a6fd3d34393cc 100644 --- a/browser/src/slideshow/transition/CombTransition.ts +++ b/browser/src/slideshow/transition/CombTransition.ts @@ -26,7 +26,7 @@ class CombTransition extends Transition2d { public start(): void { const transitionSubType = - stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype]; + stringToTransitionSubTypeMap[this.slideInfo!.transitionSubtype!]; if (transitionSubType == TransitionSubType.COMBVERTICAL) { this.direction = CombSubType.COMBVERTICAL; @@ -39,7 +39,7 @@ class CombTransition extends Transition2d { // jscpd:ignore-start public renderUniformValue(): void { this.gl.uniform1i( - this.gl.getUniformLocation(this.program, 'direction'), + this.gl.getUniformLocation(this.program!, 'direction'), this.direction, ); } diff --git a/browser/src/slideshow/transition/CoverTransition.ts b/browser/src/slideshow/transition/CoverTransition.ts index bf6c966999e72..dfa3f73753df1 100644 --- a/browser/src/slideshow/transition/CoverTransition.ts +++ b/browser/src/slideshow/transition/CoverTransition.ts @@ -28,7 +28,7 @@ class CoverTransition extends Transition2d { public start(): void { const transitionSubType = - stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype]; + stringToTransitionSubTypeMap[this.slideInfo!.transitionSubtype!]; if (transitionSubType == TransitionSubType.FROMTOP) { this.direction = CoverSubType.FROMTOP; @@ -45,7 +45,7 @@ class CoverTransition extends Transition2d { // jscpd:ignore-start public renderUniformValue(): void { this.gl.uniform1i( - this.gl.getUniformLocation(this.program, 'direction'), + this.gl.getUniformLocation(this.program!, 'direction'), this.direction, ); } diff --git a/browser/src/slideshow/transition/DiagonalTransition.ts b/browser/src/slideshow/transition/DiagonalTransition.ts index 7a852663a009b..9b893a1c1c4a1 100644 --- a/browser/src/slideshow/transition/DiagonalTransition.ts +++ b/browser/src/slideshow/transition/DiagonalTransition.ts @@ -28,16 +28,16 @@ class DiagonalTransition extends Transition2d { public start(): void { const transitionSubType = - stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype]; + stringToTransitionSubTypeMap[this.slideInfo!.transitionSubtype!]; if ( transitionSubType == TransitionSubType.HORIZONTALRIGHT && - !this.slideInfo.transitionDirection + !this.slideInfo!.transitionDirection ) { this.direction = DiagonalSubType.BOTTOMLEFT; } else if ( transitionSubType == TransitionSubType.HORIZONTALLEFT && - !this.slideInfo.transitionDirection + !this.slideInfo!.transitionDirection ) { this.direction = DiagonalSubType.BOTTOMRIGHT; } else if (transitionSubType == TransitionSubType.HORIZONTALRIGHT) { @@ -51,7 +51,7 @@ class DiagonalTransition extends Transition2d { // jscpd:ignore-start public renderUniformValue(): void { this.gl.uniform1i( - this.gl.getUniformLocation(this.program, 'direction'), + this.gl.getUniformLocation(this.program!, 'direction'), this.direction, ); } diff --git a/browser/src/slideshow/transition/EllipseWipeTransition.ts b/browser/src/slideshow/transition/EllipseWipeTransition.ts index 629819f50c5d4..80b4e3bca5c4c 100644 --- a/browser/src/slideshow/transition/EllipseWipeTransition.ts +++ b/browser/src/slideshow/transition/EllipseWipeTransition.ts @@ -15,7 +15,7 @@ declare var SlideShow: any; function EllipseWipeTransition(transitionParameters: TransitionParameters) { const transitionSubType = stringToTransitionSubTypeMap[ - transitionParameters.slideInfo.transitionSubtype + transitionParameters.slideInfo!.transitionSubtype! ]; if (transitionSubType == TransitionSubType.CIRCLE) { return new SlideShow.CircleTransition(transitionParameters); diff --git a/browser/src/slideshow/transition/FadeTransition.ts b/browser/src/slideshow/transition/FadeTransition.ts index b11ff261da128..036d9b8b78e75 100644 --- a/browser/src/slideshow/transition/FadeTransition.ts +++ b/browser/src/slideshow/transition/FadeTransition.ts @@ -28,7 +28,7 @@ class FadeTransition extends SlideShow.Transition2d { public start(): void { const transitionSubType = - stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype]; + stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype!]; this.effectTransition = FadeSubType.FADEOVERBLACK; // default diff --git a/browser/src/slideshow/transition/IrisWipeTransition.ts b/browser/src/slideshow/transition/IrisWipeTransition.ts index 011c43685ea83..6b8c9b61e29cc 100644 --- a/browser/src/slideshow/transition/IrisWipeTransition.ts +++ b/browser/src/slideshow/transition/IrisWipeTransition.ts @@ -15,7 +15,7 @@ declare var SlideShow: any; function IrisWipeTransition(transitionParameters: TransitionParameters) { const transitionSubType = stringToTransitionSubTypeMap[ - transitionParameters.slideInfo.transitionSubtype + transitionParameters.slideInfo!.transitionSubtype! ]; if (transitionSubType == TransitionSubType.DIAMOND) { return new SlideShow.DiamondTransition(transitionParameters); diff --git a/browser/src/slideshow/transition/MicsShapeWipeTransition.ts b/browser/src/slideshow/transition/MicsShapeWipeTransition.ts index afddb08e79093..698245773ff9b 100644 --- a/browser/src/slideshow/transition/MicsShapeWipeTransition.ts +++ b/browser/src/slideshow/transition/MicsShapeWipeTransition.ts @@ -15,7 +15,7 @@ declare var SlideShow: any; function MicsShapeWipeTransition(transitionParameters: TransitionParameters) { const transitionSubType = stringToTransitionSubTypeMap[ - transitionParameters.slideInfo.transitionSubtype + transitionParameters.slideInfo!.transitionSubtype! ]; if (transitionSubType == TransitionSubType.CORNERSOUT) { return SlideShow.CubeTransition(transitionParameters, true); diff --git a/browser/src/slideshow/transition/OvalTransition.ts b/browser/src/slideshow/transition/OvalTransition.ts index 61b539a888f80..35acb15b93b5c 100644 --- a/browser/src/slideshow/transition/OvalTransition.ts +++ b/browser/src/slideshow/transition/OvalTransition.ts @@ -26,7 +26,7 @@ class OvalTransition extends Transition2d { public start(): void { const transitionSubType = - stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype]; + stringToTransitionSubTypeMap[this.slideInfo!.transitionSubtype!]; if (transitionSubType == TransitionSubType.HORIZONTAL) { this.direction = OvalSubType.HORIZONTAL; } else if (transitionSubType == TransitionSubType.VERTICAL) { @@ -39,7 +39,7 @@ class OvalTransition extends Transition2d { // jscpd:ignore-start public renderUniformValue(): void { this.gl.uniform1i( - this.gl.getUniformLocation(this.program, 'direction'), + this.gl.getUniformLocation(this.program!, 'direction'), this.direction, ); } diff --git a/browser/src/slideshow/transition/PushTransition.ts b/browser/src/slideshow/transition/PushTransition.ts index f082550ae32b6..e7020a2881633 100644 --- a/browser/src/slideshow/transition/PushTransition.ts +++ b/browser/src/slideshow/transition/PushTransition.ts @@ -28,7 +28,7 @@ class PushTransition extends Transition2d { public start(): void { const transitionSubType = - stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype]; + stringToTransitionSubTypeMap[this.slideInfo!.transitionSubtype!]; if (transitionSubType == TransitionSubType.FROMTOP) { this.direction = PushSubType.FROMTOP; @@ -45,7 +45,7 @@ class PushTransition extends Transition2d { // jscpd:ignore-start public renderUniformValue(): void { this.gl.uniform1i( - this.gl.getUniformLocation(this.program, 'direction'), + this.gl.getUniformLocation(this.program!, 'direction'), this.direction, ); } diff --git a/browser/src/slideshow/transition/PushWipeTransition.ts b/browser/src/slideshow/transition/PushWipeTransition.ts index 0422e6e12574f..5bb8974fc68d5 100644 --- a/browser/src/slideshow/transition/PushWipeTransition.ts +++ b/browser/src/slideshow/transition/PushWipeTransition.ts @@ -15,7 +15,7 @@ declare var SlideShow: any; function PushWipeTransition(transitionParameters: TransitionParameters) { const transitionSubType = stringToTransitionSubTypeMap[ - transitionParameters.slideInfo.transitionSubtype + transitionParameters.slideInfo!.transitionSubtype! ]; if ( transitionSubType == TransitionSubType.COMBHORIZONTAL || diff --git a/browser/src/slideshow/transition/SlideWipeTransition.ts b/browser/src/slideshow/transition/SlideWipeTransition.ts index b5e06ef30c026..0c36788cf2e7a 100644 --- a/browser/src/slideshow/transition/SlideWipeTransition.ts +++ b/browser/src/slideshow/transition/SlideWipeTransition.ts @@ -13,7 +13,7 @@ declare var SlideShow: any; function SlideWipeTransition(transitionParameters: TransitionParameters) { - if (transitionParameters.slideInfo.transitionDirection) { + if (transitionParameters.slideInfo!.transitionDirection) { return new SlideShow.CoverTransition(transitionParameters); } else { return new SlideShow.UncoverTransition(transitionParameters); diff --git a/browser/src/slideshow/transition/SplitTransition.ts b/browser/src/slideshow/transition/SplitTransition.ts index aa5513cfc3a5d..5ec026285958a 100644 --- a/browser/src/slideshow/transition/SplitTransition.ts +++ b/browser/src/slideshow/transition/SplitTransition.ts @@ -28,26 +28,26 @@ class SplitTransition extends Transition2d { public start(): void { const transitionSubType = - stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype]; + stringToTransitionSubTypeMap[this.slideInfo!.transitionSubtype!]; if ( transitionSubType == TransitionSubType.HORIZONTAL && - this.slideInfo.transitionDirection == false + this.slideInfo!.transitionDirection == false ) { this.direction = SplitSubType.HORIZONTALIN; } else if ( transitionSubType == TransitionSubType.HORIZONTAL && - this.slideInfo.transitionDirection == true + this.slideInfo!.transitionDirection == true ) { this.direction = SplitSubType.HORIZONTALOUT; } else if ( transitionSubType == TransitionSubType.VERTICAL && - this.slideInfo.transitionDirection == false + this.slideInfo!.transitionDirection == false ) { this.direction = SplitSubType.VERTICALIN; } else if ( transitionSubType == TransitionSubType.VERTICAL && - this.slideInfo.transitionDirection == true + this.slideInfo!.transitionDirection == true ) { this.direction = SplitSubType.VERTICALOUT; } @@ -57,7 +57,7 @@ class SplitTransition extends Transition2d { // jscpd:ignore-start public renderUniformValue(): void { this.gl.uniform1i( - this.gl.getUniformLocation(this.program, 'direction'), + this.gl.getUniformLocation(this.program!, 'direction'), this.direction, ); } diff --git a/browser/src/slideshow/transition/UncoverTransition.ts b/browser/src/slideshow/transition/UncoverTransition.ts index d6c43e38895c1..861fa6d7f6cae 100644 --- a/browser/src/slideshow/transition/UncoverTransition.ts +++ b/browser/src/slideshow/transition/UncoverTransition.ts @@ -28,7 +28,7 @@ class UncoverTransition extends Transition2d { public start(): void { const transitionSubType = - stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype]; + stringToTransitionSubTypeMap[this.slideInfo!.transitionSubtype!]; if (transitionSubType == TransitionSubType.FROMTOP) { this.direction = UncoverSubType.FROMTOP; @@ -45,7 +45,7 @@ class UncoverTransition extends Transition2d { public renderUniformValue(): void { this.gl.uniform1i( - this.gl.getUniformLocation(this.program, 'direction'), + this.gl.getUniformLocation(this.program!, 'direction'), this.direction, ); } diff --git a/browser/src/slideshow/transition/VenetianTransition.ts b/browser/src/slideshow/transition/VenetianTransition.ts index 964de051b3e74..b803010a4411a 100644 --- a/browser/src/slideshow/transition/VenetianTransition.ts +++ b/browser/src/slideshow/transition/VenetianTransition.ts @@ -26,7 +26,7 @@ class VenetianTransition extends Transition2d { public start(): void { const transitionSubType = - stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype]; + stringToTransitionSubTypeMap[this.slideInfo!.transitionSubtype!]; if (transitionSubType == TransitionSubType.HORIZONTAL) { this.direction = VenetianSubType.HORIZONTAL; @@ -39,13 +39,13 @@ class VenetianTransition extends Transition2d { public renderUniformValue(): void { this.gl.uniform1i( - this.gl.getUniformLocation(this.program, 'direction'), + this.gl.getUniformLocation(this.program!, 'direction'), this.direction, ); - this.gl.uniform2fv(this.gl.getUniformLocation(this.program, 'resolution'), [ - this.gl.canvas.width, - this.gl.canvas.height, - ]); + this.gl.uniform2fv( + this.gl.getUniformLocation(this.program!, 'resolution'), + [this.gl.canvas.width, this.gl.canvas.height], + ); } public getFragmentShader(): string { diff --git a/browser/src/slideshow/transition/WheelTransition.ts b/browser/src/slideshow/transition/WheelTransition.ts index 99c5f0236e95b..4feeb316e88e5 100644 --- a/browser/src/slideshow/transition/WheelTransition.ts +++ b/browser/src/slideshow/transition/WheelTransition.ts @@ -28,7 +28,7 @@ class WheelTransition extends Transition2d { public start(): void { const transitionSubType = - stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype]; + stringToTransitionSubTypeMap[this.slideInfo!.transitionSubtype!]; if (transitionSubType == TransitionSubType.TWOBLADEVERTICAL) { this.stocks = WheelSubType.TWOWHEEL; @@ -47,7 +47,7 @@ class WheelTransition extends Transition2d { public renderUniformValue(): void { this.gl.uniform1i( - this.gl.getUniformLocation(this.program, 'stocks'), + this.gl.getUniformLocation(this.program!, 'stocks'), this.stocks, ); } diff --git a/browser/src/slideshow/transition/WipeTransition.ts b/browser/src/slideshow/transition/WipeTransition.ts index 9cd6e5452e5bd..0d4d4aa8eb007 100644 --- a/browser/src/slideshow/transition/WipeTransition.ts +++ b/browser/src/slideshow/transition/WipeTransition.ts @@ -28,20 +28,20 @@ class WipeTransition extends Transition2d { public start(): void { const transitionSubType = - stringToTransitionSubTypeMap[this.slideInfo.transitionSubtype]; + stringToTransitionSubTypeMap[this.slideInfo!.transitionSubtype!]; if ( transitionSubType == TransitionSubType.TOPTOBOTTOM && - this.slideInfo.transitionDirection + this.slideInfo!.transitionDirection ) { this.direction = WipeSubType.TOPTOBOTTOM; } else if ( transitionSubType == TransitionSubType.TOPTOBOTTOM && - !this.slideInfo.transitionDirection + !this.slideInfo!.transitionDirection ) { this.direction = WipeSubType.BOTTOMTOTOP; } else if ( transitionSubType == TransitionSubType.LEFTTORIGHT && - this.slideInfo.transitionDirection + this.slideInfo!.transitionDirection ) { this.direction = WipeSubType.LEFTTORIGHT; } else { @@ -53,7 +53,7 @@ class WipeTransition extends Transition2d { // jscpd:ignore-start public renderUniformValue(): void { this.gl.uniform1i( - this.gl.getUniformLocation(this.program, 'direction'), + this.gl.getUniformLocation(this.program!, 'direction'), this.direction, ); } diff --git a/browser/tsconfig.json b/browser/tsconfig.json index 55f54186c40a3..01950d46c7219 100644 --- a/browser/tsconfig.json +++ b/browser/tsconfig.json @@ -10,9 +10,9 @@ "moduleResolution": "classic", "noImplicitAny": true, "removeComments": false, - "preserveConstEnums": false, "downlevelIteration": true, - "watch": false, + + "strictNullChecks": true }, "exclude": [ "node_modules", diff --git a/test/samples/calc-edit.ods b/test/samples/calc-edit.ods new file mode 100644 index 0000000000000000000000000000000000000000..f92a6ba262df13b0d1bf47038f71bea73ec2b584 GIT binary patch literal 7753 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 literal 0 HcmV?d00001 diff --git a/test/samples/draw-edit.odg b/test/samples/draw-edit.odg new file mode 100644 index 0000000000000000000000000000000000000000..799c11ec8cf011e812366690996a22e03cf023be GIT binary patch literal 16253 zcmbt*1zcQ9v*+Nh!QFzpyGyX(?!k3%cb5crcbDMq3GVJrAh;7Cz)te^?!Djl?tS~- zZq09))2F-s^{=WkXE@c}in0)p7ytk)0Fa@lrIZ7~_=OGt0Q`D`P62E!ZB3m$>`jgA z?QJZLjhrokc1*5zCX7HMCrc+rpuMS`3DDTZ*3{0K(cIC<-onz@N%3C*K^Xr>a6m_5 zKsz%_a~H?oP)@8&&Oo5e2O~$O|CyGV4baHh^na=aqUrKq+rs-BhW0>v7yDnT{{_dt z)BEL_y^)=%&3~as@OSncf#!~;PEP-GrcTaA&MyBKJ>tKyXlZL?ZtBD&YUyliWbgDp zq-$hsY-(c)$|vxTbil&G{=Sw#mi~{xgN~e>J#0*!7~O4c_H_-MR$I{g&P%oqDYG^p z7~+m!SE z!s!2e%82#Fal1rlt(xsT^orH=VV;B^0h(ysIJxlQ%Ie|?DD;>TM4bKnokoX#CUpWG z3%J0J?MrjUs_i+&!(<*ggwu{!8BA@~PfBM|tv!ijfLuV5iadWUd{64p)`e%|E@)gR zH>&l1p&>KEJydU;y*@Gp7S*0|U**$2@AxCKe~0hb0@O#=$x=SKUQ4)-jz7BkTYc7Q zcj^e>DuPa3y_yK6e|C4`lZ|8Fs3S7mN7_%j$qefT`PH9%dNErD7u+^kb;H<$DzR_B z7IoJ2X5DKr)Wxxb+;n5ztICsbJN|^7w!UFa`)+e$==iR4eCDTdf_(pXXWm5B(Khts z$}G&XP?z4v5hoq9m%zrQ7=}mWeyk~`I@g%0)UToD%0m=HGao;sIO1f7EXb$uOXDd8 zL`aDpNtWae>U2lxU=whIcoQKI8l0?D;>JunScel!?n@GBjwe3AkpjHpn= z$+>3COD^eQWTEyMhVw5Z(~Kj6kFKyYARg7o3XMbUSEllG9&>(uc|N5zcX~u%J?~bf zs9)vVtUO4(Z-QC!1vY|>*_J#v^FtwVpEywQrI$jVO-Yic$;Euk+9J`en1F4x7yVLh znr48!2~c{u{??{_(s8dI*3sC5ecfD0~MH=qdxyt+OJ!Wb^9O>SX?z4-s zfdCDByocwv{+@O|q&_U_>B|k6GVs6lRiaFK=3!dJs8hN9Buk`3h@q22&f7v(Uvl{S9 zuv==!C)%$<*W_KW#4)83BZ@cK2W+z>g}p0 zT7kV?S3>sA&ZLq@=Ks_e>uZ|(TBtS9q^D_3;Il>P%xde;M{J-Ay;}o*-)JY+V??gr zza7#U5Iu14hSd(B9i^EAb@MLuT%$18ln_u->p#tzCV{r8k3{KO{A0qWoV-$E2}Y`g z?DKugg>PRdyFruAwEc;8t(*gAP|L6{Gjb_hjCijW>R0Rau{7xwNcCzcdITZ8gtsms zUU88eG%FG+&KPn;2j+C|w{@Sb@uHAQ>~WCSa)w@ry2A%%Qzn^;CkLlTuQjmECA!$f z!rMhZ=wM$_kgbkjW=BzH)}YUd8^V+MC+shNq`(?Xzlcd}$H{hzMj+gzzNmZ-3@Cxr z-;xO6f>-6s6xj@(N`4^atj^y`ApDGx=@YyNro1qA2cNB0`GBhD>#q@kGJPXf5RFlC zkG=KayBQ^qO*w+9JM44AmdDBBQeQ2zP-J=YSQizuRUSwoOw=p0|3bdlnmU4qYC6 zUqoglXA*@G*%B3g??@m?Dtn$>ZG5FBniClg0iAB2Jamm!Ibu+fAjm?@4TBj(|pzO}G1d+IoRN z3;EKfOsG9=Ts?lGS8?3hqDw{Trj4;{F=YaNZwmxSx zz{cm@-D!kfNvSW)wSJ?i@Dh1>^QOO&rgF#`uK3khCDPe}%I7l)oUina(RePk5xa;H zK_7uAelc~11+E?}oMB4O?EXj|HALk*vg--UcvUIA<-_`~`GtMmRn`UXJFF@2PEx>L zVDw3Z zF~9$WPLvZWd0(8T`0!9LJN1Kz!})=lgT0jtNy2F8kR<>va`?#+Iu zrNvLs=M53Z4fn1y&RRw!<*QD>3hD8i)z7C}^JxP9t=kRt;yp(gc`>MM)0rekRY!@+ zzgUCaiV@gmlMTuqcCRo`Zbv&>75;c_L&FymTU++nTvUY09qk+zVL z77DJ&(vghnnYPJv22`h7MBhzKIu1tcHCl z{zR$VIl|Gy%1RF=+LIUOs4OQGJz796`QgilXe)np7tLtb5Y1$)Bu&qDWo^yE#c7vX zvJs#A1?&>7$ei3e-K2GP534sp$S7*1_R1e%l#Og&U_O22#H0&*W0P*!J?j_epMGi7bHUk0K>d;GjL?&~hySrSvm+sZ?kjqcS zKNHb15z}oBtIjri?Cx`1Y<|A?Ch3*hS9n@zY=+=|Ydv23xF$D;-E8#rjXvvnR%ZL(Go%5yUScSOVoOmhN z!(g1F#{Po5Y>PV3hhCULk=TD+v(iRyVa>p2ux}A_f$)bl0ZJu+;~ov~ zNAb=W+&6a(hT=Qg%bE|7ZtM?z)fVM_d|QiJM4AwuS4?@q2C8@0qfj&bE`sL0rc27l z1+-y8CwoaXHgXL_#PNdsvFwT((cQux~uPio>W$C zKPeyfpenL5RJ`P_@>Nce6GrH3TR)v^8_{08O^F~?R z%)C7INMBtjE#LZTR+TlqY^PPjh#oCzWF2=QIF11qLwR7U))zVFv)beRc7a>XIR@^r3=OZN!`vp5T^Sj32aWy!;aT#1A<0`SDmZICs z(gllC4uSUYQ;pfclC7F8=6M6@zV4%b=_5)n0*uqzZF%M3_9#LDxT+8c&8(JBUe=!P zcVf0&@HH)HU-KEM@0M~ytG>+ybI^q7?z_zkcmP7=H8Yh3+84brti0eXV)Tbs!=!wC z7*@56HJdX{2??xaMv#2PCe)CvTcX5hB!VOe7b_dyBp%bizup|62M$F`V`mr8qZAVh^IwJa ze>Yf}*+p5|dBjAxctqG)#W=;e813!MBNX3DA;IJQdSF44ekZOB`Xu@Fh6RBF#0w(_ z000PpqMWJ(s0jf0gI)lC|6hN8e}E2qdU^nWSI`Ua`ugk7?~mVy05$-?3;;+20LFfu z2Y}jaYydMhKpGohj1BPmyPM4nU}gqLGXsp70bYNPW=jK@r2*2?0Ap!@*Wb!)V*s-; zK-w5!Yz*-F8;k7~VD<_~dj*XBviA!bglz@@se;CWI)7OLi5VMP8XMaf8{6w|!=SdA z8C#ke+n5>K>u(;QZnHGDv^2J{G`82@v_PZH#@N!v*v7`#UVpO$DVx2rrMFHfT7gA9MmFV`*uxze5S~5M&tC9ve%0{T*45!yq1@?y=Xj*WZB#r3I7+ zP~bt4289+BOHlAY(E^1B6c11UKpul!1d#?|fmnlRf_Q<5fGmTcLD(QLkTz&Is2_9! zB(J}71_~v}Ly%!m`}KDULHP$I9F$>DN`GBFzfuIs2`CAmsDr}%E5V>xg2Dk}2~q~d z0~7#|#~>F$q(N99)*zZ7ULYbM%OGeFHV6!)4H^#W2c7tJ9k%?sKK}ouWk%swK?h4( zTtwA9(|C&tfFp_dkrqddSs4=m7**p3V@KJ#_+>|0;=OpasA1rLd|UsnJb(ZiWel`) z{#8c;)d$w`PwjRGF8y)>6=!xBzelbqFs}bVoD)%Oa1)u5UCH-DW|tnep=OX(Hg9K| z&hhCMls0#jjzqr|+2nz?+7)JSJMc0yH`8bXR-b8v+_O|1tyMCaI}?p{*kq-$8!$1M z3qAiJoUX6n>V6!c$MT5RE2LbmtaA}VueaNpg*b8X*;fC=l2X4~OvB{8nYg?%J|W+D zqlGHo<(1ROeaUN}H^Djo*!RUn-=K0=P2GTf7%Jb@o3ZJ$0|dIhCfK@3=SWl;Br2AP zevM3U ziIf#`9<^^j*Pri_ElVmlo?P$s*({XFzJVDcU-^n0^8CquhLZgPt$2}kGSWF+J+$)3 zCkfSSaX(yW{WN(M&>aCR2BIMFf6)i3b7^rb_r}sl@gdH2@Zl=DsUc(G_)}5!PD}8O zWL3CfmG)DQQ9-`5o(Bub!a(P0ma6l=+w9Hv>G0x1d@93QkGbG2yK;0acb?+wwNaNE zMLVlKA^#R6*h~8K2n&9_e$_NnbU?R0W^K!3;j(lhzqrU9VBMXgDeNbPinsEUffa#VoJdsoMW~}|2!Xr0a-0`m z?q&?@u12r-4DTZ(4AC5+6+=XnH=KuOQa=sc1@^ZONj1Z^$xOgJ)LIYfI25@QhsZ&- znN)PB-1swwwbbI?M<Oqm`QHo`}71bqtUM_LDys2+t)+_Zmq^q~qfk z2KDe@N}S;4AEvUgKHW!5Y&lWp3`_pJwAFR|fJmUCPmfSPDlLVmP5 zy~(0&{$aXLbYiM9AiV*A!Gr7;{0wa2%|**ld3^V2uild^^*Hv^esRowu%~+KcU>ix zWF292EatvyrI$^%yk1hK~@chbZ)q_AQUhBXZG-NU(!=V&L^kkY6JhA!>f38=Tn&`7W?gpoE97yp_AggMC2<+A5ce zkb3-JyFm3@J(u55WS_eqhgzJV7`q1sp(9}_7JxHyV+ZPmW1I^4tZ zbD0~IV)5Hh5fr%&2(IF`ADN+AwlG}aLv7U+2?}ps;s;ynFGzLVsSFz5K(fpqc**)^ zH{a;;$JAG2!8$kQcHW7hAQ~?V)L>PeBe$5y?pyWtkOmMsFqycLAfHrqaJs~cAd$%@ zp>Qpa6h4qmmNRBYp9)aDt_HOu`z+xe<>22}1dG7wIE!Dpkz|l{W%}T{v%O+K3;1u> z&vM%k!;IfFsvJ>}3H6-NeY>93{4f^nWl(_des|c1-&!p2PT*7N0OGz@LGWNp83Wga zvvxzq=qFOE<29dNuqF#Ro>i?X5`R`lgo4gqmvhu z18?2WVYcw5e7G4h?T_pswyEzNG8`uiC&LnV60XT|zd$fS_I6mu$lxHL1u%oZQN)1GHZkG?7iEqI6%spG zq2pq2fV_28ig=F@03+p-+V;bjMM8DkGOAqLH%D3O&*4fm9cbAcFIcjcvoH9e6Z4 z3@s%nR=~1gPg3R{4T#1nzqX;+%Pn3R}Qu3rAFnm_*3)&hqcylEL#TV3!T~_!*m%M<{xi&S~ zL`;8s14J^c@~CF)UYzW_&+jGOO}+-gx`4}UYW=Vs({GNJPzk0c9_&F>3vZ8ey$BM9 zg4Sc!y0$V`A;=%LpKah?rS6pM);fn;!02lw2%TAR9W}?#D}}u>I^i@r{9m@YlWwMYNXGXL#9P2AwXQEiXFI!^S&=M0g1t^a|@jHGih+Z`u7GT9@UZk ziXqp34THDEz9G*C z8iYw~CXz@AyS$9J5sDTfm8?9!E z(I1Yj@+OTxks)|w0e!v)sOu>7^37T1h~P>fXjlkwdlwG4np*xU4SQUXB$l`)a`#k{URAU1EzA={h%N4&4LMvTw*JUc=D)p0S1 zj!x_2M-PjD#uLAwxt@mt*H^E6R{1rP4Z6MqRmGuM8OO2$X3tZt(!OfRcWfU&&j&E_ z`tO2c)bKd>4IkawtbG%ECGcdO8mTIpGNe274idNgPV-4k8m%~&QZ@p`BJM5cOH;J5 z8-xHPVktUCu^9cy5{;1&GF%J}BaApRQYLqRXjR^tHMo4hUG6Le+9CzIJsv74ToJ{` zut?#IO4yre@$%Rq)SgxhVfi-}NEEJv;==53{$U$n>Cm|lb?_3~sJ)*(uocB>UBHIP z0;(`LWtzymWb(-3`j82M*uhj}u^C3^5QyTzovkE@4rCHrHUJ-vcSF7KQ_tw7n~+~1 zcF;|XOJ&|sH=y|Ehr@vaiUtLSANq6f*12!-X3C(V*wdjNE$QQ#{hFMtt;3s5QQXoL>SM4EzP_8TL@s8bsEnv6WCxcaj(@+-~4_R zK`MGH=ZKI1fOEb-iXeaYSOuz*0Gv#noh|Lmf6u$FYwG}axG{V;4Om3$XFjSY>Z}qf zj#95#28hCLUzwp}cW}F!@FCqS)(~2hh{2hnvufKCQ*+24HXn5LrAu<@<65_8_z?nLwKbKd!xUiU!1s6 zoGjW>Bp2EiYoo(Ntz&YvY{OFjoVD@^43ejrCMFIYir^9*40-RZQPSKLcK%FEm+-qc zvH>Bhl4m5|wEjmKO{Kdsi9De|BVFj$6P%tL_hT-7wkM{fX`h zBN!>R_1&A(@7c}f2TR@8E7X^HwL9LfTZV9~(V#o*s}P_@$xaF3Rxw)bHr~pU?vzl6 zb}tStkBw90*D2ttmziU)33cHJEwke^|Fp@F-F24G-PS?k2iSMzKVg}}94_!b#`_TG zKy;3WLAF4v(HmU^daz7C8G^O@GoWq{$CXYZlQAdmAliARzCtie8`iNnBnu{SDX}Je zH;!or)Uxd1-StxTUZ~~KbXy&Jl? z68(1UfsTAWP5bqxGvYEx<(}Du*ba62Qq8V2<>}kYL{p($sOJ}MVo`cF)CSBSS^=y4 zupx|%Z|o&97E7tJbiWR1xEwFPF>gl(Q3EPMbJWbucjE&JI zB-Acz=sA>DAkxJ}P0ZS46MAQL(4pBeo#F$X$5ZW&nbrEm zU@M3I!OD_x63*ExwPi#)ju+VvPLt9d*#hfgj%@phTsRa$Ugfx8YL)>k$5(h(Y-UDav_QrvL!_qxc z2-0OKnz{ij!L6rjX*DlfQLnTIimcoh2RHBiNx|-}T`ut@7w+dcNLl)OhWsiy1X#M( z;Es>wxaXwgA`2&8U(h$ERlGZ_Drg(jsP%@2Dc&oBEzm~959&l0ppbt^co&x}N6IS< zB#Db%+CXavq_5;g_gFx)r@qlwo+JT>hA>L4%t1^Hf2M^P70=Xci?G6iYC;Z>FQRy7 zxS$8yGPo7qQQ>xW<3sA{(0U-v&|lbP-_xrs^M%&LU?dR=;>_`o=e_bUS9n7J3^V$Z zU5v^Zq9LjEXqHxIH_81P@{%HxxOd`y86Sg!A%>S#dM!1|+AR~k+T{Ls-zqeOZWP_t zg^#>q)E&=GBg^WLbwL+G0*>02Ro$%1`V&?zUrVdG8ee~Gl9(e)PTGxUt7h|=6;(5d zwnuYRRn+z#pSKk=gdKG=2!*~!`#vt|$~(89ro8NbspiUQi46la+sxS-pr5lbiQsl7 z*Q7wz#y4qzB{jY?V7JcDYho`nj_t$Dne!y6=X2l`!NKM@;oRYyjik$xwT2eanjXEL zsWuhT_Z=VaT-~QzWwyx}-mPM}FdnM$q`0KDE6Kokm8JE>4anhQzQBHMxYl1oAo7~V zHy#tIH%>ToTRwh0a%QTx(o(rI;+V{Z#O!d{U!JWtJ9pICWu#7PR-nl>E~CMf5;IV$ zxp-S$+$`s}!Orx_!GVMAu#uD z-}gND9n|3XRjLOA14BSSKu1T%!^0yZBcr9IWoKvSA@ zCXsEHpE_(~I~@|bZR2~Kl6qZIzj$VR@y;Id%Nq_142+D7jE|4c$jB%tD5$KgY-ng` zZ*TX{{u-D&5L_@EQ8ExwH2kq_G`eyszH%bIW;&^MHobl(vw11AWihK|DYt31pmi?4 zW3{YvsibGUqIa>fZ>8?bTGP;4%kW0^z}Dx%?S|3amht`m{{GR?(b?JA)z#IWiJktL z-Qk6Aqf6h$mk(#wj~2F$S9VV~zFq9>?3|vSZXI0g9bFxs-JD$BonQaB0?F-b8~Wh=_R~pR9#li0of1*LeQy|#~+1V@O$4L`bINuqwTJQY1#B^m9D;fDR8jhmkziT|d ziZYDONHNucad~^BF?wQa>&3?5;O> zQa>gbkkV0ToY1P(yW&D`{AssacUwZ{89CAHhE3kc#5D}hhO%pPcuT@bDRPs(jn6YCaF=U2BcU*9y*2&gMM{cmihAKi-;ABR7X0L?cSdt(2FgQ2M_pYV zHPuj{|5JWX2)% zr)#*;7|rf)9V>S^oi>e@VXLs6Jp z?z1@_wqMI$qtR5V41U8(N!D7r!>J)%}+^uwL^K|SZAX-KjZajc;U+0>88HGM%QJ< zA)HiikR9UtUbB~=2o56wHv7*lBKLZNJaEIkDo()B?p_3(%T za*4VhKRp*q--Tu*Z$^Bp`OnwbLRm(7^5{#(lg2F3ML|UKXga0Ur(*T-d;z7|?2B4D zpAzZ!tzY=ceMeM|F`OO6yn0}WE`|?NWBZdRMXGX}EAsO#UF5AT;5V=?qw}p?ybB|a z*{2SA_*koBi1K}9AcW=?Xbw$OYajg;;?x{v8XpyWurQT#K8lVsaC9+h8otS`o-C|- zGa{!v`sS^r+`#qQxwM8`IptSAt)sDBFZV8VkFCTji-TA5BcB2c{pb^nee0Woc^NLQ zbagtbqI_2s`uPUy8x|YoTJ;&3_M)=Ywwd!>c^!tclan(8>qW1Mr@Fg)mual1%24B` zb?c1csCyk(>TVd?p>}YtYE!uaEPnC#WKul$j&yz@M)(uZv zO%dUH8Pfba=Li|C*?J?gjk2wj=`)B8kGUiG zXpIqfs*;`YHME1DRBqDB)-qymYNpVfMXy`&mPKP^Z+EE+cL0Dp?}43If-OgO>*?9J zH=01Fg;J$i0>5C{1Nax=Bbjg1dg|s;j{)ReCY`)0b3#4CVeVAi=8@@P90q;e$ZK*+ zLc9^8OCvUol3LvG15OHa*Gfks5|)Wfqe!O3rT8Mr?6OkcD|1Nl5~SVS=2ej_@2#A+v!&(gRp2&qV;4RCM2mElsh&!EIn~m}b zo|_CORA-4S5+cLQXC-Rb_HoWb?G1&>`O)(dsLcQpU=b|dmG^7!U&{W3@V$);M)MLH8`et zsfdL^ZiQ{T8PgqoX(TKhs(Wh;3uyhe`QAAmaCI0Mcm&6q_?LMIAH|&zf-Yj@`U(?& zxSb(SNFV0XZJ0`BViE9H9^t@hN6Z4)B5AAE*cq*%G~KUoa7JIy-x1Z5Xcr=bpY_wp z;o;L8?FG*6>2JBFo5|0_kbMqODnqF095S?;u8AcDJ9?ZTF`aVahC8B+D2!gCJcB?A zs!VrppLOsgv5w>YswzDfR$7BtAEiNm_wiOfph4@6F)^T@s_KT>14H4h&MG!yfu{Np zjb(z)mk*NPQ~bEsXf_Vd zJiUl^i8R+}1+)3x$jjT}sL@K0`zlq+2E8ah4-(yBU=rBypn-9A)Su{{#)F}~x9@@0 zO78%fMEsnvWyxM?ZH(V&y`&MXwpL?<6z$mqmySEqj#mR)OwSzx#q7WB-2xoLi3B9Z zG|UN+X3Fh}AMz`=IWSV4zK!S@X3E$j6hYci zgDqxbLgM0vprURf%6{&HQgfL@OC3UW3k_v03{tM{p~3NOag?Q`?ByUzS;93l7Jehw z)K(A``$qKWut2Xl+VNb0P#{i(v8UK(i@e%Cf&cJL7}Pp9)%NJUt9K_MDSRD&fZ|ZS zk(8L;EmB&D4nW|WV?ai*3>k_g7u5~yK8*KZH9jr4zz18j8UMev^k9}{@zSz)RbWX;RwjFX4Qs#MYTfYVRi}cp}kUNJCT@MN_ zAZJUd&8w;rN@dr4hm5|UDbd10zGb)CZ8(uoVzWy7KrmQV>J4KwRGDx^ok-VLkT3Wc z>woIHU^mE9k~5;Haw_)iL446^Yfn-G2ve!%-K=sb*iNg>r->_Qu<&^8j&;Qy7cBrL zg6rtf^EqvcM3@d}A1Um|-yQAxS&Gm0)1ajGRxo57B)3Ya!L%Xiar8&;TI{I67jVQ8J`>`D=z2Z8E8fi!0+^{;dC1wSg zIgXUxpU3sCH?KS;O@Es{k0THMc+c!pL47~3l{YYp!6TG*+56KzvQN0C`R8`oRq&i65R?U%NMB5k&?0kUFy|*peF6ha-|iG)tb%tkrEmFcgN{Ei1fyE=P81__$B@TRSbbL8hR!fTTlnoozlwC-U!* zbz3?FFsunYa14VlKew z0wH`Ag3{I6+rKW7O8S4lTRtK28-G7&u=wuYPj7*d;IV_=*En9T%loXYzq?|BT)>RLZ~f2(ti`x%8awpP(i z&K7+F6Q|ht1R93aNo95U$hlPHw8Bbm{mo-U<@(8}pvM9uV!f5Mx6f{8L^+&%bFGrX zZVR(@Lvr`5f7nA3bnf4Iz!IYFCnv2Rp^rpGVEl&6*EkRHP%L(#i}{nj?kVK0kk5M|5m z{6sRLiqe9wTP5mnAvgY z^zpvFGa7lTrzXn|_qqWiuANhQm>Qw#x7Zb}>DWIIW((nMGWltZe;R~q+4L$>6UhX7 zj&iDMMQTEYIGb)o>AeaMRvWCO_FOe))BBhDSl!5p>2->JyREXEw~1SjV#EI-X0DciPA zd+)UCum7Uo%3)rmW<8KTiWq7X9y&hr3cV1k)&y?=MJ&kp(INcajIj3D=0I|2v$-yh zel$0RQBjhqrF!v`6brmZzmyMzQt(#b^DAD0n{{TTmrg2hh>OLq1{o#Dv9+#tk@cPs zfu^!_?UB8va%Nv8wm%~P?u>y7r_JaZeUKYjiC|~XpCtlKL^`-0qt$C|uzrGr+&ocN zr5PqzIzHAGy=awifLp$qN7s3>>=@r zy^7sNp80)nRqNhLi8mJ2c=r$7K6aUWyhycHTa~JOR3GTNc%qXzlW!PmgRUqY&A#7y z@wefvg0MutB7Hn>W>9aZ4}@|WMr89iA4eFra;jEy1V5NQ%p5yRq{uCzQPkjh5cDoS zH>uCAw92c6Bz7mJ80R?!TE5SpU4xCuwpI!{5OFjX!Im7rbKdfM@)&d;g$8GJ3{i)k z5U8$jM^Q~LMLNPP0~h-<}pHX zS(o<*m%wAhawMx%qvjJiDMVQD5DqJt9f9)_{|<*=U<`DQP;(}1m|RNuDQLCwQGr~U zM;u4$tY0Dk7(g@?I-tFfEY<6qhd3QzUjN5~X95fy1MtsVTYr6l|CB#Ax+=>4tJa?*{-YN8XIlw$_|Lmp|GOw*e}nSp?$-Y< zO6T98{JGoppHY78Tm4h6L5KhD(O-AJ{&#WcKpFUVoWJgd{b!tC`(ghSvZ(5wY-0dHTu7-?EQDezfJ=D znyvm*`aqHY>)iDpn*TIO@TX=7fBjbfDdJq9-S7YVm;2wf{(77F hbzA>a6nOsOCa)+91)A#s0MJ0MXwcnhnfF)ge*xp@^p^kt literal 0 HcmV?d00001 diff --git a/test/samples/impress-edit.fodp b/test/samples/impress-edit.fodp new file mode 100644 index 0000000000000..7f7accb691edd --- /dev/null +++ b/test/samples/impress-edit.fodp @@ -0,0 +1,8824 @@ + + + + 2024-05-08T21:50:03.2624189622024-09-04T14:28:51.713221056PT2H28M28S43LibreOffice/24.2.4.2$Linux_X86_64 LibreOffice_project/420$Build-2 + + + -152 + -417 + 1698 + 1186 + + + view1 + false + false + true + true + true + true + false + false + true + 1500 + false + Hw== + Hw== + + false + true + false + 0 + 0 + false + true + true + 4 + 0 + -152 + -417 + 28906 + 18370 + 2000 + 2000 + 500 + 500 + 2000 + 4 + 2000 + 4 + false + 1500 + true + false + false + false + false + + + + + false + 1250 + false + xerox + pwH+/3hlcm94AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ1VQUzp4ZXJveAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAMAmgAAAAAAAAAIAFZUAAAkbQAASm9iRGF0YSAxCnByaW50ZXI9eGVyb3gKb3JpZW50YXRpb249UG9ydHJhaXQKY29waWVzPTEKY29sbGF0ZT1mYWxzZQptYXJnaW5hZGp1c3RtZW50PTAsMCwnMCwwCmNvbG9yZGVwdGg9MjQKY29sb3JkZXZpY2U9MApQUERDb250ZXh0RGF0YQpQYWdlU2l6ZTpMZXR0ZXIAABIAQ09NUEFUX0RVUExFWF9NT0RFDwBEdXBsZXhNb2RlOjpPZmYMAFBSSU5URVJfTkFNRQUAeGVyb3gLAERSSVZFUl9OQU1FCgBDVVBTOnhlcm94 + $(brandbaseurl)/share/palette%3B$(user)/config/standard.sod + 4 + + + en + US + + + + + + pl + PL + + + + + + en + NG + + + + + + low-resolution + $(brandbaseurl)/share/palette%3B$(user)/config/standard.sob + false + false + false + false + false + false + false + $(brandbaseurl)/share/palette%3B$(user)/config/standard.sog + true + true + 0 + false + true + $(brandbaseurl)/share/palette%3B$(user)/config/standard.soc + true + $(brandbaseurl)/share/palette%3B$(user)/config/standard.soe + $(brandbaseurl)/share/palette%3B$(user)/config/standard.soh + 6 + false + true + true + false + true + false + false + true + false + false + true + true + 0 + 0 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + iVBORw0KGgoAAAANSUhEUgAABDgAAADIAQMAAAA3A8PGAAAAA1BMVEX///+nxBvIAAAAMUlE + QVR42u3BMQEAAADCoPVPbQsvoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeBpqQAABnInH + 0QAAAABJRU5ErkJggg== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <number> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <number> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <number> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <number> + + + + + + + + + + + + + + + + + + + + + + + + + + <number> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <number> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <number> + + + + + + + + + + + + + + + + + + + + + + + + + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+ + CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8p + IC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEu + MS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHht + bG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIK + ICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0 + dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53 + My5vcmcvMTk5OS94bGluayIKICAgdmVyc2lvbj0iMS4xIgogICB3aWR0aD0iMTM2NiIKICAg + aGVpZ2h0PSI3NjgiCiAgIGlkPSJzdmc0NzUyIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzNDc1 + NCI+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQ0MjIi + PgogICAgICA8c3RvcAogICAgICAgICBpZD0ic3RvcDQ0MjQiCiAgICAgICAgIHN0eWxlPSJz + dG9wLWNvbG9yOiMwMDAwMDA7c3RvcC1vcGFjaXR5OjEiCiAgICAgICAgIG9mZnNldD0iMCIg + Lz4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3A0NDI2IgogICAgICAgICBzdHlsZT0i + c3RvcC1jb2xvcjojMDAwMDAwO3N0b3Atb3BhY2l0eTowIgogICAgICAgICBvZmZzZXQ9IjEi + IC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBp + ZD0ibGluZWFyR3JhZGllbnQ0NDEyIj4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3A0 + NDE0IgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojMDAwMDAwO3N0b3Atb3BhY2l0eTox + IgogICAgICAgICBvZmZzZXQ9IjAiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIGlkPSJzdG9w + NDQxNiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzAxMDEwMTtzdG9wLW9wYWNpdHk6 + MC40Mzg1MjQ2IgogICAgICAgICBvZmZzZXQ9IjEiIC8+CiAgICA8L2xpbmVhckdyYWRpZW50 + PgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0ibGluZWFyR3JhZGllbnQzOTcyIj4K + ICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3AzOTc0IgogICAgICAgICBzdHlsZT0ic3Rv + cC1jb2xvcjojMzY2YmIzO3N0b3Atb3BhY2l0eToxIgogICAgICAgICBvZmZzZXQ9IjAiIC8+ + CiAgICAgIDxzdG9wCiAgICAgICAgIGlkPSJzdG9wMzk3NiIKICAgICAgICAgc3R5bGU9InN0 + b3AtY29sb3I6IzA5M2E4NDtzdG9wLW9wYWNpdHk6MSIKICAgICAgICAgb2Zmc2V0PSIxIiAv + PgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgeDE9 + IjU4MSIKICAgICAgIHkxPSItMTAuMTgyNzA1IgogICAgICAgeDI9IjU4MSIKICAgICAgIHky + PSI3MDcuOTAxNTUiCiAgICAgICBpZD0ibGluZWFyR3JhZGllbnQ1NzcxIgogICAgICAgeGxp + bms6aHJlZj0iI2xpbmVhckdyYWRpZW50Mzk3MiIKICAgICAgIGdyYWRpZW50VW5pdHM9InVz + ZXJTcGFjZU9uVXNlIgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjEyMDU5 + MDYsMCwwLDEuMTE3OTAzOSwtMi41ODYzMjM2ZS01LDI4My45MTMyMykiIC8+CiAgICA8bGlu + ZWFyR3JhZGllbnQKICAgICAgIHgxPSIzMjEuNjc2NDIiCiAgICAgICB5MT0iMTY1LjAzOTQx + IgogICAgICAgeDI9IjE1MzcuNjg3NyIKICAgICAgIHkyPSItMTg3LjMyODEyIgogICAgICAg + aWQ9ImxpbmVhckdyYWRpZW50MTAyMTEiCiAgICAgICB4bGluazpocmVmPSIjbGluZWFyR3Jh + ZGllbnQ0NDEyIgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAg + ICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuOTk5NzcyMzEsMCwwLDAuOTk5NTQxODks + LTAuMDM1ODMyMjgsMjg1LjYzODIzKSIgLz4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAg + eDE9IjM2OS45OTc3MSIKICAgICAgIHkxPSI2NjAiCiAgICAgICB4Mj0iMTI0MCIKICAgICAg + IHkyPSI2NjAiCiAgICAgICBpZD0ibGluZWFyR3JhZGllbnQxMTA5OCIKICAgICAgIHhsaW5r + OmhyZWY9IiNsaW5lYXJHcmFkaWVudDQ0MjIiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2Vy + U3BhY2VPblVzZSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC43MDMwODkw + OCwtMC43MDMwODkxLDAuNDgyMTE4MjYsMC40ODIxMTgyNiwtMzUuMDUzODAzLDg0NC42NTc3 + MykiIC8+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIHgxPSIzNjkuOTk3NzEiCiAgICAg + ICB5MT0iNjYwIgogICAgICAgeDI9IjEyNDAiCiAgICAgICB5Mj0iNjYwIgogICAgICAgaWQ9 + ImxpbmVhckdyYWRpZW50MTExMDAiCiAgICAgICB4bGluazpocmVmPSIjbGluZWFyR3JhZGll + bnQ0NDIyIgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICBn + cmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDk3MTU5MDUsLTAuODYxMTA0NzcsMC41OTA0 + NzE4NywwLjM0MDkwOTA5LDMuODExMzI3NSwxMDIyLjU1MjIpIiAvPgogICAgPGxpbmVhckdy + YWRpZW50CiAgICAgICB4MT0iMzY5Ljk5NzcxIgogICAgICAgeTE9IjY2MCIKICAgICAgIHgy + PSIxMjQwIgogICAgICAgeTI9IjY2MCIKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDExMTAy + IgogICAgICAgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NDQyMiIKICAgICAgIGdyYWRp + ZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1h + dHJpeCgwLjI1NzM0ODQ1LC0wLjk2MDQzNzU3LDAuNjU4NTg1OCwwLjE3NjQ2NzUzLDg3LjM5 + NDYzOSwxMTg0LjMyNikiIC8+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIHgxPSIzNjku + OTk3NzEiCiAgICAgICB5MT0iNjYwIgogICAgICAgeDI9IjEyNDAiCiAgICAgICB5Mj0iNjYw + IgogICAgICAgaWQ9ImxpbmVhckdyYWRpZW50MTExMDQiCiAgICAgICB4bGluazpocmVmPSIj + bGluZWFyR3JhZGllbnQ0NDIyIgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25V + c2UiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0yLjQyODYyNDVlLTgsLTAu + OTk0MzE4MTQsMC42ODE4MTgxOSwwLDIxMC4wMDAwNiwxMzE4Ljk1NDUpIiAvPgogICAgPGxp + bmVhckdyYWRpZW50CiAgICAgICB4MT0iMzY5Ljk5NzcxIgogICAgICAgeTE9IjY2MCIKICAg + ICAgIHgyPSIxMjQwIgogICAgICAgeTI9IjY2MCIKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVu + dDExMTA2IgogICAgICAgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NDQyMiIKICAgICAg + IGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgZ3JhZGllbnRUcmFuc2Zv + cm09Im1hdHJpeCgtMC4yNTczNDg1LC0wLjk2MDQzNzU3LDAuNjU4NTg1OCwtMC4xNzY0Njc1 + NCwzNjMuMjcyMjMsMTQxNy4yNjMxKSIgLz4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAg + eDE9IjM2OS45OTc3MSIKICAgICAgIHkxPSI2NjAiCiAgICAgICB4Mj0iMTI0MCIKICAgICAg + IHkyPSI2NjAiCiAgICAgICBpZD0ibGluZWFyR3JhZGllbnQxMTEwOCIKICAgICAgIHhsaW5r + OmhyZWY9IiNsaW5lYXJHcmFkaWVudDQ0MjIiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2Vy + U3BhY2VPblVzZSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuNDk3MTU5 + MDksLTAuODYxMTA0NzUsMC41OTA0NzE4NywtMC4zNDA5MDkxLDUzNi43NjU5LDE0NzIuNTUy + MSkiIC8+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIHgxPSI2MTAuMzI0MDQiCiAgICAg + ICB5MT0iNjA0LjA2NzU3IgogICAgICAgeDI9Ijk1My42NDUwMiIKICAgICAgIHkyPSI5MC42 + Njg4NDYiCiAgICAgICBpZD0ibGluZWFyR3JhZGllbnQxMTIxMyIKICAgICAgIHhsaW5rOmhy + ZWY9IiNsaW5lYXJHcmFkaWVudDQ0MjIiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3Bh + Y2VPblVzZSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMDA4NzIyODQs + LTAuNjg4Mzc5NTgsLTAuNDcyNDI2NjEsMC4wMDU5NzYzOSwzMDEuNDAzNDQsMTQ1Ny40MDA2 + KSIgLz4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDQy + Mi0zIj4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3A0NDI0LTQiCiAgICAgICAgIHN0 + eWxlPSJzdG9wLWNvbG9yOiMwMDAwMDA7c3RvcC1vcGFjaXR5OjEiCiAgICAgICAgIG9mZnNl + dD0iMCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3A0NDI2LTMiCiAgICAgICAg + IHN0eWxlPSJzdG9wLWNvbG9yOiMwMDAwMDA7c3RvcC1vcGFjaXR5OjAiCiAgICAgICAgIG9m + ZnNldD0iMSIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQK + ICAgICAgIHgxPSI2MTAuMzI0MDQiCiAgICAgICB5MT0iNjA0LjA2NzU3IgogICAgICAgeDI9 + Ijk1My42NDUwMiIKICAgICAgIHkyPSI5MC42Njg4NDYiCiAgICAgICBpZD0ibGluZWFyR3Jh + ZGllbnQxMTIzMCIKICAgICAgIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDQ0MjItMyIK + ICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgZ3JhZGllbnRU + cmFuc2Zvcm09Im1hdHJpeCgwLjAwODcyMjg0LC0wLjY4ODM3OTY2LDAuNDcyNDI2NjQsMC4w + MDU5NzYzOSwxMDY0LjU5NjYsMTQ1Ny40MDA4KSIgLz4KICAgIDxsaW5lYXJHcmFkaWVudAog + ICAgICAgeDE9IjYxMC4zMjQwNCIKICAgICAgIHkxPSI2MDQuMDY3NTciCiAgICAgICB4Mj0i + OTkzLjU4MDA4IgogICAgICAgeTI9IjI1My42MzkwNCIKICAgICAgIGlkPSJsaW5lYXJHcmFk + aWVudDExMjcwIgogICAgICAgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NDQyMiIKICAg + ICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgZ3JhZGllbnRUcmFu + c2Zvcm09Im1hdHJpeCgtMC4wMDg3MjI4NCwtMC42ODgzNzk1OCwtMC40NzI0MjY2MSwwLjAw + NTk3NjM5LDMwMS40MDM0NCwxNDU3LjQwMDYpIiAvPgogICAgPGxpbmVhckdyYWRpZW50CiAg + ICAgICBpZD0ibGluZWFyR3JhZGllbnQ0NDIyLTM5Ij4KICAgICAgPHN0b3AKICAgICAgICAg + aWQ9InN0b3A0NDI0LTEiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiMwMDAwMDA7c3Rv + cC1vcGFjaXR5OjEiCiAgICAgICAgIG9mZnNldD0iMCIgLz4KICAgICAgPHN0b3AKICAgICAg + ICAgaWQ9InN0b3A0NDI2LTciCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiMwMDAwMDA7 + c3RvcC1vcGFjaXR5OjAiCiAgICAgICAgIG9mZnNldD0iMSIgLz4KICAgIDwvbGluZWFyR3Jh + ZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIHgxPSI2MTAuMzI0MDQiCiAgICAg + ICB5MT0iNjA0LjA2NzU3IgogICAgICAgeDI9Ijk5My41ODAwOCIKICAgICAgIHkyPSIyNTMu + NjM5MDQiCiAgICAgICBpZD0ibGluZWFyR3JhZGllbnQxMTI4NyIKICAgICAgIHhsaW5rOmhy + ZWY9IiNsaW5lYXJHcmFkaWVudDQ0MjItMzkiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2Vy + U3BhY2VPblVzZSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC4wMDg3MjI4 + NCwtMC42ODgzNzk1OCwwLjQ3MjQyNjYxLDAuMDA1OTc2MzksMTA2NC41OTY2LDE0NTcuNDAw + NikiIC8+CiAgICA8Y2xpcFBhdGgKICAgICAgIGlkPSJjbGlwUGF0aDExMzI1Ij4KICAgICAg + PHJlY3QKICAgICAgICAgd2lkdGg9IjEzNDIiCiAgICAgICAgIGhlaWdodD0iNzQ0IgogICAg + ICAgICB4PSIxMiIKICAgICAgICAgeT0iMjk2LjM2MjE4IgogICAgICAgICBpZD0icmVjdDEx + MzI3IgogICAgICAgICBzdHlsZT0ib3BhY2l0eTowLjY7ZmlsbDojNTMwMjYwO2ZpbGwtb3Bh + Y2l0eToxO3N0cm9rZTpub25lO2Rpc3BsYXk6aW5saW5lIiAvPgogICAgPC9jbGlwUGF0aD4K + ICA8L2RlZnM+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNDc1NyI+CiAgICA8cmRm + OlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxk + Yzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAg + ICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3Rp + bGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpX + b3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICB0cmFuc2Zvcm09 + InRyYW5zbGF0ZSgwLC0yODQuMzYyMTgpIgogICAgIGlkPSJsYXllcjEiPgogICAgPHJlY3QK + ICAgICAgIHdpZHRoPSIxMzY2IgogICAgICAgaGVpZ2h0PSI3NjgiCiAgICAgICB4PSItOC4y + NjAwNTkzZS0xNCIKICAgICAgIHk9IjI4NC4zNjIxOCIKICAgICAgIGlkPSJyZWN0MzU4MyIK + ICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuOTU7ZmlsbDp1cmwoI2xpbmVhckdyYWRpZW50NTc3 + MSk7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7ZGlzcGxheTppbmxpbmUiIC8+CiAgICA8 + cmVjdAogICAgICAgd2lkdGg9IjEzNjEuMDAxOCIKICAgICAgIGhlaWdodD0iNzYzLjAwMTY1 + IgogICAgICAgeD0iMi40OTkxNDI5IgogICAgICAgeT0iLTEwNDkuODYzIgogICAgICAgdHJh + bnNmb3JtPSJzY2FsZSgxLC0xKSIKICAgICAgIGlkPSJyZWN0MzU4NyIKICAgICAgIHN0eWxl + PSJvcGFjaXR5OjAuMjkwNTE5OTI7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13 + aWR0aDo0Ljk5ODI4NTc3O3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLW9wYWNpdHk6MTtz + dHJva2UtZGFzaGFycmF5Om5vbmU7ZGlzcGxheTppbmxpbmUiIC8+CiAgICA8cmVjdAogICAg + ICAgd2lkdGg9IjEzNDkuMDAyNCIKICAgICAgIGhlaWdodD0iNzUxLjAwMjM4IgogICAgICAg + eD0iOC40OTg4MDAzIgogICAgICAgeT0iLTEwNDMuODYzNCIKICAgICAgIHRyYW5zZm9ybT0i + c2NhbGUoMSwtMSkiCiAgICAgICBpZD0icmVjdDQwOTAiCiAgICAgICBzdHlsZT0ib3BhY2l0 + eTowLjU7ZmlsbDpub25lO3N0cm9rZTojZmZmZmZmO3N0cm9rZS13aWR0aDo2Ljk5NzU5OTY7 + c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2Utb3BhY2l0eToxO3N0cm9rZS1kYXNoYXJyYXk6 + bm9uZTtkaXNwbGF5OmlubGluZSIgLz4KICAgIDxwYXRoCiAgICAgICBkPSJtIDMyMywzMTUu + MzYyMTggMCw5NiA3MTksMCAwLC05NiB6IG0gLTQ5LjQ0MTk0LDIyIDE4LjQwMjExLDQ3LjUx + MTgyIC0xOC40MDIxMSw0OC40ODgxOCA0My40NDE5NCwwIDAsLTk2IHogbSA3NzQuNDQxOTQs + MCAwLDk2IDQ0LjA1OTIsMCAtMTguNDAyMSwtNDguNDg4MTggMTguNDAyMSwtNDcuNTExODIg + eiIKICAgICAgIGlkPSJwYXRoMzU5NSIKICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMzU7Zmls + bDp1cmwoI2xpbmVhckdyYWRpZW50MTAyMTEpO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25l + O2Rpc3BsYXk6aW5saW5lIiAvPgogICAgPGcKICAgICAgIGNsaXAtcGF0aD0idXJsKCNjbGlw + UGF0aDExMzI1KSIKICAgICAgIGlkPSJnMTEzMDYiPgogICAgICA8ZwogICAgICAgICBpZD0i + ZzExMjQ5Ij4KICAgICAgICA8cGF0aAogICAgICAgICAgIGQ9Ik0gOC44OTQyNzIsNjA3LjM2 + MjIgLTUwLDYwOC4xMTIzOSBsIDI0LjUyMTAzNSw0ODQuNDAzNTEgMTMuMjMwMSw5Ljg0NjMg + TCA0NjAsOTg5Ljk5MDA2IDQ0NC4wNDg4Miw5MzMuMzUwNzYgODkuMTgxODk2LDEwNDcuODQ4 + NCA0MTcuMjc1ODUsODcwLjYxNjE3IDM4Ny4xODc1NCw4MjAuMDQwOSA3NC4xNjkwMTgsMTAy + Mi4zNDIgMzQ1LjEyMDIsNzY2LjM3MTEgMzAyLjkyNzc2LDcyNS4yOTgyMyA1Mi45OTQ2MDMs + MTAwMS42NDkzIDI0OC4zODA5Niw2ODQuMzE5MTMgMTk3LjAyNDQxLDY1NS41NjE4NyAyNy4x + NTk5NDEsOTg3LjE0NTU5IDEzMy43MjAxLDYzMC4wODY2OSA3Ni42Mzk4ODcsNjE1LjU4MzAz + IC0xLjUyMDkxMjUsOTc5Ljg2MjUgeiIKICAgICAgICAgICBpZD0idXNlMzYzNyIKICAgICAg + ICAgICBzdHlsZT0ib3BhY2l0eTowLjEzOTk5OTk5O2ZpbGw6dXJsKCNsaW5lYXJHcmFkaWVu + dDExMjcwKTtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4KICAgICAgPC9nPgogICAg + ICA8cGF0aAogICAgICAgICBkPSJtIDEzNTcuMTA1Nyw2MDcuMzYyMTggNTguODk0MywwLjc1 + MDE5IC0yNC41MjEsNDg0LjQwMzUzIC0xMy4yMzAxLDkuODQ2MyBMIDkwNiw5ODkuOTkwMDQg + OTIxLjk1MTE4LDkzMy4zNTA3NCAxMjc2LjgxODEsMTA0Ny44NDg0IDk0OC43MjQxNSw4NzAu + NjE2MTUgOTc4LjgxMjQ2LDgyMC4wNDA4OCAxMjkxLjgzMSwxMDIyLjM0MiAxMDIwLjg3OTgs + NzY2LjM3MTA4IGwgNDIuMTkyNCwtNDEuMDcyODcgMjQ5LjkzMzIsMjc2LjM1MTA5IC0xOTUu + Mzg2NCwtMzE3LjMzMDE5IDUxLjM1NjYsLTI4Ljc1NzI2IDE2OS44NjQ1LDMzMS41ODM3MiAt + MTA2LjU2MDIsLTM1Ny4wNTg5IDU3LjA4MDIsLTE0LjUwMzY2IDc4LjE2MDgsMzY0LjI3OTQ3 + IHoiCiAgICAgICAgIGlkPSJ1c2UzNjM3LTEiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAu + MTM5OTk5OTk7ZmlsbDp1cmwoI2xpbmVhckdyYWRpZW50MTEyODcpO2ZpbGwtb3BhY2l0eTox + O3N0cm9rZTpub25lIiAvPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg== + + + + + iVBORw0KGgoAAAANSUhEUgAAA68AAAISCAYAAAAju/n2AAAACXBIWXMAAAoxAAAKMAFT4i7H + AAAgAElEQVR4nOzdu5bzSJb2971BZmZVdVd1z4xmug0tubIlV1chQ1egJVu3Il+2LBm6Ct2F + LK2lpZ7D92m6a6rqzSQRWwZ4AHGMCEQAAfL/69VvZZI4A2TiQZz0v/kf/7efT7/9VQUAAAAA + gEIdz1//oZ9//X+rrTcEAAAAAIAxhFYAAAAAQPGO7V9URD4+PjbaFAAAAAAA7j4/P8UuPz+E + 1/ePD/mf/6f/gdJYAAAAAMDm/pf/9X93n5+fIiJylNpE7JJlzYk4m5gVAAAAAICVmLvlVUpZ + AQAAAADFI7wCAAAAAIp3nJvgXJv8+y9f1CUGAAAAAGTzx9+96/Ggo+/Phtf/9POn/R//5/99 + SrpVAAAAAAC0/Pf/3X/19qc/fjeaXqk2DAAAAAAoHuEVAAAAAFA8wisAAAAAoHiEVwAAAABA + 8QivAAAAAIDiEV4BAAAAAMUjvAIAAAAAikd4BQAAAAAUj/AKAAAAACje0czEzERExEzEOhOY + yO19AAAAAAByMBnIo3bPo5S8AgAAAACKd9x6A4BX9fnX/+dw/vxV+s+XYmmi5eRd5EoLT79G + XX97l9lge6NXuc2xXXZK93Y9TJg5EBudnU3WGmV33w0iU8e3zI9FWcf4+MPfucPbD1RLBDZA + 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 + KIqiKIry8Pw/MgJ11N+qnv0AAAAASUVORK5CYII= + + + + + + + + + + + + + + + + + + + + + + + + <number> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <number> + + + + + + + + + + + + Sample slide title + + + + + This is a very simplesample presentationthat exercises various features + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Collabora Productivity + + + + + + + + + + + Collabora Productivityprovides Collabora Online, the feature rich and compatible open source solution for editing and collaboration, and a range of other products and consulting to enterprise and government. + + + + + + + + + iVBORw0KGgoAAAANSUhEUgAAJxAAABOIBAMAAADleWp7AAAAElBMVEWBAX/39Pfbu9qcOJq7 + d7p9AHtJ93rNAAJ5tklEQVR42uzBgQAAAACAoP2pF6kCAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGD24EAAAAAAAMj/tRFUVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VYU9OBAAAAAAAPJ/bQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVWEPDgQAAAAAgPxfG0FVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdiDAwEAAAAAIP/XRlBVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + FfbgQAAAAAAAyP+1EVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVhT04EAAAAAAA8n9tBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYQ8OBAAAAACA/F8bQVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + 2IMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVUV9uBAAAAAAADI/7URVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWFPTgQAAAAAADyf20EVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVh + Dw4EAAAAAID8XxtBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVXYgwMBAAAAACD/10ZQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRX24EAAAAAAAMj/tRFUVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYU9 + OBAAAAAAAPJ/bQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVWEPDgQAAAAAgPxfG0FVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdiDAwEAAAAAIP/XRlBVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFfbg + QAAAAAAAyP+1EVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVhT04EAAAAAAA8n9tBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV2IMD + AQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVUV9uBAAAAAAADI/7URVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWFPTgQAAAAAADyf20EVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhDw4E + AAAAAID8XxtBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVXYgwMBAAAAACD/10ZQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRX24EAAAAAAAMj/tRFUVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYU9OBAA + AAAAAPJ/bQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVWEPDgQAAAAAgPxfG0FVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdiDAwEAAAAAIP/XRlBVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFfbgQAAA + AAAAyP+1EVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVhT04EAAAAAAA8n9tBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAA + AAAg/9dGUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVUV9uBAAAAAAADI/7URVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWFPTgQAAAAAADyf20EVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhDw4EAAAA + AID8XxtBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVXYgwMBAAAAACD/10ZQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRX24EAAAAAAAMj/tRFUVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYU9OBAAAAAA + APJ/bQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVWEPDgQAAAAAgPxfG0FVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdiDAwEAAAAAIP/XRlBVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFfbgQAAAAAAA + yP+1EVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVhT04EAAAAAAA8n9tBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg + /9dGUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVUV9uBAAAAAAADI/7URVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWFPTgQAAAAAADyf20EVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhDw4EAAAAAID8 + XxtBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVXYgwMBAAAAACD/10ZQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRX24EAAAAAAAMj/tRFUVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYU9OBAAAAAAAPJ/ + bQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVWEPDgQAAAAAgPxfG0FVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdiDAwEAAAAAIP/XRlBVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFfbgQAAAAAAAyP+1 + EVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVhT04EAAAAAAA8n9tBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dG + UFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVUV9uBAAAAAAADI/7URVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWFPTgQAAAAAADyf20EVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhDw4EAAAAAID8XxtB + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVXYgwMBAAAAACD/10ZQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVRX24EAAAAAAAMj/tRFUVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYU9OBAAAAAAAPJ/bQRV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVWEPDgQAAAAAgPxfG0FVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVdiDAwEAAAAAIP/XRlBVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFfbgQAAAAAAAyP+1EVRV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVhT04EAAAAAAA8n9tBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dGUFVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVUV9uBAAAAAAADI/7URVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVWFPTgQAAAAAADyf20EVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhDw4EAAAAAID8XxtBVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVXYgwMBAAAAACD/10ZQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVRX24EAAAAAAAMj/tRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYU9OBAAAAAAAPJ/bQRVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VWEPDgQAAAAAgPxfG0FVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVdiDAwEAAAAAIP/XRlBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFfbgQAAAAAAAyP+1EVRVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + hT04EAAAAAAA8n9tBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dGUFVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUV + 9uBAAAAAAADI/7URVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVWFPTgQAAAAAADyf20EVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhDw4EAAAAAID8XxtBVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXY + gwMBAAAAACD/10ZQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVRX24EAAAAAAAMj/tRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYU9OBAAAAAAAPJ/bQRVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWEP + DgQAAAAAgPxfG0FVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVdiDAwEAAAAAIP/XRlBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFfbgQAAAAAAAyP+1EVRVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhT04 + EAAAAAAA8n9tBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dGUFVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUV9uBA + AAAAAADI/7URVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVWFPTgQAAAAAADyf20EVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhDw4EAAAAAID8XxtBVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXYgwMB + AAAAACD/10ZQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVRX24EAAAAAAAMj/tRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYU9OBAAAAAAAPJ/bQRVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWEPDgQA + AAAAgPxfG0FVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVdiDAwEAAAAAIP/XRlBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFfbgQAAAAAAAyP+1EVRVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhT04EAAA + AAAA8n9tBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dGUFVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUV9uBAAAAA + AADI/7URVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVWFPTgQAAAAAADyf20EVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhDw4EAAAAAID8XxtBVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXYgwMBAAAA + ACD/10ZQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVRX24EAAAAAAAMj/tRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYU9OBAAAAAAAPJ/bQRVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWEPDgQAAAAA + gPxfG0FVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVdiDAwEAAAAAIP/XRlBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFfbgQAAAAAAAyP+1EVRVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhT04EAAAAAAA + 8n9tBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUV9uBAAAAAAADI + /7URVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVWFPTgQAAAAAADyf20EVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhDw4EAAAAAID8XxtBVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXYgwMBAAAAACD/ + 10ZQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVRX24EAAAAAAAMj/tRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYU9OBAAAAAAAPJ/bQRVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWEPDgQAAAAAgPxf + G0FVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVdiDAwEAAAAAIP/XRlBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFfbgQAAAAAAAyP+1EVRVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhT04EAAAAAAA8n9t + BFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUV9uBAAAAAAADI/7UR + VFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVWFPTgQAAAAAADyf20EVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhDw4EAAAAAID8XxtBVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXYgwMBAAAAACD/10ZQ + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVRX24EAAAAAAAMj/tRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVYU9OBAAAAAAAPJ/bQRVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWEPDgQAAAAAgPxfG0FV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVdiDAwEAAAAAIP/XRlBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVFfbgQAAAAAAAyP+1EVRVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhT04EAAAAAAA8n9tBFVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUV9uBAAAAAAADI/7URVFVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVWFPTgQAAAAAADyf20EVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVhDw4EAAAAAID8XxtBVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXYgwMBAAAAACD/10ZQVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VRX24EAAAAAAAMj/tRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVYU9OBAAAAAAAPJ/bQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWEPDgQAAAAAgPxfG0FVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VdiDAwEAAAAAIP/XRlBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVFfbgQAAAAAAAyP+1EVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhT04EAAAAAAA8n9tBFVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + YQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUV9uBAAAAAAADI/7URVFVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWF + PTgQAAAAAADyf20EVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVhDw4EAAAAAID8XxtBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXYgwMBAAAAACD/10ZQVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRX2 + 4EAAAAAAAMj/tRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVYU9OBAAAAAAAPJ/bQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWEPDgQAAAAAgPxfG0FVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdiD + AwEAAAAAIP/XRlBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVFfbgQAAAAAAAyP+1EVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhT04EAAAAAAA8n9tBFVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYQ8O + BAAAAACA/F8bQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUV9uBAAAAAAADI/7URVFVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWFPTgQ + AAAAAADyf20EVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVhDw4EAAAAAID8XxtBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXYgwMBAAAAACD/10ZQVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRX24EAA + AAAAAMj/tRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVYU9OKYBAABhAMaDvz34twI2SNoCAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/9ZwkBQDwwrJjByUAwDAQBAOh + fmKm/q2UaOjrYOZxGpa7S7wAABDnFABAEg8cAAAAAAAAAAAAAAAAAAAAAAAAAAAA8Gmme6cA + ACKoF3js3G9O4zAQBfAnjeY+I83egD1AvuT+V9k4KSElhBDYtG/I+6kUKqAdu7bjf7WIiIhU + YoibBMKsPU6bQT1bERER4RL2KuzWe1kyBERERERo9Id0OFl/BA4gSKY/P4StjHGMps7qIM0s + 8/ZTu2sQCIOt/vFsPa0Oe8pmRoefKFYzn8KJk90fg5Uy16jDT01SnfFIfmpsfVMjIxa8WNTM + zc0PE4XRtE7YRERGjt/ao7QGGH99lxmOj3FU8S+oWXVERERk5GTj87OicYJkOmE3ye8SHO0r + bRCZaZGjaLflqnKg+SyveAY8K8X7sv2OerNx7Dl+Eud7J95QFRQ/HEydwlej5Tk3tmpNcMmo + qZub71plplkM0jIjZxZpTUYYYAbAO9Kl5T3Fey8iIiKy5FzXbj8rGoaBJUMM7/j9i02rx7lp + 2h4HxH1yunWkl5mI6/CZ+pnR4d7zU1RjjLirP2C/jj29lGFGEE2ZwufMNfNBE3FO30T9hqiZ + m5ufpwmDiLSI3BTT5jg07v3M8Q5ZQVkqd3UXERER4pHIlXbEEY1tP15TtkHktkjLiLkzux3o + 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 + qqqqqqqqqqqqqqqqqqqqqqqqqqqqKuzBgQAAAAAAkP9rI6iqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqCntwIAAAAAAA5P/aCKqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqwh4cCAAAAAAA+b82gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqsAcHAgAAAABA/q+NoKqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoq7MGBAAAAAACQ/2sjqKqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqoKe3AgAAAAAADk/9oIqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqrCHhwIAAAAAAD5vzaCqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwBwcCAAAAAED+r42gqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qirswYEAAAAAAJD/ayOoqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqgp7cCAAAAAAAOT/2giqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsIeHAgAAAAAAPm/NoKqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qrAHBwIAAAAAQP6vjaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqKuzBgQAAAAAAkP9rI6iqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqCntwIAAAAAAA5P/aCKqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + wh4cCAAAAAAA+b82gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqsAcHAgAAAABA/q+NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoq7MGBAAAAAACQ/2sjqKqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoK + e3AgAAAAAADk/9oIqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqrCHhwIAAAAAAD5vzaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwBwcCAAAAAED+r42gqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqirs + wYEAAAAAAJD/ayOoqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqgp7cCAAAAAAAOT/2giqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsIeHAgAAAAAAPm/NoKqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrAH + BwIAAAAAQP6vjaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqKuzBgQAAAAAAkP9rI6iqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqCntwIAAAAAAA5P/aCKqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwh4c + CAAAAAAA+b82gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqsAcHAgAAAABA/q+NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoq7MGBAAAAAACQ/2sjqKqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoKe3Ag + AAAAAADk/9oIqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqrCHhwIAAAAAAD5vzaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwBwcCAAAAAED+r42gqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqirswYEA + AAAAAJD/ayOoqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqgp7cCAAAAAAAOT/2giqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsIeHAgAAAAAAPm/NoKqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrAHBwIA + AAAAQP6vjaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqKuzBgQAAAAAAkP9rI6iqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqCntwIAAAAAAA5P/aCKqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwh4cCAAA + AAAA+b82gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqsAcHAgAAAABA/q+NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoq7MGBAAAAAACQ/2sjqKqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoKe3AgAAAA + AADk/9oIqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqrCHhwIAAAAAAD5vzaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwBwcCAAAAAED+r42gqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqirswYEAAAAA + AJD/ayOoqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqgp7cCAAAAAAAOT/2giqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsIeHAgAAAAAAPm/NoKqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrAHBwIAAAAA + QP6vjaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqKuzBgQAAAAAAkP9rI6iqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqCntwIAAAAAAA5P/aCKqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwh4cCAAAAAAA + +b82gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqsAcHAgAAAABA/q+NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoq7MGBAAAAAACQ/2sjqKqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoKe3AgAAAAAADk + /9oIqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqrCHhwIAAAAAAD5vzaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwBwcCAAAAAED+r42gqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqirswYEAAAAAAJD/ + ayOoqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqgp7cCAAAAAAAOT/2giqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsIeHAgAAAAAAPm/NoKqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrAHBwIAAAAAQP6v + jaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqKuzBgQAAAAAAkP9rI6iqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqCntwIAAAAAAA5P/aCKqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwh4cCAAAAAAA+b82 + gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqsAcHAgAAAABA/q+NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoq7MGBAAAAAACQ/2sjqKqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoKe3AgAAAAAADk/9oI + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqrCHhwIAAAAAAD5vzaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwBwcCAAAAAED+r42gqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqirswYEAAAAAAJD/ayOo + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqgp7cCAAAAAAAOT/2giqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqsIeHAgAAAAAAPm/NoKqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrAHBwIAAAAAQP6vjaCq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqKuzBgQAAAAAAkP9rI6iqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqCntwIAAAAAAA5P/aCKqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwh4cCAAAAAAA+b82gqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqsAcHAgAAAABA/q+NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqoq7MGBAAAAAACQ/2sjqKqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoKe3AgAAAAAADk/9oIqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqrCHhwIAAAAAAD5vzaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqwBwcCAAAAAED+r42gqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqirswYEAAAAAAJD/ayOoqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qgp7cCAAAAAAAOT/2giqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqsIeHAgAAAAAAPm/NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrAHBwIAAAAAQP6vjaCqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + KuzBgQAAAAAAkP9rI6iqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqCntwIAAAAAAA5P/aCKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwh4cCAAAAAAA+b82gqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + sAcHAgAAAABA/q+NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqoq7MGBAAAAAACQ/2sjqKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoKe3AgAAAAAADk/9oIqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrC + HhwIAAAAAAD5vzaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqwBwcCAAAAAED+r42gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqirswYEAAAAAAJD/ayOoqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgp7 + cCAAAAAAAOT/2giqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqsIeHAgAAAAAAPm/NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrAHBwIAAAAAQP6vjaCqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqKuzB + gQAAAAAAkP9rI6iqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqCntwIAAAAAAA5P/aCKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwh4cCAAAAAAA+b82gqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsAcH + AgAAAABA/q+NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqoq7MGBAAAAAACQ/2sjqKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoKe3AgAAAAAADk/9oIqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrCHhwI + AAAAAAD5vzaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqwBwcCAAAAAED+r42gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqirswYEAAAAAAJD/ayOoqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgp7cCAA + AAAAAOT/2giqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqsIeHAgAAAAAAPm/NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrAHBwIAAAAAQP6vjaCqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqKuzBgQAA + AAAAkP9rI6iqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqCntwIAAAAAAA5P/aCKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwh4cCAAAAAAA+b82gqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsAcHAgAA + AABA/q+NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqoq7MGBAAAAAACQ/2sjqKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoKe3AgAAAAAADk/9oIqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrCHhwIAAAA + AAD5vzaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqwBwcCAAAAAED+r42gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqirswYEAAAAAAJD/ayOoqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgp7cCAAAAAA + AOT/2giqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqsIeHAgAAAAAAPm/NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrAHBwIAAAAAQP6vjaCqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqKuzBgQAAAAAA + kP9rI6iqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqCntwIAAAAAAA5P/aCKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwh4cCAAAAAAA+b82gqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsAcHAgAAAABA + /q+NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqoq7MGBAAAAAACQ/2sjqKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoKe3AgAAAAAADk/9oIqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrCHhwIAAAAAAD5 + vzaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqwBwcCAAAAAED+r42gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqirswYEAAAAAAJD/ayOoqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgp7cCAAAAAAAOT/ + 2giqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqsIeHAgAAAAAAPm/NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrAHBwIAAAAAQP6vjaCqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqKuzBgQAAAAAAkP9r + I6iqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqCntwIAAAAAAA5P/aCKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwh4cCAAAAAAA+b82gqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsAcHAgAAAABA/q+N + oKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqoq7MGBAAAAAACQ/2sjqKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoKe3AgAAAAAADk/9oIqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrCHhwIAAAAAAD5vzaC + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqwBwcCAAAAAED+r42gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqirswYEAAAAAAJD/ayOoqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgp7cCAAAAAAAOT/2giq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqsIeHAgAAAAAAPm/NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqrAHBwIAAAAAQP6vjaCqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqKuzBgQAAAAAAkP9rI6iq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqCntwIAAAAAAA5P/aCKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqwh4cCAAAAAAA+b82gqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsAcHAgAAAABA/q+NoKqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqoq7MGBAAAAAACQ/2sjqKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqoKe3AgAAAAAADk/9oIqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrCHhwIAAAAAAD5vzaCqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqwBwcCAAAAAED+r42gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqirswYEAAAAAAJD/ayOoqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgp7cCAAAAAAAOT/2giqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qsIeHAgAAAAAAPm/NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqrAHBwIAAAAAQP6vjaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqKuzBgQAAAAAAkP9rI6iqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + CntwIAAAAAAA5P/aCKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqwh4cCAAAAAAA+b82gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsAcHAgAAAABA/q+NoKqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoq + 7MGBAAAAAACQ/2sjqKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqoKe3AgAAAAAADk/9oIqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrCHhwIAAAAAAD5vzaCqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqw + BwcCAAAAAED+r42gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqirswYEAAAAAAJD/ayOoqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgp7cCAAAAAAAOT/2giqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsIe + HAgAAAAAAPm/NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqrAHBwIAAAAAQP6vjaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqKuzBgQAAAAAAkP9rI6iqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqCntw + IAAAAAAA5P/aCKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqwh4cCAAAAAAA+b82gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsAcHAgAAAABA/q+NoKqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoq7MGB + AAAAAACQ/2sjqKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqoKe3AgAAAAAADk/9oIqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrCHhwIAAAAAAD5vzaCqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwBwcC + AAAAAED+r42gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqirswYEAAAAAAJD/ayOoqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgp7cCAAAAAAAOT/2giqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsIeHAgA + AAAAAPm/NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqrAHBwIAAAAAQP6vjaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqKuzBgQAAAAAAkP9rI6iqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqCntwIAAA + AAAA5P/aCKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqwh4cCAAAAAAA+b82gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsAcHAgAAAABA/q+NoKqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoq7MGBAAAA + AACQ/2sjqKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqoKe3AgAAAAAADk/9oIqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrCHhwIAAAAAAD5vzaCqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwBwcCAAAA + AED+r42gqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqirtwSEBAAAAgKD/r71hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAmoG+FPhjcIagAAAAASUVORK5CYII= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Collabora Office and Collabora Online + + + + + + + Collabora Office offers a comprehensive suite of word processing, spreadsheet management, and presentation tools. + + + + Collabora Online extends these capabilities to the web, facilitating real-time collaboration and document editing from any device, anywhere + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + iVBORw0KGgoAAAANSUhEUgAAJxAAABOIAQMAAAAtmeULAAAABlBMVEW6IyPKV1e2HcCKAAAY + U0lEQVR42uzQsQAAAAACsEjyx0yic0NYAgAAAAAAAAAAAAAAAAAAAAAAAAAAALxUAQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMPbg + QAAAAAAAyP+1EVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dGUFVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVhDw4EAAAAAID8XxtBVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVYU9OBAAAAAAAPJ/bQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFfbgQAAAAAAAyP+1 + EVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVhDw4EAAAAAID8XxtBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYU9OBAA + AAAAAPJ/bQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFfbgQAAAAAAAyP+1EVRVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVpDw4IAAAAAIT8f92QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAABMBHyMAH1uedpMAAAAASUVORK5CYII= + + + + + + + iVBORw0KGgoAAAANSUhEUgAAJxAAABOIAQMAAAAtmeULAAAAIGNIUk0AAHomAACAhAAA+gAA + AIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAGUExURR2uRv///2v5qI4AAAABYktHRAH/Ai3e + AAAAB3RJTUUH6AgIAwAOJvnDPwAAF8RJREFUeNrtwTEBAAAAwqD1T20Gf6AAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAPgN3KQABJ/ftogAAACZ0RVh0Q3JlYXRpb24gVGltZQBUaHUgMDggQXVnIDIwMjQgMDM6 + NTk6MTfacVO6AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDI0LTA4LTA4VDAzOjAwOjEwKzAwOjAw + W+8baAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyNC0wOC0wOFQwMzowMDoxMCswMDowMCqyo9QA + AAAodEVYdGRhdGU6dGltZXN0YW1wADIwMjQtMDgtMDhUMDM6MDA6MTArMDA6MDB9p4ILAAAA + GXRFWHRTb2Z0d2FyZQBnbm9tZS1zY3JlZW5zaG907wO/PgAAAABJRU5ErkJggg== + + + + + + + + + + + + + + + + + + + + + + This slide is hidden and should not be shown + + + + + + + + + + + + + + + + + + + + + Collabora Office + + + + + + + Collabora Office is an open-source office productivity suite supported by Collabora, designed to provide users with a comprehensive set of tools for word processing spreadsheet management, presentation creation, and more. It is built upon the LibreOffice codebase. + + + + + + + + + + + + + + + + + + + + + + + + + Advantages of Collabora Online + + + + + + + Open-source nature: + Collabobra Online’s code is 100% open source; and it is built on the Open source LibreOffice codebase. This gives transparency, and the ability for anyone to contribute to the project as they like. + + + Security features: + Collabora Office prioritizes security with encryption, access controls, and regular updates, ensuring the confidentiality and integrity of user data. + + + It also ensures you can control your own compute and networking on-premise, and not let your data out of your site. + + + + + + + + + + + + + + + + + + + + + + Bear Video - supported + + + + + + + + + + + + + + + + + + + + Collabora Online + + + + + + + Collabora Online is a cloud-based office productivity suite that extends Collabora Office to the web, enabling users to create, edit, and collaborate on documents directly from a web browser. + + + + Benefits of using Collabora Online: + + + + + + Flexibility: Users can work from anywhere with an internet connection, enhancing flexibility and productivity. + + + + Real-time Collaboration: Collabora Online facilitates simultaneous document editing, promoting teamwork and efficiency. + + + + Cost-effectiveness: Collabora Online offers a cost-effective solution without the need for expensive software licenses or infrastructure investments. + + + + + + + + + + + + + + + + + + + + + + + Collabora in Education + + + + + + + + + + Collaborative Learning Environments: + Collabora Office and Collabora Online facilitate real-time collaboration among students and educators, allowing them to work together on assignments and projects regardless of location. + + + + Document Sharing and Editing: + These tools simplify document sharing and editing processes, enabling students to collaborate on group projects and research papers efficiently. + + + + Integration with Learning Management Systems (LMS): + Collabora seamlessly integrates with Learning Management Systems, providing a centralized platform for managing course materials and assignments, enhancing workflow efficiency for educators and students. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Collabora Subscriptions + + + + + + + + + + CODE + + + Collabora for Business + + + Collabora for Enterprise + + + + + On-Premise + + + + From 20 to 99 users + Supported + + + Roadmap Input + + + + + Rolling Updates + + + + Long Term Support (LTS) + + + + Integration Support + + + + + + + For testing and home use + + + + Service Level Agreement (SLA) + And Signed Security Updates + + + + Customisation and + Desktop Version + + + + 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 + AAACAQATAAAACQBYVEVYVF9FT0MBAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MCAAAAAAAA + AAACAQATAAAACQBYVEVYVF9FT0MDAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MEAAAAAAAA + AAACAQATAAAACQBYVEVYVF9FT0MFAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MGAAAAAAAA + AAACAQATAAAACQBYVEVYVF9FT0MHAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MIAAAAAAAA + AAACAQATAAAACQBYVEVYVF9FT0MJAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MKAAAAAAAA + AAACAQATAAAACQBYVEVYVF9FT0MLAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT1cLAAAAAAAA + AAACAQATAAAACQBYVEVYVF9FT0MMAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MNAAAAAAAA + AAACAQATAAAACQBYVEVYVF9FT0MOAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MPAAAAAAAA + AAACAQATAAAACQBYVEVYVF9FT0MQAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MRAAAAAAAA + AAACAQATAAAACQBYVEVYVF9FT0MSAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0wAAAAAAAAA + AAACAQATAAAACQBYVEVYVF9FT1AAAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT1AAAAAAAAAA + AAACAQAeAAAAFABYVEVYVF9QQUlOVFNIQVBFX0VORAAAAAAAAAAAiwABAAIAAAADAIUAAQAF + AAAA/8zMAAGEAAEABQAAAAAAAAAAbwACAC4AAAABAAUAsgQAALM2AAD0JQAAszYAAPQlAAC4 + PQAAsgQAALg9AACyBAAAszYAAAAAjAABAAAAAAAAAgEAIAAAABYAWFRFWFRfUEFJTlRTSEFQ + RV9CRUdJTgAAAAAAAAAAAAIBABMAAAAJAFhURVhUX0VPUAAAAAAAAAAAhgABAAQAAAAAAAAA + igABAEcAAAAFAEEAAAAPAExpYmVyYXRpb24gU2FucwAAAAAAAMsBAAD//wAAAgAFAAAAAAAA + AAmoAAAAAAAAAAEA/wMAAAAAAAAAAAAAAIgAAQACAAAAAQCHAAEABQAAAP////8AcQADANoA + AACsBQAA1DoAABgAAABGAG8AcgAgAHQAZQBzAHQAaQBuAGcAIABhAG4AZAAgAGgAbwBtAGUA + IAB1AHMAZQAAABgAGAAAABMBAAAVAgAArgIAAC0DAACsAwAAqgQAAI4FAAANBgAAcwYAAHEH + AABvCAAA7ggAAOwJAADqCgAA6AsAAGcMAABlDQAAYw4AAOAPAADeEAAAXREAAFsSAABAEwAA + PhQAABgARgBvAHIAIAB0AGUAcwB0AGkAbgBnACAAYQBuAGQAIABoAG8AbQBlACAAdQBzAGUA + AAAAAAACAQATAAAACQBYVEVYVF9FT0MAAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MBAAAA + AAAAAAACAQATAAAACQBYVEVYVF9FT0MCAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MDAAAA + AAAAAAACAQATAAAACQBYVEVYVF9FT1cDAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MEAAAA + AAAAAAACAQATAAAACQBYVEVYVF9FT0MFAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MGAAAA + AAAAAAACAQATAAAACQBYVEVYVF9FT0MHAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MIAAAA + AAAAAAACAQATAAAACQBYVEVYVF9FT0MJAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MKAAAA + AAAAAAACAQATAAAACQBYVEVYVF9FT0MLAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT1cLAAAA + AAAAAAACAQATAAAACQBYVEVYVF9FT0MMAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MNAAAA + AAAAAAACAQATAAAACQBYVEVYVF9FT0MOAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MPAAAA + AAAAAAACAQATAAAACQBYVEVYVF9FT1cPAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MQAAAA + AAAAAAACAQATAAAACQBYVEVYVF9FT0MRAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MSAAAA + AAAAAAACAQATAAAACQBYVEVYVF9FT0MTAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MUAAAA + AAAAAAACAQATAAAACQBYVEVYVF9FT1cUAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MVAAAA + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Collabora in Enterprises + + + + + + + Scalability: + Collabora Office and Collabora Online offer scalability, catering to the evolving needs of enterprises. Whether it's adding new users, expanding storage capacity, or integrating with additional systems. + + + + Security Features: + Security is paramount in enterprises, and Collabora prioritizes it with robust security features. From encryption and access controls to compliance standards. + + + + Integration with Existing Systems: + Collabora seamlessly integrates with existing systems within enterprises, facilitating interoperability and workflow efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Chart + + + + + + LibreOffice/24.2.4.2$Linux_X86_64 LibreOffice_project/420$Build-2 + + + + + + + + / + + / + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Column 1 + + + Column 2 + + + Column 3 + + + + + + + Row 1 + + + 9.1 + + + 3.2 + + + 4.54 + + + + + Row 2 + + + 2.4 + + + 8.8 + + + 9.65 + + + + + Row 3 + + + 3.1 + + + 1.5 + + + 3.7 + + + + + Row 4 + + + 4.3 + + + 9.02 + + + 6.2 + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Collaboration tools + + + + + + + Real-time Editing: + Collabora facilitates real-time editing, allowing multiple users to collaborate on documents simultaneously. + + + + Comments and Annotations: + Collabora enables users to add comments and annotations to documents, providing a means for feedback, discussion, and collaboration. + + + + Chat Functionality: + Collabora includes built-in chat functionality, enabling users to communicate with collaborators directly within the document editing interface. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Comments + + + + + + + It is easy to add comments to documents + + + Save comments + + + Edit comments + + + Resolve Comments + + + Remove comments + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2024-05-14T09:07:40 + A torchlight is tool used to emit light in dark environment + + + 2024-05-14T09:08:22 + Water is an essential item to energy + + + 2024-05-14T13:03:12 + Comments added + + + + + + + \ No newline at end of file diff --git a/test/samples/writer-edit.fodt b/test/samples/writer-edit.fodt new file mode 100644 index 0000000000000..5c03b8672281b --- /dev/null +++ b/test/samples/writer-edit.fodt @@ -0,0 +1,7989 @@ + + + + 2024-05-06T12:44:59.8343363642024-09-04T14:22:36.443780662PT6H2M40S43LibreOffice/24.2.4.2$Linux_X86_64 LibreOffice_project/420$Build-2 + + + 162983 + 0 + 36408 + 48764 + true + false + + + view2 + 15940 + 112533 + 0 + 162983 + 36407 + 211746 + 0 + 1 + false + 100 + false + false + false + true + false + false + + + + + false + true + true + + false + 0 + false + true + true + false + true + 0 + true + false + false + false + false + false + true + false + false + false + false + true + true + false + false + false + false + false + false + true + true + false + false + false + false + false + false + high-resolution + false + 24120 + false + true + false + + + true + + false + false + false + true + true + + + en + GB + + + + + + en + NG + + + + + + true + false + 0 + true + false + false + true + true + true + false + true + false + false + false + false + false + true + true + false + false + + true + false + false + 0 + false + true + + false + false + true + true + false + false + true + 1 + false + false + false + false + false + false + false + true + false + false + false + false + false + + true + 4583532 + true + false + false + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is the end of footnote + This is the start of Footnote + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Collabora Online doc + + + Collabora Productivity Ltd 2024. + With thanks to all community contributors. www.collaboraoffice.com | hello@collaboraoffice.com Page 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + https://www.collaboraoffice.com/Collabora Productivity + + + + Table of Contents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Table of Contents + + 1. Introduction1 + 1. Collabora Productivity: A Brief Overview2 + 2. Products – The Collabora Online Apps2 + 1. Writer2 + a. Supports2 + b. Features2 + 2. Calc3 + a. Supports3 + b. Features3 + 3. Impress3 + a. Supports3 + b. Features3 + 4. Draw4 + a. Supports4 + b. Features4 + 2b. Subscriptions:4 + 2. Acknowledging Collabora's Impact4 + 3. Tables and Forms5 + a. Table5 + Collabora for Business -5 + Collabora for Enterprise -5 + b. Forms6 + i. Checkbox:6 + ii. Dropdown:6 + 1. What is your favorite pet animal?6 + 2. What is best dessert?6 + iv. Date:7 + 2. What is your birth date?7 + 3. What date did the first man land on the moon?7 + + + + 1. Introduction + In today's + Unknown Author + 2024-08-07T10:28:28.994941616 + I fixed my gaze on the digital clock in the family room. + I have a vivid memory of receiving a digital watch for my sixth birthday. + The limb exhibits a mottled appearance, and digital gangrene is a common occurrence, although pedal pulses are typically discernible. + The media establishment continues to grapple with the implications of the digital revolution. + + digital + Jane Doe (Guest) + 2024-08-07T12:39:39.797751746 + For to come to the smallest detail, which one of us undertakes any physical exercise that is laborious, except in order to derive some benefit from it? But who can rightfully criticize him who wants to be in that pleasure which results in no discomfort, or he who avoids that pain in which no pleasure is produced? + age, + TwoUsers (Guest) + 2024-07-31T03:33:27.789907482 + Until the price of life is free, that's a lot of money. Even the life of the life of the life was to decorate the fringilla in the smartphone. For children and young people, it is important to have a lot of homework. But the lake is not, the trucks are not home, but the tincidunt in which. The industry now triggers, it flatters not the developer but the real estate company. There is no soft need for advertising and promotion. It was not easy to work in a soft environment. The financing of the disease is just the time, and the performance is worth the price. Anyone who advertises a boat, it becomes a god, not a ferment. + productivity + Perry Mayer (Guest) + 2024-08-07T13:13:11.486367898 + I couldn't look away from the digital clock in the family room. + I have such a clear memory of getting a digital watch for my sixth birthday! + The leg has a mottled appearance and digital gangrene is quite common, but usually, you can feel the pedal pulses. + The media establishment is still having a tough time grasping the digital revolution. + + Jane Doe (Guest) + 2024-08-07T12:40:31.010264210 + For no one despises or hates or runs away from pleasure because it is pleasure, but because great pains result to those who do not know how to follow pleasure with reason. Nor is there any one who loves pain because it is pain, pursues it, wants to gain it, but because such times never occur when he seeks some great pleasure through labor and pain. + tools are essential for individuals and organizations alike. Among the myriad of options available, Collabora Productivity stands out as a beacon of innovation and collaboration. This piece aims to delve into the remarkable journey of Collabora Online, highlighting its evolution, impact, and the tireless efforts behind its success. + 1. Collabora Productivity: A Brief Overview2 + https://www.collaboraoffice.com/collabora-online/ + + + iVBORw0KGgoAAAANSUhEUgAAAdoAAADMCAIAAABbfvXKAAAgAElEQVR4nOy9W8xlyXUe9q21 + qmpfzjn/tf/+e6ZnembIGYqUaFqi5YtkylIkRbAF2bKQCHKCPPjFyIMQIO96DfwQJEaA5MV5 + iBE4MQLLMGDBSAxLoG0xsigpkiWIJi2SMxxyZnp6uvvv/3Jue++qWisPdc7u0z3dFOWM7ST+ + 1wyq96l/7121b1+t+talKJn1Qzw/e3D//v0hJXaSKNfTSeQMJhH24lpyFUlF5MmROFV470Uk + 5eyc81UwM2MyMxAxM8AAADDgzJBVCcwMImxFYQAMBMC2lQKQMhR4vON2+8M137HYVsjAJLBn + ndMUAIhA9GT9E6dShRkAiPzR+vDsjgFmUNq0/IfsXHqyvWFP9hL2VEe3O9C2mujxNgDknZsw + 1hugT1/yM+7Vh1oCA4REUACbX2Bg6GOovAIDrPTHAx/FnbuWa/n/oTgxtM5HpYvL1Yxkv6lz + NF73UnljsBBLdo4CQZiJIgdWAw8RohCBAXGAKUIACqhlMKGALxFSAjMzISWYbSoBlgLZ9vhr + 1xE5dsrn1fxhoqoAiKiU5d/yh027T4nQtr6MEyDAjGDlDJu9mMfz7/Rup2M5byGdnqi3DzVY + YH+zp8EAMhg9v3z6duye3LbnfP49sm05QiaevLH2oXu++1OfVWmPb6Q92XJB5Mp7GKDGOUtw + Y7PXci3X8mFxiAmKb/zTL/6TX/ylcLE6lXaauQaEGGzJs3nRylkgE85CvTD5YGYkHEJgZgDs + HRE550IIvgoiIiLMnIX6WrgOzrmiQYcQnHMAvPdFlS47kxNHHB31tVfHIsJOnHPOORExIucc + ETEzCRchIiIyeoxBI/gC8OIBjNi62QHImmgrH9bWR9DTAhxERAVAeFu3KVmeqDHLqgDUOQ9S + GIMUSoZsSoYsEh7X75ZKZApjom2pRKSAPK7ZloAi66bbO/0nPIn3j7cZ9CQAbjXZDfjS5uYo + NtuZR4wtA8T2evkZQOoAZ5tTKZBhCjMQa84JlXdQA0gMAkYGTCH8R53cXMu1/HsiDtqD3HJ5 + tbx4RJfDfPkorVKTibOBNDKix8CUHBIjMxTkq5CzpTSIeLNMJE1T5WzMIHYgzclSHjQjUebp + xComSMoDjJ3fbAt7YmPxzrFzQYREvDpeOouOCuCKCAkLccH6gsUFoMefcAJh55z3PoTgvS9/ + yjmXM5SaIsZkwcGxEBe4L8MGEfEW7pnZi5AIMSsT1Q0IIAHZ47KAVNlmgB2RCRikSD3ENlAL + IVJiBhl02EAw2wZYbQvo9GTJBazt6XowCOARzGyDfk+xJ6Vmg8gZJMBWFbfH+LvZw6D0eBDK + G0gFdkamwkAkpLFyd9AySwTaTiFYAIYRs4RxBrEzU3gWpl/LtVxLERdr8tBHVao/efu12Um9 + GppOG6W06lSzqvY6xKRRY9Isidp1Dkop5RgHM6QUU8q80pQyYGbRTElBBGYROHs090X/gwo7 + 5wVGMQ1CUibZZjqWgJ1WVelZmYArrDCeo3Y2qsBsiAydhEg2AP2WIC7HNk2ze53lqF7QzUIX + SEDkNiq8IyYiEaGttu5YxDshHjz105AciTgRds47J8zCTGPpnDjnRVjEJU95vx08yl9FXNmH + CFVVj0eVszGLMdQ7FQgJOx5LMLx48Oa/UsPgLNSTpKK477DHBLIRLqngH+MJKtgKko/Kcdmj + /OQt0+CeeDfsQxvYoTzKP0qsZVApqjYDZMxqIIeYYAAxmDLDhAGSnfHkWq7lWnaFFnZVgf/Z + P/6VAxf+xA/+CGJGn9ANSBlmyApVJEUu/wOLAV2EGZg3hq2YsF7DDDkjpU0Zow2DdZETMCTE + mGNMQxyGIcaoOQ/DgKyqmlLKOaeUVJVVddWzZs1QS2MJy6ogzUUrT0lTGixjoBRFkiiMiW0s + QTr0idgIslsm0YUgUi70QinJGFDvK0AFAlKCFE02iS5EB8FGg94hSVR1JD3GyizUkSZ+xv4A + Nli/ZWBERB0Pgiz0VD0zhxDKIMHMRd8XkSyC6TQLyZOzCiKr65bImB0zRLwIMTsVsuCMqdQ7 + ck6IyQmZY89kDo4FYA8GyIENodpo4k+SM2D3dA0YrHAK3mWdGQCMoYBt+WliCDY8xjUcX8u1 + PEfcBEGRHl1eydEhKoqS/azK5soXJkbIikxQbDwAhBGHjeFuvYZzcB45gwUAUgJRmTgTQIXo + VAOzAGKoYoTIZtKq22m1KlShBgPW/XYAiIgZOSErckZMMEVSaEJSpKhqUO37AZpTzEPsh75A + flLLMMqaSn3fDUPsU8wU061V9llz1pxTzqqaNamZ5iGZqWXLmjSpalY15HyQEpKpas5ZNec8 + qKqZjdq67ZC2IWN/oEofU9gjFg/DMP4cK5PQ2lIWesafVAFkZiKKW1hXll4oM54aZsrgQWxM + jgWlJEh0pJOQHDM7ERIfyBGxA5uvG7CReHbEzpMjYZ+crYMkjwL33lfOsYgvEF/K3Xp1WLsU + vZF35J1UFTvn2Qk5MXg4LyHnPNvbl8ODoulvdPJruZZr+ZA4GLP5Wqq23TPieRedSKeJnTeY + kIlpyBSgkkkZqa6uWJuK+tjfvbznnHvh9JZUUrNbrBcX8/NhGKqqmkwmk6ahSlQKwyoGmy+u + rrorzzKbzfYne9ixsxsMZmQgrbfsJTYf7sbYpI9riGDlWGqybYz+T9mydNdxbft/Bnog2Qbi + N7p8hhlShm4rY0KMyBnZsFg/8aeckTPM0PdQtZTiVlJKPmo4X/tB05P1uiNlKpDLUGC6L5S2 + 9eMswcwUCsCyAciWk6UND6P2mH8l2hjSilVzQ/4+FiXk4DPBzIyQsaGEMiOEMNYrLJsBiIJU + u8RPGEVLGUJ4qoaIMqs2nN3WwVGcIxZ4AHXdJrLsAprwqT/52T/zH/4oDg+gek0fX8u1PE8c + VGDmo+OF0RCObIoY9sj6dTQhZSIycpyh2ZERklHwk699/a333nvv9osv3nn5lSA+5QR4zWLq + NOeLs/k7b9+dTqevvPYaN8E5nwGBzBf9r37hiw/vP7h9+3YQx8wMqqpq6Lqf/MmfJOLVauG9 + SPB939+7d88Rz2azFGMBm9VqdTDbO7xxw1Ia+p6ZOdv8/tnBzdMNSjoHVYhApLu8rE9PC20C + IngP1Qff/MbJCy+gdhAP+A1kszzGiCGCGSybA+saqjAgRjBvzGXjds5kFpwLu3c0Rog45rp0 + qUwjug4hIGf0PZg3JzfDYolk0A3Pk2N8jNQ5m1nakZyzi8nPe58s51yAftx/uVwW5md3GKCs + bkh1hqpC1bKqKquZGWI2M1JTVeTNn2iwpuf1atU0zWKxANA0zdXVVdu2OS+IKKXUNM1yuUwp + HR0dzeeXTeWQUyt+fTnfk+Zk//Dy4SWcDE7mFS7a8H6V3uUKf/kvKeck4q+V42u5lueIM2Fk + ZBESBwOU0QGqVVMDSIYESzAjgYAMUFSOb9+4fdDuHR+dNOLNoJlEMKun1WGllixjtVowuzY0 + 4vxgupivZnuTV2699Lk//Wfv33vgHD98+IhNY8waFVmGLtZVO50cRKRo2mckyHrdXyzuLxYL + Mty6dSsOOSSthwQAvnLOQ+1hfH919vDi4qLv+6qqiMjMcs51Xb+0v+ec820DZk1psVq+s5y/ + dzeKd977AvGFma28Pzg4EJEMACqEi/nlfD6vg2t95YNYVlNwoj4OlQ/To2N0vYWNDa1brdd9 + F5yvZpO+tsF6ZvbemwmRCgn2mz72zEzUePYZOeccJCDGigK2kwHZDZFI6fFTGh3y1JAA/VA9 + dhwqNsyPwgzJoIyUkAyxR1QMPZJBE7oILfUDhow0IJUZgGCxAHssr6CksWNyKQ+O/f2HH2iy + db86OjhmR9948+3D2TQtF9wPs6rRbkjL/vzeg5PbL7R7+/fX8y6uq1nY23ez48O8uMTkuLNB + qL4OA7mWa3mmuHOABfNa9oLAYRPZoYqYEyMxlMkYRlTmxkHNEw6ryZ6rHFxexhxz8I4Intm7 + CuoReK9qTY3Aq/kQ6jCVykdKKUuiWWjV8sdfejU4iTEBFvvYSp37xF4cO4ZVwc9uTYrFrO/7 + 4L2Z5SFWVVVJyEnNjBIPmic3bpITMqO+d21bHJxzzj6E2DSJKDlhQoRLbVvfOEkpEXM2SjFp + TCklIhLm6d6RERt7ZgaIfS0hqdDb9x/4IEKssDTEVbfen+29MpsRiEW8uCHFiyE+PL9IQ3TB + m3BKaTab3bx5M4SQYiKBd/6bb36dmVWVmc2srutbt25NQ4PVsI2w2HqDlTLv/LRtpRish3/m + /nlbycA2ANLosTvd6FRHAlKAHvs+E4MMYKgiMlIEebBCmefnmB26h/cwO7zZeCiDMvoMsc8o + QxjDAAMePMDeFJpv7e2DGQ/PXkgJk2lcXJ2vV1+9++5SaAa05K+pimu5lueJSwADkbVnA8M8 + E5ORoyCOwYwStKwKy0A2aIaJC+wQAJCJ90IVIwEZUFNV3jhbEbIGFscQ8ZY0LtcBfPv0lvdu + tVozU0qZCDJlJlbNTNR1QzFRiQgzGYnUIsIAsguOOWXElImIYTHnZjoNtW9ns5yzc66wDqO5 + qE/ap1zis9u2funOnUAbYkIVhagFQETCwsRqysROMJvtNU0bgm9ne0RW9iljg/e+atq+HxSU + QC7U+8c3OFTr9brQvimltp7UoRFhTabJkuXD/aOc82q1Kr4lltGt+gBX+YC8dRMe1VsA4h7X + mJkpgEwmszZtYlvG2G8DoFucG42BRERQixsTogFANiYjVYKaGcFYDdBNWLqKoPZEysyWs6qm + L/zW70wmky984Qtf/OIX//7f+/sKjTFLK7/0S79kZjcPDn/kh/4cyOzgdKXx6++/8we/+5t/ + 6k//QP3ajJPth2lKzR/8xm9/6+LBG2nYA9w1UXEt1/J8cTUAmFc1TZmAQMwwL2WqXPxSnW79 + V5kQCqdRPIWJHUEIiiwAVAIzOWznzWxwzFD0q1W9184OprPDaYma3T/cB8q8WwGGh0brh6Fu + Q9HSVC1qJiLzFHMSESOYaTJVMefEmCU76wdhqT0nFY25YJOIOEeqyEOJwTNVlRBqIx2iERGR + EBUfYNrgFswMqppzZDYzIWLgYDIlQs628aZokXNO61S5kFLKMUGk9r45PLIDAGBGHBSAGOde + nTIzk9Htk1tmiDGa2TAMZjZpJ6o6sG3ciIFdWnXrsPFkVDJp6rPSToD2+JfRLGob454BBvbV + xJDLCUnNzEzNGUpsJLKN9QAyjAV9TKoqInVdH+0f3bx5887tO3/7X/3te+/fe/GFF5137773 + 7ptffdN7/7B68Cc/+/2hqQegF/mv/tv/7u/9rb/1s//5X/sf/sZ/XwfX6ZDXw6/8o1/545/8 + 7uNmH4njYuH3p9eYfC3X8kxxNRIAryppIGQjUzjbxm49TvBDjxHDoAYjJtMM5wAMOoQQDLwJ + EiB7nIpCDUL1JGBUSplj7J1zBSJH94owDaDHuSCcI1URgQK+YAcIgIBLdIMATqSWhtVgCICR + kCvDBpBBqo14FgKQU6JszID3gME24b9mGcYZ2TmnAJEDaQlrhrFaFhImkFBK2RTesxMZhsgE + J2TszHKKGAmBIF5gAGuMpnBCwqyaY5eZIWBf+SaEnJMwr2LvXK3P8vM1o2f4+YJEmUFkbKS7 + JZSMlCGbEpvt1aojMiJxDIIIg0mYtFsOTCYQeRxz6IR16BOzOA4sZJHI+OyD88XV8mf+4n80 + aaZk/Oj80csv3vnhH/qRX/vCP/8zP/yD9XR/HYdQTy8uzz5252Mndz726o2Xp6gCkBKvu7ye + L+7du5dNHcPvT//Nvs7Xci3/XxYyGwD8w3/wDw729j/3535Yc2YfVn3HdQUQQ3iTaG1jQTIb + Msx5D6DruhL/9jjvAZAtq6oTD2CxnAeStm1NlZi7rgNTFaqzR2fkBMDB3gGADB2GIYSaYQ5S + on9LroUUowseJb8QmWYoKbMolIwdlY7pJiaFnp8PoWQv2v6A0jbs2MzISJlZt4l6RuWTAc1G + ZIXwLe0UKiDG7ByP6TJUVRVmWcipJhFPDM1l4OCcI7MjspzNe8nZco7eV32/dqGy7QAwDgOG + HHyND9XDrJawmZ3ASJGhbJShjqQAszHICLwJiU6ajQ1gok3JxoDmbEoqECUlEmBTimPNplGT + pcpV62Hdtk1K2TnJWUV4uVwFCcnS+cPzF++80EdVggh7xqOHl3G9cso3Tm7oouO9CRjvvPXW + 73zlSz/5M39pobFiX11ndLuWa3mOuIJiQswGqGnOOa+7bvXVL//LetLu7+8f7u3Pmqkwb11+ + nWhKMb7//ntf+pdfUUvf/T1/7NVX7sSUxQnAQsTiCNrFePfuuxp1Om3N6ObNG20zVeh8vfzl + z//y73/pyy/fuf3jP/YTr73yCsAuOADL9aoV3y9WZjY72kdK3XLRaFNiLswom4LEhGJOZgTn + vWAY+uB8zEmTiXOaszhXMjRISSxXQrB1S60YwQxGSsXdWbOp92ybvEHIZsxEgJqysGkGxugW + lPmC9wRsKF0iYi7OcgJYjpo0ChVOQZ0Tdi7GLEzCDDYmAjMJ6rYBYGAItjBV7HRQBYhYSv+J + yAEgA7YsEjFt4qcBR4wMJoI+4W0Bg3Oj8YwAKBHBlIiZGGwEhpQo9JI2br2O3ntXC5LEnMWF + Ycg+iCpYeLns6qYVhkV+8c4LXZdccMO6D3XVr9PxwT7297GMIOHpBBdLTKvbt29/7e63LlfL + qp0kWDVmzfhO5I9Oa/yh575mSq7l/7XiwB7AoEji4D0RwYwg3WL9+qsfN7N+2R20e2YW+yFU + Vc4m4hzzvQ8e5GzO+Te/9tadl14Ortpm/0JRK1vfHMwO/tWX/8BOjm/ffnnSTHM2Fnbkfuov + /NSwTkdHB0hmWb04NWbi0Ex+9//6reBd5eXee2/Fobv//r3pdHp4eFg1k5c+/rrAdV1MmZk8 + hNa9DpQASikZQCzJjIijanBhSNGBs2pOqWmDOFxcrZsqVJXEmFNK8/m8xDG3syl5rJdd2zYA + 4rqvqkocgXm9XpYkPFWoUACaWE2HYairunzc2TIAJk45AXDe9UN07M/OHuYcq6oJwTXNhBhq + asCQUvBua7Pjrh/qKsSUU9Km9lkhm5TRhfyhEcG4+E2ogQkMDEDY0BjWZ2pk8wRK7jRmwOBt + R90HAzklcQ5A1lzsk042ySoMHFpfwkngQU5UQYRIEIdVn3xbm6DPMMeZIJXLA2aTKkeIOCg0 + G099XiepHPYaOCzmSzK4qC0AkOiHMnl+WHamMd8GvbPmEqq+03/TJ7M6f/iUbE/Vf+eDw7X8 + +yslhst7X7ZTSsVZ9qNtxZmVVJOiRqowsPNuMqHP/eCfLdaeYuQholBXMUYRAbjv++Pjk898 + 5nuZ+Wtf+5oZ5ZxFBEWHzYmIhmG9XnaTyYRIVqvVbDYrF9PWTddRU9Xf98c/+9JLL5V+CLm+ + 742wSnr/4tHi6hKWjvf3zubzew/Ppg/PXnrppYMbN9rJofgK5AYFDMTspKSpLFyrblMOMYux + GrOxYyZJWefL1b177z86f/jHvue79/b3JdNb3/zgX/yLf0FEP/7jPw7sh8A5D3fv3l0sFi+/ + /PLe/j6gX/7yl7NGGN88vXH7xZe9F4DvvvfOO9967+Tm8XSyd3rrRGibz0GJhAFmZgPN5/P3 + 33//+Pj49u3bwpJyEpHFcvnlL395Npu98sorbdNmzXVwZDh78IFm1C+eOpLxIauC+HGu45Ig + tO/74uNRVdW0mkEQh8HVbhj61WpV13XdNBvexbBcLLqum0wm9TanUs4WY59zDiH44EtwexyG + 9Xq9t7//hCMawe0wC5Nqg3osZmaate/itG3MIIKS0JQcgcBTByCxOnEqZpZhWUoSu6dtlh+S + pwyVxs9851NKzrkSmq9ayK5A/O0SYmxafjpv9LW6fC1/uIhI+ejGlDIo5vGPFJHdeMYSCVZq + S2MpJQDF5lboAtos9oFhGLquu3v3rpnN5/PFYjGZTAocl2SYAJqmOTk5uX37NhHFGJm5fDOl + oddff/3FF18EEGMsh3jvI/iN7/+BqOi7fnV1ceNgpqlP63Vbh/V6HfaPTHzOllX7nI2YKTeS + BQMRFEa0SWajRpyjQ3ZIADkx8q4WZ5gcnHB7wAMue+1zWLpZYmZq++jmdagJRG3PNli9ziQp + 5bOHDwm+rltLznEFw2rZf3D30cP7l7HXw0OdTQ6ms5CiOc/eVYXYDVxBcXpwenb37KA52J8c + QIEeXEuwcH7v3DrzL3sydpQAXV1dvPfW16qqvnU05aaFbdLfixnSyIkTAPa0XK4/+OCDi4uL + o6Ojj00+5sWrx/ny8uHDh5eXlzdv3nyheUFYksZu2V09uFhfrfhE6tNJebhpni8vL4no6Oio + ZPnRmL751rfOz8/f+MTHD04PQBkfEu06rmsAiJG8ByAM38jGbRl6fnlx8ej89IVbbd1s8ie7 + DJgE8zW5CkBOGIjCkwC4C772VM0m35A+MUZsXlx2SKopsXPMXLsAMAxM0A/vvTkbcI2+1/Kv + JaNqDKA4s5aIs42H0kckG/23qOLYpiMoUibyZYf1el1SVqaUuq6bzWavv/76Bx98AOD1118/ + ODjADrCOZyiwXlVVVVVjQ8w8mUw++9nPln28932JeGYmoGVkYD9Uv/Pmu7/9f35FECs2y7kJ + 7IXLulDtdOJD7X3lvQSBYyrBdWNGNCIqEXokvsQThxBCXR80xs2NpDnH2Ibq43de/eTH3wDg + nEspxa4LIbx8+qLBuHifOfej/8FPaCYzco6IAEMVqtdeff2N17+7ZE1rJw4GgowwkIbsKoHB + +9r7SpWGdQyNJxIoUtK2nU2ne7I1ygH57OxssVi07YSLTZIJOYMAlu18emOKLHmWxLmqrtvJ + xIkvk5f5YnE1ny9XqyFGbD2ll+v10cnND+K9RFvrKIOrQMG/++679WwaZjUI7N3R6c1es68r + 5LwhsXPGuJ6W2W/9xm82TVOe4Kc//Wlf1yWaPKfBmIjxf/yjf/j222//9E//9Cc+8QkiEhJV + JaaUkhG89wYwsT1e9OXDQlu3mI1oySf9PAQlsBOUZWWEoTp0fWga+ZB+vTnx4wOLVXozwD23 + O9dyLVspAQdFN00pFZz5yFtxBeMLFo9Zyvq+Lz8Xi0Vd1yGEgsXOuXv37l1eXh4dHbVtO5vN + RKQoyNPp9MGDBymlW7duhRBK2oQHDx48evSoxKednJyUiwFwdXVFRDnn6XTqnKu2OY5d7oPE + iwfv7h0cuIf/6r3f+d8ryofTKq6Xc1JLPWlmgfc+5xyHnDj0spc5ENtuosuSmrKqqrZty13z + 3ofgjJs+zar2MIRQVVWM8eDggJljjKenp+v1WkT29va89zFG55xULVcuGqqqMsJyrUTWNHJw + c3/01NhOKJCBnOEZ0ogZwKim4Y3v+e7ppCoOfKW+PWg//X2frZtgjpQAdmZUz45efeNTJyen + Uk9SUjaQ+McjIxXKiEqS4sa1re/Um6gb1tE5F7xvXHtycPNgcngwPeAsIiTEzoX3zu5ddpfh + sM3bzBqXaXl/+SjXlCpEQUwpOGetdJLeuvfep974hAMD0CcWWkGYnShRjFFJ/ex47BghMSNr + fvjg7MH9hzBy7NUUIBgRnHc1TDQTnBBKVrfny5NQvV0b6xmSko5Wyq4bmDkEF9oGpo9TUBV/ + S8ubM+9S0mMD14h8Ld+BFF2kKI5FywRQpvsfYStu/OCKflrU5GEY7t69C+DBgwez2eyTn/xk + CKGw16paVdW9e/dijE3TFD5lOp1+4hOfSCn1fV+45qLzXlxcTCYTIrq6ujo8PCxK6Gq1evPN + N1er1Sc/+ckxbhiAmbHg3ptf+fVf/eU3Xn9NhsvvunN6NA2tQ1xfeSi0q4InU6jmHFNK8JOr + 1CQKmyxoqmqpBKrF2Fta2eWjaKaqq5yHoYtJhtQ27dFqtRrHt67rjo6Ofv3qyjlX6JpC4NR1 + DXFrQ69pf+9wOmuZnCETpGkrJueDEEQc1VXbtJV3VdIsvglV7ZxbLpeFZppOp2ZWVdXR0RER + ee+PGkDisFy7pjX2BppOqkl73LY1kJxjQHNKJSMzM4qT3Ga5KOPZpJ1N2pw3nh6aQYYbh8d2 + uNGnNaO4WOxPZwdHh2dXj9q6GZBN1bGf7k8pMIPaycQAc1BgOpu98ck3YswmnIubHBMBySAE + JRi7qCq+ijEaIdsmv31Sc8wM+d7v/eztF17a3z/u1vHu+x9cXV5OZ7M3Xv+YdxNBrdlZfuYC + T0/K03a259raChbHFM2srjefRN/3aYgMfWzO29GUxzrdmQHaNRZfy3cgzDzO8gEUK9pHi8UY + ueMCHCiYyOyce+2118xsOp1670snCnVydHRU13Xf9+v1utDBpRLA6elpjHHscVVVzrmiGg/D + MOZpJKKmaURkf3+/rKK0e9WXy/X5Vffw0dyy3r7zsVdeuLlenFNa59TnfhW8y3E9DIMHNEXv + Kz9fAcPOGYiIQWoWyrSCiLwXZjZTJjMdmC+L1l/XdUrp/Py8aZZ2w6qq6vu+5EjLOXvvc1bv + msvLS+pF1ylnAzQlZaEYc6+pJMIX8SE4ZjeYrGRCoR2Goe/7QtGamff+1q1bbduu1+sSmT2Z + TLz3s6Nb1L4QqUpRY+qF/XTW7s0OQuWY3Lpb9l0MlTvYP9rbnwZfq3E9uZEpDOtusV7tT2ft + bKox+bqqvBtSFhDKkyy8inMG3Nw7KmEkxZvRs/PN1LOs+o49anammViCr7OHGfLWnyED3ZCc + iHN0ubgS56aTybAeFMi2cQwP4ovi+UM/+MPrVR+qKscce3vn7fcPj/sXb74MEjIvCCVPBlh3 + koA+mbT+iY2tqNKzohAB6DA4gEOApXe+8Y3f/u3f/trX337rnfcVzLYLxIYdCDZAiYDNmrBe + 8/PZ5mu5lo0w8+uvv/793//9n/nMZ8oE+hh5Iz0AACAASURBVCNXjbELx8XnqfwskMrMt2/f + BqCqMcYCx3VdY4cOLlIsdWPlfD5v29Z7f3x8fO/evYODg2EYStxtwabj42MiGlXUYRiK10gc + 8unt1z/12dXJ4eG773xj/8bRre/7HnQr1B7DGt0CXpBLRjfBMEAzUoKWVUsicoZlZAVyWq3B + lGMacq8p97HLMTnRfn3mkE5Ob5rlBw/OmrZ6ee9OjD2RxNh3Qz+Ztc6F1Woh4oXhYI2rQwgl + j2Vd18W5quQmxta8WZJPJshSvYlPiabT4/PzRkS6rptOp8vlsvK6J6qq5+fnrp9joOVwcbX+ + eka1Wq0uLi5ijIeHh7PZbL1ez2azs7Ozs7MzETk+Pj48PBSRIZnKRMkvFov5fH5ycnLr1i1V + Lbz5+fk5M7/44ouz2awwNueXV0PGZLa3v79fntr+/r73vmmaew8ffutb37p9+/ZrH/94jhEA + 1bUjZ+wSmJ0jUMpJh5U651z7uR/4Puccgd76xluCpBqFfYyZuSLG0OdQSdtWmuFqOTm+cfwD + R0QymfoUweS8bNdQ3awiuHnJNzVPyWPdFgDDeLuy9xMlewdDWne/8c9//X/7xb/7zz7/T977 + 4P68S0oM6A4im+7mzaaRoGCYikWxazi+lj9Emqbx3n/sYx/7mZ/5mZ/7uZ977bXXPnIsRjHl + pZRGb7YCNGZWoLPsRERj27uLXzw+y5PmxdlsVjZu3brVNE2MsTi0jc5wp6en43kKQJcN8fX0 + +MU/+UMvGvD733jQ0mGiY6mPiIAwIOw0TYoaMNY+cdMgpfe+9a1J2yZNh/sH0gQ3RLTBGXh5 + 5SdTaAYIbLAES4gZlm8pkAZkQ3B53UvlLeZ+6GCklnNSz5F1sV6e57KaFMDMhT9aLpdu641o + ZiVFMWJ3Ipr6pXNu6xSIkqGiLKtaVOMbN24wc0qJc640U0rMtcjtMuwB0bkaiN1+CJ98pbRF + dCEiy27t23qIUSvlEwYW6fJrZXhYr9d7Oavqw/fTpffFenm+GJZxkqgqHbi6urp58+ZkMmHm + +Xx+fn5e1/Xp6WkZY0IIUs9W0qKeVlUVQjCz5XI5Ovfs7e0BuLq6evNL7d7eXgjh9PRlqfcm + s6PVavXNb34zJ3vllVdOT08Pj6YlNj0O2nWduJxyFieawQ6w56zJ92RNeUHoOVxCiih5pv/x + 53/zv/mv/8YXf/M3un5tyLTNZeXE5ZzKuYWRFQaEJvTd4NtJ7Lowmw1XSyOKmkbHofH9L9O4 + kmOkqqrR7bQkki6LaZVZVLk5u+mcNqsB7Jhkys/dv6aUivWizBrLV9D3faGzymBfVuQqR5X9 + S33RXcrivI/v2c4HNZajK1RpvXRj8wE96aFVeltVVXldR/PJU1dR5rKjFWsYhrquiahoVOUu + lUXfC6psVrHRJwa83abLDSzeVkUpLDs8E2f+Lcjz2o0xXl1drdfrd999d71e//zP//zNmzeL + s+lH2Lobrx9P3qa0m2/3OznRcxw+9vf3n9Lqv72zXkxgKityUFTJVieYAxIC8Niws517cj2h + i3l3dnbxd//+r5yenhr0z//5P39rdthrxKDr9fry0qaDEclk2jRS5dQDIDLywixmiqzknbRW + Aonron0RdIjDsAgtgnUQB80wg7jHEdwANG8yC6uqKucBukS3gHObHPMiJXNx3nIgRTbvnw60 + eGjDqtzt0cWlbNQxbt7Lqik3jZoAik278UVX1TGK7+RkUkj/GGNd1yV4fb4YXDgcVHLOVVV1 + 3XHbtjHG1Wp13FY3Z3siUlV9SsuUEjLH7n7SoOLXMQ0plhWtc0xGmF9ehboiw6pbVz6QcBri + 7PAG/MTVk6GPjx49yjkfHd0o1lFmrqqmeAK9f/cDuvwD7z2xd82eMjv24p0Xx04c+82Srey8 + c86HygcXPImDOIsACdETWVOADRZfXcxjd/HqKzcJn4kxqqblak5kXbca+s45t1zOV4uFAjHG + dcTQDyCoJsCG+TzszbTryuJbJUV1GSbLA6qqqph5yxMpiVsLTJfHUdYwxA7YjT+x4/H5TGQs + IL5rnR/Bt6BY6QyAgoDj2om7xuryGtB2JcbxT9giZnHJKs2NTeNZoDP2v1iJyphUjD3jWIUd + a39pogwMuxBfXt3xFu2Ocx/+2MeOFYWvwH2ZRv+b8Fv4TuR5cFyQN8b4/vvvf/7zn//Upz71 + V/7KX/losRhFO969U//aXs0xxmfWl3ESW/gopr8yuX7GzgZfXPNjlO4qxINgQ7lBYmTbJZl0 + mySTzeaXFwd7+25v8iN/+rOLxWJvb8/HTlLfOs5DirHHerHqV4vFQkSqpr798h0SZiZiyjld + XF1ePDrvhv6F01sxp7L2HNQms2nbtLU/GIaBeSok8/m86AIl1VlZdwNACIGZs2Vj857JkkrP + JeZiZy0iAWS0vo0rCloCd5vA5/E9KDk2U4JZGoZCf5e/VB6rR3e9bMyt5bs1s2EY1uv1SKEU + Q6KZ0cXDWQXkdc6ZiEJvIuAIYw4hzA423uUxEnPlnKOcJ5QDa+yHPg7BeRe8JhpSpOO2DFdJ + 28qHpLlf56pZLfqHZJQlx4OYcxbc90tffHKqqhmGgZmbh4/m6fe6rovirigM7ARkTNtSlDCp + m5KJGeIKAy6gzCG7A+OquKWXGUYBwRBCCGFvb+9PfHrvez/1nxannWhOZX/VZRG6ujhv23a9 + XlY+rLp1Mo3J1jFdrfqL+eL3fv/L//P/+neGhw8AZX0s5T6XjXFoxBbdcs7F6eipF77AzYi2 + T5pDHsuo/ZUzP/XJlDOXedWuOlmQd2x3hL8/VIUsXRp12/Fadvs86mHlI10ul+MhAFar1VPn + HDX9EXPHqxjPv9vQOPP+9u0+JU9p0/825Xm3tFx4XdfOuW9+85u/93u/91M/9VPl50fY+mPt + ePce4clh8DuRb7O/27jsYnyKZSr0jF1JGSCzZJksM5SgplCQleBXo2KB2ZCCsIO9PeR+vbxc + XF30fd85JsvFFCXE06ahwyMAZdVqMjIwwEpEYGMCSTLEpN96727hx4uT9dHR0e3bt72voJUZ + D0M+O1tfXV2NriBlHte27dHRUdtWRGAGCS6uVl3HstKUh5ysqn3xvlgtO3F0eLAXKnTZWMCZ + 5ov5g4dn04PJbDYrwOqcc+JIaKChcpW22XL2EqLG9XptnttXXwYyzKqymDcAM8QI7zeL+DFD + RNdrbhpYh/U9cAIz+h45I0Y4B2Ysl+XYnNI4XkrsbHHhkVIfhxwFHDXlIWWoxpwsa8xRU0la + NEkqDm1cGOKo0Y+KVV1P67ouI+/hYdM0zWrl4PytqkrEUM1mpSQtaZNWuZBEMGTNxR5AAnqQ + INFsMJtvtdRyowqDVIyu5R1z1V7U/S7ybNpOp9MPlvPpdEqzqcU0aadXy85n3Nk/+lOf+p6f + /Qs/fKOxX/y7f88ynAvjwFaoCSLquq7AzYe15tJW2Xl8n0dj9Th27mo2H2YSRkJj/DRoa/Ut + DAltVysvenS52DIslRG63IGn4GP8Wd7SAiJjTckJPu652ysRKWP2aNUvo0I5SbnS8S6NHdv9 + /MunUTg9bEeRUYXf7eFuu0UBx3Z0KV9WYT+ehyf/TqSu69/93d/t+75pmq7ryjS0vHgfYSuP + teNdXMYfHY6/jYzv1q7zxvP0fLOsZmqcXEiuzlxlNcXWLlO0162o6ZBicO7k9ks/dHhU9ETn + XNf1IYSsxq6up95775uZ9168H4CkOcUkSlUIk/2j0M4AlOTxbdua2Xw+b5qmmcwEyOvohBD8 + rePD/bYGsFqtypNQ1dpLxXAwLR+GOU45rdaL7mI+vxqGWNdVCFUIfrFY7u3NDiczcl40O5YU + 09X5ow/uvr+aT5eTuW1Dfcr9v3Hjhj8QYXbkGbxeDuf3z86Ag/2bcVBmDqHCxogqVTWZumZI + GYBnSb1+/a0z5u5gf3LrxiegZY2BHrO2KN1QxYlHjFCVEERko4+zwQOUQkYQwLiJHYxRuY0J + LiqGdeqTkjpycZhTvBAadlXCESVFZLVa6DYlv65WnqyKa9JoOceS1y5naMowR6wEZN3AMYzU + DEOMl4wn9NCxlcIkEJFzmtIy5xx857mH+dXi7SlPH9x/v71q1n1ft81VlyQ0+8304u3ui7+6 + +At/8af/+n/5s3/9v/jP1uGm+lmhg0c6ogBTuYTCoccYywUWOC4XNWLNaAkvOFVEt2GuT5HL + Y3TVyDOMn0lBtDK/KfhYKgtfXHiDAs2j5jtqyrvqVIHCEU/HV2sX+54qN0Hn217xNvj2KZ5h + hAXaWv7xpI/syLeMB46f/+4THM85nkG3iSDKVOCjhbn/5/L222//1b/6V7/yla8sl8uCAIXN + /2hb2Vzzh4f0bz8P+s5lfLSlLC9uecOeuT87Z8UW7rwyZSJzmwRszxgfmIhksV557+GkqVvu + N5mUMzgTsfNmoiTGARIKYJAZlNQss5lByDknwVWjpVH2nHPODKt1J5pNk6+qqvJ1Hcj7wxhz + zq6uLUZVFedAZpbNLCfd25uKkJkdHMwKapcBfzpt27YNQSwrs7Gn4N2Nw6Oq+hSxPbG89MZc + UxO5TRZ/EWZf1xOQf//9s2Qo0/b1er1YLLz3h4eHLzdNhjAjE65Ww9fffvfi4mLatE0dFosr + Imma6nOf+3NNM/GBYjQGXSwvLy/nzH1VNSUp6Gw2JVDOkZkrqbLm86vzGGPbhvLgvPfV9FZu + MjMbseTOYVWi+FxK4E1Uc6uxLBN1kBOgG+adBTog9dAeajBFVlhCVhCw7sqiBtuF/hLUYAPy + OayzDy3VWp7UcrksmNV1naqSmnbqxR3Mji8enf+JP/49H3zwQc61Es9mfr4enKNbt076rGdn + Zze+dwqeNbQHaUfHofIOdF1X13VBfNraqabTx8maiwGgWERGmnUXHLGjBu4C0/hFFIjcVTCL + 6lrm7wXUitGlfCwjPI1qje6E0Y5K9+5nW47dZY2f8it9Co5Hi3rZxzlXtJPSUHkBxpGgHLKr + tBXb9S6MllOVsWF37HlqEBqf5njDsQ3o/bcvu33blePj47Ozs9VqVRyTptPpH9W69p3I09rx + t+nQt5fnHTVOx8orNX5Rz96ZMKREwmADm5GibJaskMXUPirKpkYcyerp3mK1mLbTy/V60jTz + 1SqEwCRgMQGxGAHm1SH22RMFgndORFgoJ0s5S7F+AHkYcs6O2ZshmWcJbR1zyowhKwBnpGzi + fbSUSY2NLBGoLAJHRNkGqqmpm8YaMxMWNQUwpamZDWkoT7FwNdy4Fw5eLEtO7wQkAyV5ECFn + qBpA3s+Oj2feY3+2Z1aWoeKu61arVkQmk0mgbGKq6swdTt3HXj4ZTvcns+m6S48e+b4fzNQF + SZosuSH202ntglPk5XJ1Ob/q+45Z9vZmb7zxseKyjYxhPSwuF48ePTKz2WzWdV3bti+99JL3 + fshD09QpyRCbkU8EUExNZf2REqqdc/bw6/W6bZuh6zgbGYRBwpCSWZTAhIlu/NLIHju0QcFU + DLcBeOIDXS7h3EHeLICAlCBi3ZxCRFwCtjo/J8Prn3ZS11fnl6Ga9NlW0SYHJ/Stu+/N198V + Xlssu6FfTaeuQGFZPasAcSErioqaUiqBpiU3ywiRo+LvvZ/P56NFZISz8nM0MxTQKZ/AZDIp + 6DNidBkJxoDY0QzAzOv12sz29vZSSuv1usSaFtR+imbdJStG5g1AYWCGYRi116ek2HhLLoTi + e0pbk+DoalUMP2ZWMs+MppTS1cLzlHCEgt3lSsvkYJwZ6w7jNB4y2mNKTdM0/67Iiufh2BiZ + XB59jHEymXzkrZdUZAUxGQZSAm3Kj0RIN8sGSXYQOHZCrjzvJ33+FYARUs5CDmqFLSZT3hju + DJtObd8/KqtiwMim7RRAXdcGTNsWO95TOZsxMRMTvJfAuzGyEGLxAQxLSl6cF42RabOTVD5D + k5gHfBUUgEFVHYuq8ZjurAwXpjENlXekmnXYVaCYuR8GVSVDXVUlu1vf987X6z6ZbaZ7WR/n + /TCybAQGc7FhgshyhgtkCiARy3RWz/YabD7myMJZ4xAHR1x5yjH33cr75uD4yDk3DEPd+tV6 + EFgIoetS0zS3b79IW0tRSqlpmhQ3PDIzt03z4gsvHOzvFx3n/v37TNQ2jQgtlymnnJOFuikj + BxFUEVNhFf0QByIKwYPVCsXElbJAnBKyQQklgUUpvUCBkmafzLJlUgLgN2lVHq8aiKLryb53 + AgdmDIOSo7om9Sfiu4sH7/zar/3aC6e3/se/+Td/4Rd+4eXbr+2d+rzuPYdHd+/56sbhnaN7 + X3vr4Vq+9vV37tw63WMu39iDBw8ePHjQti2Avb29pmnath1R9b333vvSl74EcHHfHDnrpmmO + jo5EfAi+jJHz+bzrujFqq1A3dV3PZrO6rgsEz+fzvu8LE1Ke4DAMVVWdn58Xg8RIDc/n83v3 + 7s3n89PT077vl8vl0dFRCVkKIXRdV+Cv0MqF5SimTiK6vLy8e/duSuno6KhgXFFpy0V570fT + aN/39+7de/To0Y0bN4rn+wiXXdc558aMjOXAr371qznnMaNA8Ypzzu0GEC8Wi8ViASCEUHr1 + VLtEdH5+fu/evXLDCxwfHBzMZrOPanb+R5XnwfHV1VWhJsZhaTKZjDOVj0qcIW+I88zI+F/+ + p1/65X/0+cO9G1BumqY4Faqmqg5NUw3DkBWHh0d1XV9dXZ2cnBSirdzc0YxTpjPe++C8SKWa + mtZdzB/82E/8UHvoBNKvB/HuCf//7XIj7JmIEpQBoeLiZAQCbbGv6NpF3XBCBqgKC4CcYlKt + qxo7OQ3EEYCcLQ/ZOWcACGVivVnpBACQkR0BAAeBqaVEzoFSZwMRJ6iDCBhAYC8GITKFGtiV + dQRJSMRXDtmFAMDzJo8GgNh1TV0P63UhfBEHJ+LqGkzw1mt27LLFIQ2hCWwwS15knAwW/wTv + XDaFUTInIuwDYClnVTVTIUlRmUPwPvbD/uHJ4TGr6pA159w0DTMv58uqqnIavPfEANQzqaol + rb2Dd0U1L+NB0de890dHRymlqvLHx8dbLsU2CQaRc8q7BKL3ZqZmVgUxs75btW3b9/2krVbL + tYgMw7JpJ0KIORNBc3FJdjApM2rNmYm8ZxTCkZSINGcQnNtMaTfKOOWUEimFyqvqukvOsVh1 + dqW3X/30pz7xXX/nF//yf/yf/LWX3/i+2A3sm7OzR2++9U5TP7rz6mve7INvfeN4Nn3x9Gbe + WjKdc5PJZLlcLhaLs7OzO3fuTKfTgrAF5u7ffxgH/dLv/0Hb1kVhfO+9937sx370c5/7HAtS + ysxISZfL9WKxGIZutVoBhaqaMjszKiYu54L31dnZ+XL5YLlcDsNQIumHYQD0xo0b0+m06LMF + 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 + QmCC + + + + Collabora Productivity has been at the forefront + UserOne (Guest) + 2024-07-31T03:36:51.626134706 + Even if the author of the vehicle is free, sometimes the vehicle is not. Aenean ultrices, velit vulputate efficitur tincidunt, eros est convallis elit, as pretium eros sapien not now. He was completely shot as a great vulputate, but he had to drink to adorn the elite. Now, let's talk about it. + + Flora (Guest) + 2024-08-07T13:18:14.723713959 + to move or bring forward: ... to bring into consideration or notice; suggest; propose: ... to improve; further: ... to raise in rank; promote: ... to raise in rate or amount; increase: ... to bring forward in time; accelerate: ... to supply beforehand; furnish on credit or before goods are delivered or work is done. + + Perry Mayer (Guest) + 2024-08-07T13:13:56.235073852 + Even if the author of the vehicle is free, sometimes the vehicle is not. Aenean ultrices, velit vulputate efficitur tincidunt, eros est convallis elit, as pretium eros sapien not now. He was completely shot as a great vulputate, but he had to drink to adorn the elite. Now, let's talk about it. + + Jane Doe (Guest) + 2024-08-07T12:40:45.502487544 + For no one despises or hates or runs away from pleasure because it is pleasure, but because great pains result to those who do not know how to follow pleasure with reason. Nor is there any one who loves pain because it is pain, pursues it, wants to gain it, but because such times never occur when he seeks some great pleasure through labor and pain. + of providing open-source productivity solutions. With a focus on empowering users with cutting-edge toolsr + Nous sommes à l'avant-garde de la fourniture de solutions de productivité open source. En mettant l’accent sur la fourniture aux utilisateurs d’outils de pointe + Wir sind Vorreiter bei der Bereitstellung von Open-Source-Produktivitätslösungen. Der Schwerpunkt liegt darauf, Benutzern modernste Tools zur Verfügung zu stellen + 2. Products – The Collabora Online Apps3 + https://www.collaboraoffice.com/collabora-online/ + 1. Writer + a. Supports + + + .odt + + + .docx, + + + .doc, + + + .docm, + + + .rtf + + + b. Features + + + Provides a true WYSIWYG editing experience, making visualising your document layout incredibly easy. + + + Open any document, add comments and track changes from anywhere, with anyone. + + + Öffnen Sie jedes Dokument, fügen Sie Kommentare hinzu und verfolgen Sie Änderungen von überall und mit jedem. + + + Ouvrez n'importe quel document, ajoutez des commentaires et suivez les modifications où que vous soyez et avec n'importe qui. + + + 2. Calc + a. Supports + + + .ods + + + .xlsx + + + .xls + + + .xlsm + + + .csv + + + b. Features + + + Benefit from advanced + UserOne (Guest) + 2024-07-31T03:38:14.908414973 + For we must drink the mouth of the molestie. In the warm weather, the target is not the drinking element, but the football fans. For as well as the story of pain, that is the author's fear. In order to decorate the garden, it is not necessary to place it. We are not alive. Sometimes, unless the protein of life ferments, from the felis of the stomach, it is a very important medical therapy. + + Flora (Guest) + 2024-08-07T13:16:58.018238317 + advance, promote, forward, further mean to help (someone or something) to move ahead. advance stresses effective assisting in hastening a process or bringing about a desired en + + Perry Mayer (Guest) + 2024-08-07T13:14:44.925756845 + Advance means to make or cause to make progress. + formulas, pivot tables, HTML formula input, conditional formatting and data validation. + + + Bénéficiez de formules avancées, de tableaux croisés dynamiques, de saisie de formules HTML, de formatage conditionnel et de validation des données.. + + + 3. Impress + a. Supports + + + .odp + + + .pptx + + + .ppt + + + b. Features + + + Easily design attractive master slides, add text, images, tables and SmartArt, then collaboratively edit with your colleagues. + + + Entwerfen Sie ganz einfach attraktive Masterfolien, fügen Sie Text, Bilder, Tabellen und SmartArt hinzu und bearbeiten Sie sie dann gemeinsam mit Ihren Kollegen. + + + 4. Draw + a. Supports + + + .odg + + + .vsd + + + b. Features + + + Draw shapes and diagrams, add text, charts, tables and links. + + + AZeichnen Sie Formen und Diagramme, fügen Sie Text, Diagramme, Tabellen und Links hinzu. + + + Huge Blank Image + + + iVBORw0KGgoAAAANSUhEUgAAJxAAABOIBAMAAADleWp7AAAAD1BMVEWBAH/39Pfbu9qcOJq7 + d7pn3SgJAAJ3SklEQVR42uzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + gNmDAwEAAAAAIP/XRlBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYQ8OBAAAAACA/F8bQVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWFPTgQAAAAAADyf20EVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVRX24EAAAAAAAMj/tRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdiDAwEAAAAA + IP/XRlBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVWFPTgQAAAAAADyf20EVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRX2 + 4EAAAAAAAMj/tRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdiDAwEAAAAAIP/XRlBVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVWFPTgQAAAAAADyf20EVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRX24EAAAAAAAMj/ + tRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdiDAwEAAAAAIP/XRlBVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWFPTgQ + AAAAAADyf20EVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRX24EAAAAAAAMj/tRFUVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVdiDAwEAAAAAIP/XRlBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWFvTtIbRgGAihq0IUG + lBvY9z9TNZLlxJR6VYgW7+GEJtlp9RnJLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + eCWmE4ghn2NMp1MBAHg90wxwKaYrAV/pfSujxELXvfqAuC6nKpQZ40pUWzoYY452l38BAE4R + weTwJc5KABPyiDlxCwDAS8Z4k9TbllcrCPlFCe7+hXOtoaY0xaxzv2O+KDeHt21eAACcIT7L + 5wvjHM3kGC0HNqETvAAA/FvCp2Dwj6QWAOBcgUlzfUIQtQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA/+zBgQAAAAAAkP9rI6iqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqsAcHAgAAAABA/q+NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrC + HhwIAAAAAAD5vzaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgp7cCAAAAAAAOT/2giqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqKuzBgQAAAAAAkP9rI6iqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqsAcHAgAAAABA/q+NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrCHhwIAAAAAAD5 + vzaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgp7cCAAAAAAAOT/2giqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqKuzBgQAAAAAAkP9rI6iqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsAcH + AgAAAABA/q+NoKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrCHhwIAAAAAAD5vzaCqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqgp7cCAAAAAAAOT/2giqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqKuzBgQAAAAAAkP9rI6iqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsAcHAgAAAABA/q+N + oKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrCHhwIAAAAAAD5vzaCqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqgp7cCAAAAAAAOT/2giqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqKuzBgQAA + AAAAkP9rI6iqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsAcHAgAAAABA/q+NoKqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqrCHhwIAAAAAAD5vzaCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qgp7cCAAAAAAAOT/2giqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqKuzBgQAAAAAAkP9rI6iq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsAcHAgAAAABA/q+NoKqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqrSHhwQAAAAAAj5/7ohAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4CNkJ + 4n+d0pfKAAAAAElFTkSuQmCC + + + + + + 2b. Subscriptions4 + https://www.collaboraoffice.com/subscriptions/: + 2. Acknowledging Collabora's Impact + + + Collabora's Contribution to Open Source : Collabora's dedication to open-source principles has been instrumental in driving innovation and fostering community collaboration + TwoUsers (Guest) + 2024-07-31T03:34:24.090229947 + The customer is very important, the customer will be followed by the customer. Morbi learned that from the life of the easy valley and the wisdom. Vestibulum pretium pretium ante, not a quiver libero vulputate as It was a mistake from the author, but my course. + lorem + Jane Doe (Guest) + 2024-08-07T12:44:41.210127805 + Curabitur pellentesque fear in velit fringilla luctus. Maecenas did not draw in mass members. Some free element is pure, it is important that the valley itself needs it. It's just someone who is pure and now has a good taste. + . + + + Collaboras Beitrag zu Open Source: Collaboras Engagement für Open-Source-Prinzipien hat entscheidend dazu beigetragen, Innovationen voranzutreiben und die Zusammenarbeit in der Community zu fördern. + + + + Collabora Online: Empowering Collaboration : Collaboration lies at the heart of Collabora Online's ethos. + + + + Collabora's Commitment to Innovation : Innovation is the lifeblood of Collabora Online. Through continuous research and development, Collabora remains at the forefront of technological advancements, driving forward-thinking solutions that anticipate and address the evolving needs of users. + + + 3. Tables and Forms + a. Table + + + + + + + + + Serial Number + + + Item + + + COMPACTIBLITY + + + Features + + + + + 1 + + + CODE - Collabora Online Development Edition + + + + + + + + Open Documents + + + MS Documents + + + + + .odt + + + .docx + + + + + .fodt + + + .doc + + + + + .ods + + + xlsx + + + + + .fods + + + .xls + + + + + + + + + On-Premise + + + Rolling Updates + + + For testing and home use + + + + + + + + 2. + + + Collabora for Business - + Supported Version up-to 99 users + + + + + + + + + + Open Documents + + + MS Documents + + + + + .odt + + + .docx + + + + + .fodt + + + .doc + + + + + .ods + + + xlsx + + + + + .fods + + + .xls + + + + + + + + + Lifetime Maintenance + + + Customer Portal Access + + + Service Level Agreement (SLA) + + + + + + + 3. + + + Collabora for Enterprise - + Supported Version for 100+ users + + + + + + + + + Open Documents + + + MS Documents + + + + + .odt + + + .docx + + + + + .fodt + + + .doc + + + + + .ods + + + xlsx + + + + + .fods + + + .xls + + + + + + + + + + + + + + + + + + b. Forms + i. Checkbox: + a. Please select your prefered theme + Dark mode + Light mode + 2. Sheet + .ods + .xlsx + ☐ .xls + ☐ .csv + 3. Impress + .odp + .pptx + ☐ .ppt + + ii. Dropdown: + 1. What is your favorite pet animal? + Select your fav pet + 2. What is best dessert? + Select your best dessert + 3. What number of teeth does a giraffe have? + Giraffe's teeth + iv. Date: + 1. What is today’s date? + Choose a date + 2. What is your birth date? + Choose a date + 3. What date did the first man land on the moon? + Choose a date + + + iVBORw0KGgoAAAANSUhEUgAAJxAAABOIAQMAAAAtmeULAAAABlBMVEW6IyPKV1e2HcCKAAAY + U0lEQVR42uzQsQAAAAACsEjyx0yic0NYAgAAAAAAAAAAAAAAAAAAAAAAAAAAALxUAQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMPbg + QAAAAAAAyP+1EVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dGUFVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVhDw4EAAAAAID8XxtBVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVYU9OBAAAAAAAPJ/bQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFfbgQAAAAAAAyP+1 + EVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVhDw4EAAAAAID8XxtBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYU9OBAA + AAAAAPJ/bQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFfbgQAAAAAAAyP+1EVRVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVpDw4IAAAAAIT8f92QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAABMBHyMAH1uedpMAAAAASUVORK5CYII= + + + + + + \ No newline at end of file