<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Segoe UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
h1
        {mso-style-priority:9;
        mso-style-link:"Otsikko 1 Char";
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:24.0pt;
        font-family:"Calibri",sans-serif;
        font-weight:bold;}
h2
        {mso-style-priority:9;
        mso-style-link:"Otsikko 2 Char";
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:18.0pt;
        font-family:"Calibri",sans-serif;
        font-weight:bold;}
h3
        {mso-style-priority:9;
        mso-style-link:"Otsikko 3 Char";
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:13.5pt;
        font-family:"Calibri",sans-serif;
        font-weight:bold;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML-esimuotoiltu Char";
        margin:0cm;
        font-size:10.0pt;
        font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
span.Shkpostityyli17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.Otsikko1Char
        {mso-style-name:"Otsikko 1 Char";
        mso-style-priority:9;
        mso-style-link:"Otsikko 1";
        font-family:"Calibri",sans-serif;
        mso-fareast-language:FI;
        font-weight:bold;}
span.Otsikko2Char
        {mso-style-name:"Otsikko 2 Char";
        mso-style-priority:9;
        mso-style-link:"Otsikko 2";
        font-family:"Calibri",sans-serif;
        mso-fareast-language:FI;
        font-weight:bold;}
span.Otsikko3Char
        {mso-style-name:"Otsikko 3 Char";
        mso-style-priority:9;
        mso-style-link:"Otsikko 3";
        font-family:"Calibri",sans-serif;
        mso-fareast-language:FI;
        font-weight:bold;}
span.HTML-esimuotoiltuChar
        {mso-style-name:"HTML-esimuotoiltu Char";
        mso-style-priority:99;
        mso-style-link:HTML-esimuotoiltu;
        font-family:"Courier New";
        mso-fareast-language:FI;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 2.0cm 70.85pt 2.0cm;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:74982963;
        mso-list-template-ids:1570248854;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1
        {mso-list-id:292443907;
        mso-list-template-ids:-1190740124;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2
        {mso-list-id:599408232;
        mso-list-template-ids:-1434270528;}
@list l2:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l2:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3
        {mso-list-id:683367169;
        mso-list-template-ids:-430272092;}
@list l3:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l3:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4
        {mso-list-id:727071013;
        mso-list-template-ids:634445318;}
@list l4:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l4:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5
        {mso-list-id:815339927;
        mso-list-template-ids:-1213173066;}
@list l5:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l5:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l6
        {mso-list-id:1273198959;
        mso-list-template-ids:-562154484;}
@list l6:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l6:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l6:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l6:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l6:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l6:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l6:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l6:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l6:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l7
        {mso-list-id:1287394296;
        mso-list-template-ids:-1953611906;}
@list l7:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l7:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l7:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l7:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l7:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l7:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l7:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l7:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l7:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l8
        {mso-list-id:1536580458;
        mso-list-template-ids:1409046740;}
@list l8:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l8:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l8:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l8:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l8:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l8:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l8:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l8:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l8:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l9
        {mso-list-id:1726249256;
        mso-list-type:hybrid;
        mso-list-template-ids:1161745066 1683942320 67829763 67829765 67829761 67829763 67829765 67829761 67829763 67829765;}
@list l9:level1
        {mso-level-start-at:3;
        mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-font-family:Calibri;}
@list l9:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l9:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l9:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l9:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l9:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l9:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l9:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l9:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l10
        {mso-list-id:1942956257;
        mso-list-template-ids:-683115104;}
@list l10:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l10:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l10:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l10:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l10:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l10:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l10:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l10:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l10:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="FI" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-family:"Segoe UI",sans-serif">Good news everyone,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Segoe UI",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif">We released Oskari 2.8.0 yesterday and it is now available on GitHub (<a href="https://github.com/oskariorg">https://github.com/oskariorg</a>) and Oskari.org Maven repository.
 The sample application package has been updated on the download link in Oskari.org (<a href="https://oskari.org/download">https://oskari.org/download</a>). Usually we have it in
<a href="http://download.osgeo.org/oskari/">http://download.osgeo.org/oskari/</a> as well, but uploading there is not working for us currently (we are looking into it). As always you can take a peek at the latest release at
<a href="https://demo.oskari.org/">https://demo.oskari.org/</a>.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif">We have a fairly exciting release this time as we have:<o:p></o:p></span></p>
<ul style="margin-top:0cm" type="disc">
<li class="MsoListParagraph" style="margin-left:0cm;mso-list:l9 level1 lfo11"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Improved the announcements functionality quite a bit since last release.<o:p></o:p></span></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l9 level1 lfo11"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif">We have rewritten the My data UI with React. There’s a new bundle called “mydata” that is a drop-in replacement for “personaldata”.
 Check the migration guide <a href="https://github.com/oskariorg/oskari-server/blob/master/MigrationGuide.md#280">
https://github.com/oskariorg/oskari-server/blob/master/MigrationGuide.md#280</a>!<o:p></o:p></span></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l9 level1 lfo11"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Completed the capabilities parsing rewrite on the server-side which means we are in a good state for adding functionality
 that better utilizes the capabilities/detecting changes based on capabilities.<o:p></o:p></span></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l9 level1 lfo11"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Bunch of improvements to statistical data classification.<o:p></o:p></span></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l9 level1 lfo11"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif">New React-components for common use-cases and improvements on the old ones.<o:p></o:p></span></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l9 level1 lfo11"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif">We have taken our first steps towards theming of the UI! Take it for a spin and give feedback :)<o:p></o:p></span></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l9 level1 lfo11"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif">From technical point-of-view: We have rewritten the my data UI with React! This means we now have our first implementation
 for React-based UI that is modular in a way that other functionalities can add their own UI to it. My data doesn’t know the content of most of its tabs while other functionalities add to the UI provided by My data based on what functionalities are in the app.
 This is awesome since we’ll be needing and repeating this pattern in other parts of the UI for the eventual full React-based UI and we now have a nice solution for it.<o:p></o:p></span></li></ul>
<h1 style="margin-bottom:12.0pt;background:white"><span lang="EN-US" style="font-size:22.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Release Notes<o:p></o:p></span></h1>
<h2 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;border-bottom:var(--color-border-muted);font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:16.5pt;font-family:"Segoe UI",sans-serif;color:#24292F">Oskari-frontend<o:p></o:p></span></h2>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">For a full list of changes see: </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"><a href="https://github.com/oskariorg/oskari-frontend/milestone/37?closed=1"><span lang="EN-US">https://github.com/oskariorg/oskari-frontend/milestone/37?closed=1</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"><o:p></o:p></span></p>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Announcement functionality improvements<o:p></o:p></span></h3>
<ul type="disc">
<li class="MsoNormal" style="color:#24292F;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo1;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Announcements can now be localized by the admin<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo1;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Announcement description content is now edited with a rich text editor instead of a plain text area<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo1;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Admin can now select 3 types of announcements: title only, with description, with external link<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo1;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Admin can select hour for the announcement date range (previously only dates)<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo1;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Admin UI has been integrated to the end-user UI similar to map layer admin<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo1;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Announcements that are not shown as popups are now shown with a new banner UI-component (previously user needed to browse the listing to see if there's anything new)<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo1;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Announcements are now shown in Oskari-style popups instead of AntD-modals so they look more consistent compared to other UI-elements<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo1;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Admin can now preview announcements<o:p></o:p></span></li></ul>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Map layers<o:p></o:p></span></h3>
<ul type="disc">
<li class="MsoNormal" style="color:#24292F;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l10 level1 lfo2;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Data providers are now handled in a similar way as layer groups and are available in </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">Oskari.mapframework.service.MapLayerService</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l10 level1 lfo2;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Data providers/layer groups can now have descriptions (improved admin UI and added tooltips for end-users)<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l10 level1 lfo2;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Improved error handling in layerlist bundle<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l10 level1 lfo2;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Implementation changed for how features are highlighted as hover effect (</span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://github.com/oskariorg/oskari-frontend/pull/1799"><span lang="EN-US">#1799</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">)<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l10 level1 lfo2;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Hover style is now inherited from feature style instead of defaulting to a hard-coded one<o:p></o:p></span></li></ul>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">User generated data listings<o:p></o:p></span></h3>
<ul type="disc">
<li class="MsoNormal" style="color:#24292F;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo3;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">New bundle </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">mydata</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> is
 a drop-in replacement for </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">personaldata</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> as a React-based rewrite (the "My data" functionality)<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo3;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">If your app pushed customized content to </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">personaldata</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> you
 will need to migrate to the new API but </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">personaldata</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> is still available (but is deprecated
 and will be removed in a future release)<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo3;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Added created/updated fields for user generated items<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo3;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">User views and user account tabs can now be hidden by config. Also my indicators is no longer shown if the datasource for my indicators is not used by the instance.<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo3;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">API changed! Instead of using </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">PersonalData.AddTabRequest</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> you
 now use a service provided by the </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">mydata</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> bundle:<o:p></o:p></span></li></ul>
<pre style="background:white;box-sizing: border-box;overflow-wrap: normal;background-color:var(--color-canvas-subtle);border-radius: 6px;overflow:auto"><code><span lang="EN-US" style="font-family:Consolas;color:#24292F;border:none windowtext 1.0pt;padding:0cm">    const myDataService = Oskari.getSandbox().getService('Oskari.mapframework.bundle.mydata.service.MyDataService');<o:p></o:p></span></code></pre>
<pre style="background:white"><code><span lang="EN-US" style="font-family:Consolas;color:#24292F;border:none windowtext 1.0pt;padding:0cm">    myDataService.addTab('userlayers', this.loc('tab.title'), UserLayersTab, new UserLayersHandler(this));<o:p></o:p></span></code></pre>
<pre style="background:white"><code><span lang="EN-US" style="font-family:Consolas;color:#24292F;border:none windowtext 1.0pt;padding:0cm"><o:p> </o:p></span></code></pre>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Where:<o:p></o:p></span></p>
<ul type="disc">
<li class="MsoNormal" style="color:#24292F;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo4;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">userlayers</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> is the id for the tab<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo4;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">this.loc('tab.title')</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> is the label for the tab that is shown to end-users<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo4;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">UserLayersTab</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> is a React-component that handles state and controller props<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo4;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">new UserLayersHandler(this)</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> is a class extending StateHandler from </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">oskari-ui/util</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> that
 will provide the state and controller props for the previous parameter<o:p></o:p></span></li></ul>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" style="border-collapse:collapse">
<tbody>
<tr>
<td width="52" nowrap="" valign="top" style="width:38.85pt;padding:4.5pt 9.75pt 4.5pt 9.75pt">
<p class="MsoNormal" style="box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">See example:
<a href="https://github.com/oskariorg/oskari-frontend/blob/12dba2584287985026eec3e7eb3a453a855d1d04/bundles/framework/myplacesimport/instance.js#L144-L160">
https://github.com/oskariorg/oskari-frontend/blob/12dba2584287985026eec3e7eb3a453a855d1d04/bundles/framework/myplacesimport/instance.js#L144-L160</a></span><span lang="EN-US" style="font-size:9.0pt;font-family:Consolas"><o:p></o:p></span></p>
</td>
<td valign="top" style="padding:4.5pt 9.75pt 4.5pt 9.75pt;box-sizing: border-box;border:var(--color-border-default);background-color:var(--color-canvas-default)  !important;color:var(--color-fg-default);overflow-wrap: normal;overflow:visible" id="LC160">
<p class="MsoNormal" style="margin-bottom:12.0pt;line-height:15.0pt"><span lang="EN-US" style="font-size:9.0pt;font-family:Consolas"><o:p> </o:p></span></p>
</td>
</tr>
</tbody>
</table>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Thematic maps<o:p></o:p></span></h3>
<ul type="disc">
<li class="MsoNormal" style="color:#24292F;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l8 level1 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Classification UI has been refactored<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l8 level1 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Metadata handling for indicators has been improved<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l8 level1 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Reset state now clears thematic maps properly<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l8 level1 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Improvements in data parsing for adding user generated indicators<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l8 level1 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Removing data from user generated indicator now updates UI choices for that indicator<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l8 level1 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">My indicators tab in My data: indicator name now opens thematic maps so user can more easily add the indicator on the map.<o:p></o:p></span></li></ul>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Usability<o:p></o:p></span></h3>
<ul type="disc">
<li class="MsoNormal" style="color:#24292F;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo6;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Some clickable elements have been changed to buttons in DOM and cursors are changed for draggable windows, clickable buttons/icons.<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo6;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Major state change in application (like reset/useState for whole app) now triggers </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">UIChangeEvent</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> (for
 cleanup before state is changed) and a new event </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">StateChangedEvent</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> after state has been
 changed. This can be used by RPC-applications to detect state reset by built-in buttons: </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://github.com/oskariorg/oskari-frontend/pull/1874"><span lang="EN-US">#1874</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li></ul>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Bug fixes<o:p></o:p></span></h3>
<ul type="disc">
<li class="MsoNormal" style="color:#24292F;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l6 level1 lfo7;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">layeranalytics</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> data is no longer duplicated on UI when reopening the flyout<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l6 level1 lfo7;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Duplicated id-parameter on proxied WMS-urls has been removed<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l6 level1 lfo7;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">GFI is no longer queried for layers with opacity 0<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l6 level1 lfo7;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Fixed an issue where editing a measurement feature could result in multiple measurement result windows for a single geometry<o:p></o:p></span></li></ul>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Theming<o:p></o:p></span></h3>
<p style="margin:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Initial theming support for React-based UI-components like Flyout/Popup/Banner (Note! Most flyouts are still jQuery-based). Also affects the "selected layers badge"
 for layer count and tool hover-color in </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#24292F">mydata</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">. This is still
 very much work-in-progress and subject to change as we fine-tune what can be customized by theming etc. We would also appreciate any input and feedback for this.<o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">For testing you can add this kind of snippet in your apps main.js or run this in the browser dev-console:<o:p></o:p></span></p>
<pre style="background:white;box-sizing: border-box;overflow-wrap: normal;background-color:var(--color-canvas-subtle);border-radius: 6px;overflow:auto"><code><span lang="EN-US" style="font-family:Consolas;color:#24292F;border:none windowtext 1.0pt;padding:0cm">Oskari.app.getTheming().setTheme({<o:p></o:p></span></code></pre>
<pre style="background:white"><code><span lang="EN-US" style="font-family:Consolas;color:#24292F;border:none windowtext 1.0pt;padding:0cm">    color: {<o:p></o:p></span></code></pre>
<pre style="background:white"><code><span lang="EN-US" style="font-family:Consolas;color:#24292F;border:none windowtext 1.0pt;padding:0cm">        icon: '#FFFFFF',<o:p></o:p></span></code></pre>
<pre style="background:white"><code><span lang="EN-US" style="font-family:Consolas;color:#24292F;border:none windowtext 1.0pt;padding:0cm">        accent: '#0c3c62',<o:p></o:p></span></code></pre>
<pre style="background:white"><code><span lang="EN-US" style="font-family:Consolas;color:#24292F;border:none windowtext 1.0pt;padding:0cm">        primary: '#009fe3'<o:p></o:p></span></code></pre>
<pre style="background:white"><code><span lang="EN-US" style="font-family:Consolas;color:#24292F;border:none windowtext 1.0pt;padding:0cm">    }<o:p></o:p></span></code></pre>
<pre style="background:white"><code><span lang="EN-US" style="font-family:Consolas;color:#24292F;border:none windowtext 1.0pt;padding:0cm">});<o:p></o:p></span></code></pre>
<p style="margin:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">At this point most of the structure can be omitted (using default values instead) and reseting to default can be done by calling </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#24292F">setTheme()</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">.
 The goal is to make the theme serializable as JSON so it could be saved to DB/given through RPC etc. But to make it easier to use in code there's a helper that is currently located in </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#24292F">oskari-ui/theme/ThemeHelper</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"> that
 can for example generate a sensible header text color based on the primary color etc.<o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">An example for making React-components "theme-aware": </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"><a href="https://github.com/oskariorg/oskari-frontend/pull/1886"><span lang="EN-US">#1886</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"><o:p></o:p></span></p>
<h3 style="margin:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">New components to be used in apps (under </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#24292F">oskari-ui</span></code><span lang="EN-US" style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">)<o:p></o:p></span></h3>
<ul type="disc">
<li class="MsoNormal" style="color:#24292F;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l7 level1 lfo8;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">TextEditor</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> (draft.js based rich text editor)<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l7 level1 lfo8;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">PrimaryButton</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">/</span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">SecondaryButton</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> that
 include localization for common buttons<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l7 level1 lfo8;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">DeleteButton</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> (includes confirmation popup/reduces boilerplate in actual code)<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l7 level1 lfo8;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">IconButton</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> for replacing clickable divs that hold an icon with button<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l7 level1 lfo8;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">Link</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> for showing links in a consistent way across the UI<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l7 level1 lfo8;background:white;box-sizing: border-box">
<code><span style="font-size:10.0pt;font-family:Consolas">Pagination</span></code><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l7 level1 lfo8;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">icons: </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">InfoIcon</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">, </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">MetadataIcon</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> from </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">oskari-ui/components/icons</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li></ul>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Improvements to components<o:p></o:p></span></h3>
<ul type="disc">
<li class="MsoNormal" style="color:#24292F;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo9;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">New </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">showBanner()</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> has
 been added next to </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">showPopup()</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> and </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">showFlyout()</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> in </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">oskari-ui/components/window</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">.<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo9;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">These React-based window-instances are now "managed" so they can be closed externally.<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo9;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">React-based windows are now closed automatically when </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">UIChangeEvent</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> is
 triggered.<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo9;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">React popup now handles long titles properly<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo9;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">React popup now recognizes positional flags instead of always opening centered on screen: </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://github.com/oskariorg/oskari-frontend/pull/1836"><span lang="EN-US">#1836</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo9;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">ErrorBoundary</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> can now include debug info controlled by the developer<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo9;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">LocalizationComponent</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> is now much easier to use and required less boilerplate code<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo9;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Added a bunch of CSS-selector classes for Selenium testing (prefixed by </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">t_</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">)
 that are always added when using the common components.<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo9;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">GenericForm</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">, </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">DateRange</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">, </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">ColorPicker</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">, </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">Modal</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> are
 no longer direct exports of </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">oskari-ui</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> to reduce amount of referenced code/optimize min.js.
 When needed import them with </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">oskari-ui/components/ColorPicker</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> etc.<o:p></o:p></span></li></ul>
<h2 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white">
<span lang="EN-US" style="font-size:16.5pt;font-family:"Segoe UI",sans-serif;color:#24292F">Oskari-server<o:p></o:p></span></h2>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">For a full list of changes see: </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"><a href="https://github.com/oskariorg/oskari-server/milestone/40?closed=1"><span lang="EN-US">https://github.com/oskariorg/oskari-server/milestone/40?closed=1</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"><o:p></o:p></span></p>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">My data frontend implementation changed<o:p></o:p></span></h3>
<p style="margin:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">A new bundle </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#24292F">mydata</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"> has
 been added as (in most cases) drop-in replacement for </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#24292F">personaldata</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">.
 See </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"><a href="https://github.com/oskariorg/oskari-server/blob/master/MigrationGuide.md#280"><span lang="EN-US">MigrationGuide</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"> for
 details.<o:p></o:p></span></p>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Map layer capabilities rewrite<o:p></o:p></span></h3>
<p style="margin:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">All capabilities parsing have now been fully migrated to the rewritten implementation for all layer types that previously used layer capabilities parsing. The </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#24292F">oskari_capabilities_cache</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"> database
 table has been dropped and all capabilities data is now stored per layer on </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#24292F">oskari_maplayer</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"> table
 capabilities column as JSON. The </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#24292F">service-capabilities</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"> Maven
 module now holds the logic for parsing capabilities and all functionalities use it when querying a service for its capabilities data.<o:p></o:p></span></p>
<p style="margin:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#24292F">org.oskari.capabilities.CapabilitiesService</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"> has methods to query a
 service for layers including their capabilities per layer, update a single layer capabilities from the service, serialize the capabilities to JSON for </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#24292F">oskari_maplayer</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"> and
 deserialize it from </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#24292F">oskari_maplayer</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"> to get for example WMTS-layer
 matrix sets for printing.<o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">WFS/OGC API Features layers now also have the properties described in DescribeFeatureType included in the capabilities JSON.<o:p></o:p></span></p>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Layer listing changes<o:p></o:p></span></h3>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Data providers are now included in the layer list response similar to layer groups. Most if not all localizable values are now only returned in the current users language.
 All current admin tools can query a single editable item separately to get the localized values so this simplifies the code and makes admins use the same code for normal layer operations as other users.<o:p></o:p></span></p>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Date handling<o:p></o:p></span></h3>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Initial steps have been taken to make date handling more consistent on the database and server-side. For now the decisions for these have been documented in </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"><a href="https://oskari.org/documentation/faq"><span lang="EN-US">oskari.org
 FAQ</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"> under "Handling dates and timestamps". In short this means using timestamps with time zone in database, java.time package in server code and ISO
 strings in JSON.<o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Timestamp columns in database and server-side code have been updated for these for app setups and user generated content.<o:p></o:p></span></p>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Metadata service integration<o:p></o:p></span></h3>
<p style="margin:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">When parsing capabilities for layers it is assumed that the metadata url/id referenced in capabilities is a link to the same service that the Oskari instance uses as
 metadata service (like GeoNetwork or other CSW-compliant service). This is not always the case and we added a new config for </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#24292F">oskari-ext.properties</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">.
 You can configure a comma-separated list that you want to enable metadata ids to be used from capabilities:<o:p></o:p></span></p>
<pre style="background:white;box-sizing: border-box;overflow-wrap: normal;background-color:var(--color-canvas-subtle);border-radius: 6px;overflow:auto"><code><span lang="EN-US" style="font-family:Consolas;color:#24292F;border:none windowtext 1.0pt;padding:0cm">service.metadata.domains=paikkatietohakemisto.fi, geonetwork.nls.fi<o:p></o:p></span></code></pre>
<p style="margin:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">If the url referenced in capabilities doesn't match the domain the metadata id parsing is skipped for that layer. If not configured this functions the same as before.
 If the list is configure, the value of </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#24292F">service.metadata.url</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"> property
 is automatically added to the list.<o:p></o:p></span></p>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Hiding mydata views/account info tab<o:p></o:p></span></h3>
<p style="margin:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">These can be configured in </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#24292F">oskari-ext.properties</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"> with:<o:p></o:p></span></p>
<pre style="background:white;box-sizing: border-box;overflow-wrap: normal;background-color:var(--color-canvas-subtle);border-radius: 6px;overflow:auto"><code><span lang="EN-US" style="font-family:Consolas;color:#24292F;border:none windowtext 1.0pt;padding:0cm">mydata.tabs.showUser=false<o:p></o:p></span></code></pre>
<pre style="background:white"><code><span lang="EN-US" style="font-family:Consolas;color:#24292F;border:none windowtext 1.0pt;padding:0cm">mydata.tabs.showViews=false<o:p></o:p></span></code></pre>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#24292F">Other changes<o:p></o:p></span></h3>
<ul type="disc">
<li class="MsoNormal" style="color:#24292F;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l5 level1 lfo10;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Removed deprecated routes: </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">DeleteFeature</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">, </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">InsertFeature</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">, </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">SaveFeature</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> (replaced
 by </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">VectorFeatureWriter</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">)<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292F;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l5 level1 lfo10;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Printing vector features with fill pattern is now visually closer to what is shown on the browser<o:p></o:p></span></li></ul>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Happy updating,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif">    Sami<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-bottom-alt:auto;background:white"><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F"><o:p> </o:p></span></p>
</div>
</body>
</html>