Prochåzet zdrojové kódy

Merge branch 'dev-lazpaint' into master

circular17 pƙed 5 dny
rodič
revize
d6e7cc4752

+ 2 - 0
.gitignore

@@ -38,3 +38,5 @@ lazpaint/release/windows/lazpaint*_no_install.zip
 lazpaint/release/bin/i18n/lazpaint64.pot
 lazpaint/release/windows/libavif/
 web/.hugo_build.lock
+
+web/hugo.exe

+ 3 - 0
lazpaint/lazpaint.lpi

@@ -391,6 +391,9 @@
               </Win32>
             </Options>
           </Linking>
+          <Other>
+            <CustomOptions Value="-Cg -k-pie -k-znow"/>
+          </Other>
         </CompilerOptions>
       </Item10>
       <SharedMatrixOptions Count="2">

+ 2 - 2
lazpaint/release/stable/latest.txt

@@ -1,2 +1,2 @@
-7.2.2
-lang_update=tr
+7.3
+lang_update=

+ 8 - 8
lazpaint/release/stable/pad_file.xml

@@ -34,10 +34,10 @@
 	</Company_Info>
 	<Program_Info>
 		<Program_Name>LazPaint</Program_Name>
-		<Program_Version>7.2.2</Program_Version>
-		<Program_Release_Month>08</Program_Release_Month>
-		<Program_Release_Day>23</Program_Release_Day>
-		<Program_Release_Year>2022</Program_Release_Year>
+		<Program_Version>7.3</Program_Version>
+		<Program_Release_Month>05</Program_Release_Month>
+		<Program_Release_Day>26</Program_Release_Day>
+		<Program_Release_Year>2025</Program_Release_Year>
 		<Program_Cost_Dollars />
 		<Program_Cost_Other_Code />
 		<Program_Cost_Other />
@@ -51,9 +51,9 @@
 		<Program_Category_Class>Graphic Apps::Editors</Program_Category_Class>
 		<Program_System_Requirements>Pentium, 32-bit processor, 200 Mbytes RAM</Program_System_Requirements>
 		<File_Info>
-			<File_Size_Bytes>13800439</File_Size_Bytes>
-			<File_Size_K>13477</File_Size_K>
-			<File_Size_MB>13.2</File_Size_MB>
+			<File_Size_Bytes>14153628</File_Size_Bytes>
+			<File_Size_K>13821</File_Size_K>
+			<File_Size_MB>13.5</File_Size_MB>
 		</File_Info>
 		<Expire_Info>
 			<Has_Expire_Info>N</Has_Expire_Info>
@@ -116,7 +116,7 @@
 			<Application_XML_File_URL>https://gitcdn.link/repo/bgrabitmap/lazpaint/master/lazpaint/release/stable/pad_file.xml</Application_XML_File_URL>
 		</Application_URLs>
 		<Download_URLs>
-			<Primary_Download_URL>https://github.com/bgrabitmap/lazpaint/releases/download/v7.2.2/lazpaint7.2.2_setup_win32_win64.exe</Primary_Download_URL>
+			<Primary_Download_URL>https://github.com/bgrabitmap/lazpaint/releases/download/v7.3/lazpaint7.3_setup_win32_win64.exe</Primary_Download_URL>
 			<Secondary_Download_URL />
 			<Additional_Download_URL_1 />
 			<Additional_Download_URL_2 />

RozdĂ­lovĂĄ data souboru nebyla zobrazena, protoĆŸe soubor je pƙíliĆĄ velkĂœ
+ 3 - 2
lazpaint/tools/utool.pas


+ 15 - 0
lazpaint/ubrushtype.pas

@@ -41,6 +41,7 @@ type
     constructor Create;
     constructor Create(ASideCount: integer; AIsGradient: boolean);
     constructor CreateFromStream64(AStream64: string);
+    constructor CreateFromStream(AStream: TStream);
     destructor Destroy; override;
     procedure AssignBrushImage(ABitmap: TBGRABitmap);
     function MakeColoredBrushImage(AColor: TBGRAPixel): TBGRABitmap;
@@ -301,6 +302,20 @@ begin
   Stream64 := AStream64;
 end;
 
+constructor TLazPaintBrush.CreateFromStream(AStream: TStream);
+var
+  encoder:  TBase64EncodingStream;
+  str: TStringStream;
+begin
+  Init;
+  str:= TStringStream.Create('');
+  encoder := TBase64EncodingStream.Create(str);
+  encoder.CopyFrom(AStream, AStream.Size);
+  encoder.Free;
+  Stream64:= str.DataString;
+  str.Free;
+end;
+
 destructor TLazPaintBrush.Destroy;
 begin
   FreeAndNil(FBrushImage);

+ 1 - 1
lazpaint/ugraph.pas

@@ -1206,7 +1206,7 @@ begin
   w := FramePenWidth*ACanvasScale/10 / 2 + 1;
   rF := EmptyRectF;
   for pt in APoints do
