~hedgepigdaniel/dewobble

8796d59ced9e586293b61e7fb10d4bd3ca0c9276 — Daniel Playfair Cal 2 years ago 909757d
docs: touch ups + colour
M Doxyfile => Doxyfile +15 -5
@@ 52,7 52,7 @@ PROJECT_BRIEF          = Video motion stabilization with awareness of lens \
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
# the logo to the output directory.

PROJECT_LOGO           =
PROJECT_LOGO           = docs/favicon/apple-touch-icon.png

# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is


@@ 1211,7 1211,7 @@ HTML_FILE_EXTENSION    = .html
# of the possible markers and block names see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_HEADER            =
HTML_HEADER            = docs/header.html

# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
# generated HTML page. If the tag is left blank doxygen will generate a standard


@@ 1256,7 1256,17 @@ HTML_EXTRA_STYLESHEET  =
# files will be copied as-is; there are no commands or markers available.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_EXTRA_FILES       =
HTML_EXTRA_FILES       = \
    docs/favicon/android-chrome-192x192.png \
    docs/favicon/android-chrome-512x512.png \
    docs/favicon/apple-touch-icon.png \
    docs/favicon/browserconfig.xml \
    docs/favicon/favicon-16x16.png \
    docs/favicon/favicon-32x32.png \
    docs/favicon/favicon.ico \
    docs/favicon/mstile-150x150.png \
    docs/favicon/safari-pinned-tab.svg \
    docs/favicon/site.webmanifest

# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
# will adjust the colors in the style sheet and background images according to


@@ 1267,7 1277,7 @@ HTML_EXTRA_FILES       =
# Minimum value: 0, maximum value: 359, default value: 220.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_COLORSTYLE_HUE    = 220
HTML_COLORSTYLE_HUE    = 349

# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
# in the HTML output. For a value of 0 the output will use grayscales only. A


@@ 1275,7 1285,7 @@ HTML_COLORSTYLE_HUE    = 220
# Minimum value: 0, maximum value: 255, default value: 100.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_COLORSTYLE_SAT    = 100
HTML_COLORSTYLE_SAT    = 90

# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
# luminance component of the colors in the HTML output. Values below 100

M README.md => README.md +24 -16
@@ 4,6 4,8 @@ Dewobble is a library for video motion stabilization and camera projection chang

It is named dewobble because its accurate camera models avoid the wobbling effect that is produced by many other video stabilisation libraries when they are applied to videos with a wide field of view.

<img alt="" src="https://git.sr.ht/~hedgepigdaniel/dewobble/blob/trunk/logo.png" width="320px" />

## Features
 - Accurate motion detection and wobble free output due to accurate camera models
 - Option to choose a different camera projection for the output


@@ 16,35 18,41 @@ It is named dewobble because its accurate camera models avoid the wobbling effec
 - Interpolation of camera motion if detection fails for some frames

## Performance
With the default bilinear interpolation algorithm, the frame data never leaves the GPU and is processed entirely using OpenCL, with minimal CPU load. Cubic and Lanczos interpolation algorithms are performed on the CPU and therefore cause CPU load and also one copy from and to the GPU.
The majority of processing (with some exceptions, depending on settings) is done using OpenCL. Depending on the OpenCL implementation, this gives great performance with minimal CPU load. On weaker integrated graphics the process is usually GPU bound, whereas on discrete GPUs it tends to be CPU bound.

### Benchmark
Ballpark figures for different GPUs
<table>
    <tr>
        <th></th>
        <th>Hardware and OpenCL implementation</th>
        <th>1920x1440, default settings</th>
        <th>1920x1440, no stabilization</th>
    </tr>
    <tr>
        <td>Intel HD Graphics 630 on i7-7700HQ</td>
        <td>Intel i7-8750H (Core/Xeon runtime)</td>
        <td>22fps</td>
        <td>42fps</td>
    </tr>
    <tr>
        <td>Intel UHD Graphics 630 (intel-compute-runtime) + i7-8750H</td>
        <td>51fps</td>
        <td>94fps</td>
    </tr>
    <tr>
        <td>Nvidia GTX 1050 Ti mobile</td>
        <td>Nvidia GTX 1050 Ti mobile (proprietary driver) + i7-8750H</td>
        <td>88fps</td>
        <td>374fps</td>
    </tr>
    <tr>
        <td>AMD Radeon RX 5600XT</td>
        <td>70fps</td>
        <td>125fps</td>
        <td>AMD Radeon RX 5600XT (ROCm or AMDGPU-PRO) + i3-8100</td>
        <td>61fps</td>
        <td>165fps</td>
    </tr>
</table>

These benchmarks are collected by using the in development `dewobble_opencl` FFmpeg filter. For GPUs other than Intel (which has a zero copy VA-API to OpenCL interop), the times include copying the video frames from the GPU (where the input video is decoded) to the CPU, and then back to the GPU again for the filter.

The first test is for the default settings including stabilization, and the second for projection change only (which happens entirely in OpenCL).


## Requirements
### Build


@@ 259,9 267,9 @@ Note that the following will affect the measurement:

### Physical method
1. Set up the camera at a fixed position facing a wall.
1. mark the positions on the wall that are shown at two diagonally opposite
2. mark the positions on the wall that are shown at two diagonally opposite
   corners of the image.
1. Measure the three distances between those points and the camera sensor and
3. Measure the three distances between those points and the camera sensor and
   use trigonometry (e.g. the cosine rule) to calculate the angle from the
   camera sensor between the two points. This is the diagonal field of view.