-    rF := rF.Union(RectF(pt + PointF(0.5, 0.5) - PointF(w, w),
+    rF := rF.Union(BGRABitmapTypes.RectF(pt + PointF(0.5, 0.5) - PointF(w, w),
       pt + PointF(0.5, 0.5) + PointF(w, w)));
   result := rect(floor(rF.Left), floor(rF.Top),
     ceil(rF.Right), ceil(rF.Bottom));

+ 1149 - 0
resources/brushes.lrs

@@ -0,0 +1,1149 @@
+LazarusResources.Add('defaultbrush','LZP',[
+  'LazPaint'#0#0#0#0'0'#0#0#0#128#0#0#0#128#0#0#0#1#0#0#0#216'7'#0#0#0#0#0#0#2#1
+  +#0#0#0#0#0#0#0#0#0#0#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#128#0#0#0#128
+  +#8#2#0#0#0'L\'#246#156#0#0'7oIDATx'#156#237#221'{'#204#173'gY'#231#241#254'='
+  +#255#248#199'$$'#147#152#16#18'B'#136'!'#134#16#2'ij'#154'668'#145#180#13#135
+  +'P'#136'm'#9#180#208'H'#177#2#138#156'Z@'#164'EP'#192'S'#177#194'P'#14#2#14
+  +#138#162#2'-'#165'8 '#130'b'#165#156#164#180#200#161'n'#233'('#200#160#213
+  +#209#13'ju'#207''''#235';'#239#149#135#181#222'w'#189#239#222#251#173#187'3'
+  +#241#254'c'#229'Y'#207'z'#214#243#220#247#245#187'N'#247'u_'#247#245#156'v'
+  +#236'?'#218')m'#167#157#234#14#156'T'#251#183#127#251#183#127#253#215#127#253
+  +#151#127#249#151#127#222'i'#142#157'q'#254'Tw'#237#160#237#255'U'#0'P'#25#185
+  +#191#245#173'o'#253#227'?'#254#227'?'#252#195'?'#252#239#157#230#216#25#231
+  +#253#234#154'S'#221#205#253#219'}'#2#128#161'fm;'#237'pw'#23'#'#247#223#253
+  +#221#223#253#237#223#254#237'7'#191#249#205#255#181#211#28';'#227#188'_'#187
+  +#213'}\'#26'N1'#0#168#131'L'#127#255#247#127#143'jCD'#199#206'8'#191'I;'#192
+  +#252#211'?'#253#19'6Gb'#180#254#235#191#254#235#175'}'#237'k'#127#249#151#127
+  +#249'?w'#154'cg'#156#247#171'k\'#233#250#251#178'('#156'J'#0#208#133#186#248
+  +#155#191#249#155#175#127#253#235'w'#221'u'#215'_'#252#197'_'#252#249#159#255
+  +#185'O'#199#206'8'#239#215'%'#237#28#127#251#219#223#198#218#16#250#198'7'
+  +#190#241'W'#127#245'W_'#253#234'W'#253#229#206';'#239#252#242'Ns'#236#140#243
+  +'~u'#141'+]'#239'_'#247'Y'#12'N'#25#0#184#27'}'#241';'#182#253#202'W'#190#242
+  +#133'/|'#225#243#159#255#252#231'>'#247'9'#159#142#157'q'#222#175#174'I'#14
+  +'|'#226'e'#212#12'0'#191'"'#244#151#190#244#165'?'#251#179'?'#187#253#246#219
+  +#253#235#182#219'n'#243#233#216#25#231#253#234#154#128#244'/'#255#189'o'#234
+  +#162'S'#6#0#13#131'4h'#132'X'#232#254#201'O~'#242#143#255#248#143'?'#254#241
+  +#143#251't'#236#140#243'~u'#141'+]O'#155#211'''8'#26'M18NGh'#20#255#236'g?'
+  +#251#169'O}'#234#147';'#205#177'3'#206#251#213'5'#174't'#189#127#249#175';'
+  +#156#170#193'ni'#167#6#0#10#129#150'G'#26#156#142#214#127#242''''#127#242#7
+  +#127#240#7#191#247'{'#191#247#129#15'|'#192#167'cg'#156#247#171'k\'#201#185#4
+  +#3#157'N'#171'@'#5'eI'#137#11#144#219#149'`'#251#195'?'#252#195#143'}'#236'c'
+  +'>'#29';'#227#188'_]'#227'J'#215#251#151#255#186#195'}P'#17#157#26#0'0#'#174
+  +#164#235#209#8#219#162#248#251#223#255#254#223#254#237#223#254#205#223#252'M'
+  +#159#142#157'q'#222#175#174'q'#229#209#163'G'#193#128#142'8'#154'd`'#240'O'
+  +#127#250#211#183#220'r'#203#31#253#209#31'}'#244#163#31#253#240#135'?'#252'?'
+  +'v'#154'cgF'#140#200#1']'#196#30#176#201#20#209'}P'#8'N'#4#128#147#159#254'`'
+  +'F'#250#157#189'EJ'#196#194#245#232#254#182#183#189#237'Moz'#147'O'#199#206
+  +'8'#239'W'#215'pi\'#236#211'1'#130#210'0'#159#248#196''''#240';Z'#223'|'#243
+  +#205#208'z'#223#251#222#247#222#247#190#247'}'#171#230'+'#24#224#231#239#228
+  +#192#29#0#6'6'#127'O'#8#238'k'#150#224#248#0'8'#172#233'O'#0#224'MLJi'#208'<'
+  +'x'#31#245'_'#251#218#215#250't'#236#140#243'Y'#130#175#174'Z'#212#143#241
+  +#209#247#131#31#252#224#13'7'#220#240#187#191#251#187#239'z'#215#187#254#251
+  +'N'#243#199#223#249#157#223'q'#30#6#228#128'.'#130'VB'#192'7%Ikn'#213'}'#161
+  +#29#20#128#147#153#254'l'#206#179#242#127#182'K'#0#245#242#153#207'|'#230#142
+  +';'#238#248#210#170'QG'#190#162#254#239#255#254#239#131#7#203#255#214'o'#253
+  +#22#162#191#245#173'o'#189#254#250#235#255#219#170#189#249#205'ov'#6#6#228
+  +#128'|'#128#144#16#240#139'X'#2#243#3#157#196'('#132'ust'#245'P'#175#244#255
+  +#238#187#239#246#233#248#223'g.} '#0'Nx'#250#179#215'<+W'#18'_'#239'e'#3'Pyt'
+  +#200#29#171#246#167#127#250#167'C'#253#24#255#29#239'x'#7#138#191#225#13'o'
+  +#184#246#218'k'#127'n'#213'^'#247#186#215'9'#227''''#186#136#16#176#201'n'
+  +#238#14#230#7'9'#181#155'f`z'#168'?yV'#196#206#227#28'0?'#192#184#183#181#214
+  +#254#0#156#240#244'G'#215'!a'#216'F'#194#159#249#226#23#191'hT'#14'0'#254#220
+  +'$'#31't'#211#11'B;'')'#156'f'#6'>'#233'}'#231')'#253#247#188#231'=K'#234#255
+  +#210'/'#253#18#210#191#242#149#175'|'#217#203'^F'#131#145#131'_'#251#181'_'
+  +#11#0'v'#2#0#230#7'{'#1#208'L0e'#8#236#250'p'#211'M7'#233#198#135'>'#244'!'#2
+  +#228#191#254'x'#175'*'#174'}'#0'8'#153#233#15#129#240'uTG'#158'b'#254#9#22
+  +#131#4#186#164'^'#214#230#1'.Fn'#20#241#199#207#173#26'$h$'#212'A}R'#18#245
+  +'_'#255#250#215'c'#249#159#255#249#159#255#217#159#253'Y'#0#252#244'O'#255'4'
+  +'$@'#226'W"'#178#175#4#204'LP'#207#221#156#229#248#245'_'#255'u'#10#237'M'
+  +#171#246#246#183#191#253#221#239'~7K'#227#14'x'#5''''#221'Kr'#176#15#0'''<'
+  +#253'Az_'#145#146'.'#166'R'#232'e*'#219#144#232'n\l'#192#249#136'H'#243#149
+  +'U'#155#153#176#246#217'U'#163's'#28#131#22#198#164#193'}n'#188#241'Fw'#192
+  +#224#168#143#211#127#249#151#127#249#23#127#241#23#17#253#213#175'~5'#12#176
+  +#191#175'I'#0#156'b'#225'-6'#160#153#160'G'#195#137#222's'#207'_'#248#133'_'
+  +#0#228#213'W_'#253#138'W'#188#194#13#221#31#150':'#143#27'H-5uoD'#188#183#1
+  +#224'1''6'#253#193#212':'#141#208#136#206#168'"'#10'5'#141'U#'#208';'#223#249
+  ,'N'#236#230#143'.'#30#197'5'#177' '#20#1#204#29#139#6#12#143#192#254#248#218
+  +#127'1'#169#155#224'}'#202#199'='#1#128#244'>'#145#239#186#235#174'CG'#215'P'
+  +'A'#0#219#226#5'5'#19#244#220'[o'#189#213#197'X'#30#197#175#186#234#170#231
+  +'<'#231'9W\q'#197#143#254#232#143#254#196'O'#252#196'O'#254#228'O'#186#237
+  +#175#254#234#175#2#30#147#185'I^'#198#225'F'#188#183#1#224#1#158#135'qt'#212
+  +#227'3P'#233#138'-'#211#31#234#194'1b'#233':2'#165#157'_'#248#194#23#26#210
+  +#243#159#255'|'#163'B5'#2#142#179#16#136#4#164#175#198'JC'#26#18#163#160#136
+  +'E'#218#217#245#193#249#198'7'#190#17#161'a'#25#245#181#160'u'#210'O.pYS'#185
+  +'-'#243#128'f'#130#158#242#145#143'|'#132#227#228'&W^y'#229#229#151'_'#254
+  +#228'''?'#249'IOz'#210#15#253#208#15'='#245#169'O'#133#196#139'_'#252'b7w'
+  +#129'1'#146'Hb'#180#233#242#237#234'V'#29#2#0#185#7#30#163#235'3'#255'4$T66'
+  +#29'j'#6#180'6'#253'i~DQ'#160#133'Q!'#247's'#159#251#220'g>'#243#153'O{'#218
+  +#211'.'#190#248'b'#195'{'#198'3'#158#241#162#23#189#8#189#24'R'#215#187#167
+  +#251#231#243'e'#180'}'#133'7'#12'f'#198#155#254#241#20#172#141#193#17#26#179
+  +#15#227'#'#16'Q a'#191#242'+'#191#18#0#140#4'C'#170''''#195#254#155'3'#225'&'
+  +'"'#180#19'{'#139#253#233#156'g='#235'Y'#23'^x'#225#249#231#159#255'_W'#237
+  +'1'#143'y'#140#14';'#249#242#151#191#220#157#169'Pj'#211#221'vu'#249'N'#6#131
+  +'='#1#200'C'#0#181#135#197#254#198#131#22#184#27#173#233#16'}2'#212#223#248
+  +#141#223'h'#250#131'@'#134#237'|'#250#20'u^'#242#146#151'<'#251#217#207'Fz'
+  +#12#245#184#199'='#238#188#243#206#251#193#31#252'A'#199'8'#203#168'8'#239#6
+  +#239#158#238'?'#0'P'#11#205'x'#185'LI'#155'a'#231#252#16')'#202#157#242#1#158
+  +#155#211#24'T'#127#154#199#25#24#144'6'#148#242'h'#24#224#0#127#161#6#139#232
+  +'m'#198#130#2#0'SS/'#238'IF'#177#255#227#31#255#248#179#207'>'#251#204'3'#207
+  +'<'#253#244#211#31#245#168'G='#225#9'O'#184#236#178#203'H'#134#167'$'#4#184
+  +'a/'#151#239#132'1'#216#19#0'w'#132'-'#144#1#238#145#152#5#251#211#245'cT'
+  +#249#12#134'J'#207#248#212'?'#28'm'#216'>}E'#145#159#250#169#159#250#177#31
+  +#251'1'#212#127#226#19#159#136#244'?'#240#3'?p'#206'9'#231#248'4'#200#167'?'
+  +#253#233#180'-z1'#149'hd0'#205'}26C}'#218#25#245'9'#254'H'#9']0{'#22''''#7'9'
+  +'8<4'#27#12'~'#238';['#210#224#154'|'#24']E2'#247#223#140#134#6#128#167#24#11
+  +#0'0'#196#143#252#200#143#232'*'#222#7#192'#'#31#249'H'#189#197'4'#250'OmB'
+  +#218#163']Ytd'#175#136#247#137'a'#176''''#0#25#128#148'2'#216'='#24'?2'#134
+  +#24'!r'#164#142#19'||g'#204'|'#6#29#229#29'"'#13'='#131#167'.'#186#232'"'#178
+  +#140#238'g'#157'u'#214#25'g'#156#129#173#140#234#210'K/'#245'+JQ'#214#20#133
+  +#193#164'X'#241'>S<'#212#247#172#162'='#30'G'#170#136#154#167#240'L^'#243#154
+  +#215'`X'#0#188'v'#213#208#221#153#159#249#153#159'y'#229#170'9'#152#25#25#12
+  +#248'B'#9#217#218'|*'#27#224#209'l'#187'>'#251#23'U'#249#148#167'<'#229#177
+  +#143'},1'#213#207's'#207'='#23#30'x'#133#233#162#160#128#164#15#133#8#183'D'
+  +#188'O'#0#131#131#2#192#23#244'l'#244#10#0#228#208'o'#212'G'#2#163'-'#12#160
+  +#1#3#251#235#177'~'#235#253#5#23'\'#240#232'G?'#250#251#191#255#251#1'@'#186
+  +#241'Wr'#157#25' C'#24#28#185'='#162#169'Ys'#130'5'#234#147'6'#130'E'#255#240
+  +#127'2'#0#209#189#230#248'U'#175'z'#21#22'fo(='#178#197'r^s'#205'5P'#209#25
+  +#140#226'>'#238#9#224#181#197'5'#234#206#19#9#25'>0'#4#160'r~`'#128#238#196
+  +'T'#207'q'#143#174#2#198#205']'#128#189#232'+w'#243#151'C'#140'x'#159#172#4
+  +'`ID'#9#0'j'#29#251#211#3'\i'#0#144#223#0' '#212'0@}&'#142#161'c'#147'_'#250
+  +#210#151#146#128#0#192'MM'#5#178#186#233#253'%'#245'='#139#249'%a'#133'}'#160
+  +#238#137#205#194#220#4#161#225#237#134'/x'#193#11#198#137#252#241#31#255'qH'
+  +#16'D='#196#185#248#198#205')'#138'%u'#198#12'x'#16#226#234'6'#252#220#225
+  +#135#127#248#135'/'#185#228#18'^'#16#6#162#151#158#247#188#231#193#6#210#198
+  +#136#15#244#135#169'+'#218'z('#17#239#147#181#1#205#137#208'%'#246'G'#154#0
+  +#160':'#169#160#252#10'B'#13#6#186#136#135'G'#255#160#14#14#133#28#202#2#160
+  +#233#238#231'W'#173#25#239#232#253#166'o'#164#141#141'I'#191#193#192#167'g'
+  +#189#229'-o'#241'P'#143'C'#26'wCn'#6#31#201#158#178'j'#176#7#131#147#224'q%'
+  +#215#128'T'#29'9rd9'#161'm&'#140#189#208#209#136#220#150'P'#234#249#18'Hf'
+  +#204'W'#0#208'Q'#240'6@'#151#233#143#27#242'_'#15'%'#226'}'#178'^'#16#198#4
+  +#195#208#133#1'4'#12'F'#146#243#128'"'#200#205#237#185'`'#213#128#129#179'8v'
+  +'T'#4#186#184#216#172#24'o'#178#195#168#147'n-('#180#228#253#168'O'#255'dc|:'
+  +'v'#146'L8'#224'A'#18#2#18#0'o'#14#174'G'#208#30#204#12'5'#130#133'u'#128'd'
+  +#232#143';'#224#27'<'#132'F-p.'#199#136'va'#224#158'M\'#252#203#196#229#249
+  +#171'F['#146#12#192#192'@'#183']'#224#161#152#207#245#135#18#241'>'#169'y@1a'
+  +#189#137'F'#144#192#149#186'H/'#243#130#244#158#8#199#149#144#160'OQ'#31'0F'
+  +#136#253']'#255#193#15'~'#176#137'4'#174#239#211#144'X'#197#172'.yG'#145#238
+  +#140#244'>'#29';'#227#188'_'#223#189'j'#206#208'EH'#227'YTGn'#12#129#227'w'
+  +#129'<i'#3#15#206#197'1'#168'\DaI'#160#145#3#194'gP'#198#146#163#229'_'#24#31
+  +#175#188'h'#213't'#155'<e'#252'AN'#170#178#240#7#143'x'#31'7'#0#199#14'0'#19
+  ,#30#23#5#12#209#139'($'#4#12'#>b'#9#16#157','#251'D'#11#227'q'#30'B'#196#165
+  +'x'#25'mC'#150'?'#188#211#156'a'#232#242'y'#214#184#30#173#151's'#142'V'#193
+  +'<'#151'$'#205'<'#150#138'Cz'#24'09'#217#27'''u'#195#19#209#235#150'[nai0'
+  +#233#166#154#254#246#183#191'm'#140'F'#167#15#30#129#190#168#12'W'#134#157#10
+  +'b'#135#159#189'j'#134'@'#26#152#22'c'#4#149'y'#204'A"'#222''''#14#192#190
+  +#177#160'V'#166#18#133'`('#160#136'+'#249'*hm'#0'x'#19#12'$:M'#138#247#145
+  +#204#149'E'#158'kn'#2'Kg'#210'l3'#195'H'#179#193' '#234#251'W'#212'w1'#168#10
+  +'M'#131#7#0#216#147'm'#231#183#240'#'#217#27'B'#192#143#164#142#24#3#143'FM'
+  +#0' '#22#31#23#141#150'Zh'#201'j'#4'=9'#240#160'f'#242#250#140#232#148#27#241
+  +'z'#198#170#25#14#5'k'#20#186'd'#224#251'F'#188'O'#10#128'c'#251'EC'#241#20
+  +'Q '#137#209#14'9'#140'3'#15#21#143#192#0#179#240#225#144#128'F2'#157#137#247
+  +#177#152#139#253#229#230'U'#251#192#170#21#216#24#234#211#179'l'#187'O'#24' '
+  +'1'#217#26#222#247#151'BO)+'#240#16'8H'#19'26'#134#16#192#224'1;'#173'9'#135
+  +#11#8#28#21'G'#145'n'#1#0#5#177#23#174'r1!('#148#130#241#169'P'#138#148'0'#17
+  +'ew'#163#133#24#255#0#184'w%'#224#216'~'#235#1#153#229#252#150#150'2P'#164
+  +#229#170#156#212#226#245'l'#151'O'#144#20#168'!.'#239'_'#181'!}'#212#247#199
+  +#241'n'#141#144#187#9#3#128#209'?'#249#127'Q'#31#222#180'V'#139''''#5#136'<'
+  +#133'#D'#206'p(b'#209'<c'#246'Q'#13#17#221#205#205#177#139#206#239#10'@.'#31
+  +'%'#142#151'1'#181#219'z.'#185'a{'#185#161'<"'#198#12#18#5#19'['#246#193'gE'
+  +#156'(drs'#199#29'w00T'#197'a'#218#128#218#150#21#177#177#10#137#194'2M!='
+  +#142'y'#155#31#248'DG'#242'Q'#228'.'#210#143#4#12#0#203#249#29#170#181'D'#236
+  +#164#187#13#245#179#22#31'Z5$'#128#25'r'#16'5'#6#134#215#136#226#184'>G'#158
+  +#222#160#190'iBbTHY'#207'w'#181#1#185'CFgD'#8#234#182'Yc'#172'Cvq=!'#206#8
+  +#231#143#186'!'#158'p'#207'B'#144#134#15#3#255'u'#127#156'z'#207'='#247#28'&'
+  +#0#199#246'^'#19#206';"'#10'|y'#222'd'#129'3'#212#161#211#147#134#181#128#221
+  +'h'#30#23#140#1#24#237'O2'#214'"'#28#142#17'b'#168#239#206#238#143#238#134
+  +#221#31'3'#3'E'#159#8#1'SLeS'#20#236#129'O'#212'G2'#140'<'#241'd'#29'^'#243
+  +#130'j'#185'|'#5#168#145#210#131'p'#131#219#234#6'E'#4'Bz'#223#167'c'#218#31
+  +'[`&]-'#254#232#206'$'#18#6#136#128#26#24#244#184'<'#209#147#205#138#24#227
+  +#220'4'#10#12'8'#136'`'#238#21#178#30#135'G'#167')'#174'<'#159#168#185#25#227
+  +'s'#236#12'Fk'#161'X'#243#23#215#7#176#235#253#4#0#0#19#2'6'#6#183#194#224'y'
+  +#171#150#225'!I'#128'dT'#9#168#30#222'u'#215']:'#191'k*|f'#0'WQ&'#168#233#17
+  +#128'g`'#154#222#163'{*'#177'9'#160#190'Q}.'#128#147'>'#232#188#142#249#23'}'
+  +'`'#186#183'Li=4'#0'j'#155'yA'#205#212'pV+Y'#217#231'-'#139'6'#227#242#183
+  +#154#22'Ty'#162#205#239#168')t'#167#187#138#176#162'/Z'#204#31#195'u'#20']f'
+  +#223#149#232#130#211#241')'#150#231'w'#250#164#190#155'7!V'#11'p'#244';'#234
+  +#208'3'#180#196'f*<'#189#225#243#238#187#239#166#202#203'V*'#232#2#188#166'#'
+  +'o[5'#202#7#0#248#227#237#171#214#172'P70'#132'Q'#24'xk'#6#147#210'z'#200#0
+  +#212#150#153'q'#153#7#210'P'#138#249'A'#150'-'#245#210#212#247#19#171#230#12
+  +#198#129#22#250#26#0#178#6'@'#137'V'#198#134#197#140#13#127#249'{'#215#160'K'
+  +#250'm'#162#223#197'$h!'#150#0#6'-'#234'R'#214' '#193#254#238#134'I'#245#193
+  +#163'K'#203'('#9'~3'#21#222'Xp'#149'c8M'#30#6#248#139'}5'#247'~'#243'N'#243
+  +'PF'#130'L'#164'*I'#195#172'uOJ'#235'A'#20#209'!'#228#134#234'7'#198#241'H'
+  +#227#225#141#241#181'I'#241#150#133#251'Y|'#167#148#157#249#244#170#25'-*'
+  +#183#236'>'#19'`'#180#243'u'#169#130#8#10#131#17#245#253#154#191#139#244#244
+  +#15#239#144#25'x'#249#170#129'a'#194#6'P,O'#171#240'Y+'#254'{'#165#194#199'O'
+  +'0('#169#160#28'HOlf'#158'O'#225#137#238#220#170#220#228'#'#145#12'6l-'#165
+  +#245' '#254#232'I'#1'0YM'#147#129#18'A'#163#245#237#171#182#153#186'2'#177
+  +#207#220#217#150#224#13#21#141'RA'#168#159#128#151'm'#152#253#192#137'x'#159
+  +#5'v<'#158'.Zpp[v'#230#165#20'6'#160#130'`@'#2#174#189#246#218#201#211'j'#238
+  +#134'@'#163#3'wM'#133'?z'#244'('#12#154#247#232'd'#137#29#224'o'#214#237#137
+  +#205'1'#221#156#144#193#251#234'Us'#12#3#12#177'Li'#221#213#223'=L'#0'f'#127
+  +#11#27'`'#0'|'#128#194'D'#232#168#31't'#133'A'#22#168#218'L'#222#210#12#24
+  +#155#148#244#185#4#160#164#171'Q'#181#217#225#252#141#153'4'#224'G'#216#224
+  +'n$.v'#198'C'#127#206's'#158#195#243#225#173's~'#184#164#136'B2\'#211'$.k'
+  +#233#191#203#217#223'f*<'#19#13#3#0#20'}'#193'4'#0#128':'#0'H'#18#181#3'ow6'
+  +#27#240#136'+W'#13#228#173#154#1#155'1pC,'#232'n'#247'.'#0#147#213#132#130#0
+  +'7'#6#10#4#153#138#8#165':|'#5'C'#206#25'Z/'#215#178#169#172#18#20#11'4'#1')'
+  +#0#186'Cj='#151#3#24#200'g`~'#138#130'#%. '#254#152#253#5'/x'#1#210#243#250
+  +#159#182'j'#5#241's'#129'0l'#30#139#155#248#23',!Q'#14#228'f*'#252#172'm'#13
+  +#0'd'#23#27#17'>'#255'%'#145'|!'#206#232'K^'#242#18'O,'#201#195#129'O'#194'W'
+  +#132'Q'#175'RD0'#192'XHto'#1'PV'#19#178#226#29'Z'#18'i'#12#18#187#233#4#174
+  +'l'#141'L'#143#141'Vo'#12#195#216'Z'#191#158'l'#14#19#139#20#174#243#228#3#9
+  +#160#133#202#192'Cw>'#159#155' '#31'Q'#192'z'#205'!'#222#191#211'|us'#215#176
+  ,#186#152#145#239#143#250'f^'#23'_|'#177#217#239'e'#151']6Q3'#215#144#164#130
+  +#25#239#218'i'#200#228#228'f*<F)m'#178'9?.&'#193#28'0'#163#243'/'#189'2'#180
+  +#150':'#158#245#172'g%j'#144#14#0'|'#208#162'M'#24#180#208'TZ'#227'v'#127#244
+  +'D'#0#152#253'-T'#7#6'A5dJ6'#233'b'#20'I'#5#231#2#250#149#20#23#5'['#203'gj~'
+  +'G'#8'h'#167#25'*'#0#176#127#169#15#220#24#195'v'#6#144#232'>Z'#200'W'#146#17
+  +#0#8#141#220#136#142#244#0'h'#2#236#140'n'#4'@'#235#213#239'\'#181#188'Ig'
+  +#244#173#245#178'I'#133#199#179#20'N'#169#171#19#245'r'#18#3#25'B'#26#207#24
+  +#9#22#186'?'#253#233'O'#135#129#137#183#7'%'#7')='#230'A'#231'K'#205'+'#233
+  +'f'#223#212#210#19#1#160#21'm'#29#197#182#244#169'!'#1'_'#15'h'#225'g'#174#26
+  +#238#160#25#199'4am]'#1#216'&;'#248'Z'#20#172'<u'#194#30#175#1#0#138'>'#153
+  +#129#172'h'#202'g'#150#136'['#160'o'#242#133#13#169#157#244#15#234'SG(2,'#169
+  +'{o'#223'i'#24#165'%<'#29#195#206#133't<'#20#27#161'5I'#205'O'#29'g'#186'.y"'
+  +#188']'#140#190#12#175')'#30#210#23#157#166#136#146#3'O'#196#10#188'/ '#17'\'
+  +#24#232#173#219#14#6'{'#201#193'6'#0#246#218#9#211'j'#170#142#234#31'f'#196
+  +'e'#216#13#9'&'#173#172#4','#172'A'#14#12#24#237'X'#2#250'jW'#215#216#221#24
+  +#134'b'#0#25#146#244#251#168#160'Y'#138'y'#199#170#181'2'#236'W'#244'u'#127#0
+  +#208#0#133#236#145#30#19'x.'#179'L)#qa'#131#22#139#162'~q'#214'7'#172'Z>'#18
+  +#30'j]'#165#196#244'|'#179'b\'#180#171#206#187#134#202#154#176'D'#30'W'#140
+  +#31#0#144#8#134#242#1#176#133#158#23#173'C'#162#210'>'#246'2'#200#187#3#176
+  +'}'''#12#19#202#156#234#171#254'q'#206#240#5#166#184#244#210'K'#207'?'#255
+  +#252#243#206';'#239#220's'#207'}'#236'c'#31'{'#209'E'#23#181#248#142'R8h'#203
+  +'b'#200#236#23#27'_'#136#14'mr'#219#182#139'v'#0#148#135'K/'#149#145#152#227
+  +'O'#200'(e'#240'{P>'#232#172'['#21#127'M'#249#128#173#240#198#164'n\'#191'j'
+  +#165'p%'#1'X'#132#4#180'3`'#214#254'0D'#157#25#200'='#23#6#168#12'x,'#239#137
+  +#232#158'@$'#19'P)b'#154'~'#227#251'na'#190']'#0'8'#200'N'#152#146#215#10#157
+  +#195#217'P'#3#224#241#143#127'|I(>'#29';'#227#188'_q'#208#150#197#144#181#29
+  +#147#134#141'%'#209#165'$'#148'r'#255#141'vV'#7#145#216#200'Q'#220'8'#209#154
+  +#170#185'f'#213'^'#177'j.F#h'#161'>'#138'7'#157#14#131#1#128#16' ('#166#246
+  +'+'#9'n7N!'#229#230'%'#203#213#239#12'>>h#'#194'd'#196#128'!'#155'g'#140#216
+  +#159'I'#184#252#242#203')'#192'I'#164'0pO'#164#136#182'0'#223':'#0#7#220#9
+  +#147#135#0'X'#12#130#184'X'#3'9fA'#234#188#157'v'#201'%'#151#232#28#249' %c'
+  +#145#218's'#178#150'W'#188#220'3L'#8#12#27#239#224' '#163'5'#146#210#20#26
+  +#158#230#192' 1'#29'%'#0#9#0#148'M'#142'('#232'NV'#192#22'w#'#189#238#149#22
+  +'_|'#9#209'G'#2#0#236'$'#141#215#210'n'#238#178'q'#173#229#127#180'wj'#18'R'
+  +#181'RQ'#19#136'I=.'#18#142#2#216#14')`'#0'!'#15#130#223#22#230#251#14#0#14
+  +#190#19#166#204#217#252#22#253#195#29#30'V^'#2#237#207#6#176#4#28#18'dj1'#4
+  +#21#12#18#139#177'lG'#142#28'q'#219#187'V-'#191#8#24#247#220'sO'#179#138','#1
+  +#150#244#23'6'#22'_c.'#3#227#219'pr'#158#248#196'''>i'#213#140#147#189#197't'
+  +'F'#14#0#212'G'#148#232'^'#168#18'k'#183#23#1#131'sH'#242#253#225'Q'#172#187
+  +#24'N1'#253#230#1'P'#199#31#141't3'#3#10'#'#235'L'#188#15'c'#198#160';'#148
+  +'~PV'#18'c'#144'#'#0#0#189#213'm'#6#217'5'#0#152#236#191'm'#0#28#239'N'#152
+  +#204#20#201'5'#0#156#165'+'#250'A?'#208#131'9Bx'#182#180#28#242#158#158'm'
+  +#241'h'#130#213#164#199'A!'#220#28'p'#216#20#10#166#130#152'M'#28#231#14'%'
+  +#23'Mn'#239#164#24#129#153'4'#24'6'#27#128'.'#140'^'#211#230'Y'#185'l'#225
+  +#193'g'#129#235'V'#173'K'#239'MJ\'#175'c'#163#127#242#127#246#202#1't=&'#163
+  +'UP?'#241'*O'#187'@H) 3v'#7#141#189#212#27'C'#222'21'#254#191#0#28#239'N'#24
+  +#188#12#140'[o'#189#181#21#212#214'.'#176#3#158'}'#217#170'9'#152#137'I+*%NS'
+  +#199#229#143#226')'#176#197#182#174')'#162'['#156#185'E.'#3#198'G'#184#137'Z'
+  +'+'#209#225#204'3'#207#252#190#239#251#190#179#206':krLK'#220'DP'#236#220'b'
+  +#167';'#160'i'#232#226'b2'#218#18'B'#9#28'X'#158#4#144#24#29'h'#198'T'#148
+  +#212#136'h'#137#0#216#146#5#171'W$'#172#28#153#162'r'#0#192#233#4#29#243#233
+  +#12'#L'#249'P'#140':'#239#17#24#194'sK'#135#217'f'#3'Nl''L'#146#225#238#249
+  +#142#9'x'#169#131#158']'#154'x'#171#137#133#18'u'#157#252'r'#28#153'S}-tS'
+  +#246#217#149'W^'#137#142'y'#208#134'Z'#140#1'['#17'j'#156#142#235#17#253#244
+  +#211'O'#127#196'#'#30#241#176#135'='#204#1'$'#8'A'#169#203'n'#232#161#249'|m'
+  +'M%C8'#3#163'P'#235#186#215#170'u'#249'^'#187'n'#7'we'#222#231#157#171#182'o'
+  +#30'x'#30'm+'#222#249#193'9'#8#244#161#3'_Q'#191#176'DS'#1'7'#223#18#157'>'
+  +#237#216#137#238#132')5'#181#13#164#186'K'#203#27'a'#185#17'8'#203#193'M'#171
+  +#22#223#181'l'#139#208'$'#180#4'X|}'#254#170'9'#160#214'Q'#243#138'+'#174'0'
+  +#6#236#147#147#199#246#210'?Ox'#194#19#240'>'#198#127#248#195#31#14#128#168
+  +'O '#220#193#173#136#26'*'#144#170'e'#134#8#10#22'd6'#150'b'#227#13'g'#175
+  +#130#8#174'G}'#10#144'Y'#218#190#19#162'8U'#218#191#152'('#11#180#164#190#175
+  +#212#0#22't'#25':'#180#13#203'm'#183#172#207#156'v'#2';a'#18#240#178#1#202
+  +#200'0'#206#244'U'#193#253'O'#173'Z['#218'o'#188#241'FF'#130'B'#28'W'#181'lu'
+  ,#164'|'#228#170#157'q'#198#25#190#210#236#144'`'#186#155#229#147#229'r=a'#227
+  +#167's'#206'9'#231#172'Us'#224'+T'#0#6'!'#130'b'#168'z'#213#150#210#2#9#6#140
+  +#147#12#167#157#154'<'#183'}K'#130#248#23#209'oio/'#10#164'i'#145#222'X'#154
+  +'|P'#244#6#165#171#132'8'#205'S'#202'PA'#176#18#191#221'p'#251#10#229'i'#199
+  +#181#19#134#213#202#171#243#0'?'#229#192#185'^'#167#141#147#160#25'p6|'#130
+  +#204#186#142'ep4'#31#137#222'8'#251#236#179'1'#242#247'~'#239#247'~'#207#247
+  +'|'#207#131#30#244#160#7'?'#248#193#14'|u'#210'O'#180#13#226'r'#165'.'#187
+  +#236'2'#236'_'#154#9#12'h'#252'fy'#137#11'`'#12#152'HQk'#168#3#233'2'#18#138
+  +#179#182'm'#136'G'#215'*'#227'A'#138#226'T'#142'b'#139#14'0X*'#133#197'br'
+  +#209#29#209#201#235#229#171#166#147'>iT'#0#204#18't{C'#226#253'}bA'#7#204#130
+  +#158#138#0'y`'#163#226''''#230'<'#134#190'y'#28'B'#16'j'#186#152':'#194#20
+  +#184#21'w3'#158#15'}'#232'CQ'#252#1#15'x'#192#253#239#127#255#255#178'j'#223
+  +#253#221#223#237#24#24'` '#13#237#162'a{'#13#140#133'`'#6#28#160#248'SW'#173
+  +#148'q|G'#252'Q'#223#211#241#10'z'#161'`'#25'Q'#197'K'#254'y'#209'Z/j'#179
+  +#248'^e'#161'P`/+'#8#3'|'#134#166#6#142#193'Kx%'#202#134#131#21'hBV'#10#151
+  +#208#135'T'#16'o'#24'Y(^'#224#185#185#187#237#155',}'#218'A'#246#1#20#135'"z'
+  +#175'Z5'#172#231#152'E-'#218#222'f r'#128#235#141#161#231#149#241#10#0#178'B'
+  +'Q'#240'gt'#151'6'#7#0'Z'#163#251#253#238'w'#191#255#188'j'#247'[50<'#240#129
+  +#15#132#1'=s'#238#185#231#26'^'#211#153#166#190#205#129#211#179#5#29'1'#4#174
+  +#196'(%'#187'y'#28'~'#223'5|'#2#0#23#204'N'#216#189#10#163#237#234#7#150#167
+  +#133#11#217'm'#144'c#'#190#175'Y'#8#22'!'#145#143'^5'#189'u'#140'3'#2#0'S"]'
+  +#177#232#131'l'#239'^'#7'`'#211#11'6T'#180'~'#233#170#205#22#20#7#133'\'#208
+  +#130'4'#180#9'"N'#204#218#28'=z'#212#8')'#7#16#2#128#204#2#128#4#176#165#0'@'
+  +'n'#24#4#192'w}'#215'wu'#144#28#176#13#1#192#18'xbk'#235#175#219'i'#236#155
+  +#254#224'G'#221#131'n'#153'n'#173#229#22'>!yMe'#190#182#211#28#151'3P'#160
+  +#223#153']K'#3'n'#206#132#176'0'#21#218#214#1#186#165'MW'#248#189#157#148#20
+  +'ff'#201#160#232'FB'#144'M'#162#169#24#24#250#167'$'#173'}'#183#19#239'/'#1
+  +#232#203'AD'#238#2'O'#153'G'#173#205#11#236'~A'#15#29#245#199#162'N'#9'>'#234
+  +#224'Pwp'#1#201'ES*'#158#213'M'#5#193'`'#132' 9p'#242'!'#15'y'#8#135#199'x'
+  +#200'xZ'#158#240#181#30'P,:_'#179#5','#4#245#148'Vq'#151#204';S'#200'Z'#187
+  +#233'Z'#10'm='#174#127'm'#210'e'#25#11#128#19'.'#246#184#130#237#132#175')'
+  +#161#190'q'#4't2'''#2'?A'#2'$'#0#208#225#20'#'#191#163'%'#16#253'i'#255#225
+  +#150#2#154#251#216#0#234'%'#255#157#221'/'#226'A3'#176#144#156#144#242'U'#155
+  +#10'aLW'#178'We'#197#20#201'`'#132#153#7#228#195#194#192'C'#211#140'0_'#158
+  +#237#29#27#128#244'>}u'#210'x'#168#169#11'.'#184#128#158'm'#131'.'#252#184'"'
+  +#152#189']'#243#184'r'#252#138#212'='#146'UL'#11#246#179#181#24#231#222#178
+  +#211#28#231#173#181'2'#234'J'#215#239'UG1'#12'\'#227'z,h'#194#133#250':o'#200
+  +'$'#152'h'#230#191#233#231#195'V'#205#177#14#27#23#0'&'#252'@'#31#24'x['#175
+  +#150'['#248'v-'#160#185#143#23#196#153'5'#241#155'H'#3#181#160'+'#30'6'#1#31
+  +#24'PJz'#9''''#23#183#16'_'#232#194#200#9#163'1'#192#143#214'r%'#202#18'^'
+  +#157#206#18#220#127#213#136#2#222#247#213'I'#156'e'#144'qS'#226#140#15#204'3'
+  +#202#242'X'#171#225#147#210'('#146'Z'#22#9#156'&['#187#5#156#242'P'#157'q'
+  +#222#175#174'qe'#211#162']'#235'('#22#154#5#21''''#210#211#11#135#224'9'#227
+  +#213'1'#220#131#235#31#186'j'#228#24#12':'#204'k'#224#164']r'#201'%m'#6'i'#13
+  +#170'yI3V'#162#176#5#248'}'#230#1'nT'#226'_'#165#20#242#205#245#166#157'@'
+  +#156'B|'#221'>'#194#28#128#138'4'#148#195'c'#228#196#130'v2'#12#26#140#163
+  +#198#191#244#23'"'#12#3#246#246'A'#171#198#246#26#12'n'#226#2#205#12#139#151
+  +#205#235#160'y'#160#200#155#218'5'#231';'#229'Y'#28#27#234#173#158'7'#239'k'
+  +#221#166#230#184'5'#181#226#254'1'#166#127'm'#222#19'ihm,'#136'v'#254'r'#237
+  +#181#215#226#27'>'#216#146#247#245#147#158#212#249#216#31'$'#179#161#21#0#188
+  +#237#140#162#129'O'#245#128#226']'#147#173#181#6#252'>3a'#183'@'#5#195'p_TFk'
+  +'n@['#239'`'#160'g'#144#231','#210'N'#129'_'#169#134#194#15'U'#22'(F'#4#0'L]'
+  +#192#214#127#195#0#31#25#137#241'`%'#243'['#30#5#17'1'#146#172#153#233'L'#238
+  +#132'^'#237'J,|'#131#173#168'MN0'#6#175#222'LK'#149'me}'#245#171'_'#237#211
+  +'q'#187'B'#252#234#26'W'#186#222#191#242#17#135#31#29#208'lL'#11#222#215'sR'
+  +#203#209#192#10#6#27#239'G}}'#246'9srV'#13'K'#185#6'N'#0'0'#204#202#172#204
+  +'B4'#234#221'|'#243#205#30'Z'#188'o'#19#248'}bA'#229#133'a'#7#252'X'#10'x'
+  +#213#7'('#31#164#196#209#0'@'#214#178#16'8E'#213'C'#169#233#7#243#139#10#165
+  +'l'#210'`L'#136#142#250'/'#233#209#245#246#15'7'#191#133#10'8'#233'7F'#133
+  +#167#235#239#186#238#233#244'>'#221#184#9#192#172'KSP'#184#204'l'#163#180#145
+  +#2#130#179'z'#163#181'L'#232'|s'#212#210'F'#252'k'#25' cK<'#5#141'Z'#226#206
+  +#231#209'U'#172'='#212#199'%1>-D'#243'4m,.'#139#8#160'*'#168#213'v'#190'V'
+  +#238#150#217'!'#20#3#29'H'#29#229'('#14#240#251'DC'#11#161'0'#235'T'#185#1' '
+  +'1BW'#127#3#171#210'?>u'#212#180#208#201#178'3'#218#174'^'#142'&'#186#187#190
+  ,#236#165'VP3'#227' '#132#31'~''F'#205'eZ'#199'p'#141'?'#154'^'#128#188'bIT'
+  +#162'.'#173#237'z(+i'#153#150#129'j4'#134#255'6Mm'#250#214#190'"'#199'm'#27
+  +#246#171'k'#210#147#179'\^=F'#199#134'Io'#160#23'Q6'#22#253'1''/jR'#16'P'#131
+  +'A'#140#143'c'#184'C:_]'#21'|'#211#26'Q'#19#151'Y'#185'+;'#4'S'#182'+'#139'E'
+  +'4"'#174'&E7'#252#180#207'z@'#225#4#18#132'q`'#128'4'#166'`'#213'@'#241'H#'#4
+  +#128#199';'#128'A1'#156'2'#150#158#187'j'#196#133#234#215#179#181'O'#231#219
+  +'v'#162#181#146#222'&'#178'"'#216#25'1'#174'0'#253#163#27#187#22#145'&'#175
+  +'~2'#30#158#162#142#229'&'#192'O'#31#18#208#166#169'y'#10#173#222#248'5='#201
+  +'*'#148#186'S'#154'"'#19#205#206#17'q'#146#135'Wt'#204'_'#176'6'#7#159'Y'#202
+  +#225#193#251#153#220'v'#156#251#21#247'P'#0'p2v'#172#211'@'#138'O'#180'r'#231
+  +'L'#227'j'#197#194'T'#174#16#197'Z'#190#208#254'+b0'#152#252#128#12'2TM'#145
+  +'Z'#132'C'#253'K'#23#205'PsRIe;UrX'#227#196#242#153'J'#167#9#167'R9'#209#165
+  +#29'd'#215'_'#127'='#189#201#155#210'Q'#182#11'c'#234#195'f'#229'<'#236#163
+  +#135':6l'#171'K'#209#14'?":'#2#181'Uo6'#136'W'#255#167'M'#178'%'#164#20'^~'
+  +#227#27#223#200'}'#192#170'ew'#205'6?'#132'N'#237'0Q'#244#190#131#194'$Te'
+  +#164'7'#174#162'@'#145#222#231#248#135#1#239'V'#169'&#'#141#183#200'A+'#148
+  +'4'#252#148'N'#216#127'Mx"Y|'#211#214#170#12#128'VE>C'#242'T'#143#209'!'#134
+  +#168#245'B'#253'#'#188#143'['#181'4'#140#174#20#198#209#155#164#196#127#209
+  +#130'$'#225#142'V'#154#232#183'R'#154#170'4'#3'o'#26'9'#253#179'i'#0'0'#138
+  +'Y'#11#19#197'>'#209#176'd</'#11#228#21'g'#193#188'T'#199#172#222'8'#227#188
+  +'_'#193#239#185'|'#21#207'Et'#234'QO'#144'O'#247#244#182#249'-B'#211#242#233
+  +#156'L'#174#175#238#3'N'#215#24#166#129#24'x9'#16#164#188'm'#245#240'h'#229
+  +#142#205'(D1P'#193#137'j'#242'Dt3'#192'"E'#168'j'#20#235#0#28#219'#+"'#15#181
+  +'<'#20#24#226#26#28#215#2'$'#0'<'#163#2#23#133'G'#12#227'Q'#171#134'_'#28#27
+  +#188'ne'#169't'#5#0'8"*`'#198'r'#187#227#199#214#206#170#196'Pa'#191#220#255
+  +#205#10#24#230#177'D'#147#136#144#149#162'4'#205'T'#199#197'Bz'#138#27#249'|'
+  +':'#206#200#251#181'X^9'#188':'#211#174'J"'#146'W'#150#170#225#19'?x'#167#185
+  +'C'#190#166'q'#25#163#193#250'#Uv'#213#170'e'#219#198'3'#172'.'#140#139#3#190
+  +#200'9'#178#160#15#206's'#165'~'#182'JL'#8#240#22'F'#223#5#128#17#133#181#192
+  +#22'='#192'2'#19#2'LGr'#137'-'#213#1#252#144'Ol'#135#239#206#216'i'#203#8'>'
+  +#197#170#163#254'2'#213#23'Zbm'#255#30#253#216#130#226','#145'#q'#155#14'7g'
+  +#0'N'#26#0#203'd'#158'|'#221'u'#215'e6'#167'6Hf'#19#237#210#30#142'[o'#208
+  +#135'd'#17#221'u'#198#197#227#225#204#196#176' U3'#196'f'''#254#139#135#170
+  +'1'#130#136'D'#191'Xd'#222#29'"'#128#196'='#17#186'ZC=:'#149'5'#179#4#194'G'
+  +#241'Vu'#133#133#227'^'#27' '#219#134#221#15#154#25'Wq'#23#30#180'?'#231'&'
+  +#183#135#214#179#13#204#240#26'I'#143#175#229'/'#235#19'`pG'#194#171#31#4#191
+  +#136'f'#27'W9<H'#15'Wz'#31'k4_'#221'k'#218'Rs>'#135#157'M'#162#187#12#12#174
+  +'Q'#1#15#226#0#143#142#145'#b'#243#213',g'#181'+p'#140'3h'#164#159#19#23'Y'#6
+  +#166' '#225#188#17'!kU'#190#154'd'#21#138#175'L'#12#24'Z'#227'[Nnf'#166#150
+  +#209'6v'#207'"'#4'$'#207#192'[A"'#229#20#172#1'"'#239#129'rC'#239#185#231#30
+  +#18'Pu'#211')'#238#146#167'<s'#244'y'#246#200#175#193#251#154#8#199'Di'#195
+  +#214#237'8T'#212'w'#5#246#248'!'#21#225'iyv'#162#5'{El'#252't'#251#237#183#7
+  +#0'YD'#154#182'S'#15'Y'#167'''>'#155'c;'#175#159'Y&H +'#234#196#248'h]Pv'#154
+  +#175'N'#234#191'kPV'#183'i'#240#202#19#148#231#130'iX,'#162'P'#128#26#17#12
+  +'0'#201'C'#250#198#238#230#140#7'c'#238''''#23'T,'#143#220#180#140'A'#202#153
+  +#1#156'} '#0#16#130#25'03'#248#248#199'?'#142'['#169']'#234';g'#25#211#229
+  +#174'5'#230'B'#11#15'X5'#253'h'#169'+'#21'\'#166#16#150#161'|'#232#13#140'@'
+  +#27'fo'#245#198#204#8#233#249#200'%'#178#247#206#139#189#162#184'I'#0#137#1#0
+  +#161#14#0#138'%='#208#2#242#0#16'''V'#173'('#234#15#183'"'#211'P'#255'?'#173
+  +#218'i'#167#157#230#179#216'x'#139#19#196#133'x'#145'xT+'''#129#234#155'J'
+  +#151#1'0'#177#138'%'#0#141#189#229#13#23#184#140#161#242#23#127#12#0#22#14'a'
+  +#247#7#128#6#160'sy'#165#183#221'v'#27#5#205'N'#226#5#28'a'#204'hj0'#133#168
+  +'z0'#234#235':'#234';'#24'#'#150#24'V?'#166#156'g\PR'#130'!!}'#229'^t'#8#204
+  +'Y'#221#130#183#153#162'b'#253#12#175'O'#199#233#195'"6'#4#136#21#217#180#1
+  +#133#204#178#1#249'0'#173'9'#211#150'9'#11#186#228#188#11#6#128'H'#31#245#139
+  +#141'c)rc'#140#230#210#212#14#129'k='#7#237'n'#184#225#6'C'#192#206'hZ'#153
+  +#28'l'#142#217'{n'#218#15'A|'#205#12'$'#1#208#2#128'['#141#4#24#209#129'v'
+  +#202's'#135'P'#7#165'0'#29#233#195#191#152#142'/Q'#156#196#240#134#253#227'}'
+  +#212'w'#156#248#199'}H'#131#5'&'#139#4#225#240'>n'#162#238#143#28'9'#210#154
+  +#137#167#20#239#140#232#168#220'BJ'#185#145#179#230#220'I'#226#194'`P'#8'k^P'
+  +#19#168#188#160#140'P'#138'8'#3#160#195'h'#145#209'J'#5#233'*'#237'?'#18#144
+  +#254'qF'#255#253#215'e<'#31#0#27'5'#173']V'#178#131'<'#17#10#157'Z'''#214'@'
+  +#130#238'<7'#236#139#214#141#3#150#244#251#203'['#223#250'VZ'#151'27"\'#181
+  +'?'#0#140'p'#187'g)'#232#0' '#245#149#25'4'#158'*'#146#21#226#127#224'N'#211
+  ,#251#148#224#24#0#195#158#192'5'#143#19#11#16#228'&'#186'd'#171#149#244#138
+  +#172'OP'#182't'#146#210'{'#170'd<'#249#251#133'?'#11#1#181'`'#199'#h'#30'P'
+  +#197#154#205'y'#128#243'U'#210'r'#13#147'X'#152#129#230#196#167'a'#176'f'#129
+  +#245#223#175'`'#195'g'#250'L'#239#183#197'Ao'#29'0Z'#236'At'#152#226#144'x'
+  +#145#16#248'W'#216'''y'#152#175'%n'#210#175#147#179'm'#223#208#220#237'@'#18
+  +'0a/c'#246'`'#19'%'#18#224#193'<z'#200'g|'#210#185'e9'#164'y'#243#255'`c'#156
+  +'e'#171#3#128#4#148#178'ZR'#230'G>'#242#17#146#136#190'-'#148#183#144'R'#230
+  +#200#141'7'#222'8'#239#197'('#172'_'#190#27'['#205'M'#234'J'#220#128'.\XZ'
+  +#168'(BS'#170'-3a U'#203#160'j'#166'H'#182'4'#197#147'$@'#136#1#131'u'#8#141
+  +'Y'#11'B'#235'F'#9'n'#168#198#252#208'~%'#197'V'#31#178'd'''#132'.'#194#216
+  +'zYc'#207#253#155':7'#254#210#18'S'#203#183#7#178#1#1#128'+'#209#8#201'z'#240
+  +'D'#172#150#241#253#135#172'Z^0'#252#11'Z5'#25#1#149'N'#148#202#153#3#138's'
+  +#219#11'O'#29#181'e'#174#29','#224#169' '#159'y#~'#169'F'#0'='#211'V'#153#162
+  +#187'U:'#168'Z'#10'N'#244'k'#165#26')'#162'-'#177#160#194'Me}5'#139'd'#183'S'
+  +#29#25#207#7#237'4<'#228#12#230#245'_'#184#234'C'#197'Vr'#142#219#26'D'#11#21
+  +#131#170'Bas'#177#169'z'#217'<'#180#194']'#158#2'x'#143'6'#240#178#152'p'#143
+  +'['#209#165#7#242#130#160#228#210'/~'#241#139'XoB'#211#236#207',R'#143#27#170
+  +#211#232#238'`'#166'`'#5'lu'#162'YX'#1#219#217'H]'#188#30#19#149'hoR'#211#206
+  +#147'j<uP'#174#156'A'#150#2#13#158#146#250#137'E'#133'"&o'#163'4'#205'v'#203
+  +'`'#246#137#134'N'#164#214#175#238'P'#168#28#168#158#206#186'f'#201'&'#248
+  +#243#136'U'#155#133'F'#200#185#6#149#177']Y'#230'ez'#229#2#240#226#170#215
+  +#213#148#200#197#147#194'T'#170'D9N'#168'T'#30#141#206#211#31'%lU'#181'b'#159
+  +'y@'#139'e'#213'xg0+%'#133'Iu'#136#200'W'#30'fY'#27'W'#167#207'Y'#181#9'B'#24
+  +#131'N'#148'9'#211#26#178#142'VL'#163#205'='#238#128'@E'#182#245#149#166#186
+  +'p'#213#252#165#245#134#201#5'Z'#18#209#176#167#128#150'V]'#156#182#13#183#30
+  +#0#179#23#238#180'r'#29'['#15#232#213#2#165#0#163#5'w O'#134#165#245#196#178
+  +'%u;'#135'U'#207#233#22#226#2#173'V[K'#129'i{('#205'I'#16#245#193'M'#242#2't'
+  +#18#179'O'#181'"`'#148'af'#140'n'#162'o'#250#233#209#248#216'}'#170#152#189
+  +'m&<o'#151'@}'#255#137#250'|'#175'2Rqq'#249#192#200#135'v'#136#165#187'S'#170
+  +#202'A'#145#184#250#225'W'#0#20#25#213'!\'#153'1t'#222#175#249#133'I.'#240
+  +#250#4#161#131'*'#143#185#155#251#184'C'#245#127'&j'#157#6#11#131'*uM'#177
+  +#167'V'#196#8'Y+b'#149#30#170'hD'#161#142#177'79u'#134'STN'#223'&'#229#160
+  +#245#9#8#185#173'?Ve'#185#154'X1%E'#132','#186'1'#219'W'#219'"'#240#228'Uk'
+  +#157#0#195#225#212#182'q3i'#220'n'#206#197#178'l'#209#238#0#180#226#1#165'V<'
+  +'*'#233#136#17#170#146#218#222#168#178#177#193'[}'#158#194#162#23#175#218'E'
+  +#171#214#190#209#138#166'_'#188#211#218#193#1#173'"wh'#205'T'#20#128#156'T'
+  +#131'Z'#10#173#181#167'<'#25'0'#24#21'm'#222#156'>'#12#218#136'Q'#234'j{1'
+  +#182#172#9's'#189#154#244#229'M'#205'z'#14#198'B'#196#138#220#149#1'FUB'#26
+  +#225'0'#248'd'#158#21#28'l^'#130'84'#18#197#208'.'#221#210#185'+'#175#21#138
+  +'>Q'#191#197'Z'#24#23#2#202#241'['#174#134#238#14#128#159#249'[:JaM5t'#157'k'
+  +'C'#26#147'2'#145#253#217#172#140'Y'#224#225'<.'#128'G'#249#132'-'#12'`'#222
+  +'6P'#22#169#174#176#225'r'#157#175'<'#209#241'bK'#146'h'#177'~&S9'#21#196#197
+  +#221#178'i'#233#162#138'I .'#15#173#173#0#147#21#209#206#250#178'"'#170#18#17
+  +#239#207#22#7#20#188#253#246#219#157#7#27'%'#198#248#207#251#128#10#211#182
+  +#137#195#205'3'#155#147'e>'#249#0#179#148#6#167#140#1'j B'#203'ShB2'#244'3'
+  +#207#27#251'o.'#11#239#2#0#199#31#188#5'['#168#29#140'F'#243#182#164#158#166
+  +'FS'#8#183#21#196'y'#170#185#216'2'#168'K'#215'n'#245'10'#218#195#222#2'd'
+  +#222'a'#230'n'#194'5'#229#137#142#23'X'#154'P'#238#224'd'#172'4'#171'X'#150
+  +#255'v'#127'O'#228#14'T'#199#22#21#12#15#153#218'ER'#221#168'ZDo'#175'@'#153
+  +#219's'#13#254#173'RN'#229#241#201#211#148#229#133'G'#197'r'#128#231#202#181
+  +'*@'#147#17'3'#155#165'i'#8#248#145#152#182'+a'#17#148#153#2's'#200#232'>'#30
+  +'Z'#225#210'e'#132'q'#151#245#0#214#25#218#188'.'#143#167'RY0'#172#141#136'%'
+  +#245'#'#226#172'K'#204#150#232'j'#195'h'#12'];'#8'+^U'#22'q+'#192#254'5'#177
+  +#226#153'6G'#247'I'#145'+'#22'V<'#160'9'#209'f'#246'.'#195#224#233'm@'#195
+  +#176'F>'#229#128#154#169'-'#235#176#244#21#179#147#230#244'~'#213'6'#171#171
+  +'V'#225#131#4#165'Md'#21#186#168#184'Gy%'#173#30'#'#136'9'#240'2'#215'sR'#184
+  +'*3'#231'&'#240#171#152#4#142#196'|>'#25'Kz'#219'y'#191#182'a'#216#245'k'#17
+  +#198'u'#0'R>'#252'$'#207'.'#175#31#158'X'#30#249#242'sfQ'#180#233'5'#29'W'#25
+  +'G\S-'#0#10#177'='#205#206#231')UG'#160#168'QS'#182'BFC'#250#161#251#132#195
+  +'&2'#211'O.'#11#3#127'g6z'#9'A3'#251'<k>"'#18#151#237#252#245'U'#155#220#208
+  +#242#162'K'#219#234']4'#213#134#141#223#179#19'm}'#169#156'A'#179#141#22'''f'
+  +#23#219#151#191#252'edY+'#13'=%'#216#203#204'H'#143'!'#5'9h'#145#213#241#20
+  +#204#216#171'b'#221#250#146#228#136#21#157#133#253'q7'#205#131#247'Q'#255#244
+  +'U+'#192#212#10'Q'#30'.'#204#219#148#219#214#1#159'm'#236#175#172'vu'#236#155
+  ,#250#251#251'P'#191#164#232'%'#233#163#251'Z'#155#0#25#180#154#160#146'!'#130
+  +#216#6#13#252'1{q[A'#227#165#180'?'#160#212'h'#199'U'#211#193#254#165#216#232
+  +'^e'#158#218#247#251#154'U'#155#133#185'6'#15'W'#29'y'#226#228'dkj'#169#172
+  +'e'#8#180':'#13'`'#215'Tl'#164'-'#230#189'S'#193'q'#233#251'~-[}sq'#233';'#0
+  +#152'W'#219#24#15#223'N'#159'pY'#211#221'"M'#179#206#133#154'mSa'#132'i'#27
+  +#19#209#246#218#181#143#163'N'#148#169'P'#29'{w(+'#180#133#167'a'#252#189#232
+  +#190#134'A'#0'L'#254':a"'#148',?'#13'[l'#171'='#26'h'#221'*'#194'l'#17#240
+  +#181'='#248'4'#128#203#168#151#166'l'#249'r'#203#10#221'-'#210#149's'#223'&'
+  +#178#204'{'#165#182#216#237']_3=oc'#242#244'Rx'#200#13#233'A'#189'Y'#224#171
+  +#144'\'#169#196#187#228#134#174#233#159')'#2#17#0'zf'#168#173'vR>g'#175'Z'#19
+  +#174'I'#136#4'@oP'#203#231#171#222#21'V*'#143#200#240'J'#203'E8'#134'4'#189
+  +#159#138#223#194#248'k'#0#204#18'U'#217#187#30'M'#173#181#13#223#179'n'#186
+  +#233#166'^'#23#179#150'At'#207'='#247#196'O~'#197#251#217#201'tt'#185'CM'#0
+  +#155#157#176'Ux'#165#253#7#205#218'R'#170'M'#220#162#227#230'k'#166#143'}'
+  +#231'.s8a'#133#143#237'4'#199'm'#31#218'R'#198'ow'#0#252#19#248#186#203#166
+  +#235'_'#243#195#9'o5'#207#166#130#252#196#220#235't5'#197#219's'#154#0#182
+  +#183#223'y'#206#128#203#6#128#194'^'#7#151#128'tT'#250#135#250#202#8'{4'#242
+  +#233'[F'#152#185'"'#227#155#25'D%OT'#146#155'Va'#153'b'#8#255'-f'#215#250#140
+  +#198#168#176'R'#192#160'Tg'#215'fUB'#167#232#25#159'p'#237'5'#211'='#232'x'
+  +#223#205#190'?'#0'l'#192'$'#233#145'J'#29#210#221#210#161''''#194#165#187'N'
+  +#242'D'#169#160'Iq'#168#194'OU'#135#219#201'_e'#127#158'(}5k '#203#205#1'[l@'
+  +'gr'#132#154#19#180#143#12#189'<'#186'T'#228#146#12#176'g'#219#225#150#25'D>'
+  +#219#163'@'#154'M'#208#240'D'#219#249'[A'#156#189#199#203#189#127#229#25#130
+  +#161#240#17#128'+?C'#184#211#230'{'#213#228#155#234'm'#149#142#220'k'#19#206
+  +'&'#245'w'#183#1')M'#14'C'#253#142#136'9'#245#237'I'#171#149#13'9'#249'U'#228
+  +#128#26'5'#200'eA'#147#222#228#192'[5'#7'&7'#179'r'#176#137#193#18#134'1'#188
+  +#173#205#150#160'0'#9#188'h'#212#134',Oi'#129'{vC,''8'#6#252#205'o~'#179#216
+  +'}i'#254'zR'#170's'#171'We'#189#149'?0'#217'+%O'#152#235#185#210#232#198'6'
+  +#20'F'#222'R'#147'o'#175#247#198'.7'#225#236#15#192#178'p'#201#172'xTG'#28')'
+  +#231'E9M'#214'9!'#237#153#153#137'q:'#180#132#200'\'#139#162'F'#206'S'#178#6
+  +#214#130'm)'#11#249'B'#193#16#18'k'#187#198'J'#15#201#253'G'#169'R'#163'J'
+  +#206#1'9'#129'+H'#240#209#143'~'#180#224#226'Z'#6#17'$'#216'='#12'k'#8#189
+  +#168#10#31'p'#157'['#194#155'5'#212#166#220#173#158#142#131'W'#20#19#6'%'#209
+  +#24',]'#215#11#3'z'#205#244#178#8#248#242'm'#201'8'#253#232#209#163#21#6';'
+  +#224#187#14'w'#153#7','#247'ur'#194'hX'#227#172':'#194#218#11'Lq'#199'D'#160
+  +#180#210#164'a'#0#173#162'`M'#202#202'cd'#177#195#160#228#153'"'#16#5#30'f'
+  +#167'F'#159'm'#216'k'#2#188#150#134'_'#250't{r'#218#14'W'#137#194#205#12'"'#6
+  +#0#159#146'c'#151#233#6':'#230#206#181'r'#219'Lp'#30'W'#10#193#228'1L2'#15']'
+  +'d'#128'W_}u{u6%'#224#196#184'~'#27#0#155'&'#165#189#2'F'#194#10#205#206#247
+  +'*h'#182#14'Ub'#12#189#140'k'#138#148'9'#207#24#188'~'#213#218#217'\'#234' '
+  +#12'J'#135'"'#236#179't'#23#18#181#242#9#10'<'#148#138#28#227#151'Z3'#233#211
+  +#197#182'ZU.'#186#178#153'A'#132#19#245#159#249#229#155#1#12#251#211']'#224
+  +'o'#25'2'#234'O'#228'#'#200'=}rX<'#145'"'#2'@e7'#10#230',m'#0'65'#201'81'#189
+  +#191#13#128'c{'#152#148'#G'#142'4'#159#236#213#154#230'>'#229#199#165'aJ'#7
+  +#215#221#146' K`'#234#229#23#133#136#11#22'N'#2'l9'#148#204'r'#175#14'4'#230
+  +'fy'#14#232#168'^{U&O'#254'IQu'#146#212#182#189#146#215'Q?'#213#191'k'#6#17
+  +#129'@)'#28#195#132#226#9'w'#240'P'#183#133'k'#187#4#151#235#192#169';'#24
+  +#144#140'^'#163#215#187'$'#193'F'#235#246#6#148#165#23'T'#253'M'#237#196'<'
+  +#159'}'#0'8'#182#183'I'#233#245#216'-'#138#246#190#212'^b'#132'M'#202#152#172
+  +#230#198#172'['#181#201#191#154#179#189#160#136#196#16#133#18#137''''#163#180
+  +'Bg'#179#18#210#222#155#138#31#181#243#4#233#171#128#209#182'd'#154#135'..wz'
+  +#215#228#209'c;'#201'['#158#174#135#250'F@'#221'?/`'#205#21#158#133#248#0#152
+  +#141#143#0'`'#216#140#136#238'-'#163'v'#230#1'S{v'#251#6#252#131#148#240#222
+  +#231#29'2k'#149#222#205'q'#154#248#181'>'#204#5'l'#129#140#144#150'1'#233#152
+  +#209#166'.{/|'#133#185#155#163#151#218#222#226'-'#130#146#149#10#236#180#201
+  +'`'#178#216#203#160#198#239#189'3'#161#178'7'#243'z'#200#222#153'P6'#209#188
+  +#168'sW'#157#235#164'kf'#155'x'#155'dIX'#177#144'M'#0#154'j4'#215'k'#178#141
+  +'E`'#207#151#195'Ll'#225#176'v'#188'O'#8#246'-Aq'#144#18#222#199']'#182'r'#22
+  +')A'#205#195'+'#138#219'k'#213#166#10#27#26#161'{'#140#208#174'?H'#204#206
+  +#239'*'#16#246#134#25'`PM'#149'~'#155#170#231'EfZ'#139'/a'#29#221''''#166#127
+  +#235#173#183#150'F'#215#6#224#189't'#174#145#127#230'3'#159#241#223#0' O'#0
+  +'('#24'5Np'#190#239#228#2'9'#223'l'#131#10'*'#220#212#11#128#140'(G'#171#7
+  +#165#250#211#4'['#138#176#28#176#132#247'q'#3'0V'#218#248''''#250'Q1'#145#234
+  +'3'#183#183#2#129'z'#175'V'#182#228#206';'#239#140'Yx'#141']_'#241#249#222'U'
+  ,'E'#177#20#195'('#20'\'#129#167#225#166'J'#170'V'#175'Ks'#231#190'n'#215#185
+  +#0'`'#174#220#170'}'#250'#'#1#147#8'4'#161#192#162#173'3'#217'f'#3'z'#151'-q'
+  +#196#25#164'VO'#152#192'qof'#186'Z'#173'S'#191#238'Z'#134#232#128'%'#188'O'
+  +#176'rn'#24'`@'#204'XY'#154#222#139#209#154'_'#218#185'"'#24#188#145'v|'#204
+  +#171'jo'#187#237#182#150'G'#218'H'#173#175#243#137#220#213'ZZ'#22#18'n'#131
+  +'B'#249' '#7#215#185#136#5'9'#228#160#244#184#146#244#201'Z'#22#208'r'#5#162
+  +#25'_'#193#190#201#136'f'#171'x\hJ'#236't'#227'['#171#151'gg'#29#27'{'#239'y'
+  +#160'y0'#13#234#243#188'}N)'#222#181#233#194'a'#2'pl'#145'0'#17'#'#244#214
+  +#140#150#156'Jo'#198#254#203'J'#209#229'tVS'#224#238#187#239#214#173'o'#236
+  +'4'#196#157#131#140#219#20#20'X'#26#158#169'ky@'#157#155#13' I|V'#150#191#136
+  +'lY'#148#229#163#175#21'Jh'#171#254'l'#22#231#245#178'C'#12#0#157#9#0#195#156
+  +'B8'#237#169'>'#149#18'plg3S'#133'Hzq'#198',EU'#23'q'#243#189#223#203'l'#231
+  +#205#154#188#13#172#212#196#10'''U'#220#190'j'#27#149'!h'#247#253#1'un^'#16
+  +'u'#199'%c]8'#202#166' t'#203#152#129#180#208#204#186#199#0'L'#233#1'n'#2#183
+  +#130#146#236'='#148'S'#10#202#208#230#141#235#167#192#6#28';'#158#2#151'k'
+  +#239#253#222'5'#223#127#249#30#130#166#26#189#144#169#21#246'6'#221#243'z'
+  +#171#251#214#187#14#155#153'o'#231#184'v'#209#160#29#27#195#176#155#172#240
+  +'D'#249'6%RN<'#170'V'#204'cv'#235'3'#0'\2'#138#139#155#192#205'k[+'#181'Y~'
+  +#234'x'#253'-s'#254'{{Ak'#27'Z'#167#186'A'#189')'#139'v'#203'{'#191#215#230
+  +#171'k'#239'!'#152#215#23'U'#150#16#137#167#14#232'l'#192#207'tW'#214'u'#139
+  +#206#157'}d'#208#226'S'#153#139#21#137'c'#138#151#241#168'r'#185'g?E'#201#204
+  +#147'M'#206#6'p'#198#170'I'#215'+'#204'z'#147#240#178#18#8'f/'#7#224#240#231
+  +#1#187#182#229#150'n'#156#222#203'n'#230#13'b'#216#182'7'#30#245#182#150']'
+  +#223#251#189#20#201#181#247#16'T'#22#161#23#226#230#158#230#155'N^bo'#151#212
+  +#166#248#243'^'#18'0;)'#209#14#138#238#208#202'D'#241#168#217'LQ'#139#247#139
+  +#2#21#13#173#2'q%'#216#155'WV'#177#237'='#239'y'#207#18#140'R]'#140#180#183
+  +#226#28#218'Lx'#175'6E'#13'P'#179#133#214'*'#11'Q'#11'hW'#146#218'{'#223#251
+  +#222#222'{'#212#251#142#183#188#247'{'#237'='#4'Hi'#168'H'#223#27'1J'#238#156
+  +#228#151'^'#200#208'['#149'+'#152#214#174#202#189't'#238'r/q{'#249'`'#201#31
+  +'m'#11'|'#129#16'0'#156#185'j'#166#190#229#210#154#135'W'#150#23#0#180#214
+  +#178'"'#189#201'`'#239#182','#27#236#134#27'n'#232#245'a'#213'}M'#214#15''''
+  +#22#180#165'Mu'#167'j'#12'g'#127'z'#161#8#138#188'e'#213#232#220#246'R'#181#1
+  +'f'#203'{'#191#151#239'!'#160'F'#252#151#178#142'F'#165','#206#187#221#157#1
+  +#201#139'_'#252#226'y)F'#175#213'h'#177'pW'#157#187#185#155#190#221'd'#213
+  +#171'('#151#178#186#153#213#2'D'#250'R'#169'{'#245#241#188'N'#219#164#189#205
+  +#204'M'#245'gg'#167'1N'#230#4'Rp'#175#141#238#16#162#161'['#218#20#182')U'#29
+  +#239#27#24#141'\'#30#202#181#215'^'#171's'#230#183'1)'#24#16'('#229#176#215
+  +'{'#191'7'#151#160#175#186#234'*'#227'o'#207#244#164#138#166#22#152'P'#20#185
+  +#230#154'k'#170#201#226#250#202'!'#239#165'sw'#173''''#209#27#15#171'h'#208
+  +#30#255#167',Z'#235#195'Sz`*/'#148#169'X'#213#246#192#168'&I'#203'd'#132'@'
+  +#31'J'#156'^'#171'ht'#200#0#140#187'25'#206#171#167#213#235'@'#244#12#127'U'
+  +#203#188'b'#206#149'd'#136'Cw}'#239'w'#0'L}'#158'b'#6#12'`'#9#163#165#192#180
+  +#219#150#229#196#158#237#21#245#184'y'#151'o'#5#193#151':wJ'#247#181#215#188
+  +#247'kmVT'#209'[4'#229#231' q'#11'J'#189'x'#250#138#239'lU'#179#232#160#221
+  +#241#240#152#152#227#148#181#152#242#184','#255#193#233'y'#220#0'T'#220'lx'
+  +#170#18'*x'#159#222'h'#207#127'y'#162#149'lAMF'#178'E'#140#189#222#251#29#0
+  +'x'#135'0'#1#192#144#12#239#194#11'/'#204'Qy'#248#170#141'y'#164#139#16#8#255
+  +'V'#19#172#194#156#21#163#26#157#171'-#'#184'M)*w'#225#226#205#154'BeP'#185
+  +'gUX'#27#2'9k'#253'u'#210'['#151'"R'#137#208'^'#208#210'n'#195'Rw{m'#146#201
+  +#218'q'#189'J'#245#248#0'X{'#235'q'#251#179#12#163#247#218#148#144';/'#144'!'
+  +#167'e'#229'my'#235#241'Z'#26#18#162#204#148#149#230'i'#157#160#236#232#234
+  +'(63'#162'I'#24#140#22#3#220'-'#157#27#245'7'#151'G|'#206'K.'#209'h'#173#170
+  +#214#188#22#175#149';'#226#171#3#20#20#12'JZ)'#167#184#189#149#5#201'K'#249
+  +#175'6'#252'r'#140#180'hZ'#168#10#16#255#30#0',_;'#141'e* r'#217#170'a'#165
+  +#10#195'l'#127#239'w^P'#155#29'X3p'#26#146#193#183#223#10#209#171'W'#159'c'
+  +#14'Z'#4'B/'#142#224'Z'#154#241#188'~`sy'#4#239#127'a'#213#10#225#233#195#178
+  +#174'\'#239#199#155'w'#194'Q'#164#189#145#134'^'#242#184'K.'#185#164#252#137
+  +#10'`'#232#9's]'#205#133#170#21#182#244#164#219#189'3'#201#205#217#225#131
+  +#212#10'='#28#0'N^'#2#142#237'$'#194#160'fn('#245#146#179#24#247'QG'#21'}'
+  +#161#127'i'#185#182#24#146'w'#29'X&'#154'm'#175'O'#204#0','#223#162#184#172
+  +#172#168'c'#149'%'#166'*'#203'$'#163'N'#171#174#230#137#248'`'#234'I'#212'f'
+  +#195'e'#133'Wti^'#144'0'#197#5#219'xt'#175#0'p'#232'6'#224#216#142#175#210'k'
+  +#172#184#19'FR'#225#164'J'#220'WY'#136#19#146#243'CiLU'#224'qx'#214'^A'#179
+  +'k`'#0'i'#154#139#20#26#153#218#162#163#151#218#251'6'#155#253'0'#16'{'#131
+  ,#202#237#252#238#213#5#227#14#180'G'#193#5'd'#165'%R'#195'$R'#228'83p'#200
+  +#175'4'#159'v'#232'^'#208#242#182'0'#128#16'e'#213'j3\'#217#228#222#26#226
+  +#254'm'#196#232'e'#8'S'#171'8I'#159'\'#166#237#203'#S'#130#194#197'S]'#183'0'
+  +'b'#147'pW'#18#175'v'#1#149#198#209#166';'#10#176'"4'#205#215#232'"^rS'#229
+  +#202'.'#180'F]~'#198#150#23'5'#28#2#0#135'>'#15'X'#222#185#29'Q'#205#239'"GD'
+  +#236#157#148'H_'#2#250#212'*'#30#252#142'ky'#164#26#223'S'#134#167#192#242
+  +#145'#G'#218'q'#215#10'kUj'#137'r'#175#196#201#26'Mjl'#165#29'g'#167#212#218
+  +#30#166#189#222'Y'#127'8'#0#28';'#236#153#240'ZcK'#243#220'QjJg'#246'B'#2#194
+  +'1%T'#214#192';'#129#229#145'e0'#188'''z'#28'O'#172#4#222#148'jER'#171#134#4
+  +#131'Rc'#171#183#226#204'l'#23#172'Jh;'#0't'#18#0#189'2'#253#222#2#224'pcA{='
+  +#194#0'ph'#1#215'^'#186#234'x'#175'I'#230'I.'#16'N)$c'#169#14'@'#181#178#9'A'
+  +'!'#169#217#246'=;>'#157'q'#190#242's'#215']w'#29'C'#216#6#24#195'd'#225#214
+  +#10'<'#30'2'#0#199#14';'#26'z'#242#237#128'6`'#175#229#145'Xj'#185#31#148'4s'
+  +#4'J&'#131'A'#197#205#154#145'U'#168#175'M'#247#252#130')'#146'[=q'#212#192
+  +'a'#7#140#193'M;'#197#235#1''''#223#14#226#5'm_'#30'I'#8#202#9'G'#202#217'1'
+  +#9#131#166'f'#28#188'^V'#216#219#227#10'E,+l'#182#143'l'#146#148#238#173'y'
+  +#192'r'#204#135#184'"v'#242#237#128#239')'#217'ky$'#150'j'#187']'#222']J'#140
+  +#28#148';'#147#131'g'#190'Y'#185'Eg'#24#234#22#9'r'#243#176#157'!'#239'Z'#224
+  +'q'#223'vRk'#194#251#190#244'p'#175'5'#225#195'm'''#185'E'#162#225#28'=z'#180
+  +#146#251#21'e('#223#169#218#215#28#188#18#141'}:'#6'L'#241#240#217#255#5'9'
+  +#227'mw'#194#241#142#241#196#223')'#127#144#215'~NV'#196'^'#175'/8'#172'v2[$'
+  +#230#14#184#196#245#148'g'#181'pr'#240#248'E4R'#155#135'9'#169'S'#146#155#138
+  +#171'$w'#251#247'<'#226#196#204#219#137#3'0'#253#222#245#205'-'#189#248#246
+  +#128'9'#242#135#210'Nx'#139#196#242#14#21'g'#235']'#218'4{!'#163'^'#142'V'
+  +#185'>'#14#143'I'#9#198'o'#251'j'#225#216'|'#235#19'3o'''#11#192't}'#215'W?'
+  +#223#171'\'#191'k'#219#204'g=.'#248#211'E'#205'E'#10'b'#231#227#205#190#187
+  +'q'#240'0~3'#155#147'4o'#135#3#192#255'OmR'#158#130#161'h'#246'dEV'#229#195
+  +#228'y'#166'5''i'#222#254#3#128']'#218#152#183'Qh'#179#245#222'AN'#221'a'#153
+  +#183#255#3'6'#239'G'#236#149#202#146'+'#0#0#0#0'IEND'#174'B`'#130#128#0#0#0
+  +#128#0#0#0#6#0#0#0'Layer1'#11#0'0'#0#0'@'#127#255#131#254#253#251#3#250#131
+  +#251#253#254'@5'#255#197#253'Ug'#3#243#229#137#171#176'@"'#255#130#253#250#3
+  +#247#130#250#253'w'#231#148'Tf`'#3#236#231#138#170#203#192'@'#30#255#132#254
+  +#247#242#239#3#236#132#239#242#247#254't'#232't5Ef'#3#229#232#138#171#203#220
+  +'@'#28#255#1#253#203#245#19'6j'#173#223#1#253'r'#201#253'3DDW'#3#221#233#137
+  +#188#204#205#208'@'#26#255#130#254#245#203#236#17'5j'#189#255#1#245#217#254
+  +#151'23CFWy'#155#172#220#221#237'@'#25#255#132#247#238#229#220#199#212'#y'
+  +#222#132#220#229#238#247#203#255'22$4E'#3#206#234#139#204#220#238#222'@'#24
+  +#255#134#253#242#233#222#212#203#197#195'%'#190#133#203#212#222#233#242#217
+  +#251'B""3Eg'#154#188#221#238#238#238'@'#23#255#147#250#239#228#217#206#195
+  +#184#176#173#176#184#195#206#217#228#239#246#242#235#200#227#18'"U@'#3#190
+  +#235#140#221#238#239#238#240'@'#1#255#131#254#253#251#3#250#131#251#253#254
+  +'|'#148#247#236#226#214#201#189#176#164#159#164#176#189#201#214#226#234#236
+  +#234#226#218#214#210'!3Uy'#139#237#238#254#255#254#240'>'#255#229'uVp'#3#243
+  +#229#137#171#176'z'#147#247#236#224#212#200#186#173#159#143#159#173#186#200
+  +#212#220#227#227#226#218#199#208'!'#18'B'#3#168#227#156#208#196#190#239#240
+  +#134#218#224#232#239#245#253'<'#255#199#254'EFf'#3#236#231#138#170#203#192'r'
+  +#130#253#250#3#247#142#250#245#236#226#214#201#189#176#164#159#164#176#189
+  +#199#197#209#252#133#130#209#202#202#193#18'"$h'#192#135#168#177#184#192#200
+  +#207#215#197#223#255#255'u'#233#165'6['#173#176','#255#232#132'5Ef'#3#229#236
+  +#138#171#203#220#145'5'#3#236#228#135'2'#137#217#206#195#184#176#173#176#184
+  +#193#198#201#239#168'0'#131#202#193#186#201#178'"##'#142#136#160#172#181#190
+  +#198#206#214#221#196#229#255#240's'#227#193'0'#1#233#197#223'2'#202#132#228
+  +#240#247#254')'#255#201#253'3DDW'#3#221#233#137#188#204#204'P'#1#236#202#228
+  +'%|'#205'E@'#130#212#203#203#195'%'#190#189#220#166#131#204#195#187#201#179
+  +#18'#'#20#17#137#143#156#167#181#190#197#206#213#221#196#229#255#240'r'#133
+  +#253#245#236#224#207#197#195'$'#157#133#200#213#229#245#253''''#255#213#254
+  +'23CFWy'#155#172#220#212#130#224#217#198#209#20'|'#208#197#216#231'x'#204#212
+  +'#y'#154#186#184'@'#130#199#189#202#179'!"C5p'#137#144#155#166#178#190#198
+  +#206#214#221#199#229#255#253#135#144#245#236#218#199#182#170#162#159#159#165
+  +#175#188#206#227#244#254'&'#255#234'B2$4E'#3#206#231#139#204#220'P'#131#214
+  +#202#192#198#184#21#157#240#1#199#207#212#235#152'5hh'#153#182#132#203#192
+  +#183#175#202#167#20'4U{'#192#135#156#167#179#191#200#207#215#199#223#255#255
+  +#200#145#247#238#222#198#176#160#146#137#133#135#140#151#166#184#204#226#242
+  +#229'8'#154#144' '#255#244'r""#4Vy'#171#205#219#141#204#187#174#164#156#149
+  ,#145#147#156#169#182#197#212#232#203#197'fd'#4#216#132#210#198#189#178#203
+  +#169#18'&Wy'#174#159#160#169#181#192#203#210#218#224#232#239#245#253#255#253
+  +#242#231#205#181#159#140'}rnov'#129#144#163#183#206#224#199#241#169#154#187
+  +#30#255#235'Q"'#18'"3@'#3#190#229#140#221#160#143#196#178#163#150#137#130'zv'
+  +'x'#129#145#165#184#203#221#204#233#217'X'#21'Gr'#16#131#195#184#174#204#164
+  +#19'6x'#154#221#240#131#174#184#195#202#207#254#255#254#249'0'#145#239#222
+  +#194#168#144'|k_Y[bn~'#145#168#190#211#200#230#233#170#172#192#28#255#236#177
+  +'!'#17'!"2'#3#181#229#142#218'0'#148#175#157#144#129'ule^_j{'#147#172#195#214
+  +#234#245#250#247#244#199#234'S"#'#132#192#181#169#160#203#152'&y'#155#156#207
+  +#132#173#185#197#210#200#218#239#238#253#128#147#247#236#215#186#159#135'p\O'
+  +'HHQ^p'#132#153#177#199#218#200#229#154#171#203#240#27#255#138#253#245#239
+  +#232#224#218#210#203#196#190#202#182'4j'#204#197' '#149#160#143#127'qe[SNJ[n'
+  +#132#158#186#210#232#245#250#247#242#234#198#226#17'!@'#132#187#178#167#156
+  +#204#147'E'#155#169#154#191#192#132#175#187#204#220#199#229#238#238#168#147
+  +#247#236#211#183#156#130'kTA>9FVg|'#144#168#190#208#200#221#169#188#204#192#1
+  +#251#26#255#197#251#17#17#132#215#207#200#192#202#184#17''''#156#203'P'#149
+  +#164#147#131'seXNGDGTf}'#150#179#204#224#240#243#241#235#200#226#17#18'" '
+  +#132#173#163#155#144#195#136#155#5#144#227#219#240#133#165#175#192#208#224
+  +#195#239#222'r'#147#247#236#212#184#156#132'mXH>7DSex'#141#163#184#201#201
+  +#214#155#172#220#221#1#251#25#255#228#241#17#135#221#214#206#198#190#181#173
+  +#200#164#20#203#217'P'#149#154#140'{k]QG@;FSd{'#148#174#197#218#236#237#234
+  +#228#201#219#17#18'23'#131#160#151#142#204#130#254#137'eh'#173#224#135#160
+  +#175#191#210#232#247#254'r'#147#250#239#218#189#163#139'uaRJFMXfv'#135#156
+  +#176#195#203#206#155#204#220#238#223#24#255#228'q'#17#137#221#213#206#197#190
+  +#181#171#163#153#198#143#254#200'P'#149#147#135'vfWKC@AHVg{'#147#170#193#212
+  +#229#231#227#220#202#212#17'#$30'#131#152#146#143#3#144#199#143'2Vi'#136#134
+  +#142#157#173#192#212#237#253'r'#147#253#242#227#199#174#150#130'oaXTW]gu'#132
+  +#150#166#183#204#192#252#205#222#238#238#224#23#255#228'Q'#17#135#221#214#206
+  +#198#190#181#173#200#164#18#156#198'@'#149#145#133'veWK>CHO\l'#128#148#170
+  +#193#210#222#222#220#214#216#206#17'2DDT7'#164'b'#17#17'I'#208#136'}'#140#157
+  +#176#197#220#238#253'r'#136#247#236#211#187#166#145#127'r'#197'i'''#207#135
+  +'w'#130#144#156#172#177#185#202#195#237#238#239#238#240#23#255#229#145#17#16
+  +#132#215#207#200#192#203#184#17'$J'#165'1'#143#133'xk\OJKQYdt'#134#151#173
+  +#193#197#209#186#130#208#199'"$UVW'#149#149' '#155#144#134'}qfaaeo}'#142#161
+  +#182#205#225#244#254#255#255#254#245#229#206#184#163#147#133#198'y'#20#156
+  +#224#135#130#139#150#157#163#171#182#202#194#254#254#255#254#240#22#255#141
+  +#253#245#239#232#224#218#210#203#196#190#182#177#173#198#165'v'#149'0'#133
+  +#147#136'|qd'#197'[H'#223#133'p~'#142#160#180#198#197#249#153'@'#1#195#206
+  +#187'$FWiz'#198'`'#146#159#148#135'xj\TSXbq'#128#147#168#192#215#234#247'r'
+  +#136#253#245#227#206#184#169#150#137#201#128'&'#139#206#235#141#150#159#170
+  +#184#196#203#210#218#224#232#239#245#253#22#255#211#254#18#17#18#18'#$$gR'
+  +#132#150#143#131'x'#197'm'#19#187#134'p|'#137#151#167#188#199#197#153'yQ'#207
+  +#181'4Ww'#153#155#199#129#146#154#139'xiXHJNWdt'#135#157#182#206#226#242#253
+  +'r'#136#254#245#229#208#190#170#155#144#201#135'4X'#153#223#135#148#161#175
+  +#191#200#207#215#197#223#255#255#23#255#243'q"'#18'"3C#fQ'#16#131#147#138#128
+  +#197'v'''#156#133'~'#138#150#163#178#195#190#185#3#192#241'A'#19'F'#151#169
+  +#186#204#135' '#146#160#144'|kYNHCO\k'#128#150#175#202#222#239#250't'#137#248
+  +#231#212#192#173#161#148#139#129#197'yD'#139#137#127#140#155#170#186#198#206
+  +#214#221#196#229#255#240#23#255#242#178'""#4S'#20'Dd'#142#162#154#146#138#129
+  +'xvz'#130#139#151#160#174#186#3#189#211#188'wC'#18'w'#155#171#187#206#181#134
+  +#179#165#144'}l]'#197'R'#23#191#136'ez'#148#175#198#219#236#247't'#151#250
+  +#243#227#208#190#174#157#144#130'tjijjx'#136#151#168#184#197#206#213#221#196
+  +#229#255#240#24#255#242#130'2$4E23ED'#139#163#155#146#140#132'z'#131#141#150
+  +#163#173#216#182#201#135#134'T'#18'5'#187#188#204#206#220#16#136#181#166#147
+  +#129'pcYR'#3'Q'#136'd{'#147#178#199#220#236#247't'#151#250#243#229#212#195
+  +#178#161#144#129'qafko{'#137#152#168#184#198#206#214#221#196#229#255#240#24
+  +#255#243#195'#44e1BDE '#198#164#17'5'#176#132#155#164#173#180'A'#21#184#186
+  +#184#181#130#178#173#207#164#19#155#252#221#206#203#146#134#181#169#150#134
+  +'vj'#197'a3'#141#136'k'#129#152#178#202#224#236#247't'#155#251#244#230#213
+  +#197#181#163#148#133'wnmqx'#129#143#156#171#185#197#201#208#216#226#235#244
+  +#251#25#255#217#253'3DDW2$$5S26'#175#204#175#235#168#152'vU'#16#131#163#153
+  +#143#205#152#253#253#222#201#135#130#133#173#156#140'~s'#197'k'#23#127#136'u'
+  +#138#162#183#206#227#239#250't'#146#253#245#235#218#201#185#170#155#142#131
+  +'{z}'#130#139#150#162#172#197#183#253#254#132#218#227#238#252#26#255#220#253
+  ,'CTVe'#19'#4TTDj'#205#201#144#3#189#229'wF'#16#208#164#20#207#238#222#219'Gv'
+  +#128#133#179#164#147#134'|'#197't5'#190#136#130#148#168#190#211#227#242#253
+  +'t'#137#254#247#239#222#208#192#178#164#153#198#144'&'#174#240#141#159#167
+  +#173#181#185#190#194#202#209#220#231#245#253#26#255#211#254'EFfq"REF2'#3#181
+  +#130#184#190#3#192#217#194'wge'#17''''#158#254#238#134'VWt'#131#171#156#141
+  +#197#131#19#139#137#131#143#157#174#196#214#228#241#250#3#247#197#250#186'1'
+  +#134#230#216#202#188#176#166#206#158'E'#171#201#189#250#220#224#134#202#212
+  +#225#236#245#254#27#255#209#253'Ugt'#19'4DC4'#3#190#236#140#183#151'xgf'#199
+  +#182#19';'#207#1#188#203#196#183'SUVA'#130#160#148#197#136'&'#171#137#142#150
+  +#164#182#197#213#225#235#238#3#236#198#239#189#211#16#132#226#212#200#190#205
+  +#181#19't'#134'z'#168#172#136#179#185#194#206#218#229#238#247#29#255#222#254
+  +'vv2C23Eg'#154#188'wxwv0'#1#184#199#175'6'#139#255#201#193#247'44%'#201#164
+  +'"1E'#172#134#148#157#170#183#197#207#205#218#202#166#170#221#251'B'#134#225
+  +#212#204#195#188#181#195#173'F'#3#160#197#158'Y'#159#136#176#187#199#212#222
+  +#233#242#253'!'#255#1#248#201#240#17'6VE'#3#206#235#139#200'hwh@'#130#193#183
+  +#198#175'''{'#208#202#183#238#133'##'#16#1#155#200#147'$V'#140#224#133#150
+  +#159#171#184#192#203#201#220#140'j'#189#255#196#245#179'0'#133#224#214#204
+  +#197#186#199#176'A34'#3#144#137#150#162#180#195#206#217#228#239#250#31#255
+  +#195#254#19#1#234#206#224#17'g'#189#135'y'#155#160'A'#21#222#220#218#216#130
+  +#204#192#199#182#17'X'#189#200#181#188#169#18' '#131#164#155#145#200#137#19
+  +'h'#220#240#131#149#160#172#203#181#235#220'y'#153#222#143#220#229#238#246
+  +#248#239#233#222#214#202#189#180#174#164#154#199#146#20'w'#138#136#150#170
+  +#189#201#214#226#236#247#30#255#134#253#245#238#232#220#209#198#201'%]'#208#1
+  +#210#204#218#184#169#188#134'wp'#132#216#204#192#182#204#172'$z'#255#204#150
+  +#128#134#176#168#159#149#137#128#197'x%'#172#132'~'#135#147#159#203#169#205
+  +#217#184'x'#190#144#203#212#222#233#241#246#239#231#224#215#202#191#180#171
+  +#158#145#199#135'%hu'#136#141#160#179#195#208#222#236#247#29#255#136#254#245
+  +#236#227#214#203#193#181#197#172'Y'#222#131#194#209#220#202#228#170#171#183
+  +'w '#133#218#204#192#181#172#205#164'&'#206#254#170#150#17#141#156#144#132'y'
+  +'oieemw'#131#143#154#234'M'#202#169'e'#139#145#184#195#206#217#227#233#239
+  +#239#231#224#213#199#188#175#165#151#138#199#127'%'#169'}'#136#137#151#168
+  +#180#195#208#226#245#29#255#145#247#238#228#212#197#183#169#159#151#149#150
+  +#156#165#178#195#213#227#200#235#202#172#167'0'#139#235#221#206#194#181#170
+  +#160#153#150#154#162#195#171#237#3#184#143#177#165#153#140#129'tib^\gt'#127
+  +#140#153#195#161#204#3#172#228'qm'#131#176#189#201#199#214#238#218'A'#136#210
+  +#196#183#172#160#149#133'x'#199'p'#156#169#223#137#144#156#168#180#193#210
+  +#229#245#254#26#255#136#253#242#233#216#199#181#162#145#229#179'{'#240#134
+  +#150#164#181#202#219#236#199#245#171#186'd'#140#237#223#210#196#183#170#158
+  +#147#143#148#160#170#198#178#233#150' '#141#166#153#140#127'tg\^bit'#129#140
+  +#200#153#253#200't@'#134#150#140#157#173#186#200#199#208#255#201'C'#137#208
+  +#195#181#168#159#145#131'uf'#198'p'#185#201#208#138#135#146#158#167#179#195
+  +#214#229#245#253#25#255#149#250#239#226#206#187#164#144'~rllq{'#135#150#170
+  +#194#214#233#245#254's'#141#254#243#229#214#201#188#172#160#147#132#147#163
+  +#172#198#181#182't0'#143#160#151#141#131'wmeeioy'#132#144#156#164#3#165#198
+  +#162'd'''#240#131#171#188#199#199#208#221#201'#'#135#201#188#177#166#156#146
+  +#134#201'z'#22#186'z'#174#138#136#145#154#167#182#199#214#229#245#254#127#131
+  +#254#253#251#3#250#195#251#162#148#236#222#201#178#153#129'm_Y[_jx'#139#160
+  +#184#209#228#242#253't'#138#247#234#222#208#193#181#168#156#150#154#200#162
+  +#217#149#132'@'#195#150'#'#130#131'}'#197'uF'#190#132#128#137#149#159#202#167
+  +#133'fux'#208#130#172#187#200#200#253#204'b '#135#197#184#172#161#153#144#138
+  +#202#130'3'#149'w'#154#240#137#134#141#154#171#185#201#218#236#247'}'#197#253
+  +'Ug'#3#243#227#137'0'#148#232#216#197#174#146'zdONMR]l'#128#150#177#202#222
+  +#239#250't'#136#250#239#228#216#204#192#180#168#213#160'HrezuFds'#138#223#130
+  +#145#155#203#165#197'gXY'#142#131#175#188#199#199#209#203#164#18#132#193#180
+  +#168#158#206#150'%TTDF'#139#208#137#129#143#157#173#190#209#228#242#253'z'
+  +#199#254'EFf'#3#236#227#138'0'#148#226#212#195#171#145'zdTKCKTdz'#145#172#198
+  +#219#236#247't'#138#253#242#233#222#212#201#187#175#162#152#211#144#18'5'#138
+  +#169#153#170#137#138#206#1#155#204#163#219'eU'#135'{'#240#142#178#189#199#208
+  +#216#218#218#210#203#196#190#177#165#156#200#148'G'#152'%0'#198'z36'#192#137
+  +'w'#130#145#163#182#202#222#239#250'y'#200#253'CTV`'#3#229#228#138'Q'#136#209
+  +#193#172#150#128'l]R'#3'N'#135'cz'#146#174#195#214#229#196#240#251#176'r'#138
+  +#247#238#229#220#204#190#173#157#143#130#222'y'#17'h'#170#237#253#189#203#171
+  +#238#249#169'3GY'#192#142#170#181#191#200#209#220#222#215#207#200#192#184#176
+  +#164#202#152'&'#140#153'!'#16#142'zsk]dlw'#138#157#177#198#219#236#247'x'#201
+  ,#253'3DDW'#3#221#228#137#162#164#210#196#176#156#138'xj_[Y^m'#129#152#172#191
+  +#208#217#225#227#228#228#236#245#250#252#245#236#222#208#189#172#151#134'uk'
+  +#198'b$'#152#192#133'epz'#132#140#210#148#206#187#207#214#151'c'#17'i'#224
+  +#143#172#184#195#204#214#223#221#214#206#198#190#181#173#163#151#200#143#155
+  +#234#146#16#143#135#128'vmedbu'#136#156#177#197#218#236#247'w'#210#254'23CFW'
+  +'y'#155#166' '#143#199#184#165#150#135'{qllr}'#142#159#175#188#200#197#200'F'
+  +'l'#208#140#212#220#226#225#216#202#187#167#146'}k\'#198'S4'#137#224#134'[iv'
+  +#133#144#154#204#163#251#204#217'wt@'#158#167#156#149#152#163#175#189#199#208
+  +#218#222#221#213#206#197#190#181#171#163#152#138#145#153#158#164#160#152#145
+  +#137#131#197'x'#19#141#136'}'#142#160#180#201#222#236#247'w'#202#250'#"CDP'#3
+  +#206#229#139#203'`'#141#205#195#178#164#153#143#134#130#130#134#144#156#168
+  +#198#176#217'! '#197#154'W'#174#139#168#179#185#187#184#173#156#138'ubR'#198
+  +'H3l'#224#134'Sdv'#135#149#162#204#173#255#172#201'eU '#135#172#157#140#154
+  +#168#180#197#198#207#253#183#16#133#206#198#190#181#173#201#164#20#189#217#19
+  +#1#145#198#136#18'6'#176#137#127#138#154#170#187#206#226#239#250'v'#212#253
+  +'"""3Eg'#154#188#219'p'#131#206#193#181#203#171#18'9'#236#253#132#132#161#147
+  +#139'~'#197'vE'#140#139'|'#135#145#154#157#156#144#131'm[J'#198'@'#21'O'#208
+  +#136'Qex'#139#158#171#185#192#201#200#171#215'UD'#136#187#176#164#159#164#176
+  +#189#201#197#210#236#184#132#215#207#200#192#203#184#17''''#156'F1'#1#139#199
+  +#131'5|'#223#136#151#168#182#199#216#233#242#253'v'#203#250#18'!"#4'#3#190
+  +#232#140#221#237's'#1#200#201#191'CY'#171#132#134#172#156#140'|la'#198'X%'
+  +#139#240#151'enz'#127#134#131'ykVC<469>HXl'#130#150#169#184#197#202#206#250
+  +#173#163'T '#136#195#184#176#173#176#184#195#206#198#215#221#180' '#196#210
+  +#17' '#197#182'4i'#1#164#202#156'$'#17'%|'#224#137#143#153#164#179#197#212
+  +#228#238#247'v'#204#254#18#17#18#18'# '#3#181#241#142#188#207#239'cF'#135#131
+  +#16#134#183#165#142'zdT'#199'G'#17'h'#205#137'KR^fptqfY'#198'K'#20#140#240
+  +#136'Vey'#144#164#184#200#213#200#222#202#187#196'@'#131#222#212#203#197#195
+  +'%'#190#130#203#212#206#222#203#179#18#18'#%P'#131#164#150#142#199#133'DR|'
+  +#139#127#136#151#165#178#193#212#227#236#245#254'v'#138#253#245#239#232#224
+  +#218#210#203#196#190#202#182'4j'#167#155#192#132#191#200#210#220#198#230#185
+  +'tP'#137#216#204#181#156#131'jQA6'#198'.D'#170#192#137'6AJV_gkja'#198'Y$|'
+  +#240#136'fw'#140#161#184#202#218#227#199#237#185#188#195#131#238#229#220#199
+  +#212'#y'#222#1#220#204#229#218#146#18'"3@'#133#182#168#152#137'}'#199't%'#135
+  +#159#138#127#143#157#174#192#208#228#238#245#253'w'#197#251#17#17#132#215#207
+  +#200#192#204#184#17'&Fy'#204#240#146#181#194#209#222#236#247#250#247#240#225
+  +#205#180#151'y^F0*'#199'!b'#139#191#133'.;GTb'#201'j'#214'TH'#207#135'z'#139
+  +#161#181#203#218#234#196#243#248#144#4#250#1#242#203#234'"5j'#189#255#202#244
+  +#178'""3 '#134#191#174#155#136'xm'#198'd#{'#224#138'l~'#148#164#185#206#222
+  +#235#247#254'x'#196#250#17#16#137#221#214#206#198#190#181#173#164#156#200#146
+  +'D'#138#173#240#146#164#175#192#210#226#241#254#255#245#229#205#178#144'uYC0'
+  +'&'#199#25'U'#139#142#134'$.@M^l'#199'w'#202'h|'#135#135#146#162#182#200#220
+  +#236#198#245#246'Vp'#3#243#236'b5hj'#173#223#201#253'R2$3'#135#197#177#159
+  +#139'yi]'#198'T4'#138#160#137'f~'#148#171#190#210#229#244#254'y'#196#250#17
+  +#16#137#221#213#206#197#190#181#171#162#147#200#128#135'i'#155#240#146#146
+  +#160#176#197#218#234#247#255#246#228#202#173#144'tYF4&'#199#28'R'#132#200#137
+  +#31'&9M^p'#128#139#148#3#150#135#153#162#174#190#205#224#236#199#245#183'Ec'
+  +#3#232#244#140'F'#167#200#187#223#151'23A'#135#204#184#163#143'{k['#198'O'#17
+  +'x'#224#137'Nay'#144#168#189#208#227#238#195#247#187'w'#228'Q'#17#137#221#214
+  +#206#198#190#181#173#160#145#200#130#20'U'#138#224#146#132#145#163#184#206
+  +#228#242#250#242#224#200#173#145'x^J7*'#195'!2'#3#19#138#22'!,<Ndw'#140#156
+  +#170#197#178#199#207#131#206#217#231#201#242#202'C"T'#3#218#234#140#188#187
+  +#220#203's'#229#131'4'#16#150#210#185#164#144'zk\ND<974AOaw'#139#161#183#202
+  +#219#230#159#188#188'u'#229'Q'#17#16#137#215#207#200#192#184#175#161#147#133
+  +#199'z'#17'6'#157#147'v'#135#153#175#196#218#229#235#231#216#194#170#148'{dQ'
+  +'A2('#198#31'(['#224#143'(4CWm'#132#153#173#195#205#216#216#222#227#236#199
+  +#245#217'R'#17#132#220#214#208#204#3#202#196#204#206#224#197#228#255#237'u'
+  +#139#253#248#235#214#190#167#144'{gYM'#198'@'#19'h'#240#137'CQau'#136#156#176
+  +#194#210#199#222#222#237#220't'#144#253#245#239#232#224#218#210#203#196#190
+  +#179#166#150#135'{p'#197'g"m'#147'k}'#144#161#179#199#210#214#213#204#189#167
+  +#147'~kWH90'#198'&'#24']'#208#138'0<Maw'#144#168#192#211#228#201#239#237#186
+  +#135'1'#132#233#224#214#205#201#196'3f'#170#221#132#205#214#224#233#195#242
+  +#253't'#157#253#242#220#193#168#146'}l[MA700*4<GSct'#135#150#170#184#197#207
+  +#212#219#197#228#255#237's'#234#145'!'#17'!"'#175#184#171#156#140'}qf[TSRdu'
+  +#132#148#164#181#192#195#195#186#175#163#146#130'r_RD9.&&$*2;HXl'#129#155#178
+  ,#204#225#243#250't'#138#250#243#233#222#210#199#188#181#172#166#3#162#138#166
+  +#172#181#188#199#210#222#233#243#250's'#138#253#238#218#197#172#149'~jYM'#199
+  +'@'#17'*'#207#144'AMXft'#131#146#160#175#184#190#195#202#212#222#233#195#242
+  +#253's'#233'A"'#18'"0'#175#190#178#162#146#132'ui\OTYcoz'#135#150#164#174#176
+  +#176#169#160#153#143#130'wk]OD90.,4>KWfy'#144#165#190#210#231#243#250's'#137
+  +#253#247#235#223#209#196#182#170#160#199#151'5j'#189#135#160#170#182#196#209
+  +#223#235#197#247#234#134#138#236#217#193#169#147#127'l\MA'#199'9'#22#172#189
+  +#147'JR\jt'#130#140#151#160#165#169#178#187#196#208#218#233#243#250's'#201
+  +#253'"""3'#135#197#186#172#155#140'~q'#197'e'#23#172#133'kt'#127#137#147#3
+  +#156#198#151'$2'#16#132'sj^S'#197'J'#21#140#140'OYgv'#138#156#178#197#216#232
+  +#243#250's'#139#250#239#226#211#195#180#165#151#143#134'~'#3'{'#151'~'#134
+  +#143#151#165#180#195#211#226#239#250#255#251#232#208#187#164#143'{jXMA'#199
+  +'92'#205#221#135'JQ[cls|'#198#133#236#173#224#136#165#178#192#205#219#234#247
+  +#253's'#200#250'#"C@'#136#206#195#183#167#151#137#127'u'#199'l&'#172#207#207
+  +'}'#253#165'UUvU'#17#197']%'#203#140'dly'#136#154#172#188#206#220#233#244#251
+  +'r'#138#254#245#233#216#199#181#164#149#136'}'#199't'#21'y'#191#148'}'#136
+  +#149#164#181#199#214#229#236#234#214#195#175#156#135'udVG@'#199'6H'#173#222
+  +#200'N'#239#253#238#192#3'{'#227#239#240#136#147#160#174#189#206#221#238#250
+  +'s'#201#254'23CD'#136#204#196#180#167#154#142#129'u'#218'mE'#154#218#202#165
+  +#132#153'yywW'#138#176#140'z'#130#144#156#170#184#198#210#224#238#245#253'r'
+  +#138#253#241#224#206#185#167#150#135'yp'#199'e'#19'y'#223#146'py'#135#150#166
+  +#180#193#199#198#191#171#155#138'|n^QF'#197';'#22'N'#195'<'#253#130'QW'#204
+  +'_'#221#185#167'V'#140#208#138'z'#133#144#159#174#192#210#229#245#254's'#200
+  +#253'3DDP'#139#216#206#197#184#171#156#139#128'skg'#4'd'#212'e'#166'iz'#156
+  +#187#154#154#171#223#224#136#150#158#169#179#192#202#214#227#195#240#255'r'
+  +#139#250#235#216#195#175#156#139'|nbY'#197'Q'''#158#133'Ybn|'#137#197#149#255
+  +#145#145#148#132'ti]RKC94,04;GOW'#206'_'#237#154#166'"%'#156#224#138'lv'#130
+  +#144#160#177#198#217#237#253't'#200#253'CTVP'#136#220#212#203#187#167#149#134
+  +'x'#219'n'#20'EXgX'#156#221#206#204#204#220#223#239#137#167#175#187#197#208
+  +#220#233#243#250's'#139#248#230#207#186#165#147#130'rdXN'#197'F$'#206#132'NX'
+  +'dq'#198'|'#250's'#16#131'obS'#201'H'#18'C'#134#173#133'@JS\f'#198'n'#187#149
+  +'@'#130'e\'#197'S&'#140#139'W_jw'#133#149#167#185#206#229#248'u'#201#254'EFf'
+  +'Q'#136#216#197#177#157#139'{qg'#204'_'#20'4V'#137#158#208#1'['#204'c'#254
+  +#238#254#254#239#208#137#176#185#195#206#216#228#239#247#253's'#139#246#224
+  +#202#179#159#139'zk]OD'#197'<"'#238#131'DO]'#198'f'#250#161#16#131'YQD'#196
+  +'9'#20'@'#3'('#135'09AKXgq'#198'y'#200'w '#131'i\Q'#198'G#'#204#240#138'T_l{'
+  +#139#156#177#198#220#244'w'#199#253'Ugu'#137#223#203#186#164#148#128're\'#197
+  +'R'#19'$'#3';'#227#204#240#136'V^iry'#130#139#145#198#153#255#254#240#135#195
+  +#204#214#224#235#244#250't'#139#244#220#196#173#152#135'ueWK@'#197'6$'#206
+  +#130'@K'#198'V'#253#147#16#132'MA90'#198'&'#21'^'#128#135'*2@N\l{'#197#134
+  +#234's'#134#128'qbTH>'#197'6,'#254#139'MXds'#132#150#170#190#214#238#254'x'
+  +#196#254'vp'#142#242#227#209#190#169#147#129'qbVKA96'#3'0'#142'26>FQ\fs'#127
+  +#135#146#155#164#172#197#180#238#239#131#214#222#233#195#242#253't'#146#242
+  +#217#193#171#151#132'rbTG<2*(*2<G'#197'Q'#236'C'#134'G;0('#31#25#3#19#147#22
+  +#28'(9H[n'#131#146#156#160#157#151#142'|l]OD'#197'9'#18#174#140'<FR_m'#127
+  +#144#164#185#208#233#253'{'#140#252#240#224#207#187#166#145'{j[MA'#227#209' '
+  +#3'('#149'*,9AN\jw'#132#143#154#165#174#184#191#199#203#210#216#224#233#195
+  +#242#237'u'#139#242#215#193#171#148#131'qaRG;'#197'2$'#206#1';'#197'G'#238
+  +#134#134'H<0&'#28#19#4#15#148#19#28'*<Oj'#133#155#170#178#179#172#158#140'yi'
+  +'[N@6'#197'.*'#239#139'CN[j{'#141#161#181#204#229#250'{'#140#248#234#218#200
+  +#180#159#137'udTF;'#232'2&X'#254#139'6DO^m|'#139#152#164#177#187#198#197#255
+  +#221#224#132#235#243#249#253'v'#145#242#217#192#171#150#131'qcTH<4,(,4<'#197
+  +'H'#252'f'#174'D9*'#28#19#15#10#10#0#10#19#31'.@Wr'#147#181#200#203#196#181
+  +#159#140'yiYM@6.(*.6@MYiz'#140#159#181#204#228#248'z'#141#254#244#231#213#195
+  +#176#155#133'q^OA7'#199'.$:'#188#140'09FRbq'#132#147#161#176#189#200#198#211
+  +#254#206#208#203#247#188'ugy'#154#139#242#218#197#174#153#135'ueWK@'#197'7'
+  +#20#207#1'@'#197'K'#252'c'#157'F7,'#28#19#15#0#10#10#19#22'!2G^~'#160#193#226
+  +#226#204#182#161#141'zj\NC'#197'7'#18'n'#140'7AM[jy'#140#160#181#204#229#247
+  +'z'#140#253#241#228#211#192#172#152#131'o\M@'#233#194'#'#139#174#224#140'<HW'
+  +'ix'#139#158#174#187#203#214#225#209#233#204#205#134'#Ey'#185#180#138#216#198
+  +#178#159#139'zk]QF'#197'<$'#206#1'F'#197'Q'#237's'#133'K<0$'#25#198#15'8'#220
+  +#224#146'&6Kg'#135#172#208#240#232#208#186#164#144#127'm^RF'#198'<"N'#240#139
+  +'DO]m|'#144#162#184#207#230#246'z'#142#251#240#226#210#192#172#150#132'm\K>2'
+  +'('#3'$'#195'&'#206#141'9AN[k}'#144#163#181#196#210#224#231#209#240#153'S'#17
+  ,'Dg'#153#173#200#138#210#195#180#162#147#129'rdYN'#197'F$'#206#140'NYaed_VG;'
+  +'.$'#25#3#19#165#22#28'*;Qo'#144#179#214#233#231#214#191#170#150#132'seXMC;6'
+  +'27@HTbq'#129#148#168#190#212#233#247'z'#141#250#239#226#210#191#175#152#132
+  +'p^N@4'#199',*'#140#206#139'>GR]kx'#138#157#172#184#194#198#204#221'd@'#206
+  +#195'"g'#153#173#206#235'@'#137#192#179#167#153#138'|obY'#197'Q'''#158#140'Y'
+  +'bnrtoe[M<0&'#197#28'X'#189#146'.AWv'#150#181#206#226#233#217#197#176#156#140
+  +'{laT'#197'J'#17']'#140'GQ\jx'#136#156#173#195#218#234#248'z'#141#250#239#227
+  +#212#194#176#156#135'udRD9'#201'.h'#204#191#239#134'T^jv'#133#146#199#155#254
+  +#202'x'#203#165'STw'#186#236#141#172#178#187#192#194#189#181#170#159#147#135
+  +'zp'#199'e'#19'y'#223#140'pz'#130#134#131'{qcRF6.'#3'&'#148'(6H^|'#151#178
+  +#202#222#233#226#206#186#167#150#133'vi\R'#197'JH'#159#139'Wcr'#130#146#164
+  +#184#204#222#237#250'z'#141#248#237#219#205#186#172#155#141'{k[MA'#203'9Y'
+  +#170#220#239#239#131'is|'#211#132#206'zS6S'#134#168#173#239#131#148#157#168
+  +#197#178#201'B'#133#164#156#145#136'}'#199'u'#20'y'#207#162'}'#136#148#156
+  +#156#153#141'~o\KC9669CQe~'#150#176#198#219#234#230#218#197#177#160#144#129
+  +'qe'#198'Y$j'#240#139'_kz'#139#157#175#193#212#228#241#253'x'#142#254#247#238
+  +#222#203#190#174#162#150#138'~seX'#213'N'#20#152#185#235#221#237#222#232'wc'
+  +#204'fcg'#135#170#188#240#133'u}'#136#148#160#199#171#187#130'"'#132#149#143
+  +#134#127#3'z'#142#127#134#143#151#166#178#187#184#175#158#141'zg['#198'RW'
+  +#156#176#144'l'#131#153#179#199#220#236#238#228#209#192#174#158#139'zm'#198
+  +'c'#19#138#224#139'gs'#131#149#171#187#205#220#234#245#254'w'#142#253#245#236
+  +#222#205#190#174#161#150#139#132'{vn'#254#209#20'x'#153#155#172#202#170#179
+  +'qC3F'#166#183#228#203#221#134'aiu'#130#144#156#208#168#205#134'A'#19'%y'#190
+  +#240#139#170#183#195#204#208#204#195#172#152#132'x'#198'o5i'#224#145'y'#141
+  +#164#183#204#224#236#243#238#222#206#190#168#149#133'xm'#229#18#139#208#138
+  +'q~'#141#160#180#200#216#227#239#250'w'#138#254#245#234#216#199#184#169#153
+  +#142#135#209#127'CgE48xz'#137#3'^'#234#132'1A%E'#4'2'#229#169#221#208#135'NW'
+  +'bp'#127#144#156#201#168#253#152'g"'#3#162#133#166#172#181#188#196#197#204
+  +#255#194#133#199#181#161#149#138#197#129''''#174#145#141#158#175#192#210#228
+  +#239#248#247#234#219#203#181#162#144#131'w'#197'nE'#191#138'z'#135#152#170
+  +#190#210#224#235#247#253'w'#136#247#231#211#193#176#160#143#129#247#228'v'
+  +#154#170#153'4Wdvf&p'#195'N!'#197'92D'#3'$'#232'=n'#172#255#136'GTar'#130#148
+  +#160#173#213#181#251#165#147'g'#154#220#205#202#203#164#133#199#178#165#154
+  +#149#3#144#160#150#163#175#188#204#222#233#242#253#250#243#233#214#195#175
+  +#158#144#129'wpnpy'#133#148#163#181#200#218#233#243#250'w'#136#251#234#215
+  +#193#174#156#136'w'#216'k'#19#204#221#238#238'e#RT'#19'" '#1'C'#210'9'#18'Ae'
+  +'X['#139#141#220#224#137';FSdv'#137#155#171#182#198#195#220#169'P'#3#201#236
+  +#140#149#167'yWf'#130#187#178#199#168'5'#156#239#155#191#204#218#229#238#247
+  +#255#254#249#242#226#206#187#169#154#141#128'vrw'#129#143#156#174#191#207#226
+  +#195#242#253'v'#147#254#241#222#202#178#157#134'tbXRQS\foy'#132#142#199#150
+  +#137#18#17#136'tne]SK@6'#203',#5U'#132#131#199#19#139#187#191#138'.;J\m'#129
+  +#149#169#183#197#197#207#237#168#3#218#237#133'%D5D'#135#144#200#176'6'#155
+  +#222#224#133#199#214#222#232#244#197#254#152'c'#147#235#218#201#183#168#151
+  +#138'}p}'#139#153#168#183#201#218#235#248#253'w'#162#247#231#212#190#165#142
+  +'vcSGCCHQ]mz'#137#152#161#169#168#162#153#144#137'~sg\OA4,'#201'$2UH8'#131#0
+  +#10#0#229#136#216#240#140#31'&4DTf|'#144#164#184#198#211#196#222#252#128#3
+  +#232#136#228#222#214#205#198#189#183#176#204#168'7'#138#201#139#234#240#133
+  +#197#202#212#221#231#198#241#239#152'`'#146#242#227#211#195#178#165#152#141
+  +#135#141#152#165#178#195#211#227#242#253'w'#164#253#242#226#206#181#157#132
+  +'kXG997AKXkz'#138#155#163#174#175#174#166#156#144#134'vfVG9,$'#31#196#22#129
+  +#128#3#10'e'#2#10#142#19#25'!.@Rey'#142#163#182#202#216#228#198#236#219'x`'
+  +#135#232#220#208#197#186#174#163#204#155#20'h'#174#237#252#192#157#184#191
+  +#199#207#217#227#233#238#245#253#255#255#250#235#222#207#194#181#168#160#157
+  +#160#168#181#194#207#222#235#250'x'#138#250#239#222#202#177#150'|dRF'#197'<x'
+  +#223#148'Veu'#131#147#158#168#171#173#168#160#150#135'veRA2&'#31#197#22'T8i'
+  +#143#10#19#25'$.@Ocx'#143#162#184#202#218#232#197#242#235'x'#137#242#228#216
+  +#201#184#170#156#145#135#198#127'6'#139#240#137#139#147#154#159#164#173#181
+  +#192#201#197#210#253#255#137#245#254#255#253#242#231#218#206#195#197#187#21
+  +#191#134#195#206#218#231#242#253'x'#137#247#236#222#201#177#150'{cQ'#198'GF'
+  +#138#144#133'Sct'#131#144#198#155#252#165'@'#139#151#137'xdQ@0!'#28#19#19#3
+  +#10'i'#143#10#22#28'(4CSgz'#145#165#185#204#220#233#197#244#252#133#136#239
+  +#222#204#186#169#154#138'}'#199't'#17'i'#175#152'v~'#135#143#151#161#169#178
+  +#187#195#206#212#220#229#238#247#255#255#247#238#229#220#210#202#3#197#134
+  +#202#210#220#229#238#247'y'#136#247#236#222#202#181#154#128'e'#199'Ouy'#170
+  ,#133'Xer~'#137#198#148#206#165'p'#136#148#137'weQ@0&'#198#28'%C'#128'h'#2#15
+  +#156#25'!,;JXm'#128#149#169#190#207#224#238#245#253#255#255#248#230#212#192
+  +#172#153#137'xmb'#197'Y&'#139#149'\dks|'#135#144#151#160#172#181#193#203#212
+  +#222#233#242#253#255#254#245#203#236#17'5j'#189#255#130#245#254'y'#136#247
+  +#236#226#208#187#164#139's'#200'b'#22#135#155#224#1'l'#202'u'#255#238#220#149
+  +' '#135#135'xiVF7,'#198'!2T'#128'A'#30#10#0#10#22#142#25'$*6AQbt'#135#156#177
+  +#195#212#227#197#240#255#151#138#242#224#201#179#157#138'xi[R'#199'H5'#140
+  +#254#147'[dnu'#128#136#145#155#168#181#195#206#217#228#239#250#255#255#253
+  +#203#245#19'6j'#173#223#1#253'z'#137#250#239#228#216#198#179#157#135'x'#195
+  +'pV'#3'j'#231#159#186#187#192#198#138#218'u0'#134'|o^M>2'#197'('#19'%'#3#15#5
+  +#10#2#19#143#28#31'*4>K[l~'#145#164#185#202#219#233#197#243#253#134#138#237
+  +#214#191#167#144'|jYNC'#198';'#20#142#224#145'DKVajs{'#130#139#156#173#189
+  +#201#214#226#236#247'r'#132#254#247#242#239#3#236#132#239#242#247#254'{'#137
+  +#253#242#233#222#210#195#180#161#144#205#136'Edw'#164'6'#157#199'~'#239#186
+  +'1'#134'vgVH<2'#207'*#R'#133#181#139#139#239#142'.4@JXgx'#137#158#175#196#212
+  +#228#239#197#247#234#131#138#231#206#180#156#132'o]M@7'#197'.&l'#146'07AKV_j'
+  +'ryz'#149#170#186#200#212#224#236#247#204#255'eXiz'#139#176'~'#136#247#238
+  +#229#220#212#199#190#175#200#164'BC5'#16#135'xmeekt~'#229#239#182' '#135#128
+  +'scVH>6'#202'.BV'#133#181#128#195'$'#172#144'29AMXgv'#135#153#171#190#208#222
+  +#235#244#250'r'#138#248#226#198#171#144'ydRC7'#231#162#21#141#240#144'07CMXd'
+  +'nx'#133#153#173#189#201#214#226#236#196#247#131'P'#3#236#132#239#242#247#254
+  +#17#255#130#254#245#230'Q'#19'2'#155#198#193#185#181#172#164#154#138'|l]b_p'
+  +#127#138#148#154#154#150#142#130'rcWMD'#196';4@'#3'*'#231'*'#142#205#240#140
+  +'JR_ly'#136#152#170#187#203#218#233#195#242#253'r'#138#246#222#192#162#135'o'
+  +'[H;.'#198'&'#18'['#176#144'$(2;GRan}'#142#163#181#195#206#217#228#204#238
+  +#181'3f'#170#221#240#1#253#17#255#1#253#232#129'3f'#149#142#214#207#195#182
+  +#164#148#132'vmjnw'#133#146#197#156#251'a'#133#144#131'ti]'#207'S!5V'#138#154
+  +#220#239#139'\gs'#128#140#156#172#188#203#219#233#195#242#237's'#140#244#217
+  +#185#155#127'gSC4*!'#25#3#19#195#25#237#141',7DQ^o'#129#150#175#193#203#212
+  +#222#205#232#168'15j'#189#255#130#245#254#17#255#132#254#247#242#239#3#236
+  +#155#239#236#228#217#197#178#163#148#135'}y}'#135#145#157#168#178#184#181#174
+  +#164#150#137'|rga'#205'XCw'#153#201#220#254#141't'#128#138#151#164#175#190
+  +#200#214#227#239#247#253't'#138#242#215#181#148'ybN>2&'#199#28'%L'#190#146'$'
+  +',4AO^q'#135#160#185#206#212#220#229#231#231#229#220#199#212'#y'#222#132#220
+  +#229#238#247#19#255#130#253#250#3#247#154#250#251#242#231#212#194#177#162#150
+  +#142#140#142#150#161#173#184#193#202#201#194#181#171#156#147#135#128#205'w#U'
+  +'y'#202#203#251#138#134#144#155#165#175#183#190#200#211#220#197#229#239#223
+  +'s'#138#242#211#178#144'u^J;,$'#199#28'%L'#187#138'!(4@Oat'#141#168#199#198
+  +#217#223#216'`'#131#222#212#203#197#195'%'#190#134#203#212#222#233#242#253#25
+  +#255#134#247#238#222#206#191#178#197#168#21#191#140#178#190#201#212#220#220
+  +#214#202#190#181#171#161#206#153#18'4z'#154#205#235#224#131#167#175#183#204
+  +#191#204#238#220#204#221#240#1#253'r'#137#242#209#175#144'u]J9,'#200'!2'#19
+  +#220#224#138'!*6DRez'#148#178#212#197#228#221#181#143#228#217#206#195#184#176
+  +#173#176#184#195#206#217#228#239#250#25#255#134#254#245#236#220#206#195#197
+  +#187'%'#141#139#192#202#216#230#237#238#233#223#212#203#196#237#194'%6z'#170
+  +#187#208#130#189#195#207#203#223'y'#137'wj'#189#255#144#245#254#255#255#242
+  +#207#176#144't^J;.$'#25#22#3#15#160#22#25'!,7FVj'#130#156#189#225#239#242#247
+  +#247#236#226#214#201#189#176#164#159#164#176#189#201#214#226#236#247#26#255
+  +#133#253#245#236#224#211#197#202#21#140#132#204#214#227#236#197#244#166'R'
+  +#215#226#18'EHyy'#154#220#238#222'W'#18#199#212'#y'#222#145#220#229#238#247
+  +#255#255#242#208#176#147'xaM<0&'#28#197#19#132#140#159#28'$.9H[r'#136#164#199
+  +#231#247#251#254#247#236#224#212#200#186#173#159#143#159#173#186#200#212#224
+  +#236#247#27#255#132#254#247#238#226#197#214'D'#138#131#216#224#230#202#239
+  +#170#201#166'D@'#3#235#236'i'#135'X'#187#221#185#133#242#233#222#212#203#197
+  +#195'%'#190#147#203#212#222#233#242#253#255#242#211#181#152'|eR@2('#31#22#3
+  +#19#140#22#31'(0<M_s'#141#171#199#226#197#240#155'Q'#143#226#214#201#189#176
+  +#164#159#164#176#189#201#214#226#236#247#27#255#196#253'A '#212#228'3'#168
+  +#218#186#171#203#220#168'w`'#3#250#235#21'cc'#151#217'0'#156#220#213#204#195
+  +#184#176#173#176#184#195#206#217#228#239#250#255#242#215#187#157#133'mWF9,!'
+  +#25#3#22#140#25'!*6CQaw'#142#167#192#215#231'j'#183'B '#141#206#195#184#176
+  +#173#176#184#195#206#217#228#239#250#26#255#201#253'3DDW'#3#221#233#137#188
+  +#204#205#208't'#134#253#245#238#232#222#214#203#204'2]'#138#164'1'#152#175
+  +#164#159#164#176#189#201#214#226#236#247#255#244#220#192#165#139'vbO@4(!'#3
+  +#28#140#31'&2;HVfx'#140#162#181#199#201#209#170#197'gS'#197#195'%'#190#134
+  ,#203#212#222#233#242#253#25#255#215#254'23!%Z'#155#155#172#220#221#237'r'#136
+  +#254#245#236#227#214#202#188#176#203#167#23#171#206#168'C'#150#157#143#159
+  +#173#186#200#212#224#236#247#255#246#224#202#175#150#127'jYJ<2'#199'*%'#190
+  +#239#136'DO[jy'#136#153#169#197#184#249#190#3#202#232#186'ey'#222#132#220#229
+  +#238#247#26#255#196#250'# '#130#221#212#209#204'4Y'#187#252#204#220#238#222
+  +'r'#136#247#238#228#212#197#178#162#147#198#136'7'#186#208#1#148#199#157#217
+  +#131#142#148#176#189#201#214#226#236#247#255#248#230#207#184#161#140'weVH@6'
+  +#3'.'#139'2;CMVamw'#132#144#157#242#205#172#223#155#205#234#138#189#255#130
+  +#245#254#25#255#195#253'"'#132#233#220#208#198#199#190#19'x'#189#1#193#204
+  +#201#237#222#238#238#234'`'#136#242#233#216#199#176#157#136'y'#198'o7'#189
+  +#224#130#127#140#197#150#251#204#147#176#184#195#206#217#228#239#250#255#250
+  +#235#216#195#173#152#133'tdV'#201'M'#18'h'#190#253#135']emv'#127#136#145#202
+  +#154#156#190#255#222#224#1#208#199#220#202#173#223#1#253#26#255#227#209#16
+  +#132#222#208#195#184#199#175#20'X'#205#130#178#189#203#200#238#238#254#239
+  +#211#136#239#226#206#186#161#139'td'#198'Y8'#190#240#154'o~'#140#153#161#171
+  +#177#187#195#203#212#222#233#242#253#255#253#241#224#206#185#167#148#131'sj'
+  +#235#17#24'|'#158#222#176#201'o'#206#253#218#171#136#153#160#170#180#187#197
+  +#208#219#198#231#219#189#240#26#255#227#129' '#134#227#212#198#185#172#162
+  +#198#153'D'#156#240#131#165#177#189#202#201#239#239#255#239#16#136#236#222
+  +#201#177#150'}dS'#197'Hf'#175#158'Vbs'#134#150#164#177#188#197#206#212#220
+  +#229#238#247#255#255#254#245#233#216#199#181#164#147#134'ypgd'#4'a'#206'd'
+  +#156#185#188#172#169#174#208#136#147#156#168#181#193#206#219#234#195#245#219
+  +#28#255#137#253#245#238#220#204#190#175#161#150#197#140#22#155#149#144#154
+  +#166#180#195#203#210#218#224#232#239#245#253#247#236#218#197#172#144'u['#198
+  +'D#l'#224#141'JYn'#131#150#168#184#197#208#217#222#229#236#198#245#246'X@'
+  +#137#234#224#211#195#180#165#151#143#133#199'|Df'#135#5'n'#2'm'#230'w'#155
+  +#223#137#135#145#156#170#184#199#216#233#246#30#255#137#251#244#233#216#199
+  +#183#167#153#139#229#161'Z'#208#136#133#144#158#173#189#200#207#215#198#223
+  +#255#255'@'#150#236#219#198#172#145'v\J<442;CWo'#134#156#176#192#208#219#203
+  +#228#221#248'UXf'#135#224#216#208#196#182#170#160#207#151'3''45eUG'#3'a'#227
+  +#127#240#138'{'#135#147#161#175#192#208#226#240#252#29#255#151#250#243#229
+  +#212#195#180#162#146#131'uljlq{'#138#153#168#184#198#206#214#221#197#229#255
+  +#248#150#239#222#202#177#151'|eRF>;<AM^w'#142#164#186#203#219#229#207#239#187
+  +#129'3f'#166'dB'#131#199#188#181#200#172'"3" '#204'|R!'#18'V'#141#224#139'gr'
+  +'}'#138#153#168#184#201#219#234#248#29#255#151#250#243#229#212#195#178#161
+  +#144#129'p_eggx'#135#150#168#184#197#206#213#221#197#229#255#251#136#242#228
+  +#209#187#162#138'sa'#197'T'#21#141#140'[l'#132#155#179#200#218#233#243#250
+  +#252#245#205#236#17'5j'#169#135'v'#1#205#198#196'3" '#137#159#149#140#131'}t'
+  +'lc['#197'R'#21#172#141'V^kv'#133#146#162#179#195#213#231#244#254#28#255#151
+  +#250#243#229#212#195#180#162#146#131'uljlq{'#138#153#168#184#198#206#214#221
+  +#197#229#255#253#136#247#236#218#199#176#156#133't'#197'f'#21#158#142'n'#127
+  +#148#168#192#212#231#242#253#255#247#238#229#220#209#212'#y'#221#203#170'b$"'
+  +#139#182#173#161#151#139#130'wnaWM'#3'A'#142'FNYdq'#127#142#159#175#192#211
+  +#228#241#253#28#255#137#251#244#233#216#199#183#167#153#139#197#127#21#173
+  +#136#133#144#158#173#189#200#207#215#199#223#255#255#199#155#245#229#214#193
+  +#175#155#138'~vstz'#134#150#166#185#206#222#238#247#255#253#242#233#222#212
+  +#203#197#195'%'#190#1#203#202#211#238#204'EB '#156#199#186#172#159#147#135'{'
+  +'odWKC>;AJTao}'#140#156#173#191#209#226#240#251#28#255#137#253#245#238#220
+  +#204#190#175#161#150#197#140#22#155#179#144#154#166#180#195#203#210#218#224
+  +#232#239#245#253#255#255#253#245#229#215#197#182#164#153#145#143#144#150#160
+  +#173#187#206#220#236#245#254#255#250#239#228#217#206#195#184#176#173#176#184
+  +#195#206#216#224#199#233#233'c3'#139#212#197#184#168#153#142#128'seYO'#197'G'
+  +'%'#191#140'Sam|'#139#156#172#190#208#226#239#250#28#255#195#254#18#134#227
+  +#212#198#185#172#162#198#153'D'#156#240#131#165#177#189#201#201#239#239#255
+  +#239'r'#135#254#245#234#222#208#197#184#197#176'Z'#238#152#198#211#224#236
+  +#245#253#255#255#247#236#226#214#201#189#176#164#159#164#176#189#201#214#226
+  +#234#198#243#198'u'#16#138#225#209#192#177#162#147#133'wj_'#197'T'#18'F'#141
+  +'KWbp'#127#141#158#175#192#210#227#239#250#29#255#195#250#17#132#222#208#195
+  +#184#199#175#20'X'#205#130#178#189#201#200#238#238#254#239'u'#132#252#243#234
+  +#226#198#218'"'#168#240#130#224#233#195#242#223'r'#144#247#236#224#212#200
+  +#186#173#159#143#159#173#186#200#212#224#236#230#31'vq'#139#234#218#202#186
+  +#169#153#139'}qe\'#197'T%'#174#140'\iu'#130#146#160#178#195#215#227#241#250
+  +#29#255#195#253'"'#132#233#220#208#198#199#190#19'x'#189#1#193#202#201#237
+  +#222#238#238#224'w'#235#133'69}'#173#176't'#145#247#236#226#214#201#189#176
+  ,#164#159#164#176#189#201#214#226#236#247's'#139#250#242#227#208#191#175#160
+  +#145#133'yo'#198'e'#19'j'#192#140'eo|'#137#152#167#183#201#217#230#244#251#30
+  +#255#196#250'# '#130#221#212#209#204'4Y'#187#252#204#220#238#222#25#255#145
+  +#250#239#228#217#206#195#184#176#173#176#184#195#206#217#228#239#250's'#139
+  +#253#247#234#216#199#184#168#155#142#130'y'#199'q'#20'x'#222#139'z'#134#146
+  +#160#175#192#206#221#235#245#253#30#255#215#254'23!%Z'#155#155#172#220#221
+  +#237#25#255#134#253#242#233#222#212#203#197#195'%'#190#134#203#212#222#233
+  +#242#253't'#138#250#242#226#208#192#178#165#154#142#132#199'|Cj'#221#139#135
+  +#144#156#170#184#199#214#227#239#247#254#31#255#201#253'3DDW'#3#221#233#137
+  +#188#204#205#208#27#255#132#247#238#229#220#199#212'#y'#222#132#220#229#238
+  +#247'u'#137#254#249#235#218#204#190#176#164#155#201#146'!f'#170#255#137#157
+  +#168#180#195#210#221#233#243#250'!'#255#200#253'CTV`'#3#229#232#138#171#203
+  +#220#28#255#130#254#245#203#236#17'5j'#189#255#130#245#254'v'#136#253#246#231
+  +#216#203#190#178#168#201#160#20'V'#171#238#134#171#181#194#207#218#230#195
+  +#240#254'"'#255#231#148'Tf`'#3#236#231#138#170#203#192#30#255#1#253#203#245
+  +#19'6j'#173#223#1#253'x'#135#253#244#228#215#204#192#184#200#175'$9'#155#192
+  +#134#178#186#196#208#217#227#195#238#238'%'#255#229#181'Vp'#3#243#229#137#171
+  +#176'!'#255#132#254#247#242#239#3#236#132#239#242#247#254'z'#134#254#244#231
+  +#218#208#199#201#191'4W'#156#207#132#202#212#219#228#196#237#238#208''''#255
+  +#131#254#253#251#3#250#131#251#253#254'%'#255#130#253#250#3#247#130#250#253
+  +'}'#133#253#246#234#226#216#195#208'C'#3#197#230#143#207#255#132#239#243#248
+  +#253'@,'#255#195#253'A'#1#234#207#226'DX'#154#203#206#235#220'@.'#255#241#148
+  +'SUW'#137#172#170#203#192#19#255#224#154#170#153'4Wdvf&p'#195'N!'#197'92D'#3
+  +'$'#232'=n'#172#255#136'GTar'#130#148#160#173#213#181#251#165#147'g'#154#220
+  +#205#202#203#164#133#199#178#165#154#149#3#144#160#150#163#175#188#204#222
+  +#233#242#253#250#243#233#214#195#175#158#144#129'wpnpy'#133#148#163#181#200
+  +#218#233#243#250'w'#136#251#234#215#193#174#156#136'w'#216'k'#19#204#221#238
+  +#238'e#RT'#19'" '#1'C'#210'9'#18'AeX['#139#141#220#224#137';FSdv'#137#155#171
+  +#182#198#195#220#169'P'#3#201#236#140#149#167'yWf'#130#187#178#199#168'5'#156
+  +#239#155#191#204#218#229#238#247#255#254#249#242#226#206#187#169#154#141#128
+  +'vrw'#129#143#156#174#191#207#226#195#242#253'v'#147#254#241#222#202#178#157
+  +#134'tbXRQS\foy'#132#142#199#150#137#18#17#136'tne]SK@6'#203',#5U'#132#131
+  +#199#19#139#187#191#138'.;J\m'#129#149#169#183#197#197#207#237#168#3#218#237
+  +#133'%D5D'#135#144#200#176'6'#155#222#224#133#199#214#222#232#244#197#254#152
+  +'c'#147#235#218#201#183#168#151#138'}p}'#139#153#168#183#201#218#235#248#253
+  +'w'#162#247#231#212#190#165#142'vcSGCCHQ]mz'#137#152#161#169#168#162#153#144
+  +#137'~sg\OA4,'#201'$2UH8'#131#0#10#0#229#136#216#240#140#31'&4DTf|'#144#164
+  +#184#198#211#196#222#252#128#3#232#136#228#222#214#205#198#189#183#176#204
+  +#168'7'#138#201#139#234#240#133#197#202#212#221#231#198#241#239#152'`'#146
+  +#242#227#211#195#178#165#152#141#135#141#152#165#178#195#211#227#242#253'w'
+  +#164#253#242#226#206#181#157#132'kXG997AKXkz'#138#155#163#174#175#174#166#156
+  +#144#134'vfVG9,$'#31#196#22#129#128#3#10'e'#2#10#142#19#25'!.@Rey'#142#163
+  +#182#202#216#228#198#236#219'x`'#135#232#220#208#197#186#174#163#204#155#20
+  +'h'#174#237#252#192#157#184#191#199#207#217#227#233#238#245#253#255#255#250
+  +#235#222#207#194#181#168#160#157#160#168#181#194#207#222#235#250'x'#138#250
+  +#239#222#202#177#150'|dRF'#197'<x'#223#148'Veu'#131#147#158#168#171#173#168
+  +#160#150#135'veRA2&'#31#197#22'T8i'#143#10#19#25'$.@Ocx'#143#162#184#202#218
+  +#232#197#242#235'x'#137#242#228#216#201#184#170#156#145#135#198#127'6'#139
+  +#240#137#139#147#154#159#164#173#181#192#201#197#210#253#255#137#245#254#255
+  +#253#242#231#218#206#195#197#187#21#191#134#195#206#218#231#242#253'x'#137
+  +#247#236#222#201#177#150'{cQ'#198'GF'#138#144#133'Sct'#131#144#198#155#252
+  +#165'@'#139#151#137'xdQ@0!'#28#19#19#3#10'i'#143#10#22#28'(4CSgz'#145#165#185
+  +#204#220#233#197#244#252#133#136#239#222#204#186#169#154#138'}'#199't'#17'i'
+  +#175#152'v~'#135#143#151#161#169#178#187#195#206#212#220#229#238#247#255#255
+  +#247#238#229#220#210#202#3#197#134#202#210#220#229#238#247'y'#136#247#236#222
+  +#202#181#154#128'e'#199'Ouy'#170#133'Xer~'#137#198#148#206#165'p'#136#148#137
+  +'weQ@0&'#198#28'%C'#128'h'#2#15#156#25'!,;JXm'#128#149#169#190#207#224#238
+  +#245#253#255#255#248#230#212#192#172#153#137'xmb'#197'Y&'#139#149'\dks|'#135
+  +#144#151#160#172#181
+]);

+ 2 - 2
web/config.toml

@@ -29,7 +29,7 @@ disableKinds = ["taxonomy"]
     weight = 6
 
 [permalinks]
-  blog = "/:filename/"
+  blog = "/:contentbasename/"
 
 # See https://feathericons.com/
 # The value of pre is the icon name
@@ -44,7 +44,7 @@ disableKinds = ["taxonomy"]
     weight = 2
    [[menu.main]]
     name = "documentation"
-    url = "https://wiki.freepascal.org/LazPaint"
+    url = "/documentation/"
     weight = 3
    [[menu.main]]
     name = "download"

+ 8 - 0
web/content/documentation.de.md

@@ -0,0 +1,8 @@
+---
+title: "documentation"
+date: 2025-05-26T13:16:33+02:00
+draft: false
+type: "page"
+layout: "documentation"
+---
+

+ 8 - 0
web/content/documentation.es.md

@@ -0,0 +1,8 @@
+---
+title: "documentation"
+date: 2025-05-26T13:34:03+02:00
+draft: false
+type: "page"
+layout: "documentation"
+---
+

+ 8 - 0
web/content/documentation.fi.md

@@ -0,0 +1,8 @@
+---
+title: "documentation"
+date: 2025-05-26T13:41:08+02:00
+draft: false
+type: "page"
+layout: "documentation"
+---
+

+ 8 - 0
web/content/documentation.fr.md

@@ -0,0 +1,8 @@
+---
+title: "documentation"
+date: 2025-05-26T12:29:53+02:00
+draft: false
+type: "page"
+layout: "documentation"
+---
+

+ 8 - 0
web/content/documentation.md

@@ -0,0 +1,8 @@
+---
+title: "documentation"
+date: 2025-05-26T12:29:51+02:00
+draft: false
+type: "page"
+layout: "documentation"
+---
+

+ 8 - 0
web/content/documentation.ru.md

@@ -0,0 +1,8 @@
+---
+title: "documentation"
+date: 2025-05-26T13:47:57+02:00
+draft: false
+type: "page"
+layout: "documentation"
+---
+

+ 20 - 17
web/layouts/index.html

@@ -11,11 +11,11 @@
    {{ $link_linux64_qt5_no_install := printf "%s_linux64_qt5_no_install.tar.gz" $prefix -}}
    {{ $link_linux32_qt5_deb := printf "%s_linux32_qt5.deb" $prefix -}}
    {{ $link_linux64_qt5_deb := printf "%s_linux64_qt5.deb" $prefix -}}
-   {{ $link_rpi32_no_install := printf "%s_raspbian-hf_no_install.tar.gz" $prefix -}}
-   {{ $link_rpi64_no_install := printf "%s_raspbian64_no_install.tar.gz" $prefix -}}
-   {{ $link_rpi32_deb := printf "%s_raspbian-hf.deb" $prefix -}}
-   {{ $link_rpi64_deb := printf "%s_raspbian64.deb" $prefix -}}
-   {{ $link_freebsd64_no_install := printf "%s_freebsd64_no_install.tar.gz" $prefix -}}
+   {{ $link_linux64_app_image := printf "%s_x86_64.AppImage" $prefix -}}
+   {{ $link_arm32_no_install := printf "%s_linux_arm32_gtk2_no_install.zip" $prefix -}}
+   {{ $link_aarch64_no_install := printf "%s_linux_aarch64_gtk2_no_install.zip" $prefix -}}
+   {{ $link_freebsd64_no_install := printf "%s_freebsd64_gtk2_no_install.zip" $prefix -}}
+   {{ $link_openbsd64_no_install := printf "%s_openbsd64_gtk2_no_install.zip" $prefix -}}
    {{ $link_macos32_dmg := printf "%s_macos32.dmg" $prefix -}}
    {{ $link_macos64_dmg := printf "%s_macos64.dmg" $prefix -}}
    {{ $link_macos_brew := "https://formulae.brew.sh/cask/lazpaint" }}
@@ -47,30 +47,33 @@
                     ({{ i18n "no_install" }})</a>
                 <a class="button" href="{{$link_linux64_no_install}}">{{ printf (i18n "archive") (i18n "bit_64") }}
                     ({{ i18n "no_install" }})</a></p>
+				<a class="button" href="{{$link_linux64_app_image}}">AppImage {{ printf (i18n "bit_64") }}</a></p>
             <h2>Linux (Qt5)</h2>
-            <p><a class="button" href="{{$link_linux64_qt5_deb}}">Qt5 {{ printf (i18n "deb_package") (i18n "bit_64") }}
+            <p><a class="button" href="{{$link_linux32_qt5_deb}}">Qt5 {{ printf (i18n "deb_package") (i18n "bit_32") }}
                     </a>
-                <a class="button" href="{{$link_linux64_qt5_no_install}}">Qt5 {{ printf (i18n "archive") (i18n "bit_64") }}
+                <a class="button" href="{{$link_linux32_qt5_no_install}}">Qt5 {{ printf (i18n "archive") (i18n "bit_32") }}
                     ({{ i18n "no_install" }})</a></p>
-            <h2>Rpi</h2>
-            <p><a class="button" href="{{$link_rpi32_deb}}">{{ printf (i18n "deb_package") (i18n "bit_32") }}
-                    </a>
-                <a class="button" href="{{$link_rpi64_deb}}">{{ printf (i18n "deb_package") (i18n "bit_64") }}
+				<a class="button" href="{{$link_linux64_qt5_deb}}">Qt5 {{ printf (i18n "deb_package") (i18n "bit_64") }}
                     </a>
-                <a class="button" href="{{$link_rpi32_no_install}}">{{ printf (i18n "archive") (i18n "bit_32") }}
+                <a class="button" href="{{$link_linux64_qt5_no_install}}">Qt5 {{ printf (i18n "archive") (i18n "bit_64") }}
+                    ({{ i18n "no_install" }})</a></p>
+            <h2>Linux ARM</h2>
+            <p><a class="button" href="{{$link_arm32_no_install}}">{{ printf (i18n "archive") (i18n "bit_32") }}
                     ({{ i18n "no_install" }})</a>
-                <a class="button" href="{{$link_rpi64_no_install}}">{{ printf (i18n "archive") (i18n "bit_64") }}
+                <a class="button" href="{{$link_aarch64_no_install}}">{{ printf (i18n "archive") (i18n "bit_64") }}
                     ({{ i18n "no_install" }})</a></p>
           </div>
           <div id="UNIX">
-            <h2>FreeBSD</h2>
-             <p><a class="button" href="{{$link_freebsd64_no_install}}">{{ printf (i18n "archive") (i18n "bit_64") }}
+            <h2>UNIX</h2>
+             <p><a class="button" href="{{$link_freebsd64_no_install}}">FreeBSD {{ printf (i18n "archive") (i18n "bit_64") }}
+                    ({{ i18n "no_install" }})</a>
+				<a class="button" href="{{$link_openbsd64_no_install}}">OpenBSD {{ printf (i18n "archive") (i18n "bit_64") }}
                     ({{ i18n "no_install" }})</a></p>
           </div>
           <div id="MacOS">
             <h2>MacOS</h2>
-            <p><a class="button" href="{{$link_macos32_dmg}}">MacOS
-                    {{ i18n "bit_32" }}</a>
+            <p><!--<a class="button" href="{{$link_macos32_dmg}}">MacOS
+                    {{ i18n "bit_32" }}</a>-->
                 <a class="button" href="{{$link_macos64_dmg}}">MacOS
                     {{ i18n "bit_64" }}</a>
                 <a class="button" href="{{$link_macos_brew}}">MacOS

RozdĂ­lovĂĄ data souboru nebyla zobrazena, protoĆŸe soubor je pƙíliĆĄ velkĂœ
+ 108 - 0
web/layouts/page/documentation.de.html


RozdĂ­lovĂĄ data souboru nebyla zobrazena, protoĆŸe soubor je pƙíliĆĄ velkĂœ
+ 108 - 0
web/layouts/page/documentation.es.html


RozdĂ­lovĂĄ data souboru nebyla zobrazena, protoĆŸe soubor je pƙíliĆĄ velkĂœ
+ 108 - 0
web/layouts/page/documentation.fi.html


+ 169 - 0
web/layouts/page/documentation.fr.html

@@ -0,0 +1,169 @@
+{{ partial "header.html" . }}
+<main id="main" class="doc">
+
+<div>
+    <a class="button" href="#interface">PrĂ©sentation de l’interface</a>
+    <a class="button" href="#tools">Outils de base</a>
+    <a class="button" href="#selection">Outils de sélection</a>
+    <a class="button" href="#layers">Calques</a>
+    <a class="button" href="#transforms">Transformations</a>
+    <a class="button" href="#colors">Réglages couleur</a>
+    <a class="button" href="#filters">Filtres & effets</a>
+    <a class="button" href="#advanced">Fonctions avancées</a>
+    <a class="button" href="#shortcuts">Raccourcis clavier</a>
+    <a class="button" href="#faq">FAQ</a>
+    <a class="button" href="#resources">Ressources utiles</a>
+</div>
+
+<div class="large-columns"><h2 id="interface">PrĂ©sentation de l’interface</h2>
+<p>LazPaint propose une interface hybride, Ă  la fois fenĂȘtrĂ©e unique et multi‑fenĂȘtres, centrĂ©e sur la zone de dessin. La boĂźte Ă  outils, le sĂ©lecteur de couleurs et la pile de calques peuvent ĂȘtre dĂ©tachĂ©s en panneaux flottants. Chacun de ces panneaux peut ĂȘtre affichĂ© ou masquĂ© via le menu <em>Affichage</em> (ou en pressant <strong>F6</strong> pour tout afficher/cacher d’un coup). Un thĂšme sombre est disponible si vous prĂ©fĂ©rez travailler sur fond foncĂ©. Les menus rappellent ceux des autres Ă©diteurs d’images&nbsp;: Fichier, Édition, SĂ©lection, Affichage, Image, Couleurs, Outils, Filtre, Rendu, Script, Aide. Les actions courantes sont aussi accessibles via une barre d’icĂŽnes. En bas, la barre d’état affiche des infos contextuelles (astuces sur l’outil, dimensions de la sĂ©lection, etc.). Bref, l’interface est pensĂ©e pour ĂȘtre familiĂšre et facile Ă  prendre en main.</p>
+{{ $img := "img/lazpaint-interface.png" | relURL -}}
+<center><img src="{{ $img }}" style="width: 50em; max-width: 100%" alt="Interface LazPaint" /></center></div>
+
+<div class="columns"><h2 id="tools">Outils de base</h2>
+<p>LazPaint propose une large palette d’outils de dessin et d’édition, accessibles depuis la boĂźte Ă  outils verticale (gĂ©nĂ©ralement Ă  gauche de l’écran). Voici un aperçu des principaux outils et de leur usage&nbsp;:</p>
+<ul>
+  <li><strong>Pinceau / Crayon&nbsp;:</strong> outil de dessin libre qui peint sur la toile avec la couleur sĂ©lectionnĂ©e. Vous pouvez choisir la forme et la taille de la brosse (voire charger des images de brosse personnalisĂ©es). La brosse peut ĂȘtre adoucie (dĂ©gradĂ© d’opacitĂ©) pour des bords lisses. Parfait pour tracer lignes et coups de pinceau.</li>
+  <li><strong>Gomme&nbsp;:</strong> efface des zones de l’image ; les pixels deviennent transparents (damier). La gomme peut fonctionner en diffĂ©rents modes&nbsp;: Ă©claircir, assombrir, etc., au lieu d’effacer totalement, pour des effets de fusion spĂ©ciaux. Ajustez sa taille et son opacitĂ© selon le besoin, idĂ©al pour supprimer des Ă©lĂ©ments ou fondre doucement des bords.</li>
+  <li><strong>Pot de peinture&nbsp;:</strong> remplit une zone contiguĂ« avec la couleur de premier plan. Cliquez sur une rĂ©gion : la couleur de cette zone (dans la tolĂ©rance fixĂ©e) est remplacĂ©e par la couleur de remplissage. Parfait pour colorier formes ou arriĂšre-plans. RĂ©glez la tolĂ©rance pour dĂ©finir la similitude requise entre pixels (plus la tolĂ©rance est Ă©levĂ©e, plus la plage de couleurs acceptĂ©es est large). Le mode Progressif, activable dans la barre d’outils, fait Ă©voluer la couleur au fur et Ă  mesure que celle du point initial change.</li>
+  <li><strong>Outils Forme&nbsp;:</strong> permettent de tracer des formes vectorielles (rectangles, ellipses, polygones, courbes). Chaque forme crĂ©e un objet ou calque vectoriel Ă©ditable (dĂ©placement/redimensionnement sans perte). Pour un rectangle ou une ellipse, cliquez-glissez ; maintenez <strong>Shift</strong> pour un carrĂ© ou cercle parfait. Polygone&nbsp;/ polyligne&nbsp;: cliquez plusieurs points pour des segments droits (<strong>Retour arriĂšre</strong> retire le dernier point). Pour les courbes de type BĂ©zier, cliquez les points clefs ; la courbe s’y adapte ; pressez <strong>S</strong> pour un point arrondi ou <strong>X</strong> pour un angle. Pour terminer un polygone ou une courbe, faites un clic droit ou cliquez Ă  nouveau le premier point. Vous pouvez remplir la forme par couleur unie, dĂ©gradĂ© ou texture et lui appliquer contour ou ombre (voir <a href="#advanced">Fonctions avancĂ©es</a>).</li>
+  <li><strong>Outil Texte&nbsp;:</strong> insĂšre du texte. Cliquez sur la toile pour dĂ©finir la zone et tapez. Choisissez police, taille, style, alignement, couleur. Le texte est un objet vectoriel, donc rĂ©-Ă©ditable Ă  volontĂ©. LazPaint gĂšre des effets spĂ©ciaux (contour, ombrage Phong) via la barre d’outils. <strong>Esc</strong> termine l’édition ; <strong>EntrĂ©e</strong> ajoute un paragraphe (marge verticale) ; <strong>Shift+EntrĂ©e</strong> insĂšre un simple saut de ligne.</li>
+  <li><strong>Pipette (Color Picker)&nbsp;:</strong> Ă©chantillonne une couleur de l’image. Cliquez (ou maintenez) sur un pixel pour placer sa couleur dans l’emplacement principal (« Stylo »). Un clic alternatif (par ex. clic droit) place la couleur secondaire (« ArriĂšre-plan »). Pratique pour assortir des couleurs existantes. Raccourci rapide&nbsp;: <strong>C</strong>.</li>
+  <li><strong>Tampon de clonage&nbsp;:</strong> outil de retouche qui copie des pixels d’une zone vers une autre (utile pour effacer des imperfections ou dupliquer un Ă©lĂ©ment). Faites d’abord un <strong>clic droit</strong> sur la zone source, puis peignez (clic gauche) lĂ  oĂč vous voulez copier. La source se dĂ©place avec le pinceau. Pour changer la source, clic droit ailleurs. Fonctionne aussi entre calques ; assurez-vous d’avoir le bon calque actif.</li>
+  <li><strong>Outils de sĂ©lection&nbsp;:</strong> (dĂ©taillĂ©s dans la section <a href="#selection">Outils de sĂ©lection</a>) — rectangle, ellipse, lasso libre, polygone, baguette magique. Une fois la sĂ©lection faite, les autres outils n’affectent que cette zone. Les sĂ©lections peuvent ĂȘtre inversĂ©es ou modifiĂ©es.</li>
+  <li><strong>Outil DĂ©placement&nbsp;:</strong> dĂ©place la sĂ©lection ou le contenu du calque actif. AprĂšs avoir sĂ©lectionnĂ© une zone, choisissez l’outil et faites glisser. Si tout un calque est sĂ©lectionnĂ©, il est dĂ©placĂ©. Indispensable pour organiser une composition.</li>
+  <li><strong>Main (Panoramique)&nbsp;:</strong> icĂŽne main ; permet de faire dĂ©filer la vue sans modifier l’image. Cliquez-glissez pour dĂ©placer. Utile en fort zoom. Vous pouvez aussi dĂ©marrer le dĂ©placement d’une forme ou d’un calque en cliquant dessus. Inutile de changer souvent d’outil : maintenez <strong>Espace</strong> pour activer temporairement la main, puis relĂąchez pour revenir Ă  l’outil prĂ©cĂ©dent.</li>
+  <li><strong>ContrĂŽle du zoom&nbsp;:</strong> icĂŽnes loupe +/–, molette de souris pour zoomer ; maintenir <strong>Ctrl</strong> pour un pas plus fin. Boutons 100 % (taille rĂ©elle) et « Ajuster Ă  la fenĂȘtre ». Le zoom n’altĂšre pas l’image, seulement l’affichage. La barre d’outils indique le niveau de zoom et les coordonnĂ©es du curseur, pratiques pour travailler avec prĂ©cision.</li>
+</ul>
+<p>La plupart des outils affichent une barre d’options contextuelle (opacitĂ©, taille, tolĂ©rance, etc.). Pensez Ă  la vĂ©rifier pour obtenir l’effet dĂ©sirĂ©. Avec un peu de pratique, ces outils permettent aussi bien des dessins simples que des retouches complexes.</p></div>
+
+<div class="columns"><h2 id="selection">Outils de sélection</h2>
+<p>Les outils de sĂ©lection permettent de dĂ©finir et de travailler sur une zone prĂ©cise de l’image. LazPaint gĂšre les sĂ©lections lissĂ©es (bords anti-alias) et la semi-sĂ©lection ; vous pouvez mĂȘme modifier la sĂ©lection comme un masque. Le contenu sĂ©lectionnĂ© se comporte comme un calque temporaire : une zone semi-sĂ©lectionnĂ©e est dessinĂ©e en semi-opacitĂ©. Les principaux outils sont :</p>
+<ul>
+   <li><strong>Sélection rectangulaire & elliptique :</strong> cliquez-glissez pour sélectionner un rectangle ou une ellipse. Le contour apparaßt biseauté, surligné en bleu. Maintenez <strong>Shift</strong> pour forcer un carré ou un cercle. Idéal pour sélectionner rapidement de grandes zones, des bordures ou des formes rondes.</li>
+   <li><strong>SĂ©lection polygonale :</strong> semblable au lasso, mais par segments droits. Cliquez pour placer les sommets ; une ligne relie chaque point. Parfait pour des formes irrĂ©guliĂšres Ă  arĂȘtes droites. <strong>Retour arriĂšre</strong> retire le dernier point. Pour terminer, cliquez le point de dĂ©part ou faites un clic droit pour fermer automatiquement le polygone.</li>
+   <li><strong>SĂ©lection courbe :</strong> mĂȘme principe que la sĂ©lection polygonale, mais avec des courbes de type BĂ©zier qui s’adaptent aux points.</li>
+   <li><strong>Baguette magique :</strong> sĂ©lection par similaritĂ© de couleur. Cliquez sur un pixel : l’outil choisit tous les pixels voisins de couleur proche (tolĂ©rance rĂ©glable dans les options). Parfait pour un fond uni ou toute zone de couleur homogĂšne. Avec l’option « Progressif », le bord est antialiasĂ© ou semi-sĂ©lectionnĂ©.</li>
+   <li><strong>Stylo de sĂ©lection :</strong> LazPaint permet aussi de peindre directement le masque de sĂ©lection : l’aire sĂ©lectionnĂ©e apparaĂźt en superposition translucide. TrĂšs prĂ©cis pour des sĂ©lections complexes ; mĂ©thode avancĂ©e mais puissante.</li>
+   <li><strong>Éditer la sĂ©lection :</strong> un « Ă©diteur de sĂ©lection » dĂ©diĂ© (menu Éditer la sĂ©lection) affiche la sĂ©lection en niveaux de gris (blanc = sĂ©lectionnĂ©, noir = non sĂ©lectionnĂ©, gris = semi-sĂ©lection).</li>
+</ul>
+<p>Une fois la sĂ©lection faite, les autres opĂ©rations n’affectent que cette zone. Vous pouvez aussi dĂ©placer ou transformer la sĂ©lection elle-mĂȘme : choisissez l’outil DĂ©placer pour la faire glisser. Diverses transformations sont proposĂ©es dans le menu SĂ©lection. Si vous devez ajuster la transformation, mieux vaut coller la zone dans un nouveau calque et utiliser les transformations de calque. <strong>Esc</strong> annule la transformation courante ; <strong>EntrĂ©e</strong> dĂ©sĂ©lectionne (« libĂšre » la sĂ©lection en la fusionnant sur le calque actif).</p>
+<p>Vous pouvez affiner une sĂ©lection existante en ajoutant ou retranchant des zones ; particularitĂ© de LazPaint : le clic droit retranche directement de la sĂ©lection sans changer d’outil, ce qui rend la retouche trĂšs rapide. N’oubliez pas qu’un filtre ou un coup de pinceau n’agira que dans le pĂ©rimĂštre de la sĂ©lection active.</p></div>
+
+<div class="columns"><h2 id="layers">Gestion des calques</h2>
+<p>À l’instar des Ă©diteurs avancĂ©s, LazPaint prend en charge plusieurs calques dans une mĂȘme image. Le panneau <strong>Calques</strong> affiche tous les calques empilĂ©s comme des feuilles transparentes. Depuis la barre d’outils ou le menu Calque, vous pouvez ajouter un calque, dupliquer, supprimer ou rĂ©organiser par glisser-dĂ©poser. Chaque calque possĂšde une case Ă  cocher pour la visibilitĂ©, un curseur pour l’opacitĂ© et un menu dĂ©roulant pour le mode de fusion (par dĂ©faut « Normal »). Les modes de fusion (Multiplier, Additif, etc.) permettent de mĂ©langer les calques de diverses façons, certaines uniques Ă  LazPaint. GrĂące aux calques, vous modifiez des parties de l’image sĂ©parĂ©ment, sans altĂ©rer le reste&nbsp;: c’est l’édition non destructive.</p>
+<p>LazPaint gĂšre les calques <em>raster</em> et <em>vectoriels</em> dans le mĂȘme fichier. Un calque raster est un bitmap classique, tandis qu’un calque vectoriel contient formes ou texte Ă©ditables. Par exemple, avec l’outil Forme ou Texte, l’objet reste vectoriel et vous pouvez le retoucher plus tard (changer le texte, redessiner la courbe). Si vous transformez le calque, l’objet est re-rendu proprement. DĂšs que vous utilisez un outil pixel (pinceau, gomme
) sur ce calque, LazPaint le rasterise : les formes deviennent pixels et ne sont plus Ă©ditables comme vecteurs. Le processus est automatique&nbsp;; souvenez-vous seulement qu’un coup de pinceau convertit le calque vectoriel en calque raster.</p>
+<p>Opérations de base&nbsp;:</p>
+<ul>
+	<li><strong>Renommer&nbsp;:</strong> cliquez sur le nom pour le modifier (pratique pour s’y retrouver).</li>
+	<li><strong>Réordre&nbsp;:</strong> faites glisser les calques pour changer leur position dans la pile.</li>
+	<li><strong>Opacité&nbsp;:</strong> réglez la transparence (0 % = invisible, 100 % = opaque).</li>
+	<li><strong>Mode de fusion&nbsp;:</strong> choisissez la façon dont il se combine avec ceux du dessous (Multiplier, Écran, etc.). Cliquez sur le bouton mode pour une palette visuelle ou utilisez la liste.</li>
+	<li><strong>Nouveau / Supprimer&nbsp;:</strong> ajoutez un calque (vide ou collage) ou supprimez le calque sélectionné.</li>
+</ul>
+<p>Vous disposez aussi des commandes <strong>Aplatir</strong> (fusionner tous les calques en un seul, utile avant d’exporter vers un format sans calques) et <strong>Fusionner vers le bas</strong> (combiner le calque courant avec celui juste en dessous). L’aplatissement Ă©limine les calques masquĂ©s et produit une image simple. Pour conserver le travail en cours, enregistrez au format natif <code>.LZP</code>, qui garde calques, transparence et mĂ©tadonnĂ©es. Vous pourrez ensuite exporter en PNG ou JPG pour le partage. LazPaint sait aussi enregistrer en OpenRaster <code>.ORA</code>, ouvrable dans d’autres logiciels (Krita, GIMP
). Il importe Ă©galement les fichiers Paint.NET (<code>.pdn</code>). En somme, les calques figurent parmi les atouts majeurs de LazPaint : servez-vous-en pour sĂ©parer croquis, aplats, ombres, etc., et les Ă©diter indĂ©pendamment.</p></div>
+
+<div class="columns"><h2 id="transforms">Transformations</h2>
+<p>LazPaint propose de nombreuses commandes pour transformer l’image ou les calques. Les opĂ©rations courantes se trouvent dans le menu <em>Image</em> ou la barre <em>Calque</em>. Vous pouvez par exemple faire pivoter l’image entiĂšre de 90° dans un sens ou dans l’autre, ou la retourner horizontalement / verticalement. Si vous travaillez avec la commande de calque, seule la couche sĂ©lectionnĂ©e est affectĂ©e. Des outils interactifs permettent Ă©galement de pivoter selon n’importe quel angle ou de redimensionner.</p>
+<p><strong>Mise Ă  l’échelle / Redimensionnement&nbsp;:</strong> pour redimensionner l’image complĂšte, utilisez <em>Image â€ș Rééchantillonner</em> et saisissez les nouvelles dimensions. LazPaint emploie des algorithmes de rééchantillonnage afin de prĂ©server la qualitĂ© lors d’un agrandissement ou d’une rĂ©duction. La fonction <em>Taille du canevas</em> permet quant Ă  elle d’agrandir ou de rogner la zone de travail sans dĂ©former le contenu (pratique pour ajouter une bordure ou couper des bords). Pour redimensionner un calque ou une sĂ©lection particuliĂšre, servez-vous de l’outil de transformation de sĂ©lection ou copiez la sĂ©lection dans une nouvelle image, redimensionnez, puis collez de nouveau.</p>
+<p><strong>Rotation&nbsp;:</strong> pour pivoter rapidement de 90°, utilisez les commandes du menu. Pour une rotation libre, sĂ©lectionnez le calque (ou la sĂ©lection) puis l’outil Rotation ; un cadre apparaĂźt et vous pouvez faire tourner en faisant glisser. Maintenez <strong>Ctrl</strong> pour accrocher aux angles usuels (pas de 15°). Validez avec <strong>EntrĂ©e</strong> ou annulez avec <strong>Esc</strong>. Tourner un calque vectoriel ne dĂ©tĂ©riore pas la qualitĂ© (il est re-rendu). Tourner plusieurs fois un calque raster ne provoque pas de flou tant qu’il n’est pas re-rasterisĂ© (par un coup de pinceau, par exemple). Essayez donc de conserver sĂ©parĂ©s les Ă©lĂ©ments que vous transformez souvent.</p>
+<p><strong>DĂ©placement&nbsp;:</strong> l’outil DĂ©placer (voir Outils de base) sert Ă  dĂ©placer le contenu d’un calque ou d’une sĂ©lection. Les flĂšches du clavier permettent de « pousser » par petits pas : 1 px, ou 10 px avec <strong>Ctrl</strong>, et alignement au bord avec <strong>Alt</strong>. IdĂ©al pour un positionnement au pixel prĂšs.</p>
+<p><strong>Outils de transformation avancĂ©s&nbsp;:</strong> LazPaint 7 a introduit plusieurs outils sophistiquĂ©s. L’outil <em>Perspective de calque</em> permet de tirer les coins d’un calque pour donner l’illusion d’une inclinaison ou d’un recul 3D. Le <em>Grillage de dĂ©formation</em> applique un maillage que l’on dĂ©forme point par point, parfait pour corriger subtilement une photo ou crĂ©er un morphing artistique. L’outil <em>Zoom calque</em> redimensionne un calque via des poignĂ©es. Ces fonctions rapprochent LazPaint des grands logiciels en matiĂšre de transformations complexes.</p>
+<p>N’oubliez pas : vous pouvez toujours Annuler (<em>Ctrl+Z</em>) si le rĂ©sultat ne convient pas. Par dĂ©faut, LazPaint conserve jusqu’à 200 annulations, ce qui laisse une grande libertĂ© d’expĂ©rimentation. Utilisez les transformations pour positionner et ajuster vos Ă©lĂ©ments jusqu’à obtenir le rĂ©sultat souhaitĂ©.</p></div>
+
+<div class="columns"><h2 id="colors">Réglages couleur</h2>
+<p>Le menu <strong>Couleurs</strong> regroupe de nombreuses fonctions de retouche colorimĂ©trique. Elles servent Ă  corriger ou modifier les couleurs d’une image ou d’un calque. Parmi les rĂ©glages essentiels&nbsp;:</p>
+<ul>
+  <li><strong>LuminositĂ© / Contraste&nbsp;:</strong> ajustement de base pour Ă©claircir ou assombrir l’image et augmenter ou rĂ©duire le contraste. La luminositĂ© dĂ©place toutes les couleurs vers le clair ou le foncĂ© ; le contraste Ă©tire ou comprime l’écart entre zones claires et sombres. Raccourci&nbsp;: <em>Ctrl+Maj+T</em>.</li>
+  <li><strong>Courbes&nbsp;:</strong> outil avancé qui remappe les tons via une courbe. On peut agir sur les canaux RVB ou HSL, offrant un contrÎle fin ; par exemple, éclaircir les médiums sans brûler les hautes lumiÚres.</li>
+  <li><strong>Coloriser&nbsp;:</strong> applique une teinte tout en conservant la luminositĂ©. Choisissez une teinte et la saturation ; pratique pour passer une photo N&B en sĂ©pia, comme si l’on posait un filtre colorĂ©.</li>
+  <li><strong>Postériser&nbsp;:</strong> réduit le nombre de couleurs distinctes. Un niveau de 8, par exemple, limite chaque canal à 8 valeurs, donnant un rendu graphique à aplats.</li>
+  <li><strong>Décaler les couleurs&nbsp;:</strong> fait tourner les teintes et rÚgle la saturation ; utile pour changer globalement la palette (convertir les bleus en rouges, etc.).</li>
+  <li><strong>Intensité et Luminance&nbsp;:</strong> deux variations sur la luminosité. « Intensité » éclaircit ou assombrit sans simplement mélanger du blanc ou du noir, préservant mieux la saturation ; « Luminance » pousse les couleurs vers le blanc ou le noir. Subtil mais précieux en retouche photo.</li>
+  <li><strong>Normaliser&nbsp;:</strong> Ă©tire l’histogramme pour exploiter toute la plage tonale ; booste les noirs profonds et les blancs purs, amĂ©liorant le contraste (Ă©quivalent d’un « Auto-contrast »).</li>
+  <li><strong>Négatif&nbsp;:</strong> inverse les couleurs comme un négatif photo. LazPaint propose « Négatif » (corrigé gamma) et « Négatif linéaire » (sans gamma) pour des effets légÚrement différents.</li>
+  <li><strong>Niveaux de gris&nbsp;:</strong> convertit l’image en gris en conservant la luminance perceptuelle (avec correction gamma).</li>
+  <li><strong>Échanger les canaux&nbsp;:</strong> dans les opĂ©rations Filtre, on peut permuter des canaux (ex. Rouge/Bleu) pour corriger ou crĂ©er des effets. On trouve aussi le filtre Appliquer une fonction, qui accepte n’importe quelle Ă©quation sur les canaux (voir <a href="#filters">Filtres & effets</a>).</li>
+</ul>
+<p>Ces réglages ouvrent un dialogue avec curseurs ou courbes et prévisualisation. Les calculs se font en sRGB conscient du gamma ; les ajustements respectent donc la perception visuelle et évitent les artefacts. Sur une image indexée, certaines opérations peuvent accroßtre le nombre de couleurs.</p>
+<p>En plus, LazPaint propose une barre Palette : charger / enregistrer des palettes, réduire une image à une palette avec tramage ou effet postériser (depuis la v6.4.1). Pratique pour le pixel-art ou les formats limités en couleurs. Associez une couleur à un chiffre avec <strong>Ctrl</strong>+chiffre, puis rappelez-la simplement par le chiffre.</p>
+<p>La <strong>FenĂȘtre Couleur</strong> affiche une roue chromatique, des curseurs de luminance et d’opacitĂ©. L’icĂŽne Ă  double flĂšche Ă©change couleur de stylo et d’arriĂšre-plan ; on peut aussi les rĂ©initialiser en tapant un nom de couleur. La pipette et le dessin au clic droit (couleur secondaire) permettent d’exploiter efficacement les deux couleurs. En rĂ©sumĂ©, le menu Couleurs et ses outils offrent un contrĂŽle puissant, des corrections subtiles aux changements radicaux.</p></div>
+
+<div class="columns"><h2 id="filters">Filtres & effets</h2>
+<p>Le menu <strong>Filtre</strong> de LazPaint propose de nombreux filtres Ă  appliquer sur un calque ou une sĂ©lection pour en modifier l’aspect de maniĂšre crĂ©ative. Ils vont des flous et renforcements aux distorsions et effets artistiques. Un filtre peut s’appliquer Ă  l’image entiĂšre ou uniquement Ă  la zone sĂ©lectionnĂ©e. Voici les principales catĂ©gories :</p>
+<ul>
+  <li><strong>Filtres de flou :</strong> adoucissent l’image ou attĂ©nuent les dĂ©tails. LazPaint inclut le <em>Flou radial</em> (flou non directionnel qui rayonne vers l’extĂ©rieur ; variantes prĂ©cis, zoom ou « corona »), le <em>Flou de mouvement</em> (simule la traĂźnĂ©e d’un objet en dĂ©placement) et mĂȘme un <em>Flou personnalisĂ©</em> basĂ© sur un masque ou un noyau fourni par l’utilisateur. Des flous plus simples (Flou rapide, Flou prĂ©cis) Ă©quilibrent vitesse et qualitĂ©. IdĂ©al pour lisser du bruit ou crĂ©er un effet de profondeur de champ.</li>
+  <li><strong>NettetĂ© & lissage :</strong> <em>NettetĂ©</em> augmente le contraste autour des bords pour rendre l’image plus claire ; <em>Lissage</em> (ou un flou de base) fait l’inverse, adoucissant et fusionnant les pixels. ComplĂ©mentaires : un lĂ©ger sharpen sauve une image floue, un smooth adoucit un grain ou des contours trop durs. Attention Ă  ne pas trop pousser l’un ou l’autre (halo ou perte de dĂ©tail).</li>
+  <li><strong>Filtres de bruit :</strong> ajoutent ou rĂ©duisent le bruit. <em>Ajouter du bruit</em> disperse des pixels alĂ©atoires colorĂ©s (grain argentique). Le filtre <em>MĂ©diane</em> supprime le bruit en remplaçant chaque pixel par la couleur mĂ©diane de ses voisins ; efficace contre le « sel et poivre » tout en prĂ©servant mieux les bords qu’un flou simple.</li>
+  <li><strong>Effets artistiques / de contour :</strong> LazPaint propose des filtres uniques. <em>Contour</em> crĂ©e un tracĂ© style croquis en conservant les arĂȘtes sur fond blanc. <em>Embossage</em> donne un relief 3D en transformant les couleurs en gris et en ombrant les bords. <em>ClearType</em> (et son inverse) imite le sous-pixel d’affichage du texte – effet de niche. <em>Appliquer une fonction</em> est un filtre avancĂ© permettant d’appliquer n’importe quelle fonction mathĂ©matique aux canaux couleur (pratique pour des courbes personnalisĂ©es).</li>
+  <li><strong>Distorsions :</strong> dĂ©forment la gĂ©omĂ©trie. <em>Torsion</em> (<em>Twirl</em>) enroule l’image autour d’un centre. <em>Ondulation</em> (<em>Wave Displacement</em>) fait onduler l’image comme des vagues (amplitude & frĂ©quence rĂ©glables). <em>SphĂšre</em> bombe l’image comme sur une sphĂšre ; <em>Cylindre</em> l’enroule sur un cylindre. Utiles pour des effets miroir dĂ©formant ou prĂ©parer des textures destinĂ©es au mapping 3D.</li>
+  <li><strong>Génération (Render) :</strong> outre les filtres de modification, le menu <strong>Générer</strong> crée des contenus ou motifs. Par exemple : <em>Bruit de Perlin</em> pour une texture nuageuse naturelle ; <em>Eau</em>, <em>Neige</em>, <em>Bois</em>, <em>Métal</em>, <em>Pierre, Marbre</em> génÚrent les textures correspondantes ; <em>Nuages</em> ajoute un bruit coloré façon ciel ; <em>Pluie</em> trace des filets simulant une averse. Pratique pour des fonds ou effets spéciaux : pluie sur un calque distinct en mode éclaircissant, par exemple. Certains de ces effets créent un nouveau calque éditable.</li>
+</ul>
+<p>Les filtres peuvent transformer radicalement l’image ; travaillez donc sur des calques dupliquĂ©s pour rĂ©gler l’opacitĂ© ou masquer l’effet. Vous pouvez aussi combiner plusieurs filtres : la documentation montre, par exemple, comment crĂ©er un Ă©clair en superposant deux bruits de Perlin en mode DiffĂ©rence puis en colorisant en bleu. Avec les annulations et les calques, expĂ©rimentez sans risque. Enfin, les filtres respectent la sĂ©lection : sĂ©lectionnez d’abord la zone concernĂ©e pour cibler l’effet (flouter l’arriĂšre-plan tout en conservant un sujet net, par exemple).</p></div>
+
+<div class="columns"><h2 id="advanced">Fonctions avancées</h2>
+<p><strong>Calques et formes vectoriels&nbsp;:</strong> Depuis la version 7, LazPaint gĂšre les Ă©lĂ©ments vectoriels. Lorsque vous dessinez une forme ou du texte, l’objet peut rester vectoriel. L’outil <em>Éditer la forme</em> (icĂŽne curseur) permet ensuite de dĂ©placer l’objet ou de modifier ses nƓuds. Ainsi, on peut corriger la taille d’un rectangle ou l’orthographe d’un texte aprĂšs coup. Les formes acceptent aussi des remplissages en dĂ©gradĂ© ou texture ; choisissez le style de remplissage dans les options de l’outil : couleur unie, dĂ©gradĂ© (dĂ©finissez couleurs de dĂ©part et d’arrivĂ©e puis faites glisser la ligne de dĂ©gradĂ©) ou motif image. Des outils d’alignement facilitent l’alignement des objets vectoriels dans la page. Les calques vectoriels peuvent ĂȘtre exportĂ©s en SVG : LazPaint Ă©crit un SVG multi-calques oĂč formes et textes restent Ă©ditables dans Inkscape, par exemple. Inversement, vous pouvez importer du contenu SVG. Ces capacitĂ©s font de LazPaint un Ă©diteur hybride raster-vecteur assez unique dans sa catĂ©gorie.</p>
+<p><strong>Import d’objets 3D&nbsp;:</strong> LazPaint sait importer des modĂšles Wavefront <code>.obj</code>. Via <em>Fichier â€ș Importer un objet 3D
</em>, choisissez le fichier, l’orientation, l’angle et l’éclairage ; le modĂšle est alors rendu en pixels sur un calque. Pratique pour intĂ©grer un lettrage 3D ou une forme simple dans un montage. Les textures et normales personnalisĂ©es sont prises en compte. Une fois importĂ©, l’objet n’est plus que des pixels ; choisissez donc l’angle et la lumiĂšre avant l’import, ou rĂ©importez-le sous plusieurs angles si besoin.</p>
+<p><strong>Scripts Python&nbsp;:</strong> Pour les utilisateurs avancĂ©s, le menu <em>Script</em> donne accĂšs au scripting Python. Des scripts prĂȘts Ă  l’emploi apportent des effets classiques de calque (<em>Ombre portĂ©e, Contour, Lueur interne/externe</em>
). Par exemple, « Ombre portĂ©e » duplique le calque, le noircit et le dĂ©cale automatiquement. Vous pouvez Ă©crire vos propres scripts : manipuler calques, appliquer filtres, gĂ©nĂ©rer des images procĂ©durales, etc. Placez le <code>.py</code> dans le dossier scripts ; il apparaĂźt alors dans le menu. Consultez la doc ou la communautĂ© pour l’API dĂ©taillĂ©e.</p>
+<p><strong>Utilisation en ligne de commande&nbsp;:</strong> LazPaint peut s’exĂ©cuter sans interface graphique pour convertir ou traiter des images en batch. Syntaxe gĂ©nĂ©rale : <code>lazpaint &lt;entrĂ©e&gt; [commandes
] [sortie]</code>. Exemple : <code>lazpaint photo.pdn photo.png</code> convertit un fichier Paint.NET en PNG. Les commandes, prĂ©fixĂ©es par <code>-</code> (ou <code>/</code> sous Windows), enchaĂźnent des opĂ©rations : <code>/RotateCW</code> (90° horaire), <code>/horizontalflip</code>, <code>/Resample(800,600)</code>, <code>/opacity(128)</code>, etc. On peut chaĂźner : <code>lazpaint in.jpg /RotateCCW /BlurFast out.png</code>. Sans fichier de sortie, LazPaint exĂ©cute puis ouvre le rĂ©sultat dans l’interface. On peut aussi crĂ©er une image : <code>lazpaint /New(800,600) /Gradient(255,255,255,255,0,0,0,255,Linear,0,0,800,600) gradient.png</code>. C’est un Ă©quivalent lĂ©ger d’ImageMagick pour les tĂąches simples. Pour la liste complĂšte, lancez <code>lazpaint -help</code> ou consultez le <a href="https://wiki.freepascal.org/LazPaint_Command_line">wiki</a>.</p></div>
+
+<div class="columns"><h2 id="shortcuts">Raccourcis clavier</h2>
+<p>LazPaint propose des raccourcis pour la plupart des commandes afin d’accĂ©lĂ©rer votre travail. Beaucoup figurent directement dans les menus Ă  droite du nom de la commande (par exemple, dans le menu Fichier : <em>Ctrl + O</em> pour Ouvrir, <em>Ctrl + S</em> pour Enregistrer, etc.). Les conventions habituelles sont respectĂ©es : <strong>Ctrl + Z</strong> pour Annuler, <strong>Ctrl + Y</strong> (ou Ctrl + Shift + Z) pour RĂ©tablir, <strong>Ctrl + C</strong> pour Copier, <strong>Ctrl + V</strong> pour Coller, <strong>Suppr</strong> pour effacer une sĂ©lection ou un calque (si celui-ci est actif), et ainsi de suite. En plus, voici quelques raccourcis et astuces souris moins Ă©vidents :</p>
+
+<ul>
+  <li><strong>Barre d’espace (Panoramique) :</strong> maintenez-la pour passer temporairement Ă  l’outil Main et faire dĂ©filer la vue. RelĂąchez pour revenir Ă  l’outil prĂ©cĂ©dent — pratique quand on peint au pinceau et qu’on veut se dĂ©placer rapidement sur l’image.</li>
+  <li><strong>F6 (Afficher / masquer les panneaux) :</strong> cache ou rĂ©vĂšle d’un coup toutes les fenĂȘtres flottantes (BoĂźte Ă  outils, Calques, Couleurs
). IdĂ©al pour un espace de travail Ă©purĂ© ou pour retrouver un panneau fermĂ© par erreur.</li>
+  <li><strong>Ctrl (Transformations prĂ©cises) :</strong> pendant une rotation ou un redimensionnement avec poignĂ©es, maintenir <strong>Ctrl</strong> contraint l’opĂ©ration : la rotation se cale par pas de 15°, le dĂ©placement s’aligne au pixel.</li>
+  <li><strong>Shift (Contraindre formes / lignes) :</strong> maintenez <strong>Shift</strong> lors du dessin d’une forme pour conserver le ratio (cercle ou carrĂ© parfait). Dans l’outil d’édition de forme, <strong>Ctrl</strong> ajoute ou retire des Ă©lĂ©ments Ă  la sĂ©lection vectorielle. Avec les outils polygone/courbe, <strong>Shift</strong> permet d’ajouter un nouveau polygone lié — utile pour crĂ©er un trou (Ă  tracer dans le sens inverse).</li>
+  <li><strong>Retour arriĂšre (Supprimer le dernier point / texte) :</strong> en dessin polygonal, supprime le dernier sommet placĂ© ; dans l’outil Texte, efface le caractĂšre prĂ©cĂ©dent.</li>
+  <li><strong>EntrĂ©e (Valider sĂ©lection / transformation) :</strong> confirme l’action en cours ; par exemple, termine un dĂ©placement ou une transformation.</li>
+  <li><strong>Esc (Annuler / dĂ©sĂ©lectionner) :</strong> interrompt l’action ou ferme une boĂźte de dialogue. Si une sĂ©lection est active et qu’aucune manipulation n’est en cours, <strong>Esc</strong> la dĂ©sactive.</li>
+  <li><strong>Clic droit (Action secondaire) :</strong> dans les outils de dessin, peint avec la couleur d’arriĂšre-plan ; dans les outils de sĂ©lection, soustrait de la sĂ©lection ; dans le Tampon de clonage, dĂ©finit le point source ; dans certaines formes ombrĂ©es, fixe la direction de la lumiĂšre.</li>
+  <li><strong>Molette de souris :</strong> défilement pour zoomer/dézoomer ; clic molette + glisser pour déplacer la vue (si supporté).</li>
+  <li><strong>Raccourcis d’outil (touche unique) :</strong> <strong>B</strong> pour Pinceau, <strong>E</strong> pour Gomme, <strong>T</strong> pour Texte, etc. Les bulles d’aide ou le menu rappellent ces lettres et permettent un changement d’outil ultra-rapide.</li>
+</ul>
+<p>En mĂ©morisant ces raccourcis, vous accĂ©lĂ©rerez considĂ©rablement vos retouches. Les info-bulles et la barre d’état les rappellent souvent. En cas d’oubli, consultez le menu ou cette documentation. Avec un peu de pratique, l’usage combinĂ© clavier-souris devient naturel et efficace.</p></div>
+
+<div class="columns"><h2 id="faq">FAQ (Frequently Asked Questions)</h2>
+<dl>
+  <dt><strong>Q: How do I install or update LazPaint?</strong></dt>
+  <dd><strong>A:</strong> Installation is straightforward. For Windows, run the installer and follow the prompts (it’s a small program and doesn’t bundle unwanted extras). For the portable version, just unzip it to a folder and run <code>LazPaint.exe</code>. On Ubuntu/Debian Linux, you can download the <code>.deb</code> package and double-click it to install, or use the command line (with <code>dpkg -i</code> command). Other Linux users can use Flatpak on Flathub or Snap, or compile from source. On macOS, there is a DMG – open it and drag LazPaint to Applications. To update, you’ll typically download the new version and install it over the old one (settings should carry over). Check the LazPaint blog or GitHub releases for update announcements.</dd>
+  <dt><strong>Q: What file formats can LazPaint open and save?</strong></dt>
+  <dd><strong>A:</strong> LazPaint supports a wide range of formats:<br>
+  <ul>
+  <li><strong>Native/project format:</strong> <code>.LZP</code> (LazPaint Project) – preserves layers, transparency, etc.</li>
+  <li><strong>Layered formats:</strong> <code>.ORA</code> (OpenRaster) for interoperability, <code>.PDN</code> (Paint.NET) for which LazPaint can import all layers, <code>.PSD</code> (Photoshop) which LazPaint can open as flattened, and <code>.oXo</code>.</li>
+  <li><strong>Standard image formats:</strong> PNG, JPEG, BMP, GIF, TIFF, WebP, PCX, TGA, XPM, XWD, etc. – LazPaint can read and write these. Note: For GIF and TIFF, LazPaint can handle multi-frame images (e.g., animations or multi-page TIFFs). ICO/CUR (icons and cursors) are supported too (LazPaint can create multi-resolution icons).</li>
+  <li><strong>3D formats:</strong> LazPaint imports Wavefront <code>.OBJ</code> models (rasterizing them to an image layer). It does not export 3D, so this is input only.</li>
+  </ul>
+  In summary, you can open almost any common image. When saving, choose LZP if you need to keep layers for future editing. Use PNG if you need lossless output with transparency, JPEG for small files (photographs), ORA if you plan to transfer the file to another layered editor, etc. One thing to note: when saving to formats like BMP or GIF that have limited color depth, LazPaint will prompt options (e.g., BMP 24-bit vs 8-bit). If an image has too many colors to save in a paletted format, you may need to reduce the colors (for example, use Posterize or convert to grayscale first). LazPaint’s flexibility with formats is a strong point – you’ll rarely find a format it can’t handle in some way.</dd>
+  <dt><strong>Q: Does it support transparency (alpha channel)? My eraser isn’t making things transparent.</strong></dt>
+  <dd><strong>A:</strong> Yes, LazPaint fully supports transparency on layers. If the eraser isn’t making areas transparent, it could be because there is an underlying opaque background layer. In LazPaint, when you create a new image, you have the option of a solid background or transparent. Alternatively, you can use selections: select the region you want to make transparent and hit <strong>Delete</strong>.</dd>
+  <dt><strong>Q: I lost my Layers/Colors/Tools windows. They disappeared – how do I get them back?</strong></dt>
+  <dd><strong>A:</strong> They might just be hidden or behind the main window. The quickest way to bring all panels back is to press <strong>F6</strong>, which toggles the visibility of the tool windows. If that doesn’t bring them back, go to the <em>View</em> menu and ensure “Layers Window”, “Colors Window”, “Toolbox” (or similarly named items) are checked or click them to re-open. LazPaint allows floating these panels freely, so it’s possible they got moved off-screen if you had a multi-monitor setup; F6 on/off can reset their state. If you prefer these panels to not float, you can dock them into the main window in the View menu.</dd>
+  <dt><strong>Q: How can I crop the image to a certain area?</strong></dt>
+  <dd><strong>A:</strong> Currently, LazPaint doesn’t have a dedicated “Crop Tool” button like some editors, but cropping is easy via selection. Use the rectangular selection tool to select the area you want to keep. Then go to <em>Image > Crop to selection</em>. That will cut the canvas down to that selection. Make sure you have the area exactly selected first. If you want to crop by exact numbers, you could use <em>Canvas Size</em> and manually input the new size, but using the selection is more visual. Once cropped, everything outside the area is discarded. If you accidentally crop too much, just undo (Ctrl+Z) and try again. Pro tip: if you want to extend the canvas (the opposite of crop, to add border area), use <em>Image > Canvas Size</em> and enter a larger size – you’ll get empty space (transparent or filled with a color depending on background) around your image.</dd>
+  <dt><strong>Q: How do I draw a straight line or a perfect circle?</strong></dt>
+  <dd><strong>A:</strong> To draw a straight line, the easiest way is to use the Polyline or Curve tool. Click (left or right) the starting point and right-click the end point. For a perfect circle or square, start drawing an ellipse or rectangle and hold <strong>Shift</strong> while dragging – this locks the aspect ratio to 1:1 (a circle or square).</dd>
+  <dt><strong>Q: The quality of my image got worse after resizing/rotating – can I avoid that?</strong></dt>
+  <dd><strong>A:</strong> When you resize or rotate a raster image, some quality loss (blurriness) can happen due to interpolation of pixels. LazPaint uses resampling algorithms to minimize this, but multiple transformations can compound errors. To avoid quality loss: try to do scaling in one go to the final size (rather than repeated rescale down then down again). For rotation, 90° rotations are lossless (since pixels realign), but arbitrary angles will blur slightly. One strategy: if you have vector shapes or a source with higher resolution, use those. LazPaint’s vector layers, for instance, can be transformed without losing quality, so if you know you’ll need to rotate a shape, keep it vector until you finalize. Also, LazPaint’s undo allows you to experiment – if you rotated something and it looks bad, undo and try a different approach (maybe rotate before scaling, or vice versa). In summary, the algorithms are good but not magic; avoid successive transforms on the same pixels. If needed, go back to the original and do a single transform to target. And for critical photo work, use the highest quality resample option.</dd>
+  <dt><strong>Q: Are there any tutorials or documentation for learning LazPaint?</strong></dt>
+  <dd><strong>A:</strong> Yes, beyond this help page, there are several resources. There’s also an official forum where the developer and users discuss usage tips – you can search or ask questions there. The LazPaint blog introduces new features with examples (for instance, posts about using blending modes to create lightning, or new gradient tools). Additionally, there are a few video tutorials on YouTube that demonstrate LazPaint’s interface and basic drawing operations (search for “LazPaint tutorial” on YouTube). Since LazPaint shares some similarities with Paint.NET, tutorials for that program can sometimes be applied in LazPaint (for example, how layers and blend modes work, or basic photo editing steps). And of course, you can reach out via the project’s <a href="https://github.com/bgrabitmap/lazpaint">GitHub page</a> if you encounter bugs or have suggestions. The community is small but friendly, and the developer is active in responding to feedback.</dd>
+</dl></div>
+
+<h2 id="resources">Ressources utiles</h2>
+<p>Pour plus d’informations ou d’aide, consultez ces ressources officielles&nbsp;:</p>
+<ul>
+  {{ $pdf := "pdf/lazpaint-tips-assets.pdf" | relURL -}}
+  <li><a href="{{ $pdf }}">Astuces et ressources</a> – Un PDF rĂ©digĂ© par Love (membre de la communautĂ©) contenant plein d'astuces et de liens vers des images Ă  inclure.</li> 
+  <li><a href="https://forum.lazarus.freepascal.org/index.php/board,46.0.html">Forum LazPaint</a> (en) – Espace communautaire (hĂ©bergĂ© sur le forum Lazarus) pour poser vos questions, signaler des problĂšmes ou partager vos expĂ©riences avec les autres utilisateurs et le dĂ©veloppeur.</li>
+  <li><a href="https://github.com/bgrabitmap/lazpaint">DĂ©pĂŽt GitHub de LazPaint</a> – Code source et suivi des tickets. IdĂ©al pour signaler un bug, demander une fonctionnalitĂ© ou contribuer au projet.</li>
+  <li><a href="https://www.youtube.com/results?search_query=LazPaint+tutorial">YouTube : tutoriels et dĂ©monstrations LazPaint</a> – Recherche YouTube pour trouver des vidĂ©os pĂ©dagogiques ou des dĂ©monstrations faites par la communautĂ©.</li>
+  <li><a href="https://lazpaint.blogspot.com/">Blog officiel LazPaint</a> – Articles du dĂ©veloppeur prĂ©sentant les nouveautĂ©s et donnant des astuces (par exemple, explications des changements de version).</li>
+  <li><a href="https://wiki.freepascal.org/LazPaint/fr">Wiki LazPaint</a> – Documentation complĂšte : fonctionnalitĂ©s, spĂ©cifications de formats, tutoriels et rĂ©solution de problĂšmes.</li>
+</ul>
+<p>Avec ce guide et les ressources ci-dessus, vous avez tout pour maĂźtriser LazPaint. C’est un outil polyvalent qui fait le pont entre dessin simple et Ă©dition avancĂ©e. Bonne crĂ©ation !</p>
+</main>
+
+</main>
+{{ partial "footer.html" . }}

+ 166 - 0
web/layouts/page/documentation.html

@@ -0,0 +1,166 @@
+{{ partial "header.html" . }}
+<main id="main" class="doc">
+
+<div>
+    <a class="button" href="#interface">Interface Overview</a>
+    <a class="button" href="#tools">Basic Tools</a>
+    <a class="button" href="#selection">Selection Tools</a>
+    <a class="button" href="#layers">Layers</a>
+    <a class="button" href="#transforms">Transformations</a>
+    <a class="button" href="#colors">Color Adjustments</a>
+    <a class="button" href="#filters">Filters and Effects</a>
+    <a class="button" href="#advanced">Advanced Features</a>
+    <a class="button" href="#shortcuts">Keyboard Shortcuts</a>
+    <a class="button" href="#faq">FAQ</a>
+    <a class="button" href="#resources">Further Resources</a>
+</div>
+
+<div class="large-columns"><h2 id="interface">Interface Overview</h2>
+<p>LazPaint features a hybrid single window interface / multi-window interface with a main drawing canvas. The toolbox, color picker and layer stack can be separated as floating panels. Each of these panels can be toggled from the <em>View</em> menu (or by pressing <strong>F6</strong> to show/hide all tool windows at once). A dark theme for the interface is available if you prefer a darker UI. Menu options are laid out similarly to other image editors (with menus like File, Edit, Select, View, Image, Colors, Tools, Filter, Render, Script, Help along the top). Common actions are also accessible via a toolbar of icons. At the bottom, a status bar displays hints (for example, it shows tool usage tips or selection dimensions). Overall, the interface is designed to be familiar and easy to navigate for beginners.</p>
+{{ $img := "img/lazpaint-interface.png" | relURL -}}
+<center><img src="{{ $img }}" style="width: 50em; max-width: 100%" /></center></div>
+
+<div class="columns"><h2 id="tools">Basic Tools</h2>
+<p>LazPaint provides a variety of drawing and editing tools, accessible from the vertical toolbox (usually on the left side of the screen). Below is an overview of the basic tools and their usage:</p>
+<ul>
+  <li><strong>Brush/Pen Tool:</strong> This freehand drawing tool lets you paint on the canvas with the selected color. You can choose the brush shape and size (even load custom brush images). The brush can have softness (opacity gradient) for smooth edges. Use it to draw lines or any strokes.</li>
+  <li><strong>Eraser Tool:</strong> Erases parts of the image. The eraser will make pixels transparent (showing a checkerboard background). LazPaint’s eraser can operate in different modes (e.g. you can set it to lighten or darken instead of fully erasing, for special blending effects). Adjust the eraser size and opacity as needed. This is useful for removing unwanted areas or softly blending edges.</li>
+  <li><strong>Fill Tool (Bucket):</strong> Fills a contiguous area with the current foreground color. Click on a region and the tool will replace that region’s color (within a tolerance) with the selected fill color. It’s great for coloring in shapes or backgrounds. You can adjust the tolerance setting to control how similar neighboring pixels must be to get filled (higher tolerance fills a broader range of colors). Progressive mode can be toggled in the toolbar: when enabled the shape color will be affected as its color becomes different from the initial point.</li>
+  <li><strong>Shape Tools:</strong> LazPaint allows you to draw vector shapes such as rectangles, ellipses, polygons, and curves. These shape tools create a new vector layer or object that remains editable (you can move/resize it later without quality loss). For rectangles and ellipses, simply click-and-drag to draw the shape; hold <strong>Shift</strong> to constrain to a perfect square or circle. For polygons or poly-lines, click multiple points to create straight segments (<strong>Backspace</strong> will remove the last point if you make a mistake while drawing). For curves (Bezier-like curves), click the main points and the curve will adapt to it (at a given point, you can set if the curve should be round by pressing <strong>S</strong> or make an angle by pressing <strong>X</strong>). To finish a polygon or curve, you can right-click or click the first point again. You can set shape fill to solid color, gradient, or texture, and apply outline strokes or shadows (see <a href="#advanced">Advanced Features</a> for more on vector shapes).</li>
+  <li><strong>Text Tool:</strong> Allows you to insert text into your image. Click on the canvas to define the area and type to create a text object. You can choose font, size, style, alignment, and color. The text is placed as a vector object, so you can re-edit the content or style by selecting the text shape later. LazPaint also supports special text effects like outline or Phong shading (highlight and inner shadow) through the toolbar. Pressing <strong>Esc</strong> while using the Text tool can finish editing mode once you’re done typing, while <strong>Enter</strong> will add a new paragraph, with a vertical margin. Press <strong>Shift+Enter</strong> to insert a line break, without margin.</li>
+  <li><strong>Color Picker (Eyedropper):</strong> This tool lets you sample colors from the image. Click (or click-and-hold) on any pixel to pick up its color into the primary color slot (called “Pen” color). In LazPaint, the secondary color (background or “Back” color) can be picked by using the alternate click (for example, right-click with the picker to set the secondary color). This is useful for matching colors already in your image. You can quickly switch to the eyedropper by pressing <strong>C</strong>.</li>
+  <li><strong>Clone Stamp Tool:</strong> A handy retouching tool that allows you to copy pixels from one part of the image to another (useful for removing blemishes or duplicating objects). To use it, first <strong>right-click</strong> on the area you want to copy <em>from</em> (this sets the source point). Then left-click and draw where you want to paint the cloned content. The source moves as you paint, copying from the original area to the new area. If you need to reset the source, right-click again on a new source point. This works across layers too (ensure you have the correct layer selected when setting the source).</li>
+  <li><strong>Selection Tools:</strong> These tools (detailed in the <a href="#selection">Selection Tools</a> section) let you select specific regions of the image for editing. LazPaint offers rectangular selection, elliptical selection, free-form lasso, polygon selection, and a magic wand. Once a selection is made, other tools will draw in a temporary selection layer, only affecting that area. Selections can be inverted or adjusted.</li>
+  <li><strong>Move Tool:</strong> The move tool lets you move the current selection or layer content. After making a selection, choose the selection move tool and drag the selection to reposition that portion of the image. If a whole layer is selected in the Layers panel, the move tool will shift that layer. This tool is essential for arranging elements in a composition.</li>
+  <li><strong>Hand Tool (Pan):</strong> Represented by a hand icon, it allows you to pan around the canvas without editing. Click and drag with the Hand tool to scroll the view. This is especially helpful when you're zoomed in and want to navigate. You can as well start editing a shape or moving the current layer by clicking on it. You don’t actually need to switch to the Hand tool frequently, because you can hold the <strong>Space bar</strong> at any time to temporarily toggle the hand mode for panning (release <strong>Space</strong> to return to the previous tool).</li>
+  <li><strong>Zoom Controls:</strong> LazPaint provides zoom in/out buttons (magnifying glass icons with +/–). You can also zoom with the mouse wheel. Holding <strong>Ctrl</strong> will apply a finer zoom. There are one-click buttons for 100% (actual size) and “fit to window” zoom. Zooming does not alter the image data, only your view. The toolbar will show the current zoom level and coordinates of the cursor which can be helpful for precision work.</li>
+</ul>
+<p>Most tools have an options toolbar that gets appended at the top when selected, allowing you to adjust settings like opacity, size, tolerance, etc. Be sure to check those context options to get the desired effect from each tool. With a bit of practice, these tools enable both simple drawings and more complex image editing tasks.</p></div>
+
+<div class="columns"><h2 id="selection">Selection Tools</h2>
+<p>Selection tools allow you to define and work on a specific part of the image. LazPaint supports anti-aliased selections for smooth edges and semiselection, and you can even modify a selection as a mask. The selection content can be edited like an temporary layer. When a portion is semiselected, the content will be drawn with as semiopaque. The main selection tools include:</p>
+<ul>
+   <li><strong>Rectangular & Elliptical Selection:</strong> Click and drag to select a rectangular or oval region. You can see the selection outline with a bevel while the selection is highlighted in blue. Hold <strong>Shift</strong> while dragging to constrain the shape to a square or circle. Use this to quickly select large areas, borders or round shapes.</li>
+   <li><strong>Polygon Selection:</strong> Similar to the lasso but in straight line segments. Click to place corner points one by one; a line will connect each point. Use this for selecting polygonal or irregular shapes with straight edges. If you need to remove the last point while drawing, press <strong>Backspace</strong>. To finish, either click on the starting point or right-click to close the polygon automatically (closing connects back to the start).</li>
+   <li><strong>Curve Selection:</strong> This lets you draw a selection similary to Polygon Selection but with Bezier-like curve that adapt to the points.</li>
+   <li><strong>Magic Wand:</strong> Select an area by color similarity. Click on a pixel and the magic wand will select all neighboring pixels of similar color (the tolerance for similarity can be adjusted in the tool’s options). This is great for selecting a solid-colored background or any region with consistent color without tracing it manually. If the “Progressive” option is on, the border will be antialiased or semiselected.</li>
+   <li><strong>Selection Pen:</strong> LazPaint also allows treating the selection as a mask that you can paint on. You can paint the selection area (displayed as a translucent overlay). This can be very precise for complex selections. This is an advanced but powerful way to refine selections.</li>
+   <li><strong>Edit Selection:</strong> A dedicated “selection editor” can be opened with Edit Selection menu item. It shows selection as a grayscale image (white = selected, black = not selected, gray = semiselected).</li>
+</ul>
+<p>Once a selection is made, other operations will only affect that selected area. You can also move or transform the selection itself. For instance, choose the Move tool to drag the selected area to a new location. Various transformations are available in the Selection menu. If you intend to adjust the transform, it is recommended to paste it in a new layer and use layer transforms. To cancel current transformation, press <strong>Esc</strong>. To deselect, press <strong>Enter</strong>: this “releases” the selection, merging it over current layer.</p>
+<p>You can modify an existing selection by adding or subtracting areas. Uniquely, in LazPaint you can also use the right mouse button to subtract from a selection without changing modes. This makes it easy to refine your selection shape. Remember that any filter or paint action will only affect the area within the “selection” outline once you have an active selection.</p></div>
+
+<div class="columns"><h2 id="layers">Layer Support</h2>
+<p>Like advanced editors, LazPaint fully supports multiple layers in an image. The <strong>Layers</strong> panel (or window) shows all layers in the current image, each acting like a transparent sheet stacked on others. Using the layer toolbar or the main menu, you can add new layers, duplicate a layer, delete layers, and rearrange them by dragging up or down in the list. Each layer has an checkbox icon to toggle visibility and an opacity percentage slider to adjust its transparency. There’s also a dropdown for blend mode (default is “Normal”). Blend modes allow layers to mix in different ways (like Multiply, Additive, etc.). LazPaint offers several blending modes, including some unique to this program. Using layers, you can draw or edit parts of your image separately without affecting others, enabling non-destructive editing.</p>
+<p>LazPaint supports both <em>raster</em> and <em>vector</em> layers in the same image. A raster layer is a normal bitmap layer (pixels), while a vector layer contains shapes or text that can be edited after creation. For example, if you use the Shape or Text tool, LazPaint will keep that object’s vector information on the layer so you can adjust it later (e.g., change the text or reshape the curve). These vector objects are re-rendered if you transform the layer, ensuring they stay sharp. If you then use a pixel-based tool (like the brush) on that layer, LazPaint will rasterize it, meaning it converts the vector shapes into pixels on the layer (at that point you can’t edit the shape’s properties anymore). In practice, LazPaint handles this automatically – just be mindful that once you paint on a vector layer, it becomes a regular raster layer.</p>
+<p>Basic layer operations include:</p>
+<ul>
+	<li><strong>Rename a layer:</strong> Click the layer name in the panel to name it (helpful for organization).</li>
+	<li><strong>Reorder:</strong> Drag layers in the list to change which one is on top.</li>
+	<li><strong>Opacity:</strong> Adjust the layer’s transparency (0% = fully transparent, 100% = fully opaque).</li>
+	<li><strong>Blend Mode:</strong> Set how the layer blends with those below (e.g., “Multiply” for darkening, “Screen” for lightening, etc.). You can click a blend mode button to get a visual selection dialog or choose from a dropdown list.</li>
+	<li><strong>New/Delete:</strong> Add a layer (it will be blank or you can paste into it) or delete the selected layer.</li>
+</ul>
+<p>There are also commands to <strong>Flatten</strong> the image (merge all layers into one, e.g. when you need to save to formats that don’t support layers) and to <strong>Merge</strong> down (combine a layer with the one below it). Flattening will discard any hidden layers and just produce a single-layer image. LazPaint’s native <code>.LZP</code> format is recommended for saving your work in progress, as it preserves layers, transparency, and other metadata. You can later export to a standard format (like PNG or JPG) for sharing. Additionally, LazPaint can save to OpenRaster <code>.ORA</code> format, which means you can open your layered image in other software that supports ORA. This is great for interoperability (for example, you could start a painting in LazPaint and then fine-tune it in Krita or GIMP, or vice versa). LazPaint also imports Paint.NET files (<code>.pdn</code>). Overall, layers are one of the most powerful features of LazPaint – use them to separate your work into manageable pieces (sketch, color fills, shading, etc.) which you can edit independently.</p></div>
+
+<div class="columns"><h2 id="transforms">Transformations</h2>
+<p>LazPaint provides various commands and tools to transform your image or layers. Common transformation operations are found under the <em>Image</em> menu or <em>Layer</em> toolbar. For example, you can rotate the entire image 90° clockwise or counter-clockwise, or flip it horizontally/vertically. These operations affect all layers (if it’s the whole image) or just the selected layer (if you use the Layer transform). You can also rotate by arbitrary angles or resize layers via interactive tools.</p>
+<p><strong>Scaling/Resizing:</strong> To resize the whole image, use <em>Image > Resample</em> and enter new dimensions. LazPaint uses resampling algorithms to preserve quality when shrinking or enlarging images. There is also a <em>Canvas Size</em> function which lets you expand or crop the canvas without scaling the content (for example, to add borders or trim edges). If you want to scale a specific layer or selection, you might use the selection transform tool or copy the selection to a new image, resize, and paste back.</p>
+<p><strong>Rotation:</strong> For quick 90-degree turns, use the menu commands. For free rotation, LazPaint has a rotation tool – select the layer (or selection), then choose the rotate function. A bounding box appears, allowing you to drag to rotate. Hold <strong>Ctrl</strong> while rotating to snap to common angles (15° increments). This is useful for precise straightening. Once the desired angle is set, press <strong>Enter</strong> to apply the rotation (or Esc to cancel). Rotating a vector shape layer will not degrade its quality (it re-renders the shape). Rotating a raster layer multiple times will not cause blurring due to re-sampling, as long as it is not re-rasterized by using the pen tool for example. So try to separate parts for which you intend to adjust transforms continuously.</p>
+<p><strong>Moving:</strong> The Move tool (as described in Basic Tools) is used to shift layer contents or selections. You can also use arrow keys for nudging the selection or layer by small increments (1px per press, 10px if holding <strong>Ctrl</strong>, and align to the border if holding <strong>Alt</strong>). This is handy for fine positioning, such as aligning an object.</p>
+<p><strong>Advanced Transform Tools:</strong> LazPaint 7 introduced some sophisticated transform tools. The <em>Layer Perspective</em> tool allows you to take a layer and adjust its corner perspective – for instance, to make an image appear as if it’s tilted or receding in 3D space. You’d drag the corners of a grid on the layer to skew it. Another feature is the <em>Deformation Grid</em> (warp) tool, which gives you a mesh over the image that you can drag points on to warp the image smoothly (good for subtle photo corrections or artistic morphs). There is also a <em>Zoom Layer</em> tool that can scale a layer via a handle interface. These tools make LazPaint capable of complex transformations typically found in larger programs.</p>
+<p>Keep in mind that you can always Undo (<em>Ctrl+Z</em>) if a transformation doesn’t turn out right. LazPaint supports up to 200 undo steps by default, so you have a lot of freedom to experiment. Use transformations to position and tweak your image elements until you get the desired result.</p></div>
+
+<div class="columns"><h2 id="colors">Color Adjustments</h2>
+<p>LazPaint offers many color manipulation functions under the <strong>Colors</strong> menu (sometimes called Adjustments). These allow you to correct or alter the colors of your image or layer. Some key color adjustments include:</p>
+<ul>
+  <li><strong>Brightness/Contrast:</strong> A basic adjustment to make the image brighter or darker, and to increase or decrease contrast. It’s straightforward: brightness shifts all colors lighter or darker, while contrast expands or compresses the difference between light and dark areas. Shortcut: <em>Shift+Ctrl+T</em> for brightness/contrast as shown in menu.</li>
+  <li><strong>Curves:</strong> A more advanced tool for tonal adjustment, letting you remap input brightness to output brightness via a curve graph. In LazPaint, you can adjust curves for RGB channels or even HSL channels. This allows very fine control (for example, brighten midtones without blowing out highlights, by dragging the mid section of the curve).</li>
+  <li><strong>Colorize:</strong> Impose a color tint on the image while preserving the luminosity. You can pick a hue and adjust saturation. For example, turning a grayscale image into a sepia-toned image is a use of colorize. It’s like applying a colored filter over the image.</li>
+  <li><strong>Posterize:</strong> Reduce the number of distinct colors in the image. You choose a level (e.g., 8 levels will reduce the image to 8 shades per channel, creating a stylized effect). This can give an image a flat, graphic look by limiting color gradients.</li>
+  <li><strong>Shift Colors:</strong> Rotate the hues of the image and adjust saturation. This is useful if, say, you want to change all blues to reds, etc., or generally alter the color palette of the image. It’s like a hue rotation across the spectrum.</li>
+  <li><strong>Intensity and Lightness:</strong> These are two different brightness-related adjustments. “Intensity” in LazPaint makes colors lighter or darker without simply mixing with white or black (preserving saturation better). “Lightness” does a similar brightening/darkening but by pushing colors toward white or black. The difference is subtle but important for photo editing. Experiment to see which fits your needs; they target brightness in slightly different ways.</li>
+  <li><strong>Normalize:</strong> Stretches the color histogram to use the full range of tones. If an image is low-contrast, normalize will boost the darkest value to pure black and the lightest to pure white, spreading out the intermediate values. This can improve contrast automatically, similar to “Auto Contrast” in some software.</li>
+  <li><strong>Negative:</strong> Inverts the colors of the image – like a film negative. LazPaint offers “Negative” (which applies gamma correction so the inversion looks natural) and “Linear Negative” (inverts without gamma, giving a slightly different effect). This can be used for creative effects or analyzing complementary colors.</li>
+  <li><strong>Grayscale:</strong> Converts the image to grayscale (removes color). It uses a standard luminance calculation with gamma correction, meaning it tries to preserve perceived brightness. The result is an image with only shades of gray.</li>
+  <li><strong>Swap Channels:</strong> LazPaint has options (under Filter operations) to swap color channels. For instance, Swap Red/Blue will exchange the red and blue channel values. This can fix images with misinterpreted color channels or create odd color effects. There is as well the Apply function filter that can apply any arbitrary equation on color channels (see <a href="#filters">Filters and Effects</a>).</li>
+</ul>
+<p>Most of these adjustments open a dialog with sliders or curves and a preview. You can preview changes and tweak before applying. LazPaint processes colors in the sRGB color space with gamma awareness, so the adjustments are done in a way that matches how we perceive brightness (this avoids some artifacts that naive adjustments might create). In practice, that means using curves or intensity should feel “correct” visually. If you are working with indexed colors (like a palette-based image), note that some operations might increase the color count.</p>
+<p>Aside from these, LazPaint also allows palette editing via a Palette toolbar (e.g., you can load/save color palettes, reduce image to a palette with dithering or posterize effect since version 6.4.1). This is especially useful for pixel art or preparing images for formats with limited colors. You can associate a color with a digit by holding <strong>Ctrl</strong> and pressing the digit on the keyboard. Then simply recall the color by pressing the digit again (without holding <strong>Ctrl</strong>).</p>
+<p>The <strong>Color Window</strong> is where you choose colors to draw with – it shows a color wheel, with sliders for luminance/opacity. You can swap the current pen and background color with the small double-arrow icon or reset them to a color by entering their name. LazPaint’s color picker tool and right-click drawing (which uses the secondary color) allow you to utilize both colors efficiently while drawing. In summary, the Colors menu and related tools give you powerful control over the look of your image, from subtle corrections to dramatic changes.</p></div>
+
+<div class="columns"><h2 id="filters">Filters and Effects</h2>
+<p>The <strong>Filter</strong> menu in LazPaint contains various filters that you can apply to a layer or selection to change its appearance in creative ways. Filters range from blurs and sharpens to distortions and artistic effects. You can apply a filter to the entire image or just to the current selection (only the selected area will be affected). Below are some categories of filters available:</p>
+<ul>
+  <li><strong>Blur Filters:</strong> These soften the image or reduce detail. LazPaint includes <em>Radial Blur</em> (a non-directional blur radiating outward, with options like precise, zoom or “corona” blurs), <em>Motion Blur</em> (simulates the streaking of moving objects in one direction), and even a <em>Custom Blur</em> (which uses a mask or kernel you provide to blur in a custom pattern). There are also simpler blurs (fast blur, precise blur) which balance speed vs quality. Use blur filters to smooth out noise or create depth-of-field effects.</li>
+  <li><strong>Sharpen and Smooth:</strong> <em>Sharpen</em> enhances edges by increasing contrast around them, making the image appear crisper. <em>Smooth</em> (or a basic blur) does the opposite, softening features and blending pixels. These two are complementary – if an image is slightly blurry, a light sharpen can help; if it’s grainy or has harsh edges, a smooth can mellow it out. Be careful not to over-sharpen (which can cause halos) or over-smooth (which loses detail).</li>
+  <li><strong>Noise Filters:</strong> You can add or reduce noise. The <em>Add Noise</em> filter simply adds random color pixels (sprinkle of grain) to the image – sometimes used for artistic effect or to give a photo a film grain look. The <em>Median</em> filter reduces noise by replacing each pixel with the median color of its neighbors. Median is good for removing salt-and-pepper noise or small artifacts while preserving edges better than a plain blur.</li>
+  <li><strong>Artistic/Edge Effects:</strong> LazPaint has some unique filters. <em>Contour</em> will create a line drawing by keeping edges on a white background (like a pencil or sketch outline). <em>Emboss</em> will make the image appear raised or imprinted by turning colors into grays and shading edges as highlights and shadows – this gives a 3D relief effect. There’s also <em>ClearType</em> (and its inverse) which mimic the subpixel rendering of text, though that’s a niche effect for specific use cases. Another one is <em>Apply Function</em>, which is an advanced filter where you can apply an arbitrary mathematical function to the image’s color channels (useful only if you know exactly what transformation you need, like custom color curves via formula).</li>
+  <li><strong>Distortions:</strong> These filters warp the image geometry. <em>Twirl</em> will swirl the image around a chosen center, creating a vortex look. <em>Wave Displacement</em> will distort the image as if ripples or waves are passing through it (configurable by amplitude and frequency). <em>Sphere</em> makes the image look like it’s mapped on a 3D sphere (a bulging effect), and <em>Cylinder</em> does similarly as if wrapped on a cylinder. These can be used for fun-house mirror effects or to prepare textures for 3D mapping.</li>
+  <li><strong>Render (Generate):</strong> In addition to filters that modify existing content, LazPaint has a <strong>Render</strong> menu with tools to generate new content or patterns. For example: <em>Perlin Noise</em> (creates a random cloudy noise texture), which can be used for natural textures; <em>Water</em>, <em>Snow</em>, <em>Wood</em>, <em>Metal</em>, <em>Stone, Marble</em> etc. that generate textures of those materials; <em>Clouds</em> which adds cloud-like colored noise; and <em>Rain</em> which draws streaks to simulate falling rain on the image. These are great for creating backgrounds or for special effects (for instance, adding a rain effect over a photo). Some of these generated effects create a new layer that can be updated. Using different layers allow you to overlay them with blending modes for interesting results (e.g., rain on a separate layer set to a lightening blend mode to overlay on a scene).</li>
+</ul>
+<p>Filters can dramatically change your image, so it’s wise to use layers (duplicate the layer and apply the filter on the copy, so you can adjust opacity or mask the effect). You can also combine filters for unique outcomes. For example, LazPaint’s documentation or community posts show techniques like creating lightning by using Perlin Noise on two layers and blending them with Difference mode, then colorizing to a blue hue. This kind of layering plus filtering yields effects that a single built-in filter might not achieve alone. Don’t hesitate to experiment – with undo and layers, you can always revert or fine-tune the effect. And remember, filters respect selections: you can isolate the filter to just one part of your image by selecting that area first, which is very useful for targeted edits (like blurring a background but keeping a subject sharp).</p></div>
+
+<div class="columns"><h2 id="advanced">Advanced Features</h2>
+<p><strong>Vector Layers and Shapes:</strong> As mentioned earlier, LazPaint supports vector elements. When you draw shapes or text, they can remain vectorial (since version 7). You can use the <em>Edit Shape</em> tool (an icon with a cursor) to click on a vector shape or text and move it or adjust its nodes after it’s been created. This means you can fix a shape’s size or a text’s spelling after doing other work, which is very convenient. LazPaint can also apply gradients or textures to fills of shapes; to do this, look at the shape tool’s options where you can usually choose fill style (solid color vs gradient vs pattern). If you choose gradient, you can specify the start and end colors and drag the gradient line on the shape. Textures allow you to select an image to fill the shape. Furthermore, LazPaint has some alignment tools for shapes (to align vector objects relative to the canvas). Vector layers from LazPaint can be saved in SVG format: LazPaint can export layered SVG files so that vector shapes and text are preserved in the SVG. This means you could open the result in an SVG editor like Inkscape and continue editing there. Conversely, you can import SVG content. The vector capabilities of LazPaint make it a hybrid raster-vector editor, which is somewhat unique for a program of its class.</p>
+<p><strong>3D Object Import:</strong> LazPaint can import 3D models in Wavefront <code>.obj</code> format. When you use this feature (<em>File > Import 3D Object
</em> or similar), it will open a dialog to load an .obj file. You can choose the orientation, angle and lighting for the 3D model, and then LazPaint will render the 3D object onto a layer as a raster graphic. This is useful if you have a simple 3D model (like text or a shape from a 3D program) that you want to composite into an image. 3D models are loaded with their textures and custom normals, implying it does a decent job bringing in the model’s appearance. Keep in mind that once imported, the object is just pixels on a layer (not a fully manipulable 3D object), so choose your angle and lighting before importing, or import multiple times at different angles if needed.</p>
+<p><strong>Python Scripting:</strong> For power users, LazPaint provides a scripting interface under the <em>Script</em> menu. The scripts are written in Python. Through scripting, you can automate tasks or add new features. LazPaint comes with some pre-made scripts that implement common layer effects (accessible usually as menu items under Script). For example, you can find scripts for <em>Drop Shadow, Stroke (Outline), Inner Glow, Outer Glow</em>, etc. Using the Drop Shadow script will create a duplicate of your layer’s content, fill it with a semi-transparent black and offset it to look like a shadow – all automatically. The Stroke script will stroke the outside of your opaque pixels with a chosen color. These are things you can do manually with layers, but the scripts make it one-click. You can also create new scripts: if you are comfortable with Python, you can use it to manipulate images, layers, and apply effects in code. For instance, a script can iterate over all layers and apply a filter, or generate a complex procedural image. To run a script, you usually place the <code>.py</code> file in the scripts directory and then it will appear in the Script menu. This feature is somewhat advanced and might require consulting the official documentation or community for specifics, but it’s there for those who need automation or want to extend LazPaint’s capabilities.</p>
+<p><strong>Command-Line Usage:</strong> Another advanced feature is the ability to use LazPaint from a command-line (terminal) without the GUI, to perform image operations in batch or quick conversions. The general syntax is: <code>lazpaint &lt;input file&gt; [commands...] [output file]</code>. For example, you can use LazPaint to convert image formats just by calling it in a terminal: <code>lazpaint picture.pdn picture.png</code> will load a Paint.NET file and save it as PNG. If you include operation commands, LazPaint will apply them. Commands are given with a prefix <code>-</code> or <code>/</code> (on Windows you can use either, on Linux use <code>-</code>). Some examples: <code>/RotateCW</code> to rotate clockwise 90°, <code>/horizontalflip</code> or <code>/verticalflip</code> to mirror the image, <code>/Resample(800,600)</code> to resize the image to 800x600, <code>/opacity(128)</code> to change opacity, etc. You can chain multiple commands. For instance: <code>lazpaint input.jpg /RotateCCW /BlurFast output.png</code> would rotate an image counter-clockwise and then blur it, saving the result. If you omit the output file, LazPaint will execute the commands and then open the result in the GUI for you to review or continue editing. You can also run LazPaint with no input but with commands to create images from scratch; for example, <code>lazpaint /New(800,600) /Gradient(255,255,255,255,0,0,0,255,Linear,0,0,800,600) gradient.png</code> would create a new 800x600 image and fill it with a black-to-white linear gradient, then save it. Using LazPaint via command-line is like having a lightweight ImageMagick-like tool for basic operations, which can be very useful for scripting repetitive tasks or integrating into other workflows. For the full list of supported, run the command <code>lazpaint -help</code> or refer to the <a href="https://wiki.freepascal.org/LazPaint_Command_line">wiki</a> and examples.</p></div>
+
+<div class="columns"><h2 id="shortcuts">Keyboard Shortcuts</h2>
+<p>LazPaint provides keyboard shortcuts for most commands to speed up your workflow. Many of these are indicated in the menus next to the command names (for example, in the File menu you’ll see <em>Ctrl+O</em> for Open, <em>Ctrl+S</em> for Save, etc.). It follows common conventions: <strong>Ctrl+Z</strong> for Undo, <strong>Ctrl+Y</strong> (or Ctrl+Shift+Z) for Redo, <strong>Ctrl+C</strong> to Copy, <strong>Ctrl+V</strong> to Paste, <strong>Del</strong> to delete a selection or layer (when a layer is focused), and so on. In addition to those, here are some useful shortcuts and mouse tricks that may not be immediately obvious from the menus:</p>
+<ul>
+  <li><strong>Space bar (Pan):</strong> Hold down the space bar to temporarily switch to the Hand tool and pan around. This works while using most other tools – for example, if you’re in the middle of drawing with the brush and need to move to a different part of the image, press and hold space, drag to move the canvas, then release space to return to the brush.</li>
+  <li><strong>F6 (Toggle panels):</strong> Press F6 to hide or show all the floating tool windows (Toolbox, Layers panel, Color panel, etc.). This is useful if you want a distraction-free canvas or if you accidentally closed a panel and want it back. Pressing F6 again brings them back exactly as they were.</li>
+  <li><strong>Ctrl (Precise transforms):</strong> When using transformation operations (like rotating or resizing with handles), holding <strong>Ctrl</strong> will constrain the transform for precision. For rotation, it snaps to fixed angles (15° increments). For moving, it snaps to pixels.</li>
+  <li><strong>Shift (Constrain shapes/lines):</strong> Hold <strong>Shift</strong> while drawing shapes to maintain aspect ratio (perfect circle/square). When using the Edit shape tool, <strong>Ctrl</strong> will add or remove the elements to the current vector selection. When using polygon/curve tools, holding <strong>Shift</strong> allow to add another polygon that will be linked to the current one. This is useful if you want to draw a hole, for this you need to draw the hole in the reverse direction (counter-clockwise if the polygon was drawn clockwise).</li>
+  <li><strong>Backspace (Undo point/text):</strong> When drawing a polygon selection or shape with multiple clicks, press Backspace to delete the last point you placed if you made a mistake. Similarly, if you are typing text with the Text tool, Backspace will delete characters as usual. Essentially it’s an undo for the last step in shape/text input.</li>
+  <li><strong>Enter (Confirm selection/transform):</strong> Press <strong>Enter</strong> to confirm or “apply” the current action. For example, after moving or transforming a selection, pressing <strong>Enter</strong> will finalize it (stop the moving mode).</li>
+  <li><strong>Esc (Cancel/deselect):</strong> Press <strong>Esc</strong> to cancel the current operation or dialog. If you’re in the middle of drawing a shape or making a selection and want to cancel, <strong>Esc</strong> will usually abort it. If a selection is active, <strong>Esc</strong> will clear it (deselect) <em>provided</em> there is no partial action pending (for instance, <strong>Esc</strong> will deselect if a selection exists and you are not actively moving a node or something).</li>
+  <li><strong>Right-click (Alternate actions):</strong> The right mouse button is used for alternate tool actions in LazPaint. For drawing tools, right-click will draw with the secondary (background) color instead of the primary, effectively “swapping” the colors temporarily. For selection tools, dragging with right-click will subtract from the existing selection (where left-click would normally add or replace the selection). For polygon shapes and lines, a right-click often signifies “finish” – it closes the shape so you don’t have to loop back to the start manually. In tools like the Clone Stamp, as mentioned, right-click sets the source point. Also, certain effect tools (like setting a light source for shaded text or shapes) use right-click: for example, if you have a “Shaded shape” tool (with a light source), you can right-click on the canvas to set the light’s direction.</li>
+  <li><strong>Mouse Wheel:</strong> Use Mouse Wheel to zoom in and out (each notch will zoom a step). You can also click the middle mouse button (wheel click) and drag to pan if your mouse supports it.</li>
+  <li><strong>Tool Shortcuts:</strong> LazPaint has single-key shortcuts to switch tools. For instance, pressing <strong>B</strong> will select the Brush, <strong>E</strong> for Eraser, <strong>T</strong> for Text, etc. These are indicated in the tooltip of the tool or in the menu. Using these single keys can speed up switching between tools without going to the toolbox each time.</li>
+</ul>
+<p>By becoming familiar with these shortcuts, you can significantly speed up your editing process in LazPaint. The interface tooltips and status bar messages often remind you of these. If you forget a shortcut, check the menu or this documentation. With practice, you’ll find yourself using a combination of keyboard and mouse to work quickly and efficiently.</p></div>
+
+<div class="columns"><h2 id="faq">FAQ (Frequently Asked Questions)</h2>
+<dl>
+  <dt><strong>Q: How do I install or update LazPaint?</strong></dt>
+  <dd><strong>A:</strong> Installation is straightforward. For Windows, run the installer and follow the prompts (it’s a small program and doesn’t bundle unwanted extras). For the portable version, just unzip it to a folder and run <code>LazPaint.exe</code>. On Ubuntu/Debian Linux, you can download the <code>.deb</code> package and double-click it to install, or use the command line (with <code>dpkg -i</code> command). Other Linux users can use Flatpak on Flathub or Snap, or compile from source. On macOS, there is a DMG – open it and drag LazPaint to Applications. To update, you’ll typically download the new version and install it over the old one (settings should carry over). Check the LazPaint blog or GitHub releases for update announcements.</dd>
+  <dt><strong>Q: What file formats can LazPaint open and save?</strong></dt>
+  <dd><strong>A:</strong> LazPaint supports a wide range of formats:<br>
+  <ul>
+  <li><strong>Native/project format:</strong> <code>.LZP</code> (LazPaint Project) – preserves layers, transparency, etc.</li>
+  <li><strong>Layered formats:</strong> <code>.ORA</code> (OpenRaster) for interoperability, <code>.PDN</code> (Paint.NET) for which LazPaint can import all layers, <code>.PSD</code> (Photoshop) which LazPaint can open as flattened, and <code>.oXo</code>.</li>
+  <li><strong>Standard image formats:</strong> PNG, JPEG, BMP, GIF, TIFF, WebP, PCX, TGA, XPM, XWD, etc. – LazPaint can read and write these. Note: For GIF and TIFF, LazPaint can handle multi-frame images (e.g., animations or multi-page TIFFs). ICO/CUR (icons and cursors) are supported too (LazPaint can create multi-resolution icons).</li>
+  <li><strong>3D formats:</strong> LazPaint imports Wavefront <code>.OBJ</code> models (rasterizing them to an image layer). It does not export 3D, so this is input only.</li>
+  </ul>
+  In summary, you can open almost any common image. When saving, choose LZP if you need to keep layers for future editing. Use PNG if you need lossless output with transparency, JPEG for small files (photographs), ORA if you plan to transfer the file to another layered editor, etc. One thing to note: when saving to formats like BMP or GIF that have limited color depth, LazPaint will prompt options (e.g., BMP 24-bit vs 8-bit). If an image has too many colors to save in a paletted format, you may need to reduce the colors (for example, use Posterize or convert to grayscale first). LazPaint’s flexibility with formats is a strong point – you’ll rarely find a format it can’t handle in some way.</dd>
+  <dt><strong>Q: Does it support transparency (alpha channel)? My eraser isn’t making things transparent.</strong></dt>
+  <dd><strong>A:</strong> Yes, LazPaint fully supports transparency on layers. If the eraser isn’t making areas transparent, it could be because there is an underlying opaque background layer. In LazPaint, when you create a new image, you have the option of a solid background or transparent. Alternatively, you can use selections: select the region you want to make transparent and hit <strong>Delete</strong>.</dd>
+  <dt><strong>Q: I lost my Layers/Colors/Tools windows. They disappeared – how do I get them back?</strong></dt>
+  <dd><strong>A:</strong> They might just be hidden or behind the main window. The quickest way to bring all panels back is to press <strong>F6</strong>, which toggles the visibility of the tool windows. If that doesn’t bring them back, go to the <em>View</em> menu and ensure “Layers Window”, “Colors Window”, “Toolbox” (or similarly named items) are checked or click them to re-open. LazPaint allows floating these panels freely, so it’s possible they got moved off-screen if you had a multi-monitor setup; F6 on/off can reset their state. If you prefer these panels to not float, you can dock them into the main window in the View menu.</dd>
+  <dt><strong>Q: How can I crop the image to a certain area?</strong></dt>
+  <dd><strong>A:</strong> Currently, LazPaint doesn’t have a dedicated “Crop Tool” button like some editors, but cropping is easy via selection. Use the rectangular selection tool to select the area you want to keep. Then go to <em>Image > Crop to selection</em>. That will cut the canvas down to that selection. Make sure you have the area exactly selected first. If you want to crop by exact numbers, you could use <em>Canvas Size</em> and manually input the new size, but using the selection is more visual. Once cropped, everything outside the area is discarded. If you accidentally crop too much, just undo (Ctrl+Z) and try again. Pro tip: if you want to extend the canvas (the opposite of crop, to add border area), use <em>Image > Canvas Size</em> and enter a larger size – you’ll get empty space (transparent or filled with a color depending on background) around your image.</dd>
+  <dt><strong>Q: How do I draw a straight line or a perfect circle?</strong></dt>
+  <dd><strong>A:</strong> To draw a straight line, the easiest way is to use the Polyline or Curve tool. Click (left or right) the starting point and right-click the end point. For a perfect circle or square, start drawing an ellipse or rectangle and hold <strong>Shift</strong> while dragging – this locks the aspect ratio to 1:1 (a circle or square).</dd>
+  <dt><strong>Q: The quality of my image got worse after resizing/rotating – can I avoid that?</strong></dt>
+  <dd><strong>A:</strong> When you resize or rotate a raster image, some quality loss (blurriness) can happen due to interpolation of pixels. LazPaint uses resampling algorithms to minimize this, but multiple transformations can compound errors. To avoid quality loss: try to do scaling in one go to the final size (rather than repeated rescale down then down again). For rotation, 90° rotations are lossless (since pixels realign), but arbitrary angles will blur slightly. One strategy: if you have vector shapes or a source with higher resolution, use those. LazPaint’s vector layers, for instance, can be transformed without losing quality, so if you know you’ll need to rotate a shape, keep it vector until you finalize. Also, LazPaint’s undo allows you to experiment – if you rotated something and it looks bad, undo and try a different approach (maybe rotate before scaling, or vice versa). In summary, the algorithms are good but not magic; avoid successive transforms on the same pixels. If needed, go back to the original and do a single transform to target. And for critical photo work, use the highest quality resample option.</dd>
+  <dt><strong>Q: Are there any tutorials or documentation for learning LazPaint?</strong></dt>
+  <dd><strong>A:</strong> Yes, beyond this help page, there are several resources. There’s also an official forum where the developer and users discuss usage tips – you can search or ask questions there. The LazPaint blog introduces new features with examples (for instance, posts about using blending modes to create lightning, or new gradient tools). Additionally, there are a few video tutorials on YouTube that demonstrate LazPaint’s interface and basic drawing operations (search for “LazPaint tutorial” on YouTube). Since LazPaint shares some similarities with Paint.NET, tutorials for that program can sometimes be applied in LazPaint (for example, how layers and blend modes work, or basic photo editing steps). And of course, you can reach out via the project’s <a href="https://github.com/bgrabitmap/lazpaint">GitHub page</a> if you encounter bugs or have suggestions. The community is small but friendly, and the developer is active in responding to feedback.</dd>
+</dl></div>
+
+<h2 id="resources">Further Resources</h2>
+<p>If you need more information or help, check out these official LazPaint resources:</p>
+<ul>
+  {{ $pdf := "pdf/lazpaint-tips-assets.pdf" | relURL -}}
+  <li><a href="{{ $pdf }}">Tips and assets</a> - A PDF with lots of tips and links to assets provided by Love (a community member)</a></li> 
+  <li><a href="https://forum.lazarus.freepascal.org/index.php/board,46.0.html">LazPaint Forum</a> – Community forum (under Lazarus forums) where you can ask questions, report issues, and share experiences with other LazPaint users and the developer.</li>
+  <li><a href="https://github.com/bgrabitmap/lazpaint">LazPaint GitHub Repository</a> – The source code and issue tracker. Useful if you want to report a bug or request a feature, or even contribute code.</li>
+  <li><a href="https://www.youtube.com/results?search_query=LazPaint+tutorial">YouTube: LazPaint Tutorials and Demos</a> – A YouTube search link, since specific video content may be user-contributed. Here you can find tutorials or demonstrations of LazPaint in action.</li>
+  <li><a href="https://lazpaint.blogspot.com/">LazPaint Official Blog</a> – Posts by the developer highlighting new features and tips (for example, explanations of new version changes).</li>
+  <li><a href="https://wiki.freepascal.org/LazPaint">LazPaint Wiki</a> – Comprehensive documentation on features, file format specs, tutorials, and troubleshooting.</li>
+</ul>
+<p>With this help guide and the resources above, you should be well on your way to mastering LazPaint. It’s a versatile tool that bridges simple painting and advanced editing. Happy painting!</p>
+</main>
+{{ partial "footer.html" . }}

RozdĂ­lovĂĄ data souboru nebyla zobrazena, protoĆŸe soubor je pƙíliĆĄ velkĂœ
+ 29 - 0
web/layouts/page/documentation.ru.html


+ 1 - 1
web/layouts/page/last.html

@@ -1,6 +1,6 @@
 {{ partial "header.html" . }}
 {{ $url := "https://api.github.com/repos/bgrabitmap/lazpaint/releases/latest" -}}
-{{ $last := getJSON $url -}}
+{{ $last := resources.GetRemote $url | transform.Unmarshal }}
 {{ $text := printf "\n%s" $last.body -}}
 {{ $text := replace $text "  *" "-" -}}
 {{ $text := replace $text "\n-" "\n‱" -}}

+ 0 - 3
web/layouts/partials/nav.html

@@ -8,9 +8,6 @@
                     {{- else -}}
                         {{- $item.Set "URL" (relURL .URL) -}}
                     {{- end -}}
-                    {{- if and (eq .Name "documentation") (ne $page.Language.Lang "en") -}}
-                        {{- $item.Set "URL" (printf "%s/%s" ($item.Get "URL") $page.Language.Lang) -}}
-                    {{- end -}}
                     {{- if eq (relURL $page.Permalink) (relLangURL .URL) -}}
                         {{- $item.Set "Class" "button success" -}} 
                     {{- else -}}

+ 49 - 0
web/static/css/style.css

@@ -8,10 +8,58 @@ body {
     background: black;
 }
 
+code {
+	background: #444;
+}
+
 p {
     margin: 0px;
 }
 
+.doc {
+	background: #403531;
+	padding: 2em;
+}
+
+.doc p, .doc dd {
+	margin-bottom: 6px;
+}
+
+.doc a:not(.button) {
+	color: #85D4DE;
+}
+
+.columns {
+  column-width: 25em;
+  column-gap: 2em;
+  text-align: justify;
+  hyphens: auto;
+  -webkit-hyphens: auto;
+  word-spacing: -1px;
+  margin: 1em 0;
+  padding: 1em;
+}
+
+.large-columns {
+  column-width: 33em;
+  column-gap: 2em;
+  text-align: justify;
+  hyphens: auto;
+  -webkit-hyphens: auto;
+  word-spacing: -1px;
+  margin: 1em 0;
+  padding: 1em;
+}
+
+.columns h2 {
+	margin-top: 0;
+	padding-top: 0;
+}
+
+.columns:nth-child(even) {
+	background: #51433E;
+}
+
 h1 {
     font-size: 3.5rem;
     font-weight: 300;
@@ -35,6 +83,7 @@ h2 {
     padding-bottom: 30px;
     margin-bottom: 5px;
     background-repeat: no-repeat;
+	background-position: 50% 20%;
 }
 
 .languages {

binĂĄrnĂ­
web/static/img/lazpaint-interface.png


binĂĄrnĂ­
web/static/pdf/lazpaint-tips-assets.pdf


NěkterĂ© soubory nejsou zobrazeny, neboĆ„ je v těchto rozdĂ­lovĂœch datech změněno mnoho souborĆŻ