@@ 269,16 277,16 @@ Note that the following will affect the measurement:
1. Compile the OpenCV
   [camera_calibration example](https://github.com/hedgepigdaniel/opencv/blob/master/samples/cpp/tutorial_code/calib3d/camera_calibration/camera_calibration.cpp)
   and familiarise yourself with its operation.
1. Configure it to use the fisheye model or not depending on the projection of
2. Configure it to use the fisheye model or not depending on the projection of
   your camera.
1. Fix the focal point at the center unless you suspect that your camera is not
3. Fix the focal point at the center unless you suspect that your camera is not
   centered.
1. Fix the calibration coefficients to 0 (Dewobble does not support these).
1. Run the calibration.
1. Read the measured focal length from the `<camera_matrix />` element.
4. Fix the calibration coefficients to 0 (Dewobble does not support these).
5. Run the calibration.
6. Read the measured focal length from the `<camera_matrix />` element.
   The horizontal and vertical focal lengths should match closely, and be at
   position `(0, 0)` and `(1, 1)` in the matrix.
1. Convert this focal length (in pixels) to the diagonal field of view (in
7. Convert this focal length (in pixels) to the diagonal field of view (in
   radians).
   For rectilinear projections this is
   `2*atan(sqrt(width^2+height^2)/(2*focal_length))`.

A docs/favicon/android-chrome-192x192.png => docs/favicon/android-chrome-192x192.png +0 -0
A docs/favicon/android-chrome-512x512.png => docs/favicon/android-chrome-512x512.png +0 -0
A docs/favicon/apple-touch-icon.png => docs/favicon/apple-touch-icon.png +0 -0
A docs/favicon/browserconfig.xml => docs/favicon/browserconfig.xml +9 -0
@@ 0,0 1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
    <msapplication>
        <tile>
            <square150x150logo src="/mstile-150x150.png"/>
            <TileColor>#b91d47</TileColor>
        </tile>
    </msapplication>
</browserconfig>

A docs/favicon/favicon-16x16.png => docs/favicon/favicon-16x16.png +0 -0
A docs/favicon/favicon-32x32.png => docs/favicon/favicon-32x32.png +0 -0
A docs/favicon/favicon.ico => docs/favicon/favicon.ico +0 -0
A docs/favicon/mstile-150x150.png => docs/favicon/mstile-150x150.png +0 -0
A docs/favicon/safari-pinned-tab.svg => docs/favicon/safari-pinned-tab.svg +365 -0
@@ 0,0 1,365 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
 "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
 width="1235.000000pt" height="1235.000000pt" viewBox="0 0 1235.000000 1235.000000"
 preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.14, written by Peter Selinger 2001-2017
</metadata>
<g transform="translate(0.000000,1235.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M6290 10810 c0 -12 -2 -12 -9 -2 -5 8 -19 11 -37 8 -16 -2 -29 -5
-29 -6 0 -2 -37 -8 -80 -14 -16 -2 -30 -5 -30 -6 0 -2 -37 -10 -62 -13 -11 -1
-19 -5 -16 -9 2 -5 -7 -8 -21 -8 -14 0 -26 -4 -26 -10 0 -5 -7 -7 -15 -4 -8 4
-15 1 -15 -6 0 -9 -4 -9 -17 1 -11 10 -14 10 -9 2 4 -8 2 -14 -6 -15 -29 -3
-34 -4 -58 -18 -14 -8 -30 -15 -36 -16 -9 -2 -93 -38 -151 -66 -12 -6 -20 -16
-16 -21 3 -6 1 -7 -6 -3 -6 4 -17 1 -24 -6 -8 -7 -28 -24 -46 -38 -18 -14 -37
-35 -41 -47 -5 -13 -17 -23 -25 -23 -9 0 -14 -4 -10 -9 3 -6 -1 -13 -8 -18 -7
-4 -16 -16 -20 -25 -8 -22 -27 -24 -27 -2 0 8 -4 12 -10 9 -5 -3 -15 5 -21 19
-8 16 -17 22 -27 18 -11 -4 -14 -1 -9 12 4 10 3 15 -3 11 -6 -3 -10 -1 -10 4
0 6 -7 11 -16 11 -8 0 -13 4 -10 9 3 4 -6 13 -20 20 -14 6 -22 16 -19 21 3 6
-1 7 -9 4 -9 -3 -16 -1 -16 6 0 6 -4 9 -9 5 -6 -3 -14 3 -20 12 -6 10 -11 15
-11 11 0 -4 -20 1 -44 12 -33 14 -46 16 -50 7 -3 -9 -5 -9 -5 1 -1 6 -13 12
-27 12 -14 0 -35 5 -46 11 -16 9 -19 8 -13 -2 6 -8 4 -10 -6 -4 -32 20 -207
20 -239 0 -8 -5 -11 -4 -7 1 3 5 -3 10 -13 10 -10 0 -16 -4 -14 -8 5 -8 -26
-12 -55 -9 -7 2 -11 -2 -7 -7 3 -5 -13 -8 -35 -8 -26 1 -44 -4 -50 -14 -6 -11
-8 -11 -9 -2 0 8 -5 10 -12 5 -7 -4 -22 -9 -33 -10 -11 -2 -27 -6 -35 -10 -8
-3 -18 -7 -22 -7 -3 -1 -10 -4 -14 -8 -4 -5 -20 -8 -36 -8 -15 0 -28 -4 -28
-10 0 -5 -6 -7 -14 -4 -8 3 -17 0 -21 -5 -3 -6 -11 -9 -16 -6 -5 4 -9 2 -9 -4
0 -5 -12 -8 -26 -5 -16 3 -23 1 -19 -6 4 -6 -4 -10 -19 -10 -14 0 -26 -4 -26
-8 0 -4 -20 -14 -45 -21 -25 -7 -45 -17 -45 -23 0 -5 -4 -6 -10 -3 -5 3 -10 2
-10 -3 0 -4 -16 -14 -35 -22 -19 -7 -36 -19 -39 -27 -3 -7 -13 -13 -21 -13 -9
0 -13 -4 -10 -10 3 -5 2 -10 -4 -10 -6 0 -21 -10 -33 -23 -25 -25 -55 -31 -75
-14 -9 6 -13 6 -13 -3 0 -9 -4 -9 -12 -3 -7 6 -21 9 -30 8 -10 -2 -18 2 -18 8
0 8 -3 7 -9 -2 -6 -10 -10 -10 -16 -1 -6 9 -9 9 -15 -1 -7 -10 -12 -10 -22 -1
-11 9 -18 9 -28 -1 -10 -9 -11 -9 -5 1 8 16 -26 13 -37 -3 -5 -6 -8 -5 -8 3 0
8 -5 10 -12 5 -20 -12 -38 -12 -38 0 0 6 -6 3 -13 -8 -10 -13 -16 -15 -21 -6
-6 9 -13 8 -28 -6 -11 -10 -22 -17 -24 -15 -12 7 -24 0 -18 -10 5 -10 4 -10
-6 -1 -10 9 -18 8 -36 -3 -13 -9 -27 -16 -31 -16 -4 0 -7 -4 -6 -9 2 -4 -3 -6
-11 -3 -7 3 -20 -2 -29 -10 -8 -8 -17 -12 -21 -9 -3 4 -6 1 -6 -5 0 -7 -7 -12
-15 -12 -8 0 -15 -4 -15 -10 0 -5 -9 -10 -20 -10 -11 0 -20 -7 -20 -15 0 -8
-3 -15 -7 -14 -18 3 -52 -14 -47 -22 5 -8 -17 -14 -39 -10 -4 0 -6 -5 -5 -11
2 -7 -3 -12 -10 -10 -7 1 -15 -5 -18 -13 -3 -8 -10 -12 -15 -9 -5 3 -9 0 -9
-7 0 -7 -3 -10 -6 -6 -4 3 -12 1 -20 -6 -33 -30 -42 -35 -48 -30 -3 4 -6 1 -6
-5 0 -6 -15 -19 -32 -28 -18 -9 -40 -25 -50 -36 -12 -14 -17 -15 -21 -6 -3 8
-6 6 -6 -5 -1 -10 -12 -22 -26 -27 -14 -5 -25 -14 -25 -20 0 -6 -4 -8 -10 -5
-5 3 -10 2 -10 -4 0 -6 -16 -21 -35 -34 -19 -13 -32 -27 -28 -30 3 -4 -1 -7
-10 -7 -9 0 -17 -4 -17 -10 0 -5 -7 -10 -16 -10 -8 0 -13 -4 -10 -9 3 -5 -1
-12 -10 -15 -8 -3 -12 -11 -9 -16 4 -6 3 -9 -2 -8 -12 4 -52 -39 -45 -48 4 -4
-1 -4 -10 -1 -10 4 -18 2 -18 -5 0 -6 -13 -23 -29 -39 -16 -15 -26 -31 -23
-35 4 -4 -1 -4 -11 -1 -10 4 -16 3 -13 -1 6 -10 -62 -86 -84 -95 -10 -3 -11
-6 -2 -6 10 -1 10 -4 0 -15 -7 -8 -15 -13 -18 -11 -3 2 -11 -3 -18 -11 -7 -8
-10 -14 -7 -14 3 0 -9 -14 -27 -32 -18 -18 -33 -35 -33 -38 0 -3 -4 -4 -8 -2
-5 1 -6 -2 -3 -7 4 -5 -4 -17 -16 -26 -13 -8 -23 -19 -23 -23 0 -4 -10 -21
-23 -39 -12 -17 -22 -36 -22 -42 0 -6 -7 -11 -15 -11 -8 0 -15 -7 -15 -15 0
-8 -4 -15 -10 -15 -5 0 -10 -7 -10 -15 0 -9 -7 -18 -15 -21 -8 -4 -12 -10 -9
-15 3 -5 0 -9 -5 -9 -6 0 -11 -7 -11 -16 0 -8 -4 -13 -8 -10 -5 3 -15 -10 -22
-29 -8 -19 -20 -35 -27 -35 -7 0 -10 -6 -7 -14 3 -8 -3 -20 -13 -27 -10 -8
-19 -21 -21 -29 -2 -8 -8 -18 -14 -21 -5 -3 -9 -8 -8 -10 4 -12 -14 -38 -23
-32 -5 3 -7 1 -4 -5 9 -13 -2 -44 -14 -37 -4 3 -6 -4 -4 -16 3 -14 0 -19 -8
-16 -8 3 -14 -4 -14 -15 -1 -11 -10 -27 -20 -35 -11 -9 -12 -12 -3 -8 12 5 12
4 -1 -7 -9 -7 -14 -19 -12 -25 3 -7 -1 -13 -7 -13 -7 0 -10 -7 -6 -16 3 -8 2
-13 -3 -10 -5 3 -14 -8 -21 -24 -7 -16 -16 -27 -21 -24 -5 3 -6 -2 -3 -10 3
-9 1 -16 -6 -16 -6 0 -8 -4 -5 -10 3 -5 1 -10 -4 -10 -6 0 -11 -7 -11 -15 0
-8 -4 -15 -10 -15 -5 0 -9 -3 -8 -7 3 -13 -33 -83 -43 -83 -5 0 -8 -3 -7 -7 3
-10 -30 -73 -51 -97 -10 -12 -11 -16 -3 -12 18 11 2 -20 -26 -50 -16 -17 -18
-24 -9 -34 9 -10 9 -11 -1 -6 -8 5 -16 -3 -23 -21 -6 -15 -10 -30 -9 -32 1 -2
-2 -7 -7 -10 -14 -10 -55 -91 -46 -91 4 -1 -3 -10 -16 -20 -13 -11 -20 -20
-16 -20 4 0 2 -7 -5 -15 -7 -8 -9 -15 -6 -15 4 0 1 -6 -6 -14 -7 -8 -16 -12
-20 -10 -3 2 -4 -4 -1 -14 2 -10 -3 -24 -11 -31 -9 -8 -16 -20 -16 -28 0 -8
-7 -21 -15 -30 -8 -8 -13 -19 -10 -24 4 -5 1 -9 -5 -9 -6 0 -9 -4 -6 -9 4 -5
1 -11 -4 -13 -6 -2 -12 -13 -13 -26 0 -12 -5 -22 -8 -22 -4 0 -13 -16 -20 -35
-7 -19 -16 -35 -19 -35 -3 0 -7 -10 -7 -22 -1 -13 -7 -24 -13 -26 -5 -2 -10
-12 -10 -23 0 -10 -4 -19 -10 -19 -5 0 -9 -3 -8 -7 1 -5 -3 -18 -10 -29 -6
-12 -8 -24 -5 -28 3 -3 1 -6 -6 -6 -9 0 -11 -8 -8 -21 4 -15 2 -19 -8 -15 -10
3 -12 0 -8 -11 3 -9 0 -21 -8 -27 -8 -6 -14 -15 -15 -21 -1 -22 -58 -134 -65
-129 -4 2 -6 -5 -4 -16 2 -11 -1 -20 -6 -20 -6 0 -7 -5 -3 -11 3 -6 0 -15 -7
-20 -8 -4 -15 -12 -15 -16 -5 -26 -18 -53 -26 -53 -5 0 -6 -4 -3 -10 3 -5 2
-10 -4 -10 -6 0 -8 -7 -5 -15 4 -8 1 -15 -5 -15 -6 0 -11 -6 -11 -14 0 -20
-26 -67 -33 -59 -4 3 -5 -4 -2 -16 2 -11 0 -21 -6 -21 -5 0 -9 -9 -9 -21 0
-11 -5 -17 -10 -14 -9 5 -15 -15 -11 -37 0 -5 -4 -8 -10 -8 -5 0 -8 -4 -5 -9
4 -5 1 -11 -4 -13 -6 -2 -12 -13 -13 -25 0 -12 -5 -19 -9 -17 -4 3 -8 -2 -8
-10 0 -9 -5 -16 -11 -16 -5 0 -7 -5 -4 -11 4 -5 -1 -19 -11 -30 -9 -10 -13
-19 -9 -19 4 0 0 -10 -11 -22 -12 -13 -13 -18 -4 -13 13 8 13 6 2 -8 -8 -9
-11 -21 -7 -27 4 -6 1 -9 -7 -8 -7 2 -12 -5 -12 -14 1 -10 -2 -18 -8 -18 -5 0
-6 -4 -3 -10 3 -5 1 -10 -4 -10 -6 0 -11 -9 -11 -19 0 -11 -5 -23 -11 -26 -6
-4 -8 -13 -5 -20 2 -7 -2 -16 -11 -19 -9 -4 -13 -9 -9 -13 3 -3 -2 -15 -11
-26 -10 -11 -12 -17 -4 -12 9 5 8 0 -3 -17 -9 -14 -13 -28 -9 -31 3 -4 1 -7
-5 -7 -6 0 -14 -10 -18 -22 -3 -13 -14 -32 -23 -42 -9 -11 -10 -16 -4 -12 9 5
11 2 7 -9 -4 -10 -13 -14 -23 -10 -12 5 -13 4 -4 -6 9 -9 8 -18 -8 -41 -11
-15 -17 -28 -12 -28 4 0 -1 -7 -11 -15 -14 -11 -16 -15 -5 -15 9 0 10 -3 3 -8
-11 -8 -54 -96 -54 -112 0 -5 -4 -10 -10 -10 -5 0 -7 -7 -4 -15 4 -8 1 -15 -6
-15 -7 0 -9 -8 -5 -22 6 -16 4 -20 -8 -15 -11 4 -15 1 -12 -14 2 -10 -1 -19
-6 -19 -6 0 -7 -4 -4 -10 3 -5 1 -10 -5 -10 -6 0 -9 -4 -6 -9 3 -5 -2 -26 -11
-47 -9 -22 -16 -42 -15 -46 1 -5 -2 -8 -8 -8 -5 0 -7 -7 -4 -15 4 -8 1 -15 -5
-15 -6 0 -11 -8 -11 -18 0 -9 -9 -41 -19 -69 -10 -29 -16 -54 -13 -57 3 -3 0
-6 -7 -6 -7 0 -10 -4 -6 -9 3 -5 1 -12 -5 -16 -6 -4 -8 -11 -5 -16 4 -5 2 -9
-4 -9 -5 0 -8 -8 -7 -17 2 -10 -4 -24 -13 -31 -9 -8 -10 -11 -3 -7 19 10 14
-13 -5 -24 -11 -6 -13 -11 -5 -11 10 0 10 -4 0 -22 -7 -13 -11 -29 -10 -35 2
-7 -3 -13 -10 -13 -9 0 -9 -3 2 -10 8 -5 10 -10 4 -10 -11 0 -28 -50 -27 -77
0 -7 -4 -13 -9 -13 -6 0 -8 -7 -5 -15 4 -8 2 -17 -4 -20 -5 -4 -7 -11 -4 -16
4 -5 1 -9 -5 -9 -7 0 -10 -6 -8 -12 3 -7 -1 -24 -8 -37 -7 -14 -11 -28 -8 -33
3 -4 -1 -8 -8 -8 -9 0 -9 -3 2 -10 11 -7 11 -10 2 -10 -7 0 -10 -4 -7 -10 3
-5 1 -10 -5 -10 -6 0 -9 -4 -5 -9 3 -5 1 -12 -5 -16 -5 -3 -10 -17 -10 -30 0
-13 -5 -27 -11 -30 -6 -4 -8 -13 -5 -20 2 -7 -2 -22 -10 -34 -8 -12 -12 -26
-9 -31 3 -6 1 -10 -5 -10 -6 0 -9 -4 -5 -9 3 -5 0 -13 -6 -16 -5 -4 -8 -13 -5
-21 3 -8 2 -14 -3 -14 -4 0 -8 -7 -9 -15 -1 -8 -3 -22 -4 -30 -1 -8 -6 -15
-11 -15 -5 0 -7 -9 -4 -21 4 -16 2 -19 -10 -15 -13 5 -14 4 -3 -9 10 -12 10
-15 0 -15 -8 0 -10 -3 -7 -7 4 -3 1 -13 -6 -21 -10 -13 -9 -14 3 -7 12 6 13 5
3 -6 -7 -7 -13 -23 -13 -35 0 -13 -4 -25 -9 -29 -6 -3 -10 -13 -10 -23 -3 -54
-7 -80 -13 -76 -3 2 -9 -15 -13 -38 -4 -24 -12 -54 -18 -68 -10 -25 -15 -45
-21 -90 -1 -14 -8 -24 -14 -23 -6 2 -9 -4 -6 -12 4 -9 0 -23 -7 -32 -12 -14
-12 -16 1 -9 8 4 6 0 -4 -8 -13 -10 -15 -16 -7 -16 11 0 11 -3 1 -15 -6 -8 -9
-18 -6 -24 4 -5 1 -15 -6 -23 -7 -7 -14 -22 -15 -33 -1 -11 -4 -29 -7 -40 -2
-11 -5 -28 -5 -38 -1 -10 -5 -16 -10 -13 -4 3 -6 -6 -3 -21 3 -14 1 -23 -4
-20 -5 3 -10 -9 -11 -26 -1 -32 -10 -90 -14 -94 -1 -2 -3 -7 -4 -13 -1 -5 -3
-11 -4 -12 -3 -5 -13 -91 -14 -120 0 -16 -5 -28 -10 -28 -5 0 -4 -6 2 -13 6
-8 8 -17 4 -21 -11 -11 -12 -36 -2 -36 6 0 7 -6 2 -12 -13 -22 -13 -48 0 -48
9 0 8 -3 -2 -9 -7 -5 -11 -15 -9 -22 3 -8 2 -24 -3 -36 -5 -14 -3 -25 5 -32 7
-6 12 -26 11 -46 -2 -24 2 -35 12 -35 8 0 11 -4 8 -10 -3 -5 -1 -10 5 -10 6 0
9 -3 7 -7 -6 -10 59 -73 67 -66 3 4 6 1 6 -6 0 -7 27 -39 60 -71 33 -32 60
-64 60 -70 0 -6 5 -8 10 -5 6 3 10 -1 10 -10 0 -9 3 -14 8 -12 9 6 33 -19 25
-27 -4 -3 1 -6 10 -6 10 0 16 -5 15 -12 -2 -7 2 -12 9 -13 7 0 18 -6 25 -14
10 -10 10 -12 1 -7 -7 4 -13 2 -13 -3 0 -6 8 -11 18 -11 9 0 28 -14 41 -30 13
-17 32 -30 42 -30 11 0 19 -6 19 -14 0 -8 10 -18 22 -22 13 -4 29 -14 36 -23
10 -12 12 -13 7 -1 -4 8 4 3 17 -12 17 -19 28 -24 36 -18 7 6 10 7 7 4 -8 -11
28 -33 54 -34 13 0 22 -3 18 -6 -3 -3 21 -20 53 -37 33 -16 57 -33 55 -37 -2
-4 7 -6 20 -4 14 1 23 -1 20 -6 -3 -4 3 -14 12 -21 12 -10 14 -10 9 -1 -4 6
-2 12 3 12 6 0 11 -5 11 -11 0 -5 5 -7 10 -4 6 3 10 -1 10 -11 0 -11 6 -15 20
-11 11 3 18 1 14 -4 -5 -9 10 -13 30 -10 5 1 12 -3 16 -9 4 -6 13 -13 21 -14
8 -2 22 -6 31 -10 9 -4 22 -5 28 -1 5 3 10 1 10 -5 0 -7 7 -10 15 -6 8 3 15 1
15 -5 0 -6 5 -7 11 -3 6 3 15 0 20 -7 7 -11 9 -11 9 -1 0 8 5 10 13 5 16 -10
37 -15 64 -14 12 0 25 -4 28 -10 5 -7 11 -6 21 2 8 6 14 7 14 2 0 -6 12 -10
28 -9 15 1 33 -6 40 -14 8 -8 11 -9 7 -2 -4 8 1 12 15 12 16 0 20 -5 16 -15
-3 -8 -1 -15 5 -15 6 0 9 -7 5 -15 -3 -8 2 -21 10 -30 9 -8 11 -15 4 -15 -6 0
-2 -10 10 -22 11 -12 20 -25 20 -29 0 -4 9 -11 20 -14 11 -4 18 -11 15 -16 -4
-5 1 -9 9 -9 9 0 16 -4 16 -10 0 -5 7 -10 15 -10 8 0 15 -4 15 -8 0 -5 16 -16
35 -25 19 -9 35 -22 35 -27 0 -6 4 -8 10 -5 5 3 10 1 10 -4 0 -6 5 -11 11 -11
7 0 18 -8 26 -17 8 -10 11 -12 8 -5 -6 11 -3 11 14 0 12 -7 21 -16 21 -21 0
-4 5 -5 10 -2 6 3 10 1 10 -5 0 -6 4 -9 9 -5 5 3 15 0 23 -7 7 -7 25 -19 40
-27 16 -8 28 -18 28 -23 0 -5 5 -6 10 -3 6 3 13 -1 16 -9 3 -9 12 -16 20 -16
8 0 14 -5 14 -12 0 -6 3 -8 6 -5 4 4 15 -3 25 -15 11 -11 19 -18 19 -14 0 4 7
1 15 -6 37 -33 46 -39 57 -32 6 4 9 3 6 -2 -3 -5 0 -15 8 -22 10 -9 14 -10 14
-1 0 7 8 2 19 -9 10 -12 24 -22 30 -22 7 0 9 -4 6 -10 -4 -6 1 -7 10 -3 10 3
20 2 24 -3 10 -14 68 -44 85 -44 9 0 16 -4 16 -10 0 -5 9 -10 20 -10 11 0 20
-6 20 -14 0 -9 7 -12 20 -9 12 3 20 0 20 -6 0 -7 5 -9 10 -6 6 3 10 2 10 -4 0
-5 9 -8 20 -6 11 2 18 0 15 -6 -6 -8 8 -13 28 -10 4 0 7 -4 7 -10 0 -7 10 -9
25 -7 13 3 22 1 19 -3 -2 -4 5 -13 16 -19 11 -6 20 -8 20 -4 0 3 16 -3 36 -15
19 -12 32 -15 28 -9 -4 7 2 5 13 -5 11 -9 23 -14 26 -10 4 3 7 1 7 -5 0 -7 5
-12 11 -12 5 0 7 5 4 11 -8 12 37 -11 46 -25 4 -5 11 -6 17 -2 6 3 13 2 16 -3
3 -4 18 -8 33 -8 15 0 29 -6 31 -12 2 -6 8 -11 13 -11 6 0 7 6 3 13 -5 8 -2 8
9 -2 9 -7 17 -10 17 -7 0 4 10 0 22 -8 27 -19 42 -21 32 -3 -5 7 0 6 11 -3 10
-8 27 -14 38 -12 10 2 17 -1 14 -6 -4 -5 7 -8 23 -7 17 1 30 -2 30 -7 0 -5 4
-7 9 -3 5 3 12 1 15 -4 3 -5 15 -7 26 -4 12 3 20 0 20 -6 0 -7 4 -10 9 -6 5 3
17 -2 25 -11 9 -8 16 -11 16 -5 0 6 7 11 15 11 8 0 15 -5 15 -11 0 -8 6 -7 17
2 11 10 14 10 9 2 -7 -13 14 -18 57 -14 9 1 17 -2 17 -7 0 -5 13 -9 30 -9 18
0 27 4 23 11 -4 6 3 2 15 -8 13 -12 22 -14 22 -7 0 8 5 9 16 3 9 -5 26 -7 37
-4 15 4 18 2 12 -8 -6 -9 -4 -11 6 -4 17 10 98 13 104 4 4 -6 30 -6 60 0 6 1
12 1 15 0 14 -5 49 -6 45 0 -2 3 19 7 47 8 28 1 55 5 62 9 6 5 20 8 31 8 11 0
23 4 27 10 5 6 8 6 8 -2 0 -6 9 -10 20 -8 11 2 19 1 19 -3 -3 -20 3 -31 20
-37 10 -3 29 -21 42 -40 19 -27 26 -32 39 -22 8 6 12 8 8 3 -7 -8 22 -44 30
-38 3 2 9 -3 14 -12 5 -9 13 -14 19 -11 5 4 9 1 9 -6 0 -7 3 -9 6 -6 4 3 18
-2 32 -13 13 -11 28 -17 33 -14 5 3 9 0 9 -6 0 -6 4 -8 10 -5 6 3 10 1 10 -5
0 -6 5 -8 10 -5 6 3 10 1 10 -5 0 -6 4 -8 10 -5 6 3 10 2 10 -4 0 -6 6 -8 14
-5 8 3 17 1 21 -5 3 -6 15 -11 26 -11 11 0 18 -4 15 -8 -2 -4 5 -9 16 -9 12
-1 24 -6 27 -10 5 -7 23 -12 59 -15 6 -1 12 -5 12 -10 0 -4 9 -8 20 -8 11 0
20 -3 20 -7 0 -5 12 -9 26 -10 15 0 30 -6 34 -13 6 -9 9 -9 13 1 4 10 6 10 6
2 1 -7 12 -13 26 -13 14 0 25 -6 25 -12 0 -9 4 -8 10 2 7 12 10 12 10 1 0 -7
6 -11 14 -8 8 3 22 -1 33 -8 10 -8 26 -15 35 -15 9 0 19 -6 21 -12 4 -10 6
-10 6 0 1 10 5 10 17 -2 8 -9 20 -14 25 -11 5 4 9 1 9 -6 0 -6 8 -9 20 -6 11
3 18 1 14 -4 -5 -9 9 -13 34 -10 6 1 12 -3 12 -8 0 -6 7 -8 15 -5 8 4 15 1 15
-6 0 -6 4 -9 9 -5 5 3 12 1 16 -4 3 -6 12 -8 20 -4 8 3 15 1 15 -4 0 -5 10 -9
23 -8 31 3 48 -5 40 -19 -4 -6 1 -5 10 3 9 7 17 9 17 3 0 -5 14 -9 30 -8 17 1
30 -2 30 -7 0 -4 4 -5 10 -2 5 3 22 -2 37 -12 19 -12 25 -14 18 -4 -6 11 -4
13 9 8 10 -4 20 -7 22 -7 3 0 2 -4 -1 -10 -4 -7 2 -7 19 0 14 5 26 5 28 0 2
-5 20 -10 41 -12 21 -1 40 -6 43 -10 3 -4 11 -5 19 -1 9 3 15 -1 15 -8 0 -11
3 -11 10 1 5 8 10 10 10 3 0 -6 9 -9 22 -5 12 3 19 1 15 -4 -3 -6 6 -10 21
-11 77 -4 102 -8 102 -16 0 -4 9 -5 20 -2 13 4 20 2 20 -7 0 -10 2 -10 9 1 6
9 11 10 15 3 4 -6 13 -9 21 -5 9 3 15 -1 15 -8 0 -11 3 -11 10 1 8 12 12 13
19 2 11 -17 21 -17 32 0 7 11 9 11 9 -1 0 -8 7 -11 20 -8 14 4 20 0 20 -11 0
-15 2 -15 11 -2 8 12 12 12 16 2 4 -10 8 -10 19 -1 8 6 14 7 14 2 0 -5 16 -9
35 -8 19 0 35 -3 35 -7 0 -4 11 -3 25 2 18 7 23 6 19 -4 -5 -14 23 -15 44 -2
7 4 12 2 12 -6 0 -8 3 -9 8 -3 4 6 16 10 27 10 11 0 23 -4 27 -10 5 -6 8 -4 8
4 0 11 3 12 12 3 7 -7 17 -8 30 -1 13 7 18 6 18 -2 0 -8 4 -9 13 0 8 6 17 8
21 4 8 -9 46 -12 46 -4 0 3 11 6 25 6 14 0 25 -4 25 -10 0 -5 5 -3 10 5 6 10
10 11 10 3 0 -9 7 -10 26 -3 16 7 23 7 19 0 -4 -6 2 -7 18 -1 17 7 29 6 37 -2
10 -9 11 -9 6 0 -4 8 1 11 14 10 11 -1 20 -5 20 -10 0 -5 7 -4 16 4 13 10 17
10 25 -2 6 -10 9 -10 9 -1 0 6 5 12 11 12 5 0 7 -6 3 -13 -6 -8 -3 -8 9 2 9 7
24 11 32 7 8 -3 15 -1 15 5 0 6 7 8 16 5 9 -4 24 -1 32 6 13 11 14 11 7 -2 -7
-13 -6 -13 7 -2 12 10 17 10 20 1 3 -8 9 -9 19 -3 8 5 23 9 34 9 11 0 25 3 30
6 6 3 22 5 38 4 15 -1 27 1 27 6 0 4 14 6 30 5 17 -1 30 3 31 8 0 6 4 2 9 -9
7 -16 9 -16 9 -4 1 9 8 20 17 23 12 5 15 2 10 -11 -6 -15 -5 -16 11 -1 10 8
34 15 56 14 20 -1 37 1 37 4 0 4 19 7 43 8 60 2 113 9 126 16 6 4 11 1 11 -6
0 -10 3 -9 10 2 5 8 12 11 16 7 4 -4 14 -1 22 6 11 8 13 8 9 0 -9 -14 64 6 75
22 5 6 8 4 8 -5 1 -11 4 -10 15 4 9 12 15 15 15 7 0 -11 3 -11 15 -1 8 7 15 9
15 5 0 -4 7 -2 15 5 8 6 18 9 24 6 5 -4 16 1 24 9 12 11 17 12 20 2 4 -9 6 -9
6 1 1 6 9 12 19 12 10 0 24 6 31 13 11 9 12 9 7 0 -5 -9 -2 -11 8 -7 9 3 16
10 16 14 0 5 9 7 20 5 11 -2 20 0 20 6 0 5 3 8 8 8 4 -1 10 0 15 1 12 4 26 7
38 9 5 0 7 7 3 14 -5 8 -2 8 9 -2 9 -7 17 -9 17 -4 0 5 10 9 22 10 11 1 25 8
29 15 7 10 9 10 9 -2 0 -13 2 -13 9 -1 5 8 18 12 29 9 16 -4 19 -2 15 10 -4
10 -2 13 5 8 7 -4 21 0 33 8 12 8 28 12 37 9 10 -4 13 -2 8 5 -4 7 -1 12 9 12
10 0 13 5 9 13 -5 7 0 6 11 -3 11 -9 16 -10 11 -3 -7 12 5 18 27 14 5 -1 6 3
3 8 -5 8 6 17 27 20 15 2 35 26 29 36 -3 6 3 3 14 -5 10 -8 16 -10 12 -6 -4 5
4 19 17 32 14 13 25 28 25 33 0 5 8 16 18 23 9 7 18 20 20 28 2 8 8 17 13 18
5 2 9 8 9 13 0 6 -6 7 -13 3 -6 -4 -4 2 6 13 11 13 14 22 7 25 -6 2 -2 11 10
20 11 10 20 14 20 9 0 -5 8 -8 18 -7 9 2 20 -2 25 -8 5 -8 10 -7 16 3 5 8 11
9 15 3 3 -6 17 -9 31 -7 14 1 25 -1 25 -4 0 -3 21 -7 46 -8 26 -2 52 -7 58
-13 9 -6 16 -6 24 2 9 9 12 9 12 0 0 -10 5 -10 21 -1 12 6 19 7 16 2 -4 -6 13
-10 36 -11 70 -2 81 -4 96 -16 11 -8 13 -8 7 2 -4 7 -1 12 9 12 9 0 13 -5 9
-11 -4 -8 0 -8 15 0 11 7 21 8 21 3 0 -4 17 -8 38 -8 65 -2 107 -8 114 -19 5
-6 8 -5 8 4 0 11 3 11 17 0 15 -12 16 -12 8 1 -7 12 -6 13 6 3 12 -10 18 -10
27 -1 9 9 12 9 12 0 0 -13 27 -12 49 2 9 6 12 5 8 -1 -9 -14 66 -13 75 1 5 8
8 7 8 -1 0 -12 24 -12 36 0 4 3 15 2 25 -3 12 -7 20 -7 24 0 5 8 11 7 21 -1
11 -9 14 -9 14 0 0 9 5 9 21 0 13 -7 19 -7 15 -1 -9 14 37 11 46 -3 5 -6 8 -4
8 6 0 12 8 14 31 11 25 -4 30 -2 24 9 -7 11 -6 12 6 2 9 -8 20 -9 29 -3 21 14
32 12 24 -3 -6 -8 -3 -8 9 1 9 8 21 11 27 7 5 -3 10 -1 10 5 0 6 5 8 10 5 6
-3 10 0 10 7 0 8 3 9 8 3 9 -13 53 -15 45 -2 -4 6 3 8 15 5 12 -4 22 -2 22 4
0 6 7 8 15 5 8 -4 17 -2 20 3 3 4 16 7 30 5 14 -1 25 2 25 7 0 5 4 7 9 3 5 -3
13 0 17 6 4 8 9 7 15 -2 7 -11 9 -11 9 -1 0 7 5 10 10 7 6 -3 10 -2 10 3 0 5
14 8 30 7 17 -1 30 3 30 8 0 6 3 7 7 4 3 -4 13 -1 21 6 13 10 14 9 8 -1 -7
-11 -4 -12 10 -4 11 5 31 9 46 8 14 -1 25 1 23 5 -4 5 33 10 78 10 9 0 15 5
11 10 -7 12 19 7 27 -5 4 -5 13 -5 20 0 22 13 43 14 51 1 6 -9 8 -9 8 1 0 15
89 14 109 -2 11 -8 13 -8 8 1 -6 9 5 12 38 11 26 0 45 -5 45 -12 0 -7 3 -7 8
-1 8 11 104 16 97 5 -2 -4 2 -7 10 -7 8 0 12 4 9 9 -4 5 0 9 7 7 42 -5 90 2
83 13 -5 7 -3 8 7 2 19 -11 39 -14 39 -5 0 12 30 9 31 -3 0 -6 4 -2 9 9 5 11
9 14 9 6 1 -11 4 -11 16 -1 11 9 15 10 15 1 0 -8 6 -6 16 4 14 13 19 14 25 3
6 -9 11 -10 17 -2 7 11 14 12 67 16 14 1 25 6 25 11 0 5 6 4 14 -2 10 -8 16
-9 21 -1 3 6 11 8 16 5 5 -4 9 -2 9 3 0 5 11 8 25 7 14 -2 25 2 25 8 0 7 5 5
10 -3 8 -12 10 -12 10 -1 0 8 7 11 20 8 11 -3 23 -1 26 4 3 5 9 7 14 4 5 -3
12 0 16 6 4 8 9 7 15 -2 6 -10 9 -10 9 -2 0 8 11 11 30 9 18 -2 27 1 23 7 -4
7 0 8 12 4 9 -4 25 -2 33 5 13 11 14 11 7 -2 -7 -12 -6 -13 6 -4 8 6 27 11 43
12 17 1 32 6 35 11 3 4 14 7 24 5 9 -1 17 1 17 6 0 4 7 11 16 14 9 3 12 2 9
-4 -4 -6 10 -1 30 10 20 11 33 15 29 8 -4 -7 1 -6 12 3 23 19 80 40 88 32 3
-4 6 -1 6 6 0 7 5 9 10 6 6 -3 10 -1 10 6 0 6 8 9 19 6 11 -3 28 3 38 13 10 9
26 16 36 14 9 -1 20 2 23 7 3 6 15 7 27 4 17 -5 19 -4 7 4 -13 9 -13 11 3 12
30 3 35 4 43 11 4 4 13 3 21 -4 11 -9 12 -7 7 7 -5 13 -4 16 4 11 7 -4 12 -2
12 5 0 7 10 9 25 7 13 -3 23 -1 22 4 -2 10 8 17 58 41 59 28 88 46 96 59 7 11
9 10 9 -1 0 -9 8 -5 23 11 12 13 29 22 36 20 8 -3 11 0 8 6 -6 8 16 21 46 26
4 0 12 8 17 16 5 8 10 11 10 7 0 -5 7 -1 16 7 8 9 19 14 24 11 5 -3 12 0 16 6
4 8 3 9 -4 5 -7 -4 -12 -3 -12 3 0 5 14 12 30 16 17 4 28 11 24 16 -5 8 18 14
40 10 5 -1 6 5 3 13 -4 10 -1 13 9 9 7 -3 14 0 14 6 0 6 7 11 15 11 8 0 15 5
15 11 0 5 5 7 12 3 7 -4 8 -3 4 5 -4 6 -1 14 7 17 8 3 17 15 20 26 4 13 10 17
19 12 10 -6 10 -4 -1 9 -10 13 -10 17 -1 17 7 0 10 8 7 20 -3 11 -2 18 2 15 4
-2 8 20 8 50 0 33 -5 55 -11 55 -6 0 -4 5 4 10 8 5 10 10 5 10 -6 0 -12 12
-13 28 -1 15 -5 38 -8 52 -3 14 -7 41 -7 62 -1 20 -5 34 -8 32 -12 -7 -18 23
-6 35 7 7 7 11 1 11 -6 0 -11 12 -11 28 -2 27 -10 87 -13 87 -1 0 -4 20 -6 45
-3 24 -9 49 -14 54 -5 5 -5 17 1 29 6 11 7 17 2 14 -6 -4 -10 8 -11 25 0 17
-6 34 -13 38 -8 6 -8 9 2 12 11 4 10 10 -5 32 -10 16 -13 25 -7 22 6 -4 9 4 8
24 -1 16 -5 30 -9 30 -4 0 -4 7 -1 17 5 12 3 14 -8 8 -11 -7 -12 -6 -2 7 7 8
9 18 5 22 -8 8 -9 14 -11 52 -1 17 -5 23 -13 18 -10 -6 -10 -4 0 8 9 11 10 18
2 23 -15 9 -13 28 3 19 6 -4 4 1 -5 12 -12 14 -14 24 -7 37 8 13 6 17 -7 17
-10 0 -14 3 -11 7 4 3 1 13 -6 21 -9 13 -9 14 0 8 9 -5 11 -2 7 8 -3 9 -11 16
-18 16 -7 0 -6 3 2 9 11 6 10 11 -3 25 -10 10 -12 16 -4 16 8 0 9 3 0 13 -6 8
-8 17 -4 20 3 4 1 7 -5 7 -6 0 -9 7 -6 15 4 8 2 15 -4 15 -5 0 -8 10 -8 22 1
13 -2 29 -7 35 -5 7 -7 20 -3 28 3 10 -1 15 -12 15 -12 0 -13 3 -5 8 10 6 9
13 -1 33 -7 13 -11 30 -8 37 2 6 -2 12 -8 12 -10 0 -10 4 0 15 9 10 9 15 1 15
-6 0 -11 8 -11 18 0 10 -3 22 -7 26 -11 11 -10 30 2 38 6 5 6 8 -2 8 -7 0 -13
11 -13 25 0 14 -6 25 -12 25 -9 0 -8 4 2 10 11 7 11 10 2 10 -7 0 -10 5 -7 10
3 6 0 10 -7 10 -11 0 -11 2 0 9 11 7 11 11 -1 23 -10 9 -12 20 -7 29 6 9 3 20
-8 33 -13 14 -13 17 -2 11 13 -8 13 -6 2 8 -8 9 -11 21 -7 27 3 5 1 10 -5 10
-6 0 -8 5 -5 10 4 6 1 18 -7 27 -11 14 -11 16 2 8 12 -7 13 -6 3 7 -7 8 -10
18 -6 21 3 4 0 7 -8 7 -11 0 -11 2 1 10 10 6 11 10 3 10 -7 0 -13 10 -13 23 0
13 -5 28 -12 35 -9 9 -9 12 0 12 9 0 10 5 1 23 -27 50 -28 56 -18 63 6 3 7 9
3 13 -13 9 -37 54 -25 47 5 -4 9 2 8 14 -1 11 -5 20 -10 20 -5 0 -7 9 -4 20 3
11 1 20 -3 20 -5 0 -7 11 -6 25 2 13 0 22 -4 20 -5 -3 -11 2 -14 11 -3 8 -2
12 4 9 6 -3 7 1 4 9 -3 9 -9 16 -13 16 -3 0 -7 14 -8 32 -1 17 -8 35 -15 40
-10 6 -10 8 2 8 10 0 11 3 4 8 -6 4 -10 15 -8 25 1 9 -2 15 -6 12 -5 -3 -11
-1 -15 5 -3 5 0 10 7 10 9 0 9 3 -2 10 -8 5 -11 10 -6 10 4 0 1 11 -8 25 -9
14 -14 30 -11 35 3 6 2 10 -4 10 -5 0 -8 8 -7 17 2 10 -3 24 -11 32 -8 7 -12
20 -9 27 3 8 0 14 -6 14 -7 0 -7 4 1 14 9 11 9 16 0 22 -8 5 -10 3 -5 -7 4 -8
1 -6 -8 4 -8 11 -13 27 -11 38 2 10 0 19 -5 19 -5 0 -7 9 -5 20 2 11 -1 20 -7
20 -6 0 -9 3 -5 6 3 4 0 19 -8 34 -11 21 -11 30 -2 40 9 10 9 11 0 6 -9 -5
-13 0 -13 13 0 12 -4 21 -8 21 -9 0 -12 14 -14 68 -1 22 -4 28 -9 20 -6 -9 -9
-5 -9 13 0 14 -6 31 -12 38 -10 11 -10 13 0 7 15 -9 16 10 1 19 -6 4 -8 13 -5
21 3 8 1 14 -5 14 -6 0 -9 7 -6 15 4 8 2 17 -3 20 -5 3 -7 14 -5 25 3 13 -2
20 -12 20 -13 0 -13 3 -3 15 10 12 10 15 0 15 -8 0 -11 9 -8 25 3 13 2 22 -3
20 -4 -3 -10 -1 -13 4 -4 5 -2 13 4 16 8 5 8 11 1 19 -6 7 -12 22 -14 34 -2
12 -6 25 -10 28 -4 4 -7 18 -7 31 0 14 -4 21 -10 18 -14 -9 -12 8 3 24 10 11
10 13 0 7 -8 -4 -13 -1 -13 8 0 9 -6 16 -12 16 -9 0 -8 4 2 10 10 6 11 10 3
10 -7 0 -13 5 -13 11 0 5 6 7 13 3 6 -4 2 4 -10 17 -18 20 -20 28 -11 37 9 9
9 12 -1 12 -8 0 -11 7 -8 20 3 11 2 18 -3 15 -4 -3 -10 2 -14 10 -3 8 0 15 7
15 8 0 7 3 -2 9 -8 5 -15 17 -16 28 -1 10 -5 26 -9 35 -4 9 -5 22 -1 28 4 6 3
10 -2 9 -20 -4 -24 2 -12 18 10 11 10 14 2 9 -9 -5 -13 0 -13 18 0 13 -4 26
-9 28 -5 2 -11 14 -13 28 -1 14 -6 28 -10 31 -5 3 -9 17 -10 32 -1 15 -6 27
-10 27 -4 0 -8 7 -8 16 0 9 -5 12 -12 8 -9 -5 -9 -2 1 9 9 11 10 17 2 17 -6 0
-10 3 -9 8 1 4 -3 17 -10 30 -7 12 -10 22 -6 22 3 0 1 7 -6 15 -7 8 -9 15 -6
15 4 0 0 7 -8 16 -9 8 -14 20 -11 25 4 5 2 9 -4 9 -5 0 -8 12 -6 26 1 15 -3
28 -11 31 -8 3 -14 13 -14 23 0 11 -5 22 -11 26 -6 3 -8 15 -6 26 4 14 2 17
-7 9 -9 -8 -13 -7 -14 2 -3 41 -22 87 -35 87 -7 0 -6 4 3 10 8 5 10 10 4 10
-11 0 -27 38 -28 65 -1 6 -7 15 -14 20 -7 6 -14 20 -15 33 0 12 -4 22 -7 22
-4 0 -7 6 -8 13 -3 38 -8 53 -20 60 -10 6 -10 12 -2 22 8 10 8 15 -1 21 -8 5
-9 3 -4 -6 6 -9 4 -11 -4 -6 -7 5 -10 14 -7 22 3 8 1 14 -5 14 -6 0 -7 4 -4
10 3 6 2 10 -4 10 -5 0 -8 9 -6 20 2 11 -2 20 -8 20 -7 0 -6 4 3 10 13 8 12
10 -3 10 -10 0 -16 4 -13 8 3 5 -2 21 -10 36 -7 16 -14 35 -14 42 0 8 -4 14
-10 14 -5 0 -10 5 -10 11 0 5 5 7 11 4 11 -8 -11 36 -23 46 -5 3 -9 17 -10 32
-1 15 -6 27 -10 27 -4 0 -8 7 -8 15 0 8 -5 15 -12 15 -6 0 -8 3 -5 7 4 3 1 13
-6 21 -10 13 -9 15 3 8 8 -4 6 0 -4 8 -11 9 -17 16 -13 16 4 0 -1 17 -12 39
-11 21 -17 41 -14 45 4 3 1 6 -6 6 -7 0 -9 5 -6 10 3 6 -1 13 -10 16 -12 5
-13 9 -4 21 7 8 8 13 3 12 -21 -4 -28 2 -14 11 13 8 13 10 -1 10 -9 0 -16 7
-17 15 -1 8 -3 22 -4 30 -1 8 -5 15 -10 15 -4 0 -8 7 -8 15 0 8 -4 15 -10 15
-5 0 -7 7 -4 15 4 8 -1 17 -9 21 -9 3 -13 12 -10 20 3 8 0 20 -6 28 -6 7 -9
16 -6 19 3 4 2 5 -2 2 -4 -3 -12 7 -18 22 -9 20 -9 30 -1 35 7 5 4 8 -8 8 -12
0 -16 5 -12 15 3 9 -1 18 -8 21 -8 3 -13 14 -11 25 2 10 -1 19 -6 19 -6 0 -7
5 -4 10 3 6 1 10 -5 10 -7 0 -10 7 -6 15 3 8 0 15 -6 15 -6 0 -8 3 -5 7 4 3
-1 15 -10 26 -13 15 -14 18 -3 12 13 -8 13 -7 0 10 -8 10 -14 26 -12 37 2 11
-3 18 -14 18 -11 0 -15 6 -11 20 3 10 1 20 -4 22 -5 2 -11 13 -13 25 -3 12 -9
30 -15 41 -6 11 -7 22 -4 26 3 3 1 6 -5 6 -7 0 -12 12 -12 26 0 14 -4 23 -10
19 -9 -5 -15 15 -11 38 1 4 -6 15 -14 23 -8 9 -13 20 -10 25 4 5 3 9 -2 9 -4
0 -13 11 -20 25 -6 14 -7 22 -1 19 5 -3 4 3 -4 15 -7 12 -16 21 -20 21 -5 0
-8 9 -8 20 0 11 -4 20 -8 20 -4 0 -9 10 -9 22 -1 13 -7 24 -13 26 -5 2 -7 8
-4 14 3 5 -2 16 -12 24 -11 9 -13 12 -5 9 14 -8 -16 45 -34 57 -6 4 -1 8 10 8
17 1 16 3 -7 15 -20 11 -25 20 -21 36 5 17 3 20 -7 14 -10 -6 -12 -3 -7 14 3
14 0 24 -9 28 -8 3 -14 14 -14 25 0 10 -4 16 -10 13 -6 -4 -10 5 -10 19 0 14
-4 26 -10 26 -5 0 -10 7 -10 15 0 8 -5 15 -11 15 -5 0 -8 4 -4 9 3 5 -2 17
-11 26 -9 9 -14 19 -10 22 9 10 -15 34 -27 26 -6 -3 -7 -1 -3 5 4 7 2 12 -4
12 -6 0 -9 4 -5 9 3 5 -2 16 -10 24 -8 9 -15 19 -15 22 0 4 -10 16 -22 27 -13
11 -16 17 -8 13 10 -4 9 -2 -2 8 -10 8 -15 17 -11 21 4 4 -3 9 -15 13 -12 3
-20 9 -17 13 2 4 -4 18 -15 30 -11 12 -22 31 -25 41 -4 11 -11 17 -16 14 -5
-4 -9 -1 -9 6 0 7 -10 24 -22 38 -19 21 -20 23 -3 11 18 -14 14 -8 -43 65 -5
6 -10 15 -13 20 -2 6 -7 9 -11 8 -4 -2 -5 6 -3 16 2 11 -3 22 -11 25 -8 3 -14
12 -14 21 0 8 -5 15 -11 15 -5 0 -7 4 -4 10 3 5 -4 21 -17 34 -13 13 -24 30
-26 37 -2 8 -8 16 -13 17 -5 2 -7 7 -4 12 3 5 0 14 -7 22 -7 7 -14 19 -16 27
-1 7 -9 19 -17 27 -7 8 -17 23 -20 34 -3 11 -10 20 -15 20 -8 0 -23 38 -21 52
1 5 -4 7 -11 5 -6 -1 -14 6 -16 17 -2 10 -13 28 -23 40 -90 98 -118 126 -128
126 -6 0 -11 5 -11 10 0 6 -3 9 -7 9 -21 -3 -33 2 -33 16 0 8 -4 16 -10 16 -5
1 -16 2 -22 3 -7 1 -12 7 -10 14 2 10 -10 14 -34 11 -3 0 -14 9 -23 20 -10 12
-25 21 -34 21 -9 0 -19 5 -22 10 -4 6 -11 8 -16 5 -5 -4 -9 1 -9 9 0 9 -3 15
-7 15 -19 -3 -33 2 -47 17 -12 12 -16 12 -16 2 0 -10 -2 -10 -8 0 -5 7 -17 14
-28 16 -42 9 -49 11 -56 21 -5 6 -8 4 -8 -5 0 -12 -2 -12 -9 -2 -4 7 -18 14
-29 15 -12 1 -22 6 -22 12 0 5 -5 3 -10 -5 -5 -8 -10 -10 -10 -5 0 14 -80 14
-80 1 0 -6 -4 -5 -9 3 -7 10 -13 11 -30 2 -16 -9 -21 -9 -21 1 0 10 -2 10 -9
-1 -5 -7 -14 -10 -20 -7 -6 4 -11 2 -11 -4 0 -8 -9 -10 -26 -6 -17 5 -23 3
-19 -4 6 -9 -8 -15 -29 -11 -4 1 -14 -3 -20 -9 -7 -5 -16 -7 -19 -3 -4 3 -10
-2 -13 -11 -5 -14 -9 -15 -15 -4 -7 10 -9 10 -9 1 0 -7 -9 -13 -20 -13 -11 0
-20 -4 -20 -8 0 -9 -73 -46 -78 -41 -2 2 -10 -7 -17 -21 -8 -14 -14 -21 -15
-17 0 8 -14 -2 -55 -41 -14 -13 -25 -19 -25 -15 -1 4 -7 -3 -15 -17 -8 -14
-14 -22 -15 -18 0 4 -13 -5 -29 -20 -15 -15 -26 -30 -24 -34 2 -5 -3 -8 -11
-8 -9 0 -16 -6 -16 -14 0 -9 -7 -12 -20 -9 -11 3 -20 10 -20 15 0 5 6 6 13 3
6 -4 1 3 -13 15 -14 12 -19 19 -12 15 6 -3 12 -1 12 4 0 6 -4 11 -10 11 -5 0
-10 9 -10 21 0 11 -10 35 -22 52 -12 17 -16 27 -9 23 10 -7 11 -4 2 13 -7 11
-17 21 -23 21 -6 0 -5 6 3 17 10 11 10 14 2 9 -8 -4 -13 -1 -13 8 0 9 -5 16
-12 16 -6 0 -8 3 -5 7 4 3 -1 12 -11 20 -9 8 -11 12 -5 8 8 -4 11 -1 7 9 -3 8
-12 17 -20 20 -8 3 -14 12 -14 21 0 8 -5 15 -10 15 -6 0 -9 3 -9 8 3 18 -2 35
-8 29 -6 -7 -32 23 -29 35 0 3 -12 17 -29 29 -37 29 -46 41 -40 56 2 7 -2 10
-11 6 -7 -3 -14 0 -14 6 0 6 -7 11 -15 11 -8 0 -15 7 -15 17 0 9 -3 14 -6 10
-3 -3 -20 8 -36 24 -17 16 -37 29 -44 29 -8 0 -14 4 -14 9 0 9 -27 22 -57 27
-7 1 -20 9 -29 18 -19 19 -28 21 -19 4 4 -7 1 -6 -7 2 -7 8 -24 16 -38 18 -14
1 -34 4 -45 6 -11 2 -24 4 -28 5 -5 0 -5 6 -1 13 5 7 3 8 -7 2 -20 -12 -35
-15 -111 -17 -38 -1 -68 -6 -68 -12 0 -7 -3 -7 -8 0 -9 13 -35 18 -27 5 6 -10
-7 -14 -34 -11 -7 2 -10 -2 -7 -7 3 -5 -8 -8 -24 -7 -16 1 -27 -2 -24 -7 4 -7
-9 -10 -32 -7 -3 0 -14 -10 -25 -22 -13 -15 -19 -17 -19 -8 -1 10 -4 9 -14 -3
-7 -10 -21 -18 -30 -18 -10 0 -14 -4 -11 -10 3 -5 -1 -10 -10 -10 -8 0 -18 -7
-21 -15 -4 -8 -10 -12 -15 -9 -5 3 -9 0 -9 -6 0 -7 -7 -9 -16 -6 -8 3 -13 2
-10 -3 6 -8 -17 -33 -25 -28 -2 1 -3 0 -2 -2 3 -5 -67 -71 -75 -71 -19 1 -59
54 -54 72 1 4 -5 5 -14 1 -9 -3 -14 0 -12 8 2 8 -3 13 -10 11 -8 -1 -11 1 -8
6 3 5 -7 21 -22 35 -15 14 -39 37 -54 51 -15 14 -32 26 -38 26 -6 0 -8 5 -5
10 6 9 -8 14 -27 11 -5 0 -8 4 -8 11 0 6 -3 9 -6 5 -3 -3 -15 3 -27 13 -11 11
-24 17 -29 14 -4 -3 -8 0 -8 5 0 6 -9 11 -20 11 -11 0 -23 6 -26 14 -3 8 -12
12 -20 9 -8 -3 -14 0 -14 6 0 6 -11 11 -25 11 -14 0 -25 5 -25 12 0 6 -3 9 -6
5 -4 -3 -22 0 -41 8 -19 8 -31 10 -27 4 4 -7 -1 -7 -15 0 -11 7 -21 9 -21 5 0
-3 -7 -1 -15 6 -8 7 -15 8 -15 4 0 -5 -16 -8 -35 -7 -19 2 -51 4 -70 6 -26 2
-35 -2 -35 -13z m-1070 -1513 c0 -2 -11 -18 -25 -37 -14 -19 -25 -29 -25 -23
0 6 7 16 15 23 8 6 14 15 13 18 -1 15 2 22 12 22 6 0 10 -1 10 -3z"/>
</g>
</svg>

A docs/favicon/site.webmanifest => docs/favicon/site.webmanifest +19 -0
@@ 0,0 1,19 @@
{
    "name": "",
    "short_name": "",
    "icons": [
        {
            "src": "/android-chrome-192x192.png",
            "sizes": "192x192",
            "type": "image/png"
        },
        {
            "src": "/android-chrome-512x512.png",
            "sizes": "512x512",
            "type": "image/png"
        }
    ],
    "theme_color": "#ffffff",
    "background_color": "#ffffff",
    "display": "standalone"
}

A docs/header.html => docs/header.html +95 -0
@@ 0,0 1,95 @@
<!-- HTML header for doxygen 1.9.1-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=9" />
    <meta name="generator" content="Doxygen $doxygenversion" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <!--BEGIN PROJECT_NAME-->
    <title>$projectname: $title</title>
    <!--END PROJECT_NAME-->
    <!--BEGIN !PROJECT_NAME-->
    <title>$title</title>
    <!--END !PROJECT_NAME-->
    <link href="$relpath^tabs.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="$relpath^jquery.js"></script>
    <script type="text/javascript" src="$relpath^dynsections.js"></script>
    $treeview $search $mathjax
    <link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
    $extrastylesheet

    <link
      rel="apple-touch-icon"
      sizes="180x180"
      href="$relpath^apple-touch-icon.png"
    />
    <link
      rel="icon"
      type="image/png"
      sizes="32x32"
      href="$relpath^favicon-32x32.png"
    />
    <link
      rel="icon"
      type="image/png"
      sizes="16x16"
      href="$relpath^favicon-16x16.png"
    />
    <link rel="manifest" href=$relpath^site.webmanifest" />
    <link
      rel="mask-icon"
      href="$relpath^safari-pinned-tab.svg"
      color="#5bbad5"
    />
    <meta name="msapplication-TileColor" content="#b91d47" />
    <meta name="theme-color" content="#ffffff" />
  </head>
  <body>
    <div id="top">
      <!-- do not remove this div, it is closed by doxygen! -->

      <!--BEGIN TITLEAREA-->
      <div id="titlearea">
        <table cellspacing="0" cellpadding="0">
          <tbody>
            <tr style="height: 56px">
              <!--BEGIN PROJECT_LOGO-->
              <td id="projectlogo">
                <img alt="Logo" src="$relpath^$projectlogo" height="96px" />
              </td>
              <!--END PROJECT_LOGO-->
              <!--BEGIN PROJECT_NAME-->
              <td id="projectalign" style="padding-left: 0.5em">
                <div id="projectname">
                  $projectname
                  <!--BEGIN PROJECT_NUMBER-->&#160;<span id="projectnumber"
                    >$projectnumber</span
                  ><!--END PROJECT_NUMBER-->
                </div>
                <!--BEGIN PROJECT_BRIEF-->
                <div id="projectbrief">$projectbrief</div>
                <!--END PROJECT_BRIEF-->
              </td>
              <!--END PROJECT_NAME-->
              <!--BEGIN !PROJECT_NAME-->
              <!--BEGIN PROJECT_BRIEF-->
              <td style="padding-left: 0.5em">
                <div id="projectbrief">$projectbrief</div>
              </td>
              <!--END PROJECT_BRIEF-->
              <!--END !PROJECT_NAME-->
              <!--BEGIN DISABLE_INDEX-->
              <!--BEGIN SEARCHENGINE-->
              <td>$searchbox</td>
              <!--END SEARCHENGINE-->
              <!--END DISABLE_INDEX-->
            </tr>
          </tbody>
        </table>
      </div>
      <!--END TITLEAREA-->
      <!-- end header part -->
    </div>
  </body>
</html>

A logo.png => logo.png +0 -0