Message ID | 1518813722-4297-4-git-send-email-stefan@herbrechtsmeier.net |
---|---|
State | Changes Requested |
Headers | show |
Series | [v2,1/4] ipc: Make char buf pomiter parameter of ipc_inst_start_ext function const | expand |
Hi Stefan, On 16/02/2018 21:42, stefan@herbrechtsmeier.net wrote: > From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > The new web page uses WebSocket for the asynchronous communication with the > backend, allows a visualization of different image sources and automatically > reloads the web page after a connection lost. > > Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > --- > The documation isn't finished and the project name swupdate-www > needs to be adapted to the real project name. Furthermore the > images need to be replaced. ok, this is just a directive for users. > > Changes in v2: > - Add package task to generate a production package > - Disable the axaj timeout to support large files and slow servers > - Recall delayed tryReload function only if status is not equal timeout > - Enable javascript code fix in npm lint script > - Remove trailing spaces and add newline at end of index.html file > - Add license header to gulfile > - Preserve license comments > - Update Bootstrap to version 4 > - Add Font Awesome icons and spinner > - Rework web page design > - Add SPDX license identifier > - Escape detail messages > - Rework JavaScript code > - Use scss to customize bootstrap > - Add css and scss linter > - Add background image > - Rework favicon and logo > - Reorganize web application files > - Rework the documentation > > www2/README.md | 82 ++++++++++++++++++++++++ > www2/css/swupdate.css | 32 ++++++++++ > www2/gulpfile.js | 121 +++++++++++++++++++++++++++++++++++ > www2/images/background.jpg | Bin 0 -> 96114 bytes > www2/images/favicon.png | Bin 0 -> 301 bytes > www2/images/logo.png | Bin 0 -> 301 bytes > www2/index.html | 136 +++++++++++++++++++++++++++++++++++++++ > www2/js/swupdate.js | 155 +++++++++++++++++++++++++++++++++++++++++++++ > www2/package.json | 47 ++++++++++++++ > www2/scss/bootstrap.scss | 18 ++++++ > 10 files changed, 591 insertions(+) > create mode 100644 www2/README.md > create mode 100644 www2/css/swupdate.css > create mode 100755 www2/gulpfile.js > create mode 100755 www2/images/background.jpg > create mode 100755 www2/images/favicon.png > create mode 100755 www2/images/logo.png > create mode 100755 www2/index.html > create mode 100755 www2/js/swupdate.js > create mode 100755 www2/package.json > create mode 100644 www2/scss/bootstrap.scss > > diff --git a/www2/README.md b/www2/README.md > new file mode 100644 > index 0000000..85266a4 > --- /dev/null > +++ b/www2/README.md See my explanation later about additional repo, I changed my mind. Why don't we put this into the documentation in .rst format ? > @@ -0,0 +1,82 @@ > +# SWUpdate Web Application > + > +The SWUpdate web application uses the [Node.js](https://nodejs.org/en/) package > +manager and [gulp](https://gulpjs.com/) as build tool. > +I depends on [Bootstrap 4](https://getbootstrap.com/), s/I depends/It depends/ > +[Font Awesome 5](https://fontawesome.com/) and > +[Dropzone.js](http://www.dropzonejs.com/). > + > +The web application uses WebSocket for the asynchronous communication with the > +backend, allows a visualization of different image sources, automatically > +reloads the web page after a connection lost and restarts the system > +via a post update command. > + > + > +## Install > + > +1. Unpack a released `swupdate-www.tar.gz` archive to your `www` direcotry s/direcotry/directory/ > + > + tar -xzf swupdate-www.tar.gz -C /www > + ok, this is something we can tune. I have thought again about adding a new repo for this, and taking account that the resulting website with npm has a very small footprint, it is something we can avoid. Addin a new repo can confuse users. I consider the possibility to add the resulting website into the examples directory. This makes changes to support it into meta-swupdate quite trivial. What do you think ? > +2. Run the web application > + > + swupdate -w "-r /www" -p "reboot" I would just add a note to inform that the parameters to mongoose server are changing. Instead of "-document_root" with have just "-r" (root). > + > + > +## Customize > + > +You could replace the `logo.png`, `favicon.png` and `background.jpg` I was impressed from the big logo in the background by starting the application :-). I was just not used of and layout differs from V1. Anyway, SWUpdate is growing as project, the image can also grow :-D > images > +inside the `images` directory. Furthermore you could customize the Bootstrap > +colors and settings inside the `scss/bootstrap.scss` file. The latter needs a > +rebuild of the code. Fine. This is just what most users need. > + > + > +## Develop > + > +1. Clone the code: > + > + git clone https://github.com/sbabic/swupdate-www.git > + cd swupdate-www > + > +2. Install the dependencies > + > + npm install I would add a note about npm version. We need a quite new version to build it. Current version in LTS distro (I tested in Ubuntu) are very old and build does not work. > + > +3. Build the web application > + > + npm run build > + > +4. Run the web application > + > + swupdate -w "-r ./dist" -p "echo reboot" This implies that swupdate is already instelled on the system and reached from the path. > + > +5. Pack the web application > + > + npm run package Required ? We have alread "dist" and this is what we have to packed with meta-swupdate. > + > + > +## Maintainer > + > +Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > + > + > +## Contribute > + > +You can submit your patches (or post questions regarding the project) to the > +swupdate Mailing List: > + > + swupdate@googlegroups.com > + > +Please read in the corresponding chapter in the SWUpdate documentation > +how to contribute to the project. > + > +Additional run the linter before any commit and add a prefix to the patches > + > + npm run lint > + > + git format-patch -s --subject-prefix='swupdate-www][PATCH' <revision range> > + > + > +## License I guess this part can be dropped if we let all stuff into the project. Then the general rules apply and there is already a "contribution" page. > + > +MIT > diff --git a/www2/css/swupdate.css b/www2/css/swupdate.css > new file mode 100644 > index 0000000..a37d3d1 > --- /dev/null > +++ b/www2/css/swupdate.css > @@ -0,0 +1,32 @@ > +/*! > + * Copyright (C) 2017-2018 Weidmüller Interface GmbH & Co. KG > + * Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > + * > + * SPDX-License-Identifier: MIT > + */ > + > +body { > + background-attachment: fixed; > + background-image: url("../images/background.jpg"); > + background-position: center; > + background-repeat: no-repeat; > + background-size: cover; > +} > + > +.dropzone { > + background: #ffffff; > + background: rgba(255,255,255,0.75); > + min-height: 200px; > +} > + > +.dropzone .dz-preview .dz-image { > + width: 220px; > +} > + > +[data-toggle="collapse"] i:before { > + content: "\f139"; > +} > + > +[data-toggle="collapse"].collapsed i:before { > + content: "\f13a"; > +} > diff --git a/www2/gulpfile.js b/www2/gulpfile.js > new file mode 100755 > index 0000000..a99b460 > --- /dev/null > +++ b/www2/gulpfile.js > @@ -0,0 +1,121 @@ > +/*! > + * Copyright (C) 2017-2018 Weidmüller Interface GmbH & Co. KG > + * Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > + * > + * SPDX-License-Identifier: MIT > + */ > + > +var cleanCSS = require('gulp-clean-css') > +var del = require('del') > +var gulp = require('gulp') > +var gzip = require('gulp-gzip') > +var imagemin = require('gulp-imagemin') > +var filter = require('gulp-filter') > +var htmlmin = require('gulp-htmlmin') > +var minify = require('gulp-minify') > +var rename = require('gulp-rename') > +var replace = require('gulp-replace') > +var sass = require('gulp-sass') > +var tar = require('gulp-tar') > +var useref = require('gulp-useref') > + > +gulp.task('sass', ['clean'], () => { > + return gulp.src('scss/*.scss') > + .pipe(sass().on('error', sass.logError)) > + .pipe(cleanCSS({ compatibility: '*' })) > + .pipe(rename({ > + suffix: '.min' > + })) > + .pipe(gulp.dest('dist/css')) > +}) > + > +gulp.task('minify-css', ['clean'], () => { > + return gulp.src('css/*.css') > + .pipe(cleanCSS({ compatibility: '*' })) > + .pipe(rename({ > + suffix: '.min' > + })) > + .pipe(gulp.dest('dist/css')) > +}) > + > +gulp.task('minify-js', ['clean'], () => { > + return gulp.src('js/*.js') > + .pipe(minify({ > + ext: { > + min: '.min.js' > + }, > + noSource: true, > + preserveComments: 'some' > + })) > + .pipe(gulp.dest('dist/js')) > +}) > + > +gulp.task('minify-html', ['clean'], () => { > + return gulp.src('*.html') > + .pipe(replace('node_modules/bootstrap/dist/css', 'css')) > + .pipe(useref({ noconcat: true })) > + .pipe(filter('*.html')) > + .pipe(replace(/node_modules\/.*\/([^/]+)\.css/g, 'css/$1.css')) > + .pipe(replace(/node_modules\/.*\/([^/]+)\.js/g, 'js/$1.js')) > + .pipe(replace('.css', '.min.css')) > + .pipe(replace('.js', '.min.js')) > + .pipe(htmlmin({ collapseWhitespace: true })) > + .pipe(gulp.dest('dist')) > +}) > + > +gulp.task('copy-css', ['clean'], () => { > + return gulp.src('*.html') > + .pipe(useref({ noconcat: true })) > + .pipe(filter('**/*.css')) > + .pipe(rename({ > + dirname: 'css', > + suffix: '.min' > + })) > + .pipe(cleanCSS({ compatibility: '*' })) > + .pipe(gulp.dest('dist')) > +}) > + > +gulp.task('copy-js', ['clean'], () => { > + return gulp.src('*.html') > + .pipe(useref({ noconcat: true })) > + .pipe(filter('**/*.js')) > + .pipe(rename({ > + dirname: 'js' > + })) > + .pipe(minify({ > + ext: { > + min: '.min.js' > + }, > + noSource: true, > + preserveComments: 'some' > + })) > + .pipe(gulp.dest('dist')) > +}) > + > +gulp.task('copy-fonts', ['clean'], () => { > + return gulp.src([ > + 'node_modules/@fortawesome/fontawesome-free-webfonts/webfonts/fa-solid-900.{ttf,woff,woff2}' > + ]) > + .pipe(gulp.dest('dist/webfonts')) > +}) > + > +gulp.task('resize-images', ['clean'], () => { > + return gulp.src('./images/*') > + .pipe(imagemin({ verbose: true })) > + .pipe(gulp.dest('./dist/images')) > +}) > + > +gulp.task('package', ['build'], () => { > + return gulp.src('dist/**') > + .pipe(tar('swupdate-www.tar')) > + .pipe(gzip()) > + .pipe(gulp.dest('prod')) > +}) > + > +gulp.task('clean', () => { > + return del('dist/**', { force: true }) > +}) > + > +gulp.task('build', ['copy-css', 'copy-js', 'copy-fonts', 'sass', 'minify-css', 'minify-js', 'minify-html', 'resize-images']) > + > +gulp.task('default', ['build']) > diff --git a/www2/images/background.jpg b/www2/images/background.jpg > new file mode 100755 > index 0000000000000000000000000000000000000000..5cfceda6397ed471dd9a50fb8dd0a850cf089122 > GIT binary patch > literal 96114 > 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ψMj?iQe1v`RD8KPahv_y~9_BpI|le_tEp|H#LZH1=f*>H); > zWdBBSGwJB%Sm<n^(YZH?yi4t=1??F-Kk0H&fjP#I2;^u6EV>FJvV^>g#bQ=CB&WnY > zD8!r%9%k@>N_Xe@ZXKKamWf$X-BB}=hmA5a;=)-3iHa+nqWI+F&I@Kwd4%;z3FB>K > zkHX%l@GfPK)FqYA3_vl4Yc(C1zX73ctbdnwHw+|iEZHt3R+KUf+WZfO37LLdPrQJu > zGxjs|?V>_aG*HW63}I0bYsx6IgQ}llm6@dz;P6TZAn4DvMHeK@2e}D!&P5Zr)jFAX > z90ZVa%=6AsMOe#+f41P6k1ryfkhQod@NnLeKmAdAs1O&oLoFW9)ou-{RQl;PQJRse > zfEmJ?pht;I%^e2K0^#@k5OgZ>O>&BP^Yq)ZOgg8LK{Mj>O(4UQ`z_Ljo;y?X(u@dw > zA+1m`+}ihTgn5`aoY~&)-<Jn`>O)sAqAp*S<k0t6|Df72r$$|b(OKbt(23b!Sz{Ex > z<cwFkot*3oP=VPE%Mf$I71?nGH;KJYggcXq1j>ARqNipjXLnB8<_=sq{ZWDt6~zT` > zR&2?cz_8sEyXlHItxe%&=T^NM3yuZ*58gabmK9xszBgNsfBKo5uKd-Z6&4L1Ji}Uc > zP|7F8?|_m9+51e&A)bX2jA!%wVwU}V6n_EyXo`lA^4b>+aIgZwJy280CVxU}0ai8L > zP)4&NOxF_+rTAB<6B<RBYdWIxj<#(`xOV!sDe)*iT<F%ER6RGhigqvHP9<#u7Iuzy > zM!yTR)WcwRY<I>ip%S2wqL032%qQnc(z;V;5G)ic7T<u>RM3>{C3437_$EcZfSL$l > zWV|%U9?^;fw@`n-@J4ze*WVe)RJC_?f|Gww@WnWAfC)g%HFEJ4Z1Q9e-Ez*3+sO7K > zUy#AN;WiKP?M<=#x5RlpiaBciwbs~6YP+I|`n#qQ<YFoaLy{Uw7rnIylb&LRaZmT% > zCcU2-n%%4RIPzpW3sFt08kuwOadfliYXpl!HUhvNy6LS67@a}64ET=m9V_6iLT&EK > zRHv)Q0K!n!ngm+Lti$9xBsk#vZ65CPKEIeUPLrRcLbr%gn5O+%PrTU()erg`qN@#B > z@$m#KxRx7yI4n!`lFS=y0tbHN=vswm%b-&+j#(Y_RXc9m9(R`aK^-mkm3QgV+D^Ip > zE7;XYj!OP2<(h}}+jc4)2ke`%l2OOEv?$jo=EC5^rs~ZKc4#ij)l7N3X#Wtn%EY!{ > zjV8vtt|+l$eHf)5;qzwf<h-vI@om-D$*a$TWdH1f(%S!k?~=J@dlf5csdg7x<u((( > z0Cj@cz8DmvubS8B2&OzdQh1e@!HiG{njyvm#<r<^1W5mcLh1@1Y;KA4SC&~*;weY1 > zW;8wU$VXqOOQJ0C)k6hB^)EmWDs&#?v@N(u5boW4&@szTSn0L+%$60(@o=_`wil5W > z<bZ?>KxU0VGLdAN81U_GQI8U4Ft_RHa~=PB0vdLrkHRhKeBGb!F=Aqk8O$|)l@%GO > zs<wvDuJ93((<8xC)*86m8s{dFbK&wep=lEh^Va*_L~$u4hH&WlV092}F+F(P3cuY* > zLR9!xumJ8<!1@FXHi0<i(Thr3*=cIgY#IHIM09y3ZfI``G!exz$5hPLp!G0n+>^bD > zH!k!E_m#hZYI7;b6aw=21Uoebqj%>yJ@mi<PzM2A<w@Zwq1F-rA3+JK{8Z?5N~fV1 > znvMi`+VlhP01c+RvxF7loJBeoC2<RuFyP@!=$|~4CzXLCJ~ZC=J_Zlfl9ltJ<ifWo > z&c{9J6q?4w=*760wP}0&7$h{|Z$}ClI1(HUnO>^deNu}Uh_^%D%~b#UvxkNhwx)9X > zXZfGECWM{3-wD)LOaub6VCnPn=Zcdxf+!Rl9m{KH*)gblDi~qg;t$NlCgc#+YHI^9 > zOIuG3?M&2ONYUe^bVNo}Anj8|wVx><hV~wQm_Bv9QEq)z`bAB{UR>>QJa!9>)6TKQ > z-WeqCkmIea7-b?!MMx|n;-6&sK@T+VBa*NOy{}|n^DD9<FaP}N!w!2J^y8oEkEEjd > zTm|(J^7z#5@YZkSp*qT%<F1CT$!i!{xs0|e6CbB6sW!dDgNuX}FRfRfmGgnr{y$lm > zpVJ)%&|JogvFOKXMgZpO5zWBwH2G^TJ-SJQ|0cnK*-gDx!Z+Z?4jP0pLBa}YK6tDB > zDumaS1^LvHovFr&U%x$cARpI83vo-YyHs8lgagUd$GVrfT{3AQLe<Cv3rPOVA2pTo > zHL4G^ATjea7erJ}D^D11;beyYFs_LUU9|L#RE}dB=+Jg0u|WZ>y(R{#;b@oO+n1e1 > ziCozS_&I+f6hy(z8jllA#{b!<78y~3>{XHvZmn1AO!t$#!iCr$Jzo7<_AP|u@N$#G > z4=WXibpJV-dl;!(k~0D(!{246DliocI>>d?a`-A5v?zv#$|AOM=8Jn%#(R`T87Wy) > z2Gj^0*DS%o-@Fr!^&XggNs*oHDUK0_6aQKo>!40J3NbaSS|=oyTeVB+tB3N>#Abym > zxiu?A+h(ZpH|1r=f*2|yS+C5LRN$(!wVakfc###W%(o#M{*lKEd-*6*(dK25jHDz$ > z<_idZvCFjM=Ze-t8<rV%8M2fdRznxQ*e#)|!Nkw6$y3ruyZUG04lhteBjORv;%uF> > zTB_(pbbE+^DLfVnUU78LZPUs6%#Jf}L$!!<W`yWi9ukyihY3{VECHtxzE-1M(f?lf > zedHVEfIW1Zt3PUnk9~dr2uWC2n3{CHN7YY$l9s3l$JJQDx1RiroixDMDHHNIk7V?| > za1B-_nwa^{Krbf}>6BntpseBp@hpv4Wp)uoqVA!OP&yv3)Z)3YqI^0iU<DiE|Ii0T > zV;IcnKDwadPl(>+*-INMT03;+<@8Rckom@(P~A=zDE89ZBbf>Gre()?`_EY<h>Mcg > zxxBBGL>ykonWaIf8DZuLmXB##1L)NQ46*k67qFSDePJ1s?_{8TQt}BPBggE;75qFc > zC$ti+Ge~<Fp<m;5eEqepLCQG=#!q<#S-bk?_5A5ismV)lZS?<Q?>(TJTDm{blMo<; > z7MgSjJ@g`AC}Mz61?fcuq=Se`5k&+Hy?2lzN=KTC6h%P{y(>ke*k~fy06{w37Ym49 > zub<xU`>*xZdhe_SGqY#!-|VwzPdz7R#-^zd@KaKQR_@nm9$ujveZ!5KZXV*g!-nxo > zxeOKNWgfo;i)!#3bjn)oKP6%I4nf(V@1f{;a4rLw*@u5!yPD9sg?~7L_^Gm4)Q2z~ > zB>Sksb*j7k+&A6pKu5^;U3#n)yUECJ_NjX&@jRlUIKZWpa>+*}DWLuW6oH6uR~GAN > zn3j6&{IWl7Qi;^xw>cw;kTO6CUC#IT46A)CDdiY4m~?2WKCwJ%wzq%zigFHTUcdCa > zwRY31Vf*!?g*yfBZc@rJ(8L`;=$pkHs?pF9Ha{CY;U=_9%SCxgW*Pe!l{R~81^qhr > z%;Q^=`_tqN?Ju=mvQlf7yav!e<b5gnn0TSN(PvMqCswab^Iq~6!SxmZ$_ghj4wxQ1 > zm=LN__ryMQ3^73ytVA9!Oeew7?bLbrUh~LZ5zEyx^ejbp&L<cmeW<Ak;}vcl@V1h6 > zk*p%pVBbv5D=RmhROcSDs2QB}m%Q)EOug!(Q9bENl|`aUTl<og(iy%4bu7OMmvMrd > z44vDn#b}&MQ-1aNrPMUYl6QCk%$D17jJR7dkJMjQ{1EgNdD5tZSCPc2s6wJ^G0UMk > zgX;P|&mK=?a7e?HRR$aOvW*-kn!X}t#6v(5X|<k@{xnssJa9z>|8kLBDL6LW?EZ|^ > z>v0?`WN0svC-K#b>datkMa8&ap>U@nc_dGMrhrTJ)6g6iy?AT>4~|E8fI|1sN1MEu > z(6{=C(SDm+QhLsIFyE!ceeuRYK)J@C+{;6l0xeO73p0}tH6IElW6%4i=-ZEEA=TWy > z(N=D@VY9yWmHWepP>yLi@lE?f_^LMp6;)oo;yw>41^1cw)V&yIt_A2eV;Gg&Zzhi( > zASEOuQlc%#4}RC`#cd65?Jeu=0rt8i)9@t*G}7ucoO)DFUSEFQH(_$bhSH&$Wz@;Z > zHW|Nn)=P~ny8`AB>9h<Nh$9#dRM)^Rl}9^~vg7hcYLCa(PQO84w1La}CcK(H`H(=_ > z_-PWn5v;PW_e04Iz`qwrKCYb+Yn)vqGwsJ1%8(%dcfs2uTs$EB!*FMcnudvW)njtP > zMZ07Q3a)c!UBpJskE&IjISMy0S$v&6MXT9I?;gc=vP7eWPXJ3=Ji@Ppkv&l<U8jB^ > zqz%gLZd7%x(L}Y~)8o!M%FDRhqJ)@BM6N}S8_`?S$3RxH6=v?s6ssri&P1P9%sczG > z`JT~@4FhT<q<DzXO5k~Aq{Ie!tr*XSJOzgeeQIc=rGWI^3+~E#LSYx3;(8I)ge@0M > zQ$k0j?k${w;$O;C2tO__CgK9pBSf=s6<>~>Do!vFc7V5U$=SP*I{UlE*HUbyxnEKn > zTj|#oEN0ufH!RrSDv?Cm*=MM(uF>bybPgiOeDRT;JiExD?1V><M~kw&0zEHm@A~g^ > zR&^kC5RwZg3OHQy)M+g3)?dJT6oZ!^?QH306hJUfw@Hygwr8&$Q_x0I_thrz@IbXg > zk^TEj-ug>x-s;&WZQ0a*oWX(KmnbWNK$wa)`qh+3eRnjkPP>Do5L+BkFn$yh7|Ijg > zuPHq2N4NIGmCYsyL5ST@|Mar5z>%uHwEJwUCtrDgH1An|kU!lMpQ`0A7E|eF=HxIg > zeX=9(V*S2W0$BC%BB=x~f#kAR9gVAHh0p!VmCNvZ;vTJabnhzyj_7l{jS=mASiZQS > z2b~UZ(|&U8O!VuXYEOxlgKQ^Fr-ewPi>1yCoF^$a3N2fG6fV-~%6|U{Nf_ZJz`gfj > zUx1H9!>X!q<+Ixg(FCA8P<Bs3EW`edXjTmABde+=REoz+;n@w^8JJLbzHC=2vtvq! > zTUb&PfwHtyyfs&DpPw~-Yv23eA(y>sVOJ^LsAH`5q@GwVcf9zB>1fCTI4<NE<9mN* > zQW^4(m3yZ3Nl6$7o}9K&CNTDW`0NmVW1Bs)v{^gt8tYS=E^}u^__|fpxjVNdKQA7l > z@heTHHqx*+dd7OM8eYg=jl8&ZI=qr+y6!#QyO1FRuN1-~-8s^?&IMS;jLc~a@=uli > z1;k%GX-GZ}dn#t{dF1Yvc=v5gLvLdYDXsG0oqbo9_d4b#bx1bQwVPhC;as|cGg_ur > z=dvxnqcCL~mkoL6nZlhDYNknGfBYEFaTUXaJ5I7v5vD-rkpOSE%QdB^3T-o!iq3i| > z_V`IXc=D3c_MFCaDjn}e@7bjByW5jPjXmHH+&dqK0eBZJDrVxrJGBab+-qLH5!OD9 > z_vWyA;>41QQ|0}ze%Lza)u9ut1i7a9ShC8K6YKIc!PDKK!-#i_Xo50|ij}DuJ^LD) > z&SW{-!&7Y;uMM7IrXO?IsZlD{pYP#4zD$rT$=SDX?B>a$W^jR;hxD_0nRO-nY^I7h > zw)^CR@u1~!E|p1h$*_I<gI)1M+FJ5fU!_%{rgYc&h;C<3=4HX-n|u=kC&a~?RA}7i > z@&Xc?Vy*FS;}zU~skFZ}ZW{kWN6>NmOIM|Z<c-Trv2@St-!95)(|Fu`2lfqLaz&9F > zHM4k#NyrCA^x79q4*Pqda@@QqTvpMR-uW!Os!L(-_R(eqFpxhgmy2;~GQ)iMkdeO; > z2x*s+21_Qb-x91&jBrOSv3qWYjVGl(kaos|^4uLxbNOg>>XLoaN;l#!Aj>!2Cw>3H > z*fVh7x}tR%FQRv>^S+7!9}Kf>6k0uIVdSxSp$C}w9n6WB_m{odr~O(~{#>(cOAzZK > zP2Cv*HrHy6n~5KU8N?uf?T3Bc-A{rAR-`)IsZpghajspkXCut1;m_*E{sM?NOpgw& > z>oNFIK1*KC_fM^2ZVJ7Xx1tur6M^EKVtp&XpVYh{x3195Ai*8>YU?R?TVtnzwa)mF > zYsY3S#fmJ}?>#n@aV@VO@*60bXjzBn@~FBHTL<36znTjYc&y#zIaI!CT$??9;$*F1 > z%trNsSPG&LKmD-UL)l)^Iaue-Gu}UZGq1&i*iP-fRy>Aga{O#dWhOJr3jR1n#(m4f > zXPMa^u~sQY3Qb-)mW`Et(|%IipxA<JsSp$CqR_d3F2BtxPuvRSxnpse^mdL3rAua7 > ziR&Jo7uD;!U72_GZgvRh<VP;#7%ewUl0Cc7vhrSmN%***->H4&u~oAp@-05A1)--e > zvB5-`2pH8Wl%HP^xC7;^8O`U6ddZvj7qAeocjKOhi^oL;_k?<;*eLj^v7_XXoA`&J > z`>Z1hz3sF}QU{a+95a`5cv6FO*ymkzlX|?e4Il5Xh%7!VGA#U(DcHLE6z<iD<MMrL > zwtoRI*PzFy1^9Q@rv2AGvO0C+e`{tu(ib~VHLEh8CDJ3l8a?s4<F?=S?_PKh2ZzSt > zf5~$S|GOSC0uTTO2=G7u!M}(7|6l*FvH&Dbof}KS9q>O_3Jm~?+*tg7Gy?cvUU)R_ > zginAF{NMl3pTHy#EFSU8rO1sxM*e?wB|yJJf`bs)?+E`s0sbBtPzU~3_4pGFe<<r; > zX-)mP)_xET03m*${CN@*_fz$t|GlXp0QzU@kN|N%BmW5v@ej;j-1{Fge}}C8k4*oi > z&eQ<npP<2t|CIAvbnGv<(4SiRzrF&{zY@j%D)ZNQ+`lp=2=S}jUju^>zs`sMI{O#7 > zB;3Eq#Aki#uK(qQ__f@RJ=L$dcjtn3Cw>wK|0jl@$b2SI|Fp;0&Hc~qXgAkS;^?2y > zz9;=VmxfS(kMffg2!j0y^*@t-N9x}=9_V-O^mlmvb_>5%@A!vGe||v`e=hTT66oJz > z`_HxfcbL!C_@RQpe;;lCqtE{x`SV2RN96Br<a6~Y{$27vP~e}H!G6yLM<c!wzErWs > zF3PvOU&X#?8}~g69N_*&_=5Z|tnnG*H;{Lg^{v!j#jwAL{96s`yMn%G`xBjaZvTrl > zK!`6od?);?1mp|<e@6Zl$WQY=dlc~F6zeB7_;(NgDc&w3_H+F2I)59XzF1?I$nQlF > zU)cVR4E$hc;5WMQ?~43qYy60eUuOTw1^VixzoGLVB5!N)e}Ihmg8e(l@NG4IFZ{nl > z{#yR;=={xFeoyHyT>pDyjX%)&Tif{!ox$pVfQ(<#{=v1~9Dd6he}D_@+~98^EB*mA > z82y#`w~)7)zsmeFfNwMZ4H@xGZl|x?X8xA-i`X{v56A$3_}2gIApgm1>YsGR@A>Rh > z0kDG%Abz3aKV|)(Gh7h@MsM?eL*AzRMhM^L`2iUVg6!PRH=X~;8vlR{Kp{JYenZ}7 > z{+)2An!eW=KhPk)iSJnBf1oorTm$%tHFg*Gt>B->{y}F17T7g5?dZG{`8n8kRO;>2 > zch<n~S(D%mvVHvt;I<5a-Hv^Sj7H%5!2gpPRQv?{6J!u#TaiBqztdR}2mo<occgc$ > z0YdE1{$nIyn`1XJH55X<dtYJ)d7Jrn!k_yF8iC#Iy8jA!$C$fxhQxs&*xhRVE94!3 > z-N*n5_s;nEiD3tMC$b~<&yk<$i~uwc@ZE#yp8)O@wbN2|DEPhzKSn2fOXGFkZZ*4& > zznkG_@tw{AyOWFNh69itpZQGwSIFCdyO0szEi<<nK8J|!Qoon@rX&=gR{RHq?a9gS > zK>oxUpV~D9`%~dRLEdR8yO0pT_CjErxNYa{^dE)atbt!q{@`XH#8)WAKY`r7LF|qY > z-p5FG5?>;SuW9tx@VA0(<Xy~&f7}@SSI9e63E-Q<j|hmb<^D+jO8$AE{+0X<89)S} > zzvm@Ed`W}RU&7z}zg;Oi9SGjY*dIjEKcs&zxh?f=7Potx`hu~|^EWH~vWRVK>|Qrv > ze~{4lnx;noknzhT2=O(0m#2NR%$K}v|M`*rRq{Ut=xv4{nhAbNvyJ>`*4UY`s3X2Y > z{|%XXyG-nM<hR1V_v(K`-Z8=-B6ELLU}qZeH)JgO3kxLfE9-9th#&cWMBdpS-Zi8C > zQRes3KO*m%hW#GEHrGzy3&DON{fLa%HUi=+!xy&y{QuiMeyyn=kU@yA7(dYeGxFbV > z_6LL==lS#fx`6G{zeavQ#&@d!_S$jRuk)fGkiWtHaS=O>_v^!{ACR}ZqyOsF2*uA@ > zeUD7N-5KsE@a-o4Qw;nA!*|Hvb}WBn`$6ibNe#qz<nNGo<)C-Pe=`c*?mE8gJnTjW > z0oZMjoya!fH^N<g{-=>;H?rbRp}>xF{s!VU3kZVUj{blQ2M{|s|HjS$_jb<!fHk;x > z>%8mjh;KYQW&K$M1lje-^_#+f2C|zQy(_U}XAQ{Cz2MhGyEy(JirpDQ0sQLqiy$K4 > zTVDhKKX~SEWAC!Sr;$2<1o$+n?kK-|N8-0Jzc7M#`2d~*MgsuJE>rw{)`VyJ%}f1z > zKIqOk@|6xof6wqIDeSM9A-~N1l_cJz-`wCQjQ`Rxz97Y+e}cG8`md0&KbU$O^i#Mq > zG22c2?f5^gO+KAdfcR~gpD=>)3;BPzcDJK{VEH9^S2O&P5B($I&(ioU)}IQ1fS=QU > z%KQ(+fS*<(6oUN+{@*A6R5$zv>HpwT|E{n249Feu3;X{;k=y|Kdv0|E_Itv=P2u;+ > z5xZrvz<<^Hc0<9Ty9|P#671@tceDMQI0=5+1i*flr2dK7{|)3f87Kh9Z=NWA>ioYE > z|0gjJcY->8%;Ns36aM!l{2#&o_lo_083BJ32QAf)u0Q(u#0~th90%aO9KYZI?{Emg > z@n?8|!5{(%7>t+0CqPsj;(($a9Br*@<?7}?Cl-&$zFD8uJGOJ02mbq6b7qTeqTphj > zqWj0z^s+U7%wty>Pe%l#by`VEACk>zqcTke!EmQZ(X~a0dGa!;Ts5;aKy`jd^%Jpj > zk}frGG>3x$9GHpXiP<>AEA*`hzSDNAFQsA_k6q((cpg}TLaCcn^XfA8b?+rEMcI!` > zublJtDXukTD$qM=c|k<x*kR-|<UM<>Hwp8|XWC1re7z_R#MY6M%z5~1oOOMk9xzH! > ze4m=pt9Q-NbVOc*?oMLBFizvJuFEBc2O;OmNj9N}=b{x*pe;AfuvE<KhYD@ov3CG* > zO2mEKB(q5BBRTC4>%hU2%?xkZV>qrHrN!Q#y2sQOe%mh#+$)}JIhewqgDdW$rI*S4 > z&?Q~jR7fk}`08?04im#|TiNzk7e!F@df^P=>ul5k;yL=@b8v0GQj`PLA)VXJ;&)I@ > z^8lmJ<)pzYkQnLPVqC?kJ|FVp23L&LmhlH<Rl#Xauw2S~A&81UCkEz76}EVl5SOb{ > zd2EC{k$E)wFb!>gesUwzbr~A6a8}J1i7P#z61x%YOY+Ie*>EJT;EWG_y>a?^i-ky$ > zIJ8GoT6EQ_ge;VmeJ<fT1^yF}?eTjXt*cJUZ)HSAA5Xj6DeRDZu34Eerh43zZ%kJo > zK;J>6b?AbWyV3+SH4q|MX{bF%^xPk}S_SR1A;(Bw7Jn>5t$u8S0EGX*9LbbeT^N99 > z7VT_M1ZY8^$JAQ`W5Hd<m13n&j#4zu4&zUexxe=OAmO0h*#RHP)j<4dwGx-XV2xxc > zT<zeaX`(l)<1Lg;)M;o;SRZFJ&(#gkW{9A3QKdfY*f}cOD)Z5XyH7Sfc!j8$L<C5V > zo5FOYX<9<)>5%?5><OgY16x^FTZY;*GMe*V5G7w|ZE{O0r@r`X5a)(6;u|2#H!?4o > z=04e6O=P%2+C~mDb&|ZfCs%QAw@1LmWps^V9)JB@FKmIl^I)NfNu71XYLTDOGL-!l > zH78flq3Ss5r0P^1**9sTa&wRqslMSv!X@ajl5s8X`&T>d3a#F?k_NAQWY_#)p0*L* > zwCR7nSC^X;Y*twNR4RvF{bbmal*C&(8W)dIbjcmyI1ofWwPn{PWBB?Nv$krv)@X*^ > zsGcAM+R%AZyqW8aa7X#os#7^H(#eq&0mFb1Xaf0~L{IQe#fWnBY%?tl2iXWY{L<C> > zKm^aKSK#ewPC@<<qrO2Di;C`>gQS`@P9FxTnu?wxT5BL~rbh!fX&=##QL1Y1Q{aNY > z7;P!YIr`vWOq%}fc8iG|YNkWfV}WRbjd2w!vG5lYPm?vsp72$)2FJZp4}8_udxO$* > z{-qVNpn<Hr^vJX>nSXFn7mBb|BE19oMAzrVeL}zN!UlUe--#d-2T^6RQQ0@sOT1Ym > zC%ivQO1u)Ky??8<LSeD3X+dIyI7+{ehcwmSEBP5qE;J@n5eYLDh%PjC6>EiZ!3W|= > z1gM}K&PUenzb{Kas77{y<@Rv`zxv{_J4Qt3*6zIDx7jfnZeB)D-q3k5kAVSb&2~-C > zQLwc~WBU$SUNgIr<nxwOGKUsHVSZDF*nhBJo2N*17%NcVX?{i0n2`rN*=svQDx9zv > zG_22+ZxJ~|szDeY)5u^$0{6O*B>GVk-Rb7)!z=d)Tlf^~FGkEBt@41x-f+rzY&9|R > zP85`j;Rx%%C0gl19mA|1QwCs>V)cP4()_I_l5y<dmbk~26l<OWkXo7TW1kqnSB33t > zKn$HohE{ls;RiM?D~Cw7%li%{Cftb_zNjfa<00Za0Bbwj6&y=r^7bh>#bPR1sX?h- > zwAc2-fhf=L>QR<^SuFbExrJr7Y$Bk1Y`3MKoJ5I4FYf2aye^x(rvVfvaXS5w`H1Qg > zEodV29xeh+2EZwcHy8%i(#|GQoO^1eyD;2w=L&d2LW|+qkevYsqmEXBxUMo%*FGW1 > zt<I_03&d1eUVu6cWc41PXMNl(A`p|DjV)GLt=6=5@pnb>#;DkNzt(Kw>@`VDEk1uI > zDTE12BkpDEAkgEAA7w!wQ`6f>^SKG)!k}UDLdh=b(Np#jMs10SIYN;f=8F14d5bOF > z>|{!0U?|4ym5=~ftfRcl#L6jjypWiRB!Z<y@dk7vZYb|rq@Z6sx?=tioyJFHej^is > z1%r>A;+lRjx<-Y<!=WA7dt=4x2pwIMU6OK2KK9=!y47wqSjGt>M@e%!GO**nJt~7g > z_rZ&XiY4r0mou+hi$6q9k``kSIXF>b4KX%&aB=U`m&b)lAQ+6=JjRikkkeE;1cJPx > zXZPN;n*&XEIqJ~yXWmHd>)c2XxNYBqQGIJ&yJOBNLu8K#ButS5?QU<Wv?7=;Yw)0l > z)g!ymub!rzqZ2DG9aT8%OG=;`O_P&#fSRZ9@i7cTF&Z{MIN28;>h5yIy)*H>d(}mw > zh@9e*#-_qG0TL@(44hEj?mE~%u$h6AA0xS5R%V6&ffJbBx=8mlKT;fF1%Z2!m*jK? > zlGx$^vmDoAog79bP8piihhhx*92sDFju^X-qkN!MhHEOlE3shuGXZCHluQMI!O&Vm > z$337zwVb51EV~HkQ{)}y03DZe_|*pP81oWpdJjmM>eyphGB)ASGn@w;8j3klH#J&Z > z-Qy)NeIVzq^+&}qt@8j#ft!;`G2n8L`wf<*xW0VNFtVVr8QeAPgA7-St=y<$%AVE} > z8fg~h8?Ezd$AQZLwWuWbs>77e4~s_TGd-${vVS(3b=1~w2FCKP!vhSe>!SyUtBpMp > zvUf}odd)3)$f|#;LRT0nsSBvzmZ(-S=y4UhL-?L;BEFk)IJs5y-6o@|o)RBp-Fv>0 > zgU<<gkE-V8;5%jQo?w@g#QqpugQYltJJ1-&cQ@>`zm=ueC0AFfKvIF58b(G_NFmoa > zlau^}WQE)Y!c<oAd-fRlJ&c-mgc!cj4Y_!f;EhLeXiyLuGllL?q<%~m6VmNLE*_-^ > z(dQ3J+mI|+U}WM%PGurqHWO@)Ya6+jykO=a*5nqm5x^BTlyx-9N2_ZM`1L+M{EWZ% > zWDp_=-f}dq@ECP4ojHuYRA#^K>99gLIG*5rhJt*MYMf-v3jVj0Pv1Bnm6W@YmtcXK > zi|p|a=&OAM(_>gE!{L+zKud9ijxO)XjE#N9ryTAbPe`Aln?BaS+z*J6LNgzz#vV{| > zg@U2F&(jm<D#$KwJg>7fZHTlCI9!Cts^a3|-s`{Lu7?d4j0G+@*V0{1)eNTtZiLXZ > z4|+U`k%#E5!ig4fWZ(wAh4@@t%<N_|Erwf*Dii-B+rxwWf^mG6s_y<<^Ss4(jAmmv > z6=bcEQ1U$j^KVJs@M7l-g#dzei_y}z4TkE4gg#<dL<Gx*Q^3|`#EcYWlOGlPIJ3|& > zOjvx7t{#9ao>|f0TFPsZ>T!$Ks7(iP#qLRt(8Rm^d`Aa7&5#lTABBKp07|mGS;|yP > zP2k&7FOkJvC4^J4^ZJZb{gHG5Fm7CUe*wLC*cGb1Z6MDCGPhA`KX?fHvr4phHb;t- > zg0<135+f|sAHP>>qDngxMpy3*VdA9V;}$+~?8(y5%F*h;7g@Ta#R9pNZqZG_eTS*0 > zQWY@?m&H1jV_=(2aUkJSXhSu<m3@XCsAIP&L-h_zW5aIUiaC4Q11ZBcCY9WgMW;)T > ztvD44?V!F51}(jpmkFSyD|4kfHA5ux0_Hq?iFYq_A#!+0!o!MhcFxxBQrJ9oum!R3 > zt1>0ns^&nN%!6z=?1sRy?(>MVs~cGMQz?FRmR$B_Jq9LO;qh$moF#R7v3{iIijIK& > zL+j~y)|{Lq<EmRhRPVyp0}gGiZwcszLg$SR$P1sai<u&wvFxgL5W1Kyr+Ktq?~U<W > z0;c1p`@(fLam52H#Z{K(sW~CFq<1E?=BSDh7*zl?x*jSrjy5ZL(qB;hFeQpm=yj_z > zqO(;@_on*Y=WNzqn<+eI4vRt6gleN6cTMfBbrGy)y0l#?^1MfKi3siaZ{%{z5HTRF > zr-%~<*NAupXqoPG9(>QI4yAEe*NhHAewsY>l4Vn|gttYvN6QJ6ffF7APiih+Q^&zL > z`9@De91QJg_EhkWQ*iSwuyJ}wtuW$05*h7=S(k>Gr^;{gMD7tXy=l|@i=ZjLTTsF5 > ze(08Ps}=rG!6w<|xBn;+8<zMqhSgLJ|HbD-Anc^{iAq<pWVG9jhgGb(9Lkr~MMw1< > zJx{i05jLH;w4d;K1Xr3Dio#XgY8t<ezYrCp8O12U2sXHKXnt7|DG*SeWkoO}xPG9h > ztgK0}45(<hqwvwV$t1_SfO<5ETUm^Z&%c-uHPwG0*>_VdzT#Zoa-Kv0YY&pLJhnQU > zE_1xH%&wH!+8T=vY%u4yj2jh8Wylhw28j=6z*L~fu&dIhSis>#k&IqM=&0EFTSgx% > zaco*fs4L6*RYwoM0W#?8?E>sCfQrT(h%Zw5*k%oK!rBf@Y648TsdvSR1kTi&YG$nK > z0)~4`W!IE2;ndvf@tnU1?p6~A^OBLi>K%}d+(#!teqr2Onuw67HGu5H^(T#p*H#Q~ > z;_5Mtv-<yp!xirdke#l#gW8Q9GfLeo^ZyIrI+W!>TCd!=T$pvCmLx0&<2@yY@PwEX > z;Xk)3FAL~8Wnv#L#9%Z|Vl*#Wt6dEi_6QR_^;kdiq@*6S9v!%zDf(e_yeHrK80Bc3 > zuV7D+sE9H31Ls+smd;?{VHk2Lib>%J7QiS7SmDt19mAO{V$ql=Ze3U|i?f^(1$Nyn > zCrlLvVSl=MA*uUHabIZE8flzm0O!ldtMy`C@;%2A4`~x|TBXk)te|_f#J{lx^87Gn > z&ytS0OcSdfddos}IH>{RJiZGi)m-1eN~PX_UlDf?{%~CQky(D54KL;WiIE3DaqaPP > ze->Lto>gOABljEfw@(xLbPQp74=xd?z@upCZ?&EW!6?<-A;P8IE}AoHA0G0x`8SD- > zhFP<{M{K?7+!!f%ND6&V%Ls5%(i`h*dET@#6VYo77=J%N`SK+VV$RiO8PGDLKS!iC > zyXqTMsKHVim_#PRs)V4kB;vsBRc)8bi+k~wD1w6lNsa41vO)m9h^E8M{{>XjndK%M > zm&{yAwl%^ICvXOE?H{3h?{oj*OQf3Vup37~V$WvMjYAaxvc%VSb1!`mGGh!Wy-pKl > z%Y9#<19shLECZL?GWQ(gd%w&K8Dy1(reNSwq0Sp;B)oM{<6N+ktqe$te8b27ly>m@ > zo(mo?w_Kfb9j?tuNm!~KRSv3eCPUT?iWv)Omba+Q>4wR33FPsyYfieO);~_Dze}-p > zs&IDqmaEXc>JoO5!7SzNo=>;HJfN+~PX>wz$Bfdeb-VHtV0wUM^#gZ4EWzS4`VP<2 > z$T^mJWkp3h>lgZ$LV4MJWAzLA(kH~l`zC}By>$W?8q-5$$5;hI6c}=~!uXzkwhM{m > zC#SMXt?`~Y&tL0*-5S$NNq&Z+y=B#DR4YqGA}9YoJr=)gLxu<8d)G%%xs!eSv_8Dh > zfxbJz@bW<L3+3g{bqPsV+<cgF6Yg+=NZ1Watet!V!4sfo?m_!z48HzS@GgqT$bv-< > z#vdc#$)++=d(iwui;AY+$wYa%z5Zl0_4i||nLe43yANLr_rgm~(_cbX>C&^*YQB%r > z3sTd8-NflfAJ%Q;^8Ls}>DqQ64kU5RWs2LD%k;ibEb;r#=J|3bb{_dTF#(r}nL!i+ > zHWnU6ROo3Q83O?Uv`?x9|KJNL-B?a0kZ~=00b%>=95$Q3fH&Vs_pY6mT5xYQoRxnu > zhTR(}yB82YxO}guM$dd2R!2e0qr+n~8jG7y*V2kV#Cg0gBH%QDMJtRs<xmA+6F=95 > zK|-OfgUIAqTjO<5_Nmn@$OZF5^_L0=f@9vsJn~y+<1b)rU;_7ZUhs=j;Zq6bg%#+I > zdMuNEY7k$HSfNFBSvWrUuFDOZ+eT-6x+B@I12Z!!m2$nOLyw++h0-mOACrD+L8*4F > z%*;X7>W-M_GR-dOOVBJ-Ya01=_PsL>@HOLG&QxW*S-x-eFQ!E}rpleLskP9rj<#td > z-A@_HybuM!&zdFK-9Gm&8hQAB;XI0)Jl2rW#x28}{8o$5_|5PSem9=C2z;=SU#Xb2 > z4P&3Bb}mV_Tvf`J+)q(#@M`rtVJ(HC`{2pOb@P?WWWg2&7LK#_S&{1w8}fI_MRP}U > z))&t5c&_h#&-=-pztq>U!jp0wFHoWcJ%&fPrvzTTa-7wT&uyohOrZ!_6On;H2f7Q{ > zwkCEdcxVfJ?#c(13Jraa8rVbIp&pG}Mw#BWc05h&8?7Bv?V0xE+SGT!9~+;Ksvw8} > zDDl%1v`S*S)W?XI6)gL^Z@}lzDW7p++%Fkl62tK_VCZ`6JyGYWET3u84UhX)d()qf > zc-*4qo4YHza`{Es2r|fIfr)bS)T$bVTw$^JM%le1uNClT%Trb;ef0BXRCbMS78Tm^ > z{nUHh%OPHE3JV*fxqf7*dbH9gh+muPTCD@YY1Ywsu3Ck~*rE>XGTqUML-$ywP*L=3 > zeWi~qGA*5QgPE08{BIdZK<pMJ8<eQHs0iqqJr7QQcw%K7m5rSyxK2qJwRpbq=>4dN > z`q}R7)N-%_eNT_()9nrAh6_orAKd#~cxf<_CH0ik<IHRHP1qi4ttb8R0RCu|c#Ib3 > z+2u_9XWj@8;6G);7Si=J2fjbFL2y62g;Op&c`o6gw*HAAQIZ@x+JvYEx7qgTzz_tv > z*mT5)D4T`>wgHpNx6tUba?+^F^{>wppPa0I;S)E*j;Xmn7qT(<<-Ut&x~!pOFFV7C > zGSx7Itx13(hxIk4^@pT==Yl;Vj!96Q6|ZMw!A^r$d^RL~J##`5d7mUQrDRMgnIyj! > zO|5;!JiK^C<jldX^Y>#h);>%Z&(&Se>q53w1X8^`>lI~H8u)RB&U^1*?WaDbssq<_ > zKc~QBc+LYAb9AZ^DHN2+5JXuUcx~S7=)!^5i;cH+c;CDClRXgs_&9>+_ziuvV+2T8 > zcAF+&9=G{|RnXhYi~=Y0TES(V18~XQj@iB%t(JhNVJuGr)yPM(c`-eWw+9)DANpRj > zZ%^?Vne&(JPM%$hP?-PZK7$jBnHy?4O0iEkZ&IH-Gu5S2JN)(%ksw;l<uO?sbEvgE > zLOPdqL3m|R*T@)@eBZ*Uz!$R&Un!-c^(B1V-Vp^OzgTZ`h2Tx<=o>)bE(M5tK#~`$ > zS98LvyhZtNkPNw-_NB?ZMX3-;fS`URm{>0zQpKX0Zri66R?TrVr25^4&Y4gBwX;=w > zt~6JCAFF4OyPE_EgtbWJXE2t+v7fVkFGN$#l-k|o?g3s=6gmi$pP?Ky<G)axY(jBb > zb+WcV^rZ8LKq7xE0IL5BC@ajqE)Xzr>9JhhAgLjt<~1XuMf|7g039iA8cr$i{YU1; > zj-+}xxkT)@I8Qr6lJD?ZAsk2y(6DG;d->u^b?pCW&B%>B$0)n#Gdbv(RK2pi;W#Ur > zxJV(IdY*CN3R?sUMlcdhltfJbCYsjrHcpw6S7GiNT2_}z3d$5gtkH}kVeyhI1?Y4s > zsEki&#pddVry7nG)CohZbr&fCG?}r9*|F&n3QD2IeS!I~GD27RnlX2$2Wb>RJ>DlC > z%xIr%AV3ltggoC$be3s&;NN6xXY82EW2ckZm<0iYX5skJ_ubJ7Npk&oB2;d7KV+HH > zCoH3Ri8GXlb!mlkIW;m5={^)7qDL(M6ny^L73!;xyJ=H74{Y3U!u5i|uaoo`5TY<t > zY=QBqY9wSVpx}Jd$I0gqQ?lc1+?`79(x-%NCOgll#_28QorYQfmwD$B>3cU7^^2yh > zEe-bhef;D$L&T^;_jhMfFR&D~e@IsA7FxW2?vc?srGP1uw6%UFzgXD)^|gK#)|xxc > zkA%3fu=%X;ngqsCaz(X1u3Ca5U{g_<;pTpu6N+M;PVW){#VNgF4i!~h!Iu*w9Agv^ > z7ddb_!9=fh!F64MNBl;<p!dTjkNbgh;)dfMJZYO8&Q`j?=3;q78jvS4m4W<iMIL+Z > zDCP6&9X{&)$(dYk8o*dcON1uiCrDaWJ{%voe-8X=k#ij7&agJ*5V0Q+5TnoydT@N& > zUxk6w-kTZ*M$m9Fur+&yWD&)2;J2@^`ym`g8qB3)xUd$IO^bqB-_uhA=I$lsxucGN > zVK5NpFuB*Y4<O;u1%E8FBBp8&(lvBznmez29z5=!TVS~V!>8V}0=t02e+AdIj*sg_ > z8Rcv_=%vm*uHMZ#qufUN8DIOHh&En-T^73}7dvBLiXf7*w>_S5HH~ky0GtqTLD;M= > zEL*3n<z0GxKyBJtXTg4*Jz0E+*T8XbTn?7eBu)E}tC?YlrlOd4I90|dI75qr%3(0{ > z<a@I!K@x%DT3^4@;#cD{7ST#$hQ(PEVn{N8Z53a2N8@JtW8!mC^URC5hIEI|h;mad > zhf5iC-0-0t@sh+MxodP2lfV`2Ir*J3HtZ@H6y#N;Bw~b<2}CChd&~CJ1$rw=N=xXP > z#Wzp!Jpx}1kQ<MG5bhuH_F~8pGP>*UBh=X~RCI9;g<vdl7QMxwPEAtIaQnrl$?u%D > ztPA@VH-gB>d+|IVCMWzC(D?ctEu!p@Sl&}28V^dY?C0c6MiC`OQ-`qUF;DOZMwVsx > zhBUxbXFxq=Yz5Prj8l*0WFbeDIg-^ca>G3o<cZNx2tjY0uaHlffR(yGdX+-XykTe> > z5~Ey*0hhEl&z^tR=;NQpw)x3tM;gy#{qVzvpIT&5EB*sr2GJ|`&%ICOyF)XH8I>UC > z2y<*XA%AGAv{&^AT<OH2>-<(E@&Twq2+&0g5R*Ak(z3`ul_720f=Js}#L2@R-=iIJ > zS{FY;S)apH7okd=3lX;=8XP-_gwP9Tfz}pvUblTH1B%gvURQ>0$|MZphrugY1LXn2 > z*gYDB8IVn)&z{<u`AATGvcWc%rO8Nh%hdAPdUsuJ63WE*aEo<J7)4K0uZQ^XN7aba > zcMr7Szf-3TkAhng^P+Na)x~rkuCtJU55<{l6H)zpg?K9CG$r>d`b4;8vqZM_2#jV? > zqvns9<`oy$-YkpZZX-(%y&akO7Z4@fb$4yE8com_o64_%)Ftoe^L9<on6Av#N-ne; > zO~*2!g8+aCSc84?;qqf2%yoF)MOD8WmnU|OKeIS~R$)P6)inH38Qi|X{snv0S!hpX > zC)J47CoMr|bgNk+xw@(p=~kk0`q2hx3_;XgEE6sdnMGvuGVC<zt*#t`wEEWq@enu% > zPE|OMs_W_pD=P*#E)O7q<tz0KZOQ;yZi8IM-j_P@GQUQhGT9u;o8<Cm`3Nl>@FK>o > z+#PMw4M4L@L1XbJ7L7<rp>s9~KM!Pv_3|B=fT(~#ZMLF^V3U+3O`o$5*;4A&=a!6t > zlO+pDZ!Fy2h=(x13MVGT-n>3RJ4>Nsc)2(W0%R#+A7m478_*UPuQ3;EfCNQ85-M7G > z4|QkIs@{q>=ZUhFn)PC9y3VpPZ~5?M;w9jK4`b3OaH$b`E3-&rEY*>1+!5V&J48~k > zwOo)y%F-^11E!jU)!P#d9p0Cqo|RP!z#nFRY62rS{{q_dZb3S#7p9k0J*kMwDvpi% > zEu`QM7aWDBS$Z5vwRmeNcn}x4cJ=KGa7_tz5;OcxoyxUZaVv$zu7aXCjt)C2dKbTj > z041BK30=^CPiPug#^M%m;>|omkE}-cG^W|sKi;6TbWPMCg($QEoDar8VN?vKVT1@; > z7$3(YPLR>d`dt3hfUbzSIA1Aqa&%|~Z_M84>J!fq*@s81RL?%B{tG~!E-VxQ$=e?h > zuur8$QNaeMofrds6Fc^(EEVjfMxQRz96f8!MH7aze0qsl+%Tp7#dGwN`^PdOQgsPj > zN>HNQY9}o+*F<}79QT8k3S~kmhZZ)uTV!&DF79o;YaN9&A}egs(DuGra!sMDK8^=+ > zXKZ){8H69g0fOGQ8?>6}W_>`gdstd#@2ch*_MCnRmz(=qv#syM79F%ak=o_;x}i7= > z@luDLj>FRoMiU@H@m8i-9$XBv1f>qp9kb&N2l<5(WYciGgCXuljITi>*ZTY)!TcT` > zAEy<A)jRd@Ly}PegoQvzhku$TT6%NRT9dmp(`zp3{pfy@$q$08kTk*>mXUR}ObhnK > z2<7vOod)TM_WrHz<@X0iq|&w^gI;rPW&T-(U@`+Dg+NruWzu@%a2MT0iNY=CyJ8I8 > zi{7H}o9c_D;nvJ3-km{($Z*ZoD2s9gM@Mm3xS*9~C<1x0F8C@7@y9xYfbRB1l`}@@ > zFdArF4WU+O!2wAE0%b1!vD0^!A`HXnRainWnnD~iiYOaZC25-UxGwf{BFPdRpiolp > z2Zye}8Viv=ryExfZI)OO?8|qaQs$MvjtXn6e1-%{5}DpS6VxmYHxC@RINaeM<=0Sn > zMX8Sm<&K-L6n8HpD|u1iVeQIvriF^`2J%xwI|pLK<=lrTqWxK1`MoSaBksXU5hYEO > z3;uLQIAR~^da{VqS}}I7h;tacq2uSrC^R!NRg^kdE@=-h%$mI&J$E*&o_9`0o%O|W > z?|tFW-cuf^7P&=FWfv_cIkJ15FP^*D)e8_=R9bcB?(Lo9^AhWrOParT-k`?#82b1@ > zm&iWRtl<~1dl4r1V*qh{_oPmpHqkaTxvsJyo<p%e-c+M_!FR$4^`IOY+RczVo|C0w > zZ3;jgvjG+{vx7!rhB3}-U@hw`#448n6$&S?soLhB1pw?S{5eVoqiaIg8z*{@)DA($ > zw-)u=RebY0ad9-WPZSLE4AK~DaJd4g*-*nkU@s9su(JMut-V_Fa&oJW<nk(1hM1&m > z?1E#QZp{)+N2uQbbiVLT@0!_V%NzOf1t?Bc2e%Khp*8wM(uWS|({^W#Ql|weK}tx3 > zm?h>ZIl8i=B639(U6T%%N=T%b#`7GXo>;z^4v9I^?PS|Pyxx>v{L-Y((O<bbESkcs > zw32WD98y%C7BObDCZ<%#pw$xL+(jCzXjDhboht5s@YTrU+p=x9%mGK`X!=mpp6g*1 > zm8_euM}vc?NSe$U3aHtTLcxc7?)t2o6H^c8oO6$eQPh}DvAvVW^K7nz@8Gjw&El8} > zSTK&X9v!3hP>hC5BwKf@G?r8V02vXaWfW(T@zW3?>aN4u-a5fJ9=CCHt91BGW9eK0 > z1VGI6K=n8xmAZ!LaI6QMglUq{fRr-#MH@7SAd7w8&6@o-dAPAK_4oq5Q^v6a#FeL8 > ztjIX;6&~;l7xR?XxS;7X3*DTd9ro}TnYr6p(R=ppwPZf`5TUZc%3OvrN#&cgV+s-j > zhbL~foo8-PN<Ue$+5R-Oav9CK6!!8Aw{VzRZ-ve^8|kL7)Hcyv(z^uA!L&FsbrcPq > zy|woS{DkvFvPCjG0ScUlglK~qgN<eKvtziXSA{uq=qRvseln~?3;`2aa58|1;`D(R > zwzs<<q`w*I5|j6tw~8NEh^UD&y19r|@cSrtnES}>Vo~xBY-vP+qSFjfKKBZn6}p2> > zF1)2F>B=)GyR4P!?s4R8U3zWJ)A(fl#Mnw#Msv4@I7SY7yZ3z=H^lL0uJEP}%V-jC > z1<LCvA35FO9w<0-c%PBIRw;rI4ht1aqxEizKwPtllHDFA$DZo8auI$gKTg~y@4`R4 > zK$!6tu#aHIIN7Q2ZLeXQYD$&-IU54{h`C1o#%Tw)8DjV1w{0}Jv&Qd5O(A~)ocY>; > zH!wr@tgt%5_~%Ru@4)^QFXJ{W72IB2ec&hh7r?Xi7jQ?RqqBAoO27I+?zH2rHzZ{V > zJ;&r>YbY@@Man8E6)(N%Gn|GwY(s;6f}u04@gGkGP@bGSw)i+!&rsng_>|vZnW;Y0 > zdhv{zwam~=%DkqGH%;3mlaPREfO7D8FE--!;_4ys4BN{vM=i6SRjrz(GVFDOco;R= > zb+%9reI;Echf5`Kj@51{ZR%|}%QO850`UU)VOK84ha|U_!^bJND!mD{Yt-e&C$J}F > zj6|%|1e&op0#K`sKJ+9(L?E0Kzn<cOSm~Z7?sJblW0X<;pfU0)jO+x4vP0)pq|o)A > ziaXb;I`SV@iVb$K->lB$yO`MX`0z;nQBk5T?uFx8PRE>j)}L0)>NKCujXh-g0Ig1- > z@7F8d%}C{Y`O|9k3_nd{`)OF#o(rl9l&nRmaDEC-+mRfScOT)UDxHrl5sq#qQinV5 > zU(xqCL7Q@QZOxlUb<Na%ZQQR>2YUBzVR6BR?Ox&;-m=!3g^kgOEO2d0h5tJ#^O}>Z > z3ED5wm(j}oOiLw?H@HdCTQsQfXI*PbA2!6*F*L5MKcVjuf@ryTTHRAi;!zH&K&5Ek > z@EhoroslPkp0!zA(`qEXQtZk8vGulF{xoUr)IItAln<Gi7>K7tM?cyMFXzS<o?3tJ > z+Fb_@@^O^EqKXW8)ycH<BJV~QO64MIpSp71;#)1%2ePDcK9&Qfq`?gJPx&-u$MMgT > zvlun;3ybs~p!ad&osG-)&y(>^vOXk9bi1(^SwgU&8O9ksQ72NUn?DfQxOAg#*l9+s > zY{JHW8cBY)aC6R*^!`b|`LI=#velh_$w^sNy<lv%weES^{cN3dP%0W~MscYaB-e!% > z^4rhsFCWloG>8U^Nkz)E;bPvr24%ZlxabDllecfSA)H(aB)OyP(PsVhcvFW!+lD@V > zMTW{E8#82nRx~ji7sRDc(o$(Sl2C=;4)UVGXoW4ep(P2Cs)cIz^L%qmJY88h<xtn< > z>bS13fX6fJ_jn?!WgR39<cS7#8@N9NBE)H)NHKJbN*@rqa632g9+pOjc-^Fz;!=I% > zYmy^Tj=fU@QmVCQ_pBYwdn0p%I#|q}Fjijk{dI$6lT)BK!U+c)Fi&mwjnt$u^2Z*d > zsakAk6@@$AKAO_{LXiJ2z?%GukvB8wxB&kUL^R^WQttb(DK#$yZ`_)+$BFP&m8$73 > z>vtD!&aIu-rj||ed1M9Cr|5?~lmtxPn+OYuoOq{GFMHcB{z6f6o2nAT9!-3_-VuMG > zI4B2ypsUE%D(Xly>QFs<XxJGsmArdk1!9`}`h}L^O(^=ZPrIMo)>Kr|3O#}r=M(O# > zGXfYk9_kkpo$dx{!4JhR>>F(|t@Lu?N~wR6Qi6+pQMJ|DIMXeu5xH_-75ON)Q_;MR > zV(8v;L%)>}5pI=wc`Ws{bql@a%4=`LCEN=RgM#+i`P3e{)nphMx&H$6VO`7>I>lG6 > zuu)*Pk6`=>1Xh($<#S%ouGUkJYVRc>EtwYk14vhk64;QY&autd(EfC%_)A8Ym10TO > zV#)V|WXFtT)k{G1N1dg{9%eJ%G&5k#aT|Sx-hV&r-2;Y9--{mZ#ysy&4OP~De%^w{ > zxbsOz*=N`UP+z{<T1B1gLaiZ#{XoFc>cWye$|kf=CCTkX{~OL}aY7__o4iQW+9@z? > z=|lhXI&Xax()%&tg`Kxm>0xLWuf05ecRP{%?#1(w$x;s=t8l7kNrv~}f6lR#aIlv3 > zKwfNM(7PAl$f)8Ff<R}P0_w9-Vs819E2OyB(|bqP=bK>+h>eUl@R3g)b`T<f7c()t > zM99LyH@3gHTR-U}Qiu_&(L5ueIP|O_;}Te@u791KvOuyI;aaR#%m4^f6GYHI<u=!H > zM^ITQu@A(L*`oo0ELWS7M+BEm!?O89t2}v?ah75zxLJl`1gT!s)zjCPwl+-!wN{zA > zNH41DXul1ZnP>>LKDSh~d6;bvhDwPumNs}0aU>#3won6`g)R%y12AoYjUTJ>t4}il > zL|K-dUsT|GC(c<;5y4Cznx!LK2FG!L6D=Iy>74hcEk*$XwcW;c?8F*`Rw2X!`CYJ= > z43(*bR_79)LRq<rJZR(A*X03re_58W9P<}ev4{7QDJTayF4@fq1MiR7j@)8UhwBg6 > z9V9Y6X0xhvRFjgSb)T;cwB0{(iH>L(lxmopqU#TYzrBz5{3F`bM^Rx<qm>Ds2jUtO > z17-pVDMJBbQGF-Fy@-9_6ezXVI|cz)ru1`aRr6J%NC)+O<jR7*JcMiUXI`=*)7J6Z > zzV=DEJoP2dGBL`rk!43YwEVMuZ<PVIP+0Q0M}a7_gOQlva}%Q>=h^YKpVW^@P7z;r > z#8JTR5-O*W5H_P}TWaD1>mLD+2{}{%i5oB``X>JAkd}a|cUs08-bPqDb5Nt8kJv%? > z)$)kIOPod0203(A0;8kr+VL|_Djs01`~X)KWlV>y>IKd@ktW4xB`X39P3l-v(=b3F > z;eSiiDHC6_c8au|$ob^WG*}fzfL407=}LniXUINZtS^4?iZ_ITHZ?KVnFxx5`KBEy > zOqXkApWzS%w4LW2;$_xMnNpuRQB6Ov9z*X<lGe}6og>6lUNpbkYFLmMyNQcvVhM|9 > zBYRm`B!E*#@aQkq6Y7Vcb6Mi~snq`hO5D%f?Tjz>Y?qX)&s7)0IAvf{#*vX(&S1(V > zO1wo9@a@6)UQkvdKkPxQs#607sj5P=$5PCcb;v{43;&ZNwt*7BOI5ozB#e%NdiqvJ > zK`M>_a}@Eh`avDlM8E8$rZLA*wJ9$nM=Z`1;Yd>f1*w#wZ^N;B=gy|@4^+{3mrzV- > zs!0F}L|<dR#7<<7g*PzRHVxeDN`1_4TE@A+>_9!vQ*$Z_Kfjm%)C-YIYHa9_v$a@1 > z;cR<}uNHC+75wv6>g9p`6zH&MDX*b@t~O~bq6M^8i1X(D)}VX~*7|b3={{H9iw6}; > zsT#Hj4Auktj5H;4rCS@a=VVYA5yen3)Qu-C-d7GS!N+vOBQo7p8wKZZdhhb$9`F$u > z!IF(AxV){1K-M&?!)htlCyK~cppkQ70RGh$Mbkn(`GnYo3$|m6XVST`-q8*Drp7RO > zR-7uCP;oPlkx63WW2pZi!wBp_irPvW`@1Z<h^3-7iz!x8q+YX=)Puac`;z4C^@$m8 > zs1lT=wvL0Ib6VH;u=@)vRGG#xYBNh><%c#YNIj+SuTmQ>y~svEKoHJTtjaB4U(6|w > z6?su*7@6*RhS(}e93%-fDu3C(k^4y@hji`|uQ=MLph)@?_}5UrzTz~Ym)>P~I@&ac > zA6&1CqwOdY2z|mivutgL1B^@wy-r?jJH`O<*43lsZzxj0+6w^omaM|2g6^y{2^<2% > zqnH{hB08=Jj0zhhRzYW9oQ?pk73HT5EGz<}h_X2DY|1!<1zAx(i6?(Eb(=#>n~X}v > zHK^hSZ(O(ll~V9+Zj>r791;eXI7|aLTt4jSZ}n-O+1fZAEvfFm<;q!H4a`P?COJ(Y > zBAns$PKXP&8pYR*&X3<cv1g8^h^S3quF+piG1y(Pm}UL+AqpN;R;npWTo6gUA00CT > zjS~wjc!MI%T|!QnFd)ns+;{6_aYw4AE)t=~COv3eAreeOAu$@BSx<Mc%h-K^@3xn5 > zHb)u7r6dhD)fFpRtD|F0Sp<ckQm7J?)9#R!s^G~G(o*dimd3Sm`O+{bEk<YllVzpT > zxmyjppGRE7-T=AbcW#^Ys)W~cnNQ`wyi>)^xb99k?x|N7aJl6P5C;+8W_=pYXXmPs > z2Lx*uml_lTbokv1fcbcdMv5j$qKpJ$KV8;j{W<yCjtzKre)OXXOb(J9@J95LaO=BG > zaEfIRqhaJUPZ|!h3>%B#+CWsUbRaCDb}y_Z*mmYLX>YLLjpO#Nt`wV5vLgeE-8~04 > z*oRhpNeaSAfn2m3azB(D%5l%MC0@VfK``Jx6qnnZn4+<t%6!7+q-L=*&j7A?-Mjs6 > ziGaN|fW#W2`cK->1)1R@Q~9Iud-8@+_#wxAUZkp-&nZkdJ;x7<{`6#xiiOj&^DQPm > zVbMRz{7GNoY2@$?D*^#M-v+rH&O<6gV0ajavuE@S{D7i2Y^Vl$4daeA7PE)cUcJrD > zpPW)SiojmTP|x9|lKTtDTvA|1AIrh?$2Bx7a}qgc8Bv(Nc6hvJ-ktekMIij1+hE7j > z!W(S);|)Ycqij;guS}UpcXi!nd59m4unYi#ZS<K_RUs(XhlZf1Zu%jGO3K2isEs|$ > zDbE2FTPA%1OwPko4<&da$WI=PyWu$0-VJ14r+*1xADO?Z%42&4Nw{KhT+irEP*UPJ > zd05x$W64?|mPj8-=DqyZLd64P*#Q=$-84raLbh86hE~o`rE_}&hE^;DD+N{zu!E{4 > zd1FL&eW@WKuGwW-#DqbNEE?mq;-rT07}qr=d)=D2g8glL<(aA3mtUYMb*cgjGgQZu > zR@)~6-eMRGiSWNXJ3w?$ozNVER5A@y?6}?$8y>|$Z3snH#9Av=M^lGIFqG;j1Vsr# > z(4z43f!!U5bkZ0rYJQvWjXr%CR>;l)^0?eVu*Wrk6A|91Q$xxNMTGV8;{st8Mx2KX > zO#qpECU`(&fRo6ZExcQtf1J*p|0)8aSx#N&n3i#hIizorHV*T!K(O@PdorOWI<%#% > z2}>0B9^@Ts6@v%<oOXebIfADRV*6#Y)4<dRU?FSkHRf3*3!MVPsv7#ZQsn})B5ghv > zX<`S%0e<8LN4R;(80c#&58}_<sHQRvjHl-6)SjhDRgHLEB#N*_ujGtPy=-GY-CyqN > zB!zCVg4mv;7V$W#k;Ixo8W?loEjfme0@L2O33XoFH)Uf*!Em90h)cyk1<C|!C}PX9 > z;^eeu!?(cq=}w8G&bi!_FAs^Sns9Pe^cS50U(JGrjR3a}_n|r&Hg&15`&&{D!YmCR > zzfuyrJm()j&v@b*=9QA|Gq3_w-TFBP6&5uTC#i0F&N0+2-pHV#Glc^KDKiCof#mg+ > zf+GF`Iw>27-pFOPsw0P<>GZw5{FF*S3GT|rrxB}qkH+>U8Uj&%CM=nALxvRpI|z3g > z`nr7T9Ez6`NH_ejM8*NZPeXGv-uUY|k#RvsWyWSlV7aC?-MXBIPWcEQC<s(wckbnU > z<eGkB&Z3y5nbY4|)2bR1%c6X~a*v9Mqu2S-Q*s=0;+ZQC6_pRb?$6^|+0I@WB2+J| > zw?b&OGE2($o}oCa_AE#W{ahqc#X=57K)5F)0fBZ2dMPGG6-Xjb1{k3yc_pkHd_UMQ > zvNwo%0~llmx0P00LHvM(oj6<ICR->(AeEs%XtZaRC|aPNDr~)l?H$}c_$~UnXJsA! > zRlfN>WByfBn$)5G8#qd};N<RLTyPgd`M9@Zne7?1>X^+)Oepa&_77Z+zH=1o8yTwA > zIM%Bq3dq6+@+YE2FZRr4H7)VKNRfTW8+^<Fr6o}hYgEX~h;JlRQlxW;H%J`=H*h6I > zMR4cTzINvWU}CL@_Rfm&m8P5Y>L&rBv7%fK0>MFW4A!j-|Kv#w=(u4{k*sx&nJ?&e > z^?j1K&(BWvsb~)!A61q(sYzUU&zF$K2Q~-0*=8i-_W21>02kHry{GHYCN&}|8C5yy > zl3qXYm6zp5m7p9EW{gL55BYbx5__3@83@q!=g|PPY6&(xWN4u1Ug&iVlCk=nJwDFL > zYOLHgTc9KR&9(oZ0Iv#A^}Rrgo~R5Fm?1>%%{9wcj46)qTXZ`4;ASaq*#sb$HPMXI > z`$zu(IsK#m0Gtecm08d-#vC*8%s5=KO@Rkxuakgagw(}FO@g9f9q_Vd!XlUybe?kN > z#IXx^%Y-4FB*BajIXG}tizuq^x71M)ODq9ZUXD3m5UotcXRziBX4i=FW&*)Pg>a#k > z?a!g8gbsM;KnMf_-r!GJG_RtiC;(p`UcS;vTMVIsfF6e-F`&tZZX!FMg<x<Ig9$3J > zNJLTP1Jq^}D#EhSy&pe#f?a_~3|eIz4vY1!A*4kS01*$MxkTR)Ajk^<fsZDU%JA6( > zHG;FOF>0_Lg;RJJ^n5&2njax5B1A_U6Z|g=n3A#BI#1BOaNY>0ETlCW;CDDdI3#Iy > z0>)&frN<1^X}y^r#oh6oK8k<Aqly_kXJ-x!V$CBR<|{KA`T!smbOQQey@FVW5g#2D > zump|^06iZ60OobEFNhsS@VvMP!Gx7qq#`Kt{7IXcHA=OmZ=k-r@G23B1w;~@Gm8Vl > zBxpQ>Art6`)B<BoFiXbk^<0ocW~)42AzVon-7}sC2UCWm%*wTb9smPD$7HKmXZkSZ > zJD3gmczhyqg_4S*XK;2giIC&Ulam=Ei1}0FfPyA*_)KY+?>vblH2wjA{e2N4hDr1} > z=^~PGbMbv-D1ob%a~2!`AMX-i0hM03ah!z_9qqtqAT#)6KqPVC(y>THQ8=kV1;HYx > z5D>|g^i-qE(*R;SixLmOS{|7Iu`6gQNS1w^=S=k|nQ%lff)M0n^`#!cOhNLc00AS9 > z29<yUssYQbS1ATz2H{gAe+`$Q1VV|&Tznd!hM>n$9N+ta6^J<zB0Ma;nn+g*3Zfze > z4|M_nVA*#Hzz?%q!r+aEwt8d@%ZAf4Wyh7k0iXZ?4h6R)cvc1gL?{rA>Zxoc_*9^= > zZ2lgt7itMoh}FRyz?_jZ+dnxRAc-mj6}4u4>QGN($U-17!2y86F_*-20HD!6$stPD > zI+zi)L!A={Tni4hgGdT;^$4idcpo6l0x+Ox+)4xl5v34U*yI&ZL?4I>&;rb~z{yk+ > zh&(PYAh9t)78hv8FhVjlAY|PH1V;vg_6TKAwhBB0_BeEA5IbWG7aA%I;-Upup&6iO > z%RLqd2q-PRu|(;fI-6D)gkk+a;WPMz@cnoJ85EHLOB7wOfGpskMuIfV^hmOIEMgF% > zg5J(;eO1zwxw0e*06xT?fE5@A0H*?FhQ4QUxh=)ff{LI^C}H3XasL3g6<7h4RsqK) > zUE{(7iIB5+ITtxP5a=)f0DdGu{{T3V5ga0Q%p0lOlDSO>5dsC^jCF?Q2x1@<Kq!v` > z`m#K%AP5l<PH0XmAV)$hfFwXMjLp+(WtafS2%lhx?w1{EW+B2Sj1COXftnCEI8g-V > z7$oLc#U661B7!ce2J9nIakdx){wGxNB{@h^f|^nhAYy;6p{k-bfehug##uB|QUe-a > zo+1nfVg{Q@luobLiDMtCq6OLk$tzjeX%e<%z_j6HGW^~EYyemT9)Jo;)@%a-nn>t7 > zdqWUZfC`HMAOZNLEk?6KD#TET$ClLfGOE>fg_;u<Ha?zW3)?FhP|u-wR+dtL0RfQ- > zUNfDJSSoa2r~{Udt!L8lArp;27GQ8xGW&^aD=<w(0mSRL&9FAQ40Pn?Dh#IqGJvp< > zg(>*CJG%Iy%~B*-K{3b?Ip?f+L?=q7Q~v;PBC!V|Bu9a2HJVWd2oVyTL>>XJy&hOZ > za!7E+pt~g*A#K5vKUW5(5H2v$WgNFho1Xswpd+Us$b!<m9w1;2h_5Rk3c%z40O2gK > z(LvJLb_vBFHCVPOR%%63tN6yl7$DJ)3kYy_oN=*X`c~Ks{?XT=yFtR}Qh5iM;SZa( > z1bA`2oOkoUR9aF-5~tMek(=tkP+-LlY!jCWtM2HiBVuvt5mBn~WXxBf<wXDmSBpQQ > z!>R|1su&r(D0-ftC^A!SEUf%%*xf5XaVt!@dgGV}PZ;V6NG$Yjpa!rZ2q1}(IU$)# > z;MQOPJ#G0w;>jSJ5dxj8cxV2=)IkDdOg~M>Log!ULU!{o&DM>rRhY-4hnd23&P%Cb > zf;k?AlQCX{l@tIKUJ}oClbGQ-O&|jt%3P2VQW=I^LeJxt)OK1OodAOKEW9v?1jA_B > zV-qaUvSusLaDpNriRlmbgBMA0gn-~NFb#JmqKH3WbezaVhXH65(Zz6x{UPW9QGjxn > z63!jF^ZPT;GSa9|Ku>_5o&|lx8!ZE6&NDBfs>pKCQUFr27b(V=t=SyL!?J`99FD?@ > zM8l{t7T$UMdM%io!WK3JQ8LVP0`yy~Z;*h<*LZ<>qfNR)@?3Aw1O4Dl5i%p+A4`C7 > zI3TY;a)f~JGd0@N!4EP40K~~}94##<i}Vve_6Di|11jL-*4ZL=m)F2Jc(O_z#(*ke > z6;9A)%wyFs1~Uf5Qmg1rNkEzjeC2UETskv69W+i%6ucL-4GDp^d}G0!enE4)Vts@^ > z2%KV`CQDG0pZmNh7(yU((fJT$6Dr@B4JeMnOCb?N_1RgNq>xVlc7)<O;1oMR?{ohE > z<A9(mN5(_9^!RX9LLFPSifm?|bbH(grBT2ERprB!mj#6X003T2`n=Es1>T3AmG8M! > z=_&h938dy5E_f=i#n-5kAn=+DKap}sN%k&CvqpK~{dk&9K8k=Y@Ng@-I0gU>ACZWz > zrY}=0;d<|zeH$4W$s~}$tkHdMhnuCb69Wqd{{Y|#+I;H^8Q1(GL9{;rv;b**AJZ0- > z!v6qyOWVhDf%M|Ml!M^C@TP1bi<ESCi{N-T{I58uxTus<!qS!m<F2C_AKZ@uyQ_fY > zMA`mXR~+D=R061e)1BYC&aky)U^s5LQT)0<GswduH^U8kM1XLC$9V~iY##?1i%cxl > z+^MSXnXym$MEl_U+;hlp;3xz~KnFqU0siqO02x*5g2`nfE&l-BHqfa!V_hrQW>M`* > zw5E7mFqCp41`>!5df?P>nrQG{03VZA{UOlqw92``RNK#*1RTi5e5xHe<&z%YaUI6t > zI=kb6Y6%k749dh@BMpDi)}=@?Cc1y)pDMMrQr_}^4+kf9kZ?#9riII#yk6LnVnHjz > zD=gD56(?ihhfy%PxpSx)F%i^laa+LtcytieMfk^|B4+A4coz?mK0OH<-3e)?13HhD > z<XQ`U`=>uB;qZl3hCxu*Or{oNm@^2N02t&706gs-gcVdZLizsyjy8iY-50O%&GZD7 > z=lE$~jscv52c376ldcMd3k~eMO}A<@mkE$!Og79{e=3K<6i&r}!s9cQkiiB^SzW$d > zxz9TrW#>2tXQJTF>&9cHlWCJJ?F>ahOZDD^<Y}V<RfTlYR|lJivL850ndVq`8krwH > zJDg`?QIuq06v<4Uc)Z~NnYk+|uRN(FHU1Tm{r>>RFxt}+pirrwo(y%8m{BjG6CIB` > zHX->^d%{b+Z;r$33zaU4Z9WbzAkI*xH<b)2Q>u&aT~PfQelPRF&h5y<gSVO392Xz> > z95cWC^L)kAIz*>z>>GT%i~t_|3<v1^#--f4rz);bt$N^_(5gtlB{Ba1;NSn*5|Z@; > > literal 0 > HcmV?d00001 > > diff --git a/www2/images/favicon.png b/www2/images/favicon.png > new file mode 100755 > index 0000000000000000000000000000000000000000..04c50a937604e51321891e6f48370d3410cec742 > GIT binary patch > literal 301 > zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvg8-ipS0GIih_aXA25Mj|3GxeO > zaCmkj4a7<Ec6VXuV3qX%aySb-B8wRqxP?HN@zUM8KR`kD5>H=O_D4(tTzaY>M18V> > zLS>#Vjv*T7b0;|p9Z=w4-urdN`fo3PIvnTIGI6l9*yJeLoV@1192p^P$CIrthFuRP > z-DwMY@My~dUG{tH9!}xD(arR&i){uY(~WG=ie?5EHjnZf|2ma-Gp-VR<XH7raNRMx > u$(vUv*<EgnPyf@ukat!8CjRLChq+hx+C+1`t853lfWgz%&t;ucLK6T^rBrzU > > literal 0 > HcmV?d00001 > > diff --git a/www2/images/logo.png b/www2/images/logo.png > new file mode 100755 > index 0000000000000000000000000000000000000000..04c50a937604e51321891e6f48370d3410cec742 > GIT binary patch > literal 301 > zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvg8-ipS0GIih_aXA25Mj|3GxeO > zaCmkj4a7<Ec6VXuV3qX%aySb-B8wRqxP?HN@zUM8KR`kD5>H=O_D4(tTzaY>M18V> > zLS>#Vjv*T7b0;|p9Z=w4-urdN`fo3PIvnTIGI6l9*yJeLoV@1192p^P$CIrthFuRP > z-DwMY@My~dUG{tH9!}xD(arR&i){uY(~WG=ie?5EHjnZf|2ma-Gp-VR<XH7raNRMx > u$(vUv*<EgnPyf@ukat!8CjRLChq+hx+C+1`t853lfWgz%&t;ucLK6T^rBrzU > > literal 0 > HcmV?d00001 > > diff --git a/www2/index.html b/www2/index.html > new file mode 100755 > index 0000000..1ff2bbb > --- /dev/null > +++ b/www2/index.html > @@ -0,0 +1,136 @@ > +<!doctype html> > +<html lang="en"> > + > +<head> > + <meta charset="utf-8"> > + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> > + > + <link rel="icon" href="/favicon.png" type="image/png"> > + > + <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.css"> > + <!-- build:css --> > + <link rel="stylesheet" href="node_modules/dropzone/dist/dropzone.css"> > + <link rel="stylesheet" href="node_modules/@fortawesome/fontawesome-free-webfonts/css/fontawesome.css"> > + <link rel="stylesheet" href="node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-solid.css"> > + <link rel="stylesheet" href="css/swupdate.css"> > + <!-- endbuild --> > + > + <!-- build:js --> > + <script src="node_modules/jquery/dist/jquery.js"></script> > + <script src="node_modules/bootstrap/dist/js/bootstrap.js"></script> > + <script src="node_modules/dropzone/dist/dropzone.js"></script> > + <!-- endbuild --> > + <script src="js/swupdate.js"></script> > + > + <title>SWUpdate - Software Update for Embedded Systems</title> > +</head> > + > +<body> > + <!-- Navigation Header --> > + <nav class="navbar sticky-top navbar-expand-sm navbar-dark bg-primary"> > + <div class="container"> > + <a class="navbar-brand" href="#"> > + <img class="d-inline-block align-top" src="images/logo.png" alt=""> > + </a> > + <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation"> > + <span class="navbar-toggler-icon"></span> > + </button> > + <div class="collapse navbar-collapse" id="navbarText"> > + <ul class="navbar-nav ml-auto"> > + <li class="nav-item"> > + <a id="swu-restart" class="nav-link" href="#"><i class="fas fa-sync"></i> Restart System</a> > + </li> > + </ul> > + </div> > + </div> > + </nav> > + > + <!-- Use Bootstrap Grid Container --> > + <div class="container"> > + <!-- Header --> > + <div class="jumbotron my-3"> > + <h1 class="display-4">SWUpdate</h1> > + <p class="lead">Software update for embedded systems</p> > + <p>Upload an software image below or restart the system at the top right.</p> > + </div> > + > + <div class="row my-3"> > + <div class="col"> > + <div class="card"> > + <div class="card-header pb-0"> > + <h5><i class="fas fa-wrench"></i> Software Update</h5> > + </div> > + <div class="card-body"> > + <!-- Dropzone Button for drag&drop files --> > + <form class="dropzone border rounded mb-3" id="dropzone" action="/upload" method="post" enctype="multipart/form-data"> > + <div class="dz-default dz-message"> > + <span class="dz-message">Click hier or drop a software update image.</span> > + </div> > + </form> > + > + <!-- Status --> > + <div id="swu-idle" class="alert alert-secondary"> > + <i class="fas fa-info-circle"></i> Update not started > + </div> > + <div id="swu-run" class="alert alert-warning" style="display: none;"> > + <i class="fas fa-exclamation-triangle"></i> > + Updating may take a few minutes, please don't turn off the power. > + </div> > + <div id="swu-success" class="alert alert-success" style="display: none;"> > + <i class="fas fa-check-circle"></i> Successful updated > + </div> > + <div id="swu-failure" class="alert alert-danger" style="display: none;"> > + <i class="fas fa-times-circle"></i> Update failed > + </div> > + <div id="swu-done" class="alert alert-info" style="display: none;"> > + <i class="fas fa-sync"></i> Restarting system > + </div> > + > + <!-- Progress --> > + <i id="swu-progress-spinner" class="fas"></i> > + <strong id="swu-progress-run" style="display: none;">Updating:</strong> > + <span id="swu-progress-name"></span> > + <span id="swu-progress-value" class="float-right"></span> > + <div class="progress"> > + <div id="swu-progress-bar" class="progress-bar progress-bar-striped" role="progressbar"></div> > + </div> > + </div> > + </div> > + </div> > + </div> > + > + <!-- Messages --> > + <div class="row my-3"> > + <div class="col"> > + <div class="card"> > + <div class="card-header" id="headingMessages"> > + <a class="h5 collapsed" data-toggle="collapse" href="#collapseMessages" aria-expanded="false" aria-controls="collapseMessages"> > + <i class="fas"></i> Messages > + </a> > + </div> > + <div id="collapseMessages" class="collapse" aria-labelledby="headingMessages"> > + <div class="card-body" id="messages"></div> > + </div> > + </div> > + </div> > + </div> > + > + <!-- Restart --> > + <div id="swu-restart-modal" class="modal fade" tabindex="-1" role="dialog"> > + <div class="modal-dialog modal-dialog-centered" role="document"> > + <div class="modal-content"> > + <div class="modal-body p-3 mb-2"> > + <div class="media"> > + <i class="fas fa-spinner fa-spin fa-3x align-self-center mr-3"></i> > + <div class="media-body align-self-center"> > + <h5 class="mt-0 mb-0">The system will restart. Please be patient, as restarting takes about one minute.</h5> > + </div> > + </div> > + </div> > + </div> > + </div> > + </div> > + </div> > +</body> > + > +</html> > diff --git a/www2/js/swupdate.js b/www2/js/swupdate.js > new file mode 100755 > index 0000000..f89b47d > --- /dev/null > +++ b/www2/js/swupdate.js > @@ -0,0 +1,155 @@ > +/*! > + * Copyright (C) 2017-2018 Weidmüller Interface GmbH & Co. KG > + * Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > + * > + * SPDX-License-Identifier: MIT > + */ > + > +/* global $, Dropzone, WebSocket */ > + > +function restart () { > + $.post('restart', {}, function (data) { > + showRestart() > + }) > +} > + > +function showRestart () { > + $('#swu-restart-modal').modal({backdrop: 'static', keyboard: false}) > + window.setTimeout(tryReload, 3000) > +} > + > +function tryReload () { > + $.ajax({ > + cache: false, > + timeout: 1000, > + success: function (response) { > + window.location.reload(true) > + }, > + error: function (xhr, textStatus, errorThrown) { > + if (textStatus === 'timeout') { tryReload() } else { window.setTimeout(tryReload, 1000) } > + } > + }) > +} > + > +function updateStatus (status) { > + $('#swu-idle').hide() > + $('#swu-success').hide() > + $('#swu-failure').hide() > + $('#swu-done').hide() > + $('#swu-run').hide() > + > + switch (status) { > + case 'IDLE': > + $('#swu-idle').show() > + break > + case 'START': > + case 'RUN': > + $('#swu-run').show() > + break > + case 'SUCCESS': > + $('#swu-success').show() > + break > + case 'FAILURE': > + $('#swu-failure').show() > + break > + case 'DONE': > + $('#swu-done').show() > + break > + default: > + break > + } > +} > + > +var updateProgressBarStatus = (function (status) { > + var s = '' > + > + return function (status) { > + $('#swu-progress-bar') > + .removeClass('bg-danger bg-success progress-bar-animated') > + $('#swu-progress-spinner') > + .removeClass('fa-spinner fa-spin') > + $('#swu-progress-run').hide() > + > + switch (status) { > + case 'START': > + updateProgressBar(0, '', '') > + break > + case 'RUN': > + $('#swu-progress-bar').addClass('progress-bar-animated') > + $('#swu-progress-spinner') > + .addClass('fa-spinner fa-spin') > + $('#swu-progress-run').show() > + break > + case 'SUCCESS': > + $('#swu-progress-bar') > + .addClass('bg-success') > + break > + case 'FAILURE': > + if (s !== 'START' || s !== 'RUN') { updateProgressBar(0, '', '') } > + $('#swu-progress-bar') > + .addClass('bg-danger') > + break > + default: > + break > + } > + s = status > + } > +})() > + > +function updateProgressBar (percent, name, value) { > + $('#swu-progress-value').text(value) > + $('#swu-progress-name').text(name) > + $('#swu-progress-bar') > + .css('width', percent + '%') > + .attr('aria-valuenow', percent) > +} > + > +Dropzone.options.dropzone = { > + timeout: 0, > + clickable: true, > + acceptedFiles: '.swu' > +} > + > +window.onload = function () { > + var protocol > + > + $('#swu-restart').click(restart) > + > + if (window.location.protocol === 'https:') { protocol = 'wss:' } else { protocol = 'ws:' } > + > + var ws = new WebSocket(protocol + '//' + window.location.host + '/ws') > + > + ws.onopen = function (event) { > + updateStatus('IDLE') > + } > + > + ws.onclose = function (event) { > + showRestart() > + } > + > + ws.onmessage = function (event) { > + var msg = JSON.parse(event.data) > + > + switch (msg.type) { > + case 'message': > + var p = $('<p></p>') > + p.text(msg.text) > + p.addClass('mb-1') > + if (msg.level <= 3) { p.addClass('text-danger') } > + $('#messages').append(p) > + break > + case 'status': > + updateStatus(msg.status) > + updateProgressBarStatus(msg.status) > + break > + case 'source': > + break > + case 'step': > + var percent = Math.round((100 * (Number(msg.step) - 1) + Number(msg.percent)) / Number(msg.number)) > + var value = percent + '%' + ' (' + msg.step + ' of ' + msg.number + ')' > + > + updateProgressBar(percent, msg.name, value) > + break > + } > + } > +} > diff --git a/www2/package.json b/www2/package.json > new file mode 100755 > index 0000000..7ded5d0 > --- /dev/null > +++ b/www2/package.json > @@ -0,0 +1,47 @@ > +{ > + "name": "swupdate", > + "version": "0.1.0", > + "description": "Software Update for Embedded Systems Web Front End", > + "main": "index.html", > + "scripts": { > + "htmlhint": "htmlhint *.html", > + "standard": "standard --fix *.js", > + "lint": "standard --fix && htmlhint && sass-lint -v scss/* && csslint css/*", > + "build": "gulp build", > + "package": "gulp package", > + "clean": "gulp clean" > + }, > + "author": "Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>", > + "license": "MIT", > + "devDependencies": { > + "csslint": "^1.0.5", > + "del": "^3.0.0", > + "gulp": "^3.9.1", > + "gulp-clean-css": "^3.9.0", > + "gulp-filter": "^5.1.0", > + "gulp-gzip": "^1.4.1", > + "gulp-html-replace": "^1.6.2", > + "gulp-htmlmin": "^4.0.0", > + "gulp-imagemin": "^4.1.0", > + "gulp-minify": "^2.1.0", > + "gulp-rename": "^1.2.2", > + "gulp-replace": "^0.6.1", > + "gulp-sass": "^3.1.0", > + "gulp-tar": "^2.1.0", > + "gulp-useref": "^3.1.4", > + "htmlhint": "^0.9.13", > + "sass-lint": "^1.12.1", > + "standard": "^10.0.3" > + }, > + "dependencies": { > + "@fortawesome/fontawesome-free-webfonts": "^1.0.3", > + "bootstrap": "^4.0.0", > + "dropzone": "5.2.0", > + "jquery": "^3.3.1" > + }, > + "standard": { > + "ignore": [ > + "dist" > + ] > + } > +} > diff --git a/www2/scss/bootstrap.scss b/www2/scss/bootstrap.scss > new file mode 100644 > index 0000000..c4a4dad > --- /dev/null > +++ b/www2/scss/bootstrap.scss > @@ -0,0 +1,18 @@ > +/*! > + * Copyright (C) 2017-2018 Weidmüller Interface GmbH & Co. KG > + * Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > + * > + * SPDX-License-Identifier: MIT > + */ > + > +$theme-colors: ( > +); > + > +$transparent: rgba(255, 255, 255, .75); > + > +$jumbotron-bg: $transparent; > +$card-bg: $transparent; > + > +$progress-height: 1.5rem !default; > + > +@import 'node_modules/bootstrap/scss/bootstrap'; > It looks that this version fixes an issue I saw with V1, that is "messages" were not updated after first run (or I remember wrong). It works flawlessly, good job ! Best regards, Stefano
Hi Stefano, > -----Ursprüngliche Nachricht----- > Von: Stefano Babic [mailto:sbabic@denx.de] > Gesendet: Sonntag, 18. Februar 2018 12:18 > An: stefan@herbrechtsmeier.net; swupdate@googlegroups.com > Cc: Herbrechtsmeier Dr.-Ing. , Stefan > <Stefan.Herbrechtsmeier@weidmueller.com> > Betreff: Re: [swupdate] [PATCH v2 4/4] www: Add reworked web page with > bootstrap, dropzone and websocket support > > On 16/02/2018 21:42, stefan@herbrechtsmeier.net wrote: > > From: Stefan Herbrechtsmeier > <stefan.herbrechtsmeier@weidmueller.com> > > > > The new web page uses WebSocket for the asynchronous communication > with the > > backend, allows a visualization of different image sources and automatically > > reloads the web page after a connection lost. > > > > Signed-off-by: Stefan Herbrechtsmeier > <stefan.herbrechtsmeier@weidmueller.com> > > > > --- > > The documation isn't finished and the project name swupdate-www > > needs to be adapted to the real project name. Furthermore the > > images need to be replaced. > > ok, this is just a directive for users. The images in the example must be replaced also. The line width in the logo and icon are too small. Can you generate the images or send me the vector image of the logo? Furthermore the background image is only a placeholder. It should be replaced by a real image / texture with CC0 copyright or a white image. An example would be https://pixabay.com/de/leiterbahn-platine-technologie-3157431/ > > Changes in v2: > > - Add package task to generate a production package > > - Disable the axaj timeout to support large files and slow servers > > - Recall delayed tryReload function only if status is not equal timeout > > - Enable javascript code fix in npm lint script > > - Remove trailing spaces and add newline at end of index.html file > > - Add license header to gulfile > > - Preserve license comments > > - Update Bootstrap to version 4 > > - Add Font Awesome icons and spinner > > - Rework web page design > > - Add SPDX license identifier > > - Escape detail messages > > - Rework JavaScript code > > - Use scss to customize bootstrap > > - Add css and scss linter > > - Add background image > > - Rework favicon and logo > > - Reorganize web application files > > - Rework the documentation > > > > www2/README.md | 82 ++++++++++++++++++++++++ > > www2/css/swupdate.css | 32 ++++++++++ > > www2/gulpfile.js | 121 +++++++++++++++++++++++++++++++++++ > > www2/images/background.jpg | Bin 0 -> 96114 bytes > > www2/images/favicon.png | Bin 0 -> 301 bytes > > www2/images/logo.png | Bin 0 -> 301 bytes > > www2/index.html | 136 > +++++++++++++++++++++++++++++++++++++++ > > www2/js/swupdate.js | 155 > +++++++++++++++++++++++++++++++++++++++++++++ > > www2/package.json | 47 ++++++++++++++ > > www2/scss/bootstrap.scss | 18 ++++++ > > 10 files changed, 591 insertions(+) > > create mode 100644 www2/README.md > > create mode 100644 www2/css/swupdate.css > > create mode 100755 www2/gulpfile.js > > create mode 100755 www2/images/background.jpg > > create mode 100755 www2/images/favicon.png > > create mode 100755 www2/images/logo.png > > create mode 100755 www2/index.html > > create mode 100755 www2/js/swupdate.js > > create mode 100755 www2/package.json > > create mode 100644 www2/scss/bootstrap.scss > > > > diff --git a/www2/README.md b/www2/README.md > > new file mode 100644 > > index 0000000..85266a4 > > --- /dev/null > > +++ b/www2/README.md > > See my explanation later about additional repo, I changed my mind. Why > don't we put this into the documentation in .rst format ? If we use the same repo I could move it to the documentation. Otherwise I would only add a small documentation with a link to the other project. > > @@ -0,0 +1,82 @@ > > +# SWUpdate Web Application > > + > > +The SWUpdate web application uses the > [Node.js](https://nodejs.org/en/) package > > +manager and [gulp](https://gulpjs.com/) as build tool. > > +I depends on [Bootstrap 4](https://getbootstrap.com/), > > s/I depends/It depends/ Thank you for the spot. Fixed. > > > +[Font Awesome 5](https://fontawesome.com/) and > > +[Dropzone.js](http://www.dropzonejs.com/). > > + > > +The web application uses WebSocket for the asynchronous > communication with the > > +backend, allows a visualization of different image sources, automatically > > +reloads the web page after a connection lost and restarts the system > > +via a post update command. > > + > > + > > +## Install > > + > > +1. Unpack a released `swupdate-www.tar.gz` archive to your `www` > direcotry > > s/direcotry/directory/ > Fixed > > + > > + tar -xzf swupdate-www.tar.gz -C /www > > + > > ok, this is something we can tune. I have thought again about adding a > new repo for this, and taking account that the resulting website with > npm has a very small footprint, it is something we can avoid. Addin a > new repo can confuse users. I consider the possibility to add the > resulting website into the examples directory. This makes changes to > support it into meta-swupdate quite trivial. What do you think ? What about the npm project? Do you want to keep it also in the repo? I see different use cases: - Use the web application direct (from the examples directory) - Use the web application (from the examples directory) and replace some images via a bbappend of the swupdate recipes - Use an adapted web application and replace the whole application via a bbappend or separated recipes. In the latter case the developer only changes the web application and generate a tar.gz package. I have rethink about the separation and because the web application need the backend for the development (tests) we should keep the projects together. But in this case we should remove the old www example or move it to the examples directory. Furthermore we should rename the directory of the new web application because www suggest ready to use content. > > +2. Run the web application > > + > > + swupdate -w "-r /www" -p "reboot" > > I would just add a note to inform that the parameters to mongoose server > are changing. Instead of "-document_root" with have just "-r" (root). The listing is a "how to get started". We should add a separate section for the webserver with this warning in the documentation. > > + > > + > > +## Customize > > + > > +You could replace the `logo.png`, `favicon.png` and `background.jpg` > > I was impressed from the big logo in the background by starting the > application :-). I was just not used of and layout differs from V1. > Anyway, SWUpdate is growing as project, the image can also grow :-D :-) It was only a place holder and should be replaced because it doesn't look nice with the transparent boxes. > > images > > +inside the `images` directory. Furthermore you could customize the > Bootstrap > > +colors and settings inside the `scss/bootstrap.scss` file. The latter needs a > > +rebuild of the code. > > Fine. This is just what most users need. > > > + > > + > > +## Develop > > + > > +1. Clone the code: > > + > > + git clone https://github.com/sbabic/swupdate-www.git > > + cd swupdate-www > > + > > +2. Install the dependencies > > + > > + npm install > > I would add a note about npm version. We need a quite new version to > build it. I will add the minimum required version. > > Current version in LTS distro (I tested in Ubuntu) are very old and > build does not work. The maintenance for the node.js version ends in April 2018. > > + > > +3. Build the web application > > + > > + npm run build > > + > > +4. Run the web application > > + > > + swupdate -w "-r ./dist" -p "echo reboot" > > This implies that swupdate is already instelled on the system and > reached from the path. I will replace it by an relative path and add a comment about a prebuild swupdate above the list. > > + > > +5. Pack the web application > > + > > + npm run package > > Required ? We have alread "dist" and this is what we have to packed with > meta-swupdate. This is needed if somebody customize the project and want to release the changes internal. > > + > > + > > +## Maintainer > > + > > +Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > + > > + > > +## Contribute > > + > > +You can submit your patches (or post questions regarding the project) to > the > > +swupdate Mailing List: > > + > > + swupdate@googlegroups.com > > + > > +Please read in the corresponding chapter in the SWUpdate > documentation > > +how to contribute to the project. > > + > > +Additional run the linter before any commit and add a prefix to the > patches > > + > > + npm run lint > > + > > + git format-patch -s --subject-prefix='swupdate-www][PATCH' <revision > range> > > + > > + > > +## License > > I guess this part can be dropped if we let all stuff into the project. > Then the general rules apply and there is already a "contribution" page. You are right. > > + > > +MIT > > diff --git a/www2/css/swupdate.css b/www2/css/swupdate.css > > new file mode 100644 > > index 0000000..a37d3d1 [snip] > It looks that this version fixes an issue I saw with V1, that is > "messages" were not updated after first run (or I remember wrong).It > works flawlessly, good job ! Thanks and best regards Stefan Herbrechtsmeier Software Developer Embedded Systems Weidmüller – Your partner in Industrial Connectivity We look forward to sharing ideas with you – Let’s connect. Weidmueller Interface GmbH & Co. KG Klingenbergstraße 16, 32758 Detmold, Germany Email: Stefan.Herbrechtsmeier@weidmueller.com – Web: www.weidmueller.com
Hi Stefan, On 19/02/2018 10:33, Stefan.Herbrechtsmeier@weidmueller.com wrote: > Hi Stefano, > >> -----Ursprüngliche Nachricht----- >> Von: Stefano Babic [mailto:sbabic@denx.de] >> Gesendet: Sonntag, 18. Februar 2018 12:18 >> An: stefan@herbrechtsmeier.net; swupdate@googlegroups.com >> Cc: Herbrechtsmeier Dr.-Ing. , Stefan >> <Stefan.Herbrechtsmeier@weidmueller.com> >> Betreff: Re: [swupdate] [PATCH v2 4/4] www: Add reworked web page with >> bootstrap, dropzone and websocket support >> >> On 16/02/2018 21:42, stefan@herbrechtsmeier.net wrote: >>> From: Stefan Herbrechtsmeier >> <stefan.herbrechtsmeier@weidmueller.com> >>> >>> The new web page uses WebSocket for the asynchronous communication >> with the >>> backend, allows a visualization of different image sources and automatically >>> reloads the web page after a connection lost. >>> >>> Signed-off-by: Stefan Herbrechtsmeier >> <stefan.herbrechtsmeier@weidmueller.com> >>> >>> --- >>> The documation isn't finished and the project name swupdate-www >>> needs to be adapted to the real project name. Furthermore the >>> images need to be replaced. >> >> ok, this is just a directive for users. > > The images in the example must be replaced also. The line width in the logo and icon are too small. Right, the logo at least. It is small and it is affected by aliasing. > Can you generate the images or send me the vector image of the logo? Bad..there is no SVG in the repo. I attach a regenerated SVG from PNG, I will check if I find the original. I agree that the SVG should be stored into the repo, too (doc/source/images/ ?). > Furthermore the background image is only a placeholder. It should be replaced by a real image / texture with CC0 copyright or a white image. An example would be https://pixabay.com/de/leiterbahn-platine-technologie-3157431/ I have tried with an image from SWUpdate's flyer - not bad, very blue. I have also attached it if you find ok. > >>> Changes in v2: >>> - Add package task to generate a production package >>> - Disable the axaj timeout to support large files and slow servers >>> - Recall delayed tryReload function only if status is not equal timeout >>> - Enable javascript code fix in npm lint script >>> - Remove trailing spaces and add newline at end of index.html file >>> - Add license header to gulfile >>> - Preserve license comments >>> - Update Bootstrap to version 4 >>> - Add Font Awesome icons and spinner >>> - Rework web page design >>> - Add SPDX license identifier >>> - Escape detail messages >>> - Rework JavaScript code >>> - Use scss to customize bootstrap >>> - Add css and scss linter >>> - Add background image >>> - Rework favicon and logo >>> - Reorganize web application files >>> - Rework the documentation >>> >>> www2/README.md | 82 ++++++++++++++++++++++++ >>> www2/css/swupdate.css | 32 ++++++++++ >>> www2/gulpfile.js | 121 +++++++++++++++++++++++++++++++++++ >>> www2/images/background.jpg | Bin 0 -> 96114 bytes >>> www2/images/favicon.png | Bin 0 -> 301 bytes >>> www2/images/logo.png | Bin 0 -> 301 bytes >>> www2/index.html | 136 >> +++++++++++++++++++++++++++++++++++++++ >>> www2/js/swupdate.js | 155 >> +++++++++++++++++++++++++++++++++++++++++++++ >>> www2/package.json | 47 ++++++++++++++ >>> www2/scss/bootstrap.scss | 18 ++++++ >>> 10 files changed, 591 insertions(+) >>> create mode 100644 www2/README.md >>> create mode 100644 www2/css/swupdate.css >>> create mode 100755 www2/gulpfile.js >>> create mode 100755 www2/images/background.jpg >>> create mode 100755 www2/images/favicon.png >>> create mode 100755 www2/images/logo.png >>> create mode 100755 www2/index.html >>> create mode 100755 www2/js/swupdate.js >>> create mode 100755 www2/package.json >>> create mode 100644 www2/scss/bootstrap.scss >>> >>> diff --git a/www2/README.md b/www2/README.md >>> new file mode 100644 >>> index 0000000..85266a4 >>> --- /dev/null >>> +++ b/www2/README.md >> >> See my explanation later about additional repo, I changed my mind. Why >> don't we put this into the documentation in .rst format ? > > If we use the same repo I could move it to the documentation. +1 > Otherwise I would only add a small documentation with a link to the other project. > >>> @@ -0,0 +1,82 @@ >>> +# SWUpdate Web Application >>> + >>> +The SWUpdate web application uses the >> [Node.js](https://nodejs.org/en/) package >>> +manager and [gulp](https://gulpjs.com/) as build tool. >>> +I depends on [Bootstrap 4](https://getbootstrap.com/), >> >> s/I depends/It depends/ > > Thank you for the spot. Fixed. > >> >>> +[Font Awesome 5](https://fontawesome.com/) and >>> +[Dropzone.js](http://www.dropzonejs.com/). >>> + >>> +The web application uses WebSocket for the asynchronous >> communication with the >>> +backend, allows a visualization of different image sources, automatically >>> +reloads the web page after a connection lost and restarts the system >>> +via a post update command. >>> + >>> + >>> +## Install >>> + >>> +1. Unpack a released `swupdate-www.tar.gz` archive to your `www` >> direcotry >> >> s/direcotry/directory/ >> > > Fixed > >>> + >>> + tar -xzf swupdate-www.tar.gz -C /www >>> + >> >> ok, this is something we can tune. I have thought again about adding a >> new repo for this, and taking account that the resulting website with >> npm has a very small footprint, it is something we can avoid. Addin a >> new repo can confuse users. I consider the possibility to add the >> resulting website into the examples directory. This makes changes to >> support it into meta-swupdate quite trivial. What do you think ? > > What about the npm project? Do you want to keep it also in the repo? > Yes. This lets also write a recipe for the website with "inherit npm". It should be not the default case, because I know support for nodejs is in OE sometimes tricky, and Ilkka's repo does not contain all branches as in Yocto, most goes just into master. But we could have a swupdate-www package that is built directly from source after running "npm run build" > I see different use cases: > - Use the web application direct (from the examples directory) > - Use the web application (from the examples directory) and replace some images via a bbappend of the swupdate recipes The use case affects at least 90% of users. I put the few pages in www as an example to be extended, expecting that they were high reworked to better fit products. But time shows me that I was wrong, and sustomers / users are just taking this example as it is and they just replace the Logo. I am expecting the same for the future. That means, if we put the results in examples/, we can add a a package for it in SWUpdate's recipe and most users are happy with their .bbappend. > - Use an adapted web application and replace the whole application via a bbappend or separated recipes. I would like to have this, too, that the reason to add the www with the documentation you provide to start with Web Development. > > In the latter case the developer only changes the web application and generate a tar.gz package. > > I have rethink about the separation and because the web application need the backend for the development (tests) we should keep the projects together. +1 > But in this case we should remove the old www example or move it to the examples directory. +1 It was my idea, too. Something like examples/www/legacy for the old one, and examples/www/current (or whatever) for the new one. > Furthermore we should rename the directory of the new web application because www suggest ready to use content. Yes, it should be www again. > >>> +2. Run the web application >>> + >>> + swupdate -w "-r /www" -p "reboot" >> >> I would just add a note to inform that the parameters to mongoose server >> are changing. Instead of "-document_root" with have just "-r" (root). > > The listing is a "how to get started". We should add a separate section for the webserver with this warning in the documentation. ok > >>> + >>> + >>> +## Customize >>> + >>> +You could replace the `logo.png`, `favicon.png` and `background.jpg` >> >> I was impressed from the big logo in the background by starting the >> application :-). I was just not used of and layout differs from V1. >> Anyway, SWUpdate is growing as project, the image can also grow :-D > > :-) > > It was only a place holder and should be replaced because it doesn't look nice with the transparent boxes. ok > >>> images >>> +inside the `images` directory. Furthermore you could customize the >> Bootstrap >>> +colors and settings inside the `scss/bootstrap.scss` file. The latter needs a >>> +rebuild of the code. >> >> Fine. This is just what most users need. >> >>> + >>> + >>> +## Develop >>> + >>> +1. Clone the code: >>> + >>> + git clone https://github.com/sbabic/swupdate-www.git >>> + cd swupdate-www >>> + >>> +2. Install the dependencies >>> + >>> + npm install >> >> I would add a note about npm version. We need a quite new version to >> build it. > > I will add the minimum required version. > >> >> Current version in LTS distro (I tested in Ubuntu) are very old and >> build does not work. > > The maintenance for the node.js version ends in April 2018. > >>> + >>> +3. Build the web application >>> + >>> + npm run build >>> + >>> +4. Run the web application >>> + >>> + swupdate -w "-r ./dist" -p "echo reboot" >> >> This implies that swupdate is already instelled on the system and >> reached from the path. > > I will replace it by an relative path and add a comment about a prebuild swupdate above the list. > >>> + >>> +5. Pack the web application >>> + >>> + npm run package >> >> Required ? We have alread "dist" and this is what we have to packed with >> meta-swupdate. > > This is needed if somebody customize the project and want to release the changes internal. > >>> + >>> + >>> +## Maintainer >>> + >>> +Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> >>> + >>> + >>> +## Contribute >>> + >>> +You can submit your patches (or post questions regarding the project) to >> the >>> +swupdate Mailing List: >>> + >>> + swupdate@googlegroups.com >>> + >>> +Please read in the corresponding chapter in the SWUpdate >> documentation >>> +how to contribute to the project. >>> + >>> +Additional run the linter before any commit and add a prefix to the >> patches >>> + >>> + npm run lint >>> + >>> + git format-patch -s --subject-prefix='swupdate-www][PATCH' <revision >> range> >>> + >>> + >>> +## License >> >> I guess this part can be dropped if we let all stuff into the project. >> Then the general rules apply and there is already a "contribution" page. > > You are right. > >>> + >>> +MIT >>> diff --git a/www2/css/swupdate.css b/www2/css/swupdate.css >>> new file mode 100644 >>> index 0000000..a37d3d1 > > [snip] > >> It looks that this version fixes an issue I saw with V1, that is >> "messages" were not updated after first run (or I remember wrong).It >> works flawlessly, good job ! > > Thanks and best regards > Best regards, Stefano Babic
Hi Stefano, > [...] > > Can you generate the images or send me the vector image of the logo? > > Bad..there is no SVG in the repo. I attach a regenerated SVG from PNG, I > will check if I find the original. Wow, that's quite large: 15K. I happened to recreate an SVG version of the logo myself, find it attached. It's 3.3K in case you don't find the original source... Don't know if that reflects the PNG logo in the same beauty as yours though... Kind regards, Christian
Hi Stefano, > -----Ursprüngliche Nachricht----- > Von: Stefano Babic [mailto:sbabic@denx.de] > Gesendet: Montag, 19. Februar 2018 12:53 > An: Herbrechtsmeier Dr.-Ing. , Stefan > <Stefan.Herbrechtsmeier@weidmueller.com>; sbabic@denx.de; > stefan@herbrechtsmeier.net; swupdate@googlegroups.com > Betreff: Re: AW: [swupdate] [PATCH v2 4/4] www: Add reworked web page > with bootstrap, dropzone and websocket support > > On 19/02/2018 10:33, Stefan.Herbrechtsmeier@weidmueller.com wrote: > > Hi Stefano, > > > >> -----Ursprüngliche Nachricht----- > >> Von: Stefano Babic [mailto:sbabic@denx.de] > >> Gesendet: Sonntag, 18. Februar 2018 12:18 > >> An: stefan@herbrechtsmeier.net; swupdate@googlegroups.com > >> Cc: Herbrechtsmeier Dr.-Ing. , Stefan > >> <Stefan.Herbrechtsmeier@weidmueller.com> > >> Betreff: Re: [swupdate] [PATCH v2 4/4] www: Add reworked web page > >> with bootstrap, dropzone and websocket support > >> > >> On 16/02/2018 21:42, stefan@herbrechtsmeier.net wrote: > >>> From: Stefan Herbrechtsmeier > >> <stefan.herbrechtsmeier@weidmueller.com> > >>> > >>> The new web page uses WebSocket for the asynchronous > communication > >> with the > >>> backend, allows a visualization of different image sources and > >>> automatically reloads the web page after a connection lost. > >>> > >>> Signed-off-by: Stefan Herbrechtsmeier > >> <stefan.herbrechtsmeier@weidmueller.com> > >>> > >>> --- > >>> The documation isn't finished and the project name swupdate-www > >>> needs to be adapted to the real project name. Furthermore the images > >>> need to be replaced. > >> > >> ok, this is just a directive for users. > > > > The images in the example must be replaced also. The line width in the logo > and icon are too small. > > Right, the logo at least. It is small and it is affected by aliasing. > > > Can you generate the images or send me the vector image of the logo? > > Bad..there is no SVG in the repo. I attach a regenerated SVG from PNG, I will > check if I find the original. I agree that the SVG should be stored into the > repo, too (doc/source/images/ ?). This would be nice. But I fear the logo need some rework because it doesn't scale very well. > > Furthermore the background image is only a placeholder. It should be > > replaced by a real image / texture with CC0 copyright or a white > > image. An example would be > > https://pixabay.com/de/leiterbahn-platine-technologie-3157431/ > > I have tried with an image from SWUpdate's flyer - not bad, very blue. I have > also attached it if you find ok. I would remove the text and perspective and may be use a lighter blue. Furthermore it need a higher resolution and you need to clarify the copyright. > >>> Changes in v2: > >>> - Add package task to generate a production package > >>> - Disable the axaj timeout to support large files and slow servers > >>> - Recall delayed tryReload function only if status is not equal > >>> timeout > >>> - Enable javascript code fix in npm lint script > >>> - Remove trailing spaces and add newline at end of index.html file > >>> - Add license header to gulfile > >>> - Preserve license comments > >>> - Update Bootstrap to version 4 > >>> - Add Font Awesome icons and spinner > >>> - Rework web page design > >>> - Add SPDX license identifier > >>> - Escape detail messages > >>> - Rework JavaScript code > >>> - Use scss to customize bootstrap > >>> - Add css and scss linter > >>> - Add background image > >>> - Rework favicon and logo > >>> - Reorganize web application files > >>> - Rework the documentation > >>> > >>> www2/README.md | 82 ++++++++++++++++++++++++ > >>> www2/css/swupdate.css | 32 ++++++++++ > >>> www2/gulpfile.js | 121 > +++++++++++++++++++++++++++++++++++ > >>> www2/images/background.jpg | Bin 0 -> 96114 bytes > >>> www2/images/favicon.png | Bin 0 -> 301 bytes > >>> www2/images/logo.png | Bin 0 -> 301 bytes > >>> www2/index.html | 136 > >> +++++++++++++++++++++++++++++++++++++++ > >>> www2/js/swupdate.js | 155 > >> +++++++++++++++++++++++++++++++++++++++++++++ > >>> www2/package.json | 47 ++++++++++++++ > >>> www2/scss/bootstrap.scss | 18 ++++++ > >>> 10 files changed, 591 insertions(+) create mode 100644 > >>> www2/README.md create mode 100644 www2/css/swupdate.css > create > >>> mode 100755 www2/gulpfile.js create mode 100755 > >>> www2/images/background.jpg create mode 100755 > >>> www2/images/favicon.png create mode 100755 > www2/images/logo.png > >>> create mode 100755 www2/index.html create mode 100755 > >>> www2/js/swupdate.js create mode 100755 www2/package.json create > >>> mode 100644 www2/scss/bootstrap.scss > >>> > >>> diff --git a/www2/README.md b/www2/README.md new file mode > 100644 > >>> index 0000000..85266a4 > >>> --- /dev/null > >>> +++ b/www2/README.md > >> > >> See my explanation later about additional repo, I changed my mind. Why > >> don't we put this into the documentation in .rst format ? > > > > If we use the same repo I could move it to the documentation. > > +1 > > > Otherwise I would only add a small documentation with a link to the other > project. > > > >>> @@ -0,0 +1,82 @@ > >>> +# SWUpdate Web Application > >>> + > >>> +The SWUpdate web application uses the > >> [Node.js](https://nodejs.org/en/) package > >>> +manager and [gulp](https://gulpjs.com/) as build tool. > >>> +I depends on [Bootstrap 4](https://getbootstrap.com/), > >> > >> s/I depends/It depends/ > > > > Thank you for the spot. Fixed. > > > >> > >>> +[Font Awesome 5](https://fontawesome.com/) and > >>> +[Dropzone.js](http://www.dropzonejs.com/). > >>> + > >>> +The web application uses WebSocket for the asynchronous > >> communication with the > >>> +backend, allows a visualization of different image sources, > automatically > >>> +reloads the web page after a connection lost and restarts the system > >>> +via a post update command. > >>> + > >>> + > >>> +## Install > >>> + > >>> +1. Unpack a released `swupdate-www.tar.gz` archive to your `www` > >> direcotry > >> > >> s/direcotry/directory/ > >> > > > > Fixed > > > >>> + > >>> + tar -xzf swupdate-www.tar.gz -C /www > >>> + > >> > >> ok, this is something we can tune. I have thought again about adding a > >> new repo for this, and taking account that the resulting website with > >> npm has a very small footprint, it is something we can avoid. Addin a > >> new repo can confuse users. I consider the possibility to add the > >> resulting website into the examples directory. This makes changes to > >> support it into meta-swupdate quite trivial. What do you think ? > > > > What about the npm project? Do you want to keep it also in the repo? > > > > Yes. This lets also write a recipe for the website with "inherit npm". > It should be not the default case, because I know support for nodejs is > in OE sometimes tricky, and Ilkka's repo does not contain all branches > as in Yocto, most goes just into master. I don't like the current npm integration. The whole implementation bypass most of the OE features and doesn't works correct. The web application needs npm only for the dependencies and generates all needed files in the dist directory. At the end the whole node_modules directory could be removed and most of the collected license information don't matter for the distributed code. It is much easier to generate a tar.gz package and publish the package somewhere. This package can be fetched by OE and simple unpacked to the desired directory. > But we could have a swupdate-www package that is built directly from > source after running "npm run build" > > > I see different use cases: > > - Use the web application direct (from the examples directory) > > - Use the web application (from the examples directory) and replace some > images via a bbappend of the swupdate recipes > > The use case affects at least 90% of users. I put the few pages in www > as an example to be extended, expecting that they were high reworked to > better fit products. But time shows me that I was wrong, and sustomers / > users are just taking this example as it is and they just replace the Logo. > > I am expecting the same for the future. That means, if we put the > results in examples/, we can add a a package for it in SWUpdate's recipe > and most users are happy with their .bbappend. Maybe the recipe could check for the image files in the WORKDIR and if available copy them over the example files. This would minimize the bbappend to a simple append of the SCR_URI. > > - Use an adapted web application and replace the whole application via a > bbappend or separated recipes. > > I would like to have this, too, that the reason to add the www with the > documentation you provide to start with Web Development. > > > > > In the latter case the developer only changes the web application and > generate a tar.gz package. > > > > I have rethink about the separation and because the web application need > the backend for the development (tests) we should keep the projects > together. > > +1 > > > But in this case we should remove the old www example or move it to the > examples directory. > > +1 > > It was my idea, too. Something like examples/www/legacy for the old one, > and examples/www/current (or whatever) for the new one. What about the version numbers (v1 / v2) to match with the Config. > > > Furthermore we should rename the directory of the new web application > because www suggest ready to use content. > > Yes, it should be www again. I would rename it to web-app to make clear that you could not simple copy the content to your www directory. [snip] Best regards Stefan Herbrechtsmeier Software Developer Embedded Systems Weidmüller – Your partner in Industrial Connectivity We look forward to sharing ideas with you – Let’s connect. Weidmueller Interface GmbH & Co. KG Klingenbergstraße 16, 32758 Detmold, Germany Email: Stefan.Herbrechtsmeier@weidmueller.com – Web: www.weidmueller.com
Hi Stefan, On 19/02/2018 15:04, Stefan.Herbrechtsmeier@weidmueller.com wrote: > Hi Stefano, > [snip] >>> The images in the example must be replaced also. The line width in the logo >> and icon are too small. >> >> Right, the logo at least. It is small and it is affected by aliasing. >> >>> Can you generate the images or send me the vector image of the logo? >> >> Bad..there is no SVG in the repo. I attach a regenerated SVG from PNG, I will >> check if I find the original. I agree that the SVG should be stored into the >> repo, too (doc/source/images/ ?). > > This would be nice. But I fear the logo need some rework because it doesn't scale very well. Check if the SVG sent by Christian can fit. > >>> Furthermore the background image is only a placeholder. It should be >>> replaced by a real image / texture with CC0 copyright or a white >>> image. An example would be >>> https://pixabay.com/de/leiterbahn-platine-technologie-3157431/ >> >> I have tried with an image from SWUpdate's flyer - not bad, very blue. I have >> also attached it if you find ok. > > I would remove the text and perspective and may be use a lighter blue. Furthermore it need a higher resolution and you need to clarify the copyright. Wolfgang in CC is one of the author of image. The copyright is one thing, the second one is the license. Do you have any proposal for a Picture's license inside a FOSS project ? As the rest of software, we should add a meaningful license for the file. >> Yes. This lets also write a recipe for the website with "inherit npm". >> It should be not the default case, because I know support for nodejs is >> in OE sometimes tricky, and Ilkka's repo does not contain all branches >> as in Yocto, most goes just into master. > > I don't like the current npm integration. The whole implementation bypass most of the OE features and doesn't works correct. Yes, I mentioned that it is "tricky" ;-) >The web application needs npm only for the dependencies and generates all needed files in the dist directory. At the end the whole node_modules directory could be removed and most of the collected license information don't >matter for the distributed code. > > It is much easier to generate a tar.gz package and publish the package somewhere. This package can be fetched by OE and simple unpacked to the desired directory. ok - then we go for this way. We let code in to allow users to build themselves, but we stored the ready to use result. > >> But we could have a swupdate-www package that is built directly from >> source after running "npm run build" >> >>> I see different use cases: >>> - Use the web application direct (from the examples directory) >>> - Use the web application (from the examples directory) and replace some >> images via a bbappend of the swupdate recipes >> >> The use case affects at least 90% of users. I put the few pages in www >> as an example to be extended, expecting that they were high reworked to >> better fit products. But time shows me that I was wrong, and sustomers / >> users are just taking this example as it is and they just replace the Logo. >> >> I am expecting the same for the future. That means, if we put the >> results in examples/, we can add a a package for it in SWUpdate's recipe >> and most users are happy with their .bbappend. > > Maybe the recipe could check for the image files in the WORKDIR and if available copy them over the example files. This would minimize the bbappend to a simple append of the SCR_URI. Well, but this is not automatically done by bitbake ? If I add files in SRC_URI in a bbappend, they replace the original ones. We get this without effort in OE. > >>> - Use an adapted web application and replace the whole application via a >> bbappend or separated recipes. >> >> I would like to have this, too, that the reason to add the www with the >> documentation you provide to start with Web Development. >> >>> >>> In the latter case the developer only changes the web application and >> generate a tar.gz package. >>> >>> I have rethink about the separation and because the web application need >> the backend for the development (tests) we should keep the projects >> together. >> >> +1 >> >>> But in this case we should remove the old www example or move it to the >> examples directory. >> >> +1 >> >> It was my idea, too. Something like examples/www/legacy for the old one, >> and examples/www/current (or whatever) for the new one. > > What about the version numbers (v1 / v2) to match with the Config. Fine with me. > >> >>> Furthermore we should rename the directory of the new web application >> because www suggest ready to use content. >> >> Yes, it should be www again. > > I would rename it to web-app to make clear that you could not simple copy the content to your www directory. ok, agree. Best regards, Stefano Babic
Hi Stefano, > -----Ursprüngliche Nachricht----- > Von: Stefano Babic [mailto:sbabic@denx.de] > Gesendet: Montag, 19. Februar 2018 15:47 > An: Herbrechtsmeier Dr.-Ing. , Stefan > <Stefan.Herbrechtsmeier@weidmueller.com>; sbabic@denx.de; > stefan@herbrechtsmeier.net; swupdate@googlegroups.com > Cc: Wolfgang Denk <wd@denx.de> > Betreff: Re: AW: AW: [swupdate] [PATCH v2 4/4] www: Add reworked web > page with bootstrap, dropzone and websocket support > > On 19/02/2018 15:04, Stefan.Herbrechtsmeier@weidmueller.com wrote: > > [snip] > > > >>> The images in the example must be replaced also. The line width in > >>> the logo > >> and icon are too small. > >> > >> Right, the logo at least. It is small and it is affected by aliasing. > >> > >>> Can you generate the images or send me the vector image of the logo? > >> > >> Bad..there is no SVG in the repo. I attach a regenerated SVG from > >> PNG, I will check if I find the original. I agree that the SVG should > >> be stored into the repo, too (doc/source/images/ ?). > > > > This would be nice. But I fear the logo need some rework because it > doesn't scale very well. > > Check if the SVG sent by Christian can fit. I will check. > >>> Furthermore the background image is only a placeholder. It should be > >>> replaced by a real image / texture with CC0 copyright or a white > >>> image. An example would be > >>> https://pixabay.com/de/leiterbahn-platine-technologie-3157431/ > >> > >> I have tried with an image from SWUpdate's flyer - not bad, very > >> blue. I have also attached it if you find ok. > > > > I would remove the text and perspective and may be use a lighter blue. > Furthermore it need a higher resolution and you need to clarify the > copyright. > > Wolfgang in CC is one of the author of image. The copyright is one thing, the > second one is the license. Do you have any proposal for a Picture's license > inside a FOSS project ? As the rest of software, we should add a meaningful > license for the file. I think for an image you should use a Creative Commons license. [snip] > >>> I see different use cases: > >>> - Use the web application direct (from the examples directory) > >>> - Use the web application (from the examples directory) and replace > >>> some > >> images via a bbappend of the swupdate recipes > >> > >> The use case affects at least 90% of users. I put the few pages in > >> www as an example to be extended, expecting that they were high > >> reworked to better fit products. But time shows me that I was wrong, > >> and sustomers / users are just taking this example as it is and they just > replace the Logo. > >> > >> I am expecting the same for the future. That means, if we put the > >> results in examples/, we can add a a package for it in SWUpdate's > >> recipe and most users are happy with their .bbappend. > > > > Maybe the recipe could check for the image files in the WORKDIR and if > available copy them over the example files. This would minimize the > bbappend to a simple append of the SCR_URI. > > Well, but this is not automatically done by bitbake ? If I add files in SRC_URI in > a bbappend, they replace the original ones. We get this without effort in OE. A simple bbappend with the following content should work: FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" SRC_URI_append = "\ file://background.jpg \ file://favicon.png \ file://logo.png \ " And something like the following in the bb: do_install_append () { for IMG in background.jpg favicon.png logo.png; do if [ -e ${WORKDIR}/${IMG} ] ; then rm ${D}/www/images/${IMG} install -m 644 ${WORKDIR}/${IMG} ${D}/www/images/ fi done } Best regards Stefan Herbrechtsmeier Software Developer Embedded Systems Weidmüller – Your partner in Industrial Connectivity We look forward to sharing ideas with you – Let’s connect. Weidmueller Interface GmbH & Co. KG Klingenbergstraße 16, 32758 Detmold, Germany Email: Stefan.Herbrechtsmeier@weidmueller.com – Web: www.weidmueller.com
Dear Stefan, In message <531ADB0D40411F4DAE16FC92133DDBF12D353BD2@SRVDE355.weidmueller.com> you wrote: > > > Wolfgang in CC is one of the author of image. The copyright is one thing, the > > second one is the license. Do you have any proposal for a Picture's license > > inside a FOSS project ? As the rest of software, we should add a meaningful > > license for the file. > > I think for an image you should use a Creative Commons license. Do you have a recommendation? I feel we should allow unrestricted distribution and use, but I don't want to allow modifications. At first glance, Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0) seems to provide exactly that, except on closer look you still can "roduce and reproduce, but not Share, Adapted Material" (section 2(a)(1)(B)). So what I'm looking for is something like "CC BY-ND 4.0 without 2(a)(1)(B). Is there such a thing? Best regards, Wolfgang Denk
Hi Wolfgang, > -----Ursprüngliche Nachricht----- > Von: Wolfgang Denk [mailto:wd@denx.de] > Gesendet: Montag, 19. Februar 2018 16:47 > An: Herbrechtsmeier Dr.-Ing. , Stefan > <Stefan.Herbrechtsmeier@weidmueller.com> > Cc: sbabic@denx.de; stefan@herbrechtsmeier.net; > swupdate@googlegroups.com > Betreff: Re: AW: AW: AW: [swupdate] [PATCH v2 4/4] www: Add reworked > web page with bootstrap, dropzone and websocket support > > In message > <531ADB0D40411F4DAE16FC92133DDBF12D353BD2@SRVDE355.weidmueller. > com> you wrote: > > > > > Wolfgang in CC is one of the author of image. The copyright is one > > > thing, the second one is the license. Do you have any proposal for a > > > Picture's license inside a FOSS project ? As the rest of software, > > > we should add a meaningful license for the file. > > > > I think for an image you should use a Creative Commons license. > > Do you have a recommendation? I feel we should allow unrestricted > distribution and use, but I don't want to allow modifications. > > At first glance, Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0) > seems to provide exactly that, except on closer look you still can "roduce and > reproduce, but not Share, Adapted Material" > (section 2(a)(1)(B)). This allows you to manipulate the image (produce a Adapted Material) without the right to use (Share) the manipulated image. In practical this means that you can do what you want with the image if you don't show it to someone else. > So what I'm looking for is something like "CC BY-ND 4.0 without 2(a)(1)(B). The problem I see is the question what is an "Adapted Material". Does the web application with the boxes overlaying the image are already an "Adapted Material"? Furthermore how should we provide the name of the creator and attribution parties, a copyright notice, a license notice, a disclaimer notice, and a link to the material inside the web application. At the moment we have no visible license information inside the web application. Therefore I would prefer to use a CC0 image. This leads me to the question what is the license of the SWUpdate logo? Please keep in mind that my company use its own images in the web application. I only need some appropriated default images for other users. Best regards Stefan Herbrechtsmeier Software Developer Embedded Systems Weidmüller – Your partner in Industrial Connectivity We look forward to sharing ideas with you – Let’s connect. Weidmueller Interface GmbH & Co. KG Klingenbergstraße 16, 32758 Detmold, Germany Email: Stefan.Herbrechtsmeier@weidmueller.com – Web: www.weidmueller.com
Hi Stefan, On 19/02/2018 17:46, Stefan.Herbrechtsmeier@weidmueller.com wrote: > Hi Wolfgang, > >> -----Ursprüngliche Nachricht----- >> Von: Wolfgang Denk [mailto:wd@denx.de] >> Gesendet: Montag, 19. Februar 2018 16:47 >> An: Herbrechtsmeier Dr.-Ing. , Stefan >> <Stefan.Herbrechtsmeier@weidmueller.com> >> Cc: sbabic@denx.de; stefan@herbrechtsmeier.net; >> swupdate@googlegroups.com >> Betreff: Re: AW: AW: AW: [swupdate] [PATCH v2 4/4] www: Add reworked >> web page with bootstrap, dropzone and websocket support >> >> In message >> <531ADB0D40411F4DAE16FC92133DDBF12D353BD2@SRVDE355.weidmueller. >> com> you wrote: >>> >>>> Wolfgang in CC is one of the author of image. The copyright is one >>>> thing, the second one is the license. Do you have any proposal for a >>>> Picture's license inside a FOSS project ? As the rest of software, >>>> we should add a meaningful license for the file. >>> >>> I think for an image you should use a Creative Commons license. >> >> Do you have a recommendation? I feel we should allow unrestricted >> distribution and use, but I don't want to allow modifications. >> >> At first glance, Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0) >> seems to provide exactly that, except on closer look you still can "roduce and >> reproduce, but not Share, Adapted Material" >> (section 2(a)(1)(B)). > > This allows you to manipulate the image (produce a Adapted Material) without the right to use (Share) the manipulated image. In practical this means that you can do what you want with the image if you don't show it to someone else. > >> So what I'm looking for is something like "CC BY-ND 4.0 without 2(a)(1)(B). > > The problem I see is the question what is an "Adapted Material". Does the web application with the boxes overlaying the image are already an "Adapted Material"? Furthermore how should we provide the name of the creator and attribution parties, a copyright notice, a license notice, a disclaimer notice, and a link to the material inside the web application. At the moment we have no visible license information inside the web application. Therefore I would prefer to use a CC0 image. > > This leads me to the question what is the license of the SWUpdate logo? Currently, as it is not set differently, it belongs to the project and it is GPLv2. But storing the SVG, let me add meta information to the SVG file and I could set it to a CC license. > > Please keep in mind that my company use its own images in the web application. I only need some appropriated default images for other users. Right, the same here. Customers won't use it - but it is good to have a placeholder that is not transparent, else nobody knows aboit. Anyway, the images can be updated later in follow up patches - the issue with license raised from the discussion but it is not strictly related to the patch. It is fine for me to have just a placeholder. Best regards, Stefano Babic
Dear Stefan, In message <531ADB0D40411F4DAE16FC92133DDBF12D353C84@SRVDE355.weidmueller.com> you wrote: > > > > I think for an image you should use a Creative Commons license. > > > > Do you have a recommendation? I feel we should allow unrestricted > > distribution and use, but I don't want to allow modifications. > > > > At first glance, Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0) > > seems to provide exactly that, except on closer look you still can "roduce and > > reproduce, but not Share, Adapted Material" > > (section 2(a)(1)(B)). > > This allows you to manipulate the image (produce a Adapted > Material) without the right to use (Share) the manipulated image. > In practical this means that you can do what you want with the > image if you don't show it to someone else. IANAL, but I think this is not quite correct. "Share" IMO always talks about third parties. If for example a big company (say, Google, Microsoft, Intel, ...) decides to modify the graphics and use it internally within their company, this would not be considered sharing, as no third parties are involved. Or am I wrong? > > So what I'm looking for is something like "CC BY-ND 4.0 without 2(a)(1)(B). > > The problem I see is the question what is an "Adapted Material". > Does the web application with the boxes overlaying the image are > already an "Adapted Material"? Furthermore how should we provide > the name of the creator and attribution parties, a copyright > notice, a license notice, a disclaimer notice, and a link to the > material inside the web application. At the moment we have no > visible license information inside the web application. Agreed. We are working on that. > Therefore I would prefer to use a CC0 image. This is not possible with the image under discussion, sorry. > This leads me to the question what is the license of the SWUpdate logo? This is for Stefano to answer... > Please keep in mind that my company use its own images in the web > application. I only need some appropriated default images for > other users. Fully understood and much appreciated! Thanks! Best regards, Wolfgang Denk
diff --git a/www2/README.md b/www2/README.md new file mode 100644 index 0000000..85266a4 --- /dev/null +++ b/www2/README.md @@ -0,0 +1,82 @@ +# SWUpdate Web Application + +The SWUpdate web application uses the [Node.js](https://nodejs.org/en/) package +manager and [gulp](https://gulpjs.com/) as build tool. +I depends on [Bootstrap 4](https://getbootstrap.com/), +[Font Awesome 5](https://fontawesome.com/) and +[Dropzone.js](http://www.dropzonejs.com/). + +The web application uses WebSocket for the asynchronous communication with the +backend, allows a visualization of different image sources, automatically +reloads the web page after a connection lost and restarts the system +via a post update command. + + +## Install + +1. Unpack a released `swupdate-www.tar.gz` archive to your `www` direcotry + + tar -xzf swupdate-www.tar.gz -C /www + +2. Run the web application + + swupdate -w "-r /www" -p "reboot" + + +## Customize + +You could replace the `logo.png`, `favicon.png` and `background.jpg` images +inside the `images` directory. Furthermore you could customize the Bootstrap +colors and settings inside the `scss/bootstrap.scss` file. The latter needs a +rebuild of the code. + + +## Develop + +1. Clone the code: + + git clone https://github.com/sbabic/swupdate-www.git + cd swupdate-www + +2. Install the dependencies + + npm install + +3. Build the web application + + npm run build + +4. Run the web application + + swupdate -w "-r ./dist" -p "echo reboot" + +5. Pack the web application + + npm run package + + +## Maintainer + +Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> + + +## Contribute + +You can submit your patches (or post questions regarding the project) to the +swupdate Mailing List: + + swupdate@googlegroups.com + +Please read in the corresponding chapter in the SWUpdate documentation +how to contribute to the project. + +Additional run the linter before any commit and add a prefix to the patches + + npm run lint + + git format-patch -s --subject-prefix='swupdate-www][PATCH' <revision range> + + +## License + +MIT diff --git a/www2/css/swupdate.css b/www2/css/swupdate.css new file mode 100644 index 0000000..a37d3d1 --- /dev/null +++ b/www2/css/swupdate.css @@ -0,0 +1,32 @@ +/*! + * Copyright (C) 2017-2018 Weidmüller Interface GmbH & Co. KG + * Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> + * + * SPDX-License-Identifier: MIT + */ + +body { + background-attachment: fixed; + background-image: url("../images/background.jpg"); + background-position: center; + background-repeat: no-repeat; + background-size: cover; +} + +.dropzone { + background: #ffffff; + background: rgba(255,255,255,0.75); + min-height: 200px; +} + +.dropzone .dz-preview .dz-image { + width: 220px; +} + +[data-toggle="collapse"] i:before { + content: "\f139"; +} + +[data-toggle="collapse"].collapsed i:before { + content: "\f13a"; +} diff --git a/www2/gulpfile.js b/www2/gulpfile.js new file mode 100755 index 0000000..a99b460 --- /dev/null +++ b/www2/gulpfile.js @@ -0,0 +1,121 @@ +/*! + * Copyright (C) 2017-2018 Weidmüller Interface GmbH & Co. KG + * Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> + * + * SPDX-License-Identifier: MIT + */ + +var cleanCSS = require('gulp-clean-css') +var del = require('del') +var gulp = require('gulp') +var gzip = require('gulp-gzip') +var imagemin = require('gulp-imagemin') +var filter = require('gulp-filter') +var htmlmin = require('gulp-htmlmin') +var minify = require('gulp-minify') +var rename = require('gulp-rename') +var replace = require('gulp-replace') +var sass = require('gulp-sass') +var tar = require('gulp-tar') +var useref = require('gulp-useref') + +gulp.task('sass', ['clean'], () => { + return gulp.src('scss/*.scss') + .pipe(sass().on('error', sass.logError)) + .pipe(cleanCSS({ compatibility: '*' })) + .pipe(rename({ + suffix: '.min' + })) + .pipe(gulp.dest('dist/css')) +}) + +gulp.task('minify-css', ['clean'], () => { + return gulp.src('css/*.css') + .pipe(cleanCSS({ compatibility: '*' })) + .pipe(rename({ + suffix: '.min' + })) + .pipe(gulp.dest('dist/css')) +}) + +gulp.task('minify-js', ['clean'], () => { + return gulp.src('js/*.js') + .pipe(minify({ + ext: { + min: '.min.js' + }, + noSource: true, + preserveComments: 'some' + })) + .pipe(gulp.dest('dist/js')) +}) + +gulp.task('minify-html', ['clean'], () => { + return gulp.src('*.html') + .pipe(replace('node_modules/bootstrap/dist/css', 'css')) + .pipe(useref({ noconcat: true })) + .pipe(filter('*.html')) + .pipe(replace(/node_modules\/.*\/([^/]+)\.css/g, 'css/$1.css')) + .pipe(replace(/node_modules\/.*\/([^/]+)\.js/g, 'js/$1.js')) + .pipe(replace('.css', '.min.css')) + .pipe(replace('.js', '.min.js')) + .pipe(htmlmin({ collapseWhitespace: true })) + .pipe(gulp.dest('dist')) +}) + +gulp.task('copy-css', ['clean'], () => { + return gulp.src('*.html') + .pipe(useref({ noconcat: true })) + .pipe(filter('**/*.css')) + .pipe(rename({ + dirname: 'css', + suffix: '.min' + })) + .pipe(cleanCSS({ compatibility: '*' })) + .pipe(gulp.dest('dist')) +}) + +gulp.task('copy-js', ['clean'], () => { + return gulp.src('*.html') + .pipe(useref({ noconcat: true })) + .pipe(filter('**/*.js')) + .pipe(rename({ + dirname: 'js' + })) + .pipe(minify({ + ext: { + min: '.min.js' + }, + noSource: true, + preserveComments: 'some' + })) + .pipe(gulp.dest('dist')) +}) + +gulp.task('copy-fonts', ['clean'], () => { + return gulp.src([ + 'node_modules/@fortawesome/fontawesome-free-webfonts/webfonts/fa-solid-900.{ttf,woff,woff2}' + ]) + .pipe(gulp.dest('dist/webfonts')) +}) + +gulp.task('resize-images', ['clean'], () => { + return gulp.src('./images/*') + .pipe(imagemin({ verbose: true })) + .pipe(gulp.dest('./dist/images')) +}) + +gulp.task('package', ['build'], () => { + return gulp.src('dist/**') + .pipe(tar('swupdate-www.tar')) + .pipe(gzip()) + .pipe(gulp.dest('prod')) +}) + +gulp.task('clean', () => { + return del('dist/**', { force: true }) +}) + +gulp.task('build', ['copy-css', 'copy-js', 'copy-fonts', 'sass', 'minify-css', 'minify-js', 'minify-html', 'resize-images']) + +gulp.task('default', ['build']) diff --git a/www2/images/background.jpg b/www2/images/background.jpg new file mode 100755 index 0000000000000000000000000000000000000000..5cfceda6397ed471dd9a50fb8dd0a850cf089122 GIT binary patch literal 96114 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ψ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 literal 0 HcmV?d00001 diff --git a/www2/images/favicon.png b/www2/images/favicon.png new file mode 100755 index 0000000000000000000000000000000000000000..04c50a937604e51321891e6f48370d3410cec742 GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvg8-ipS0GIih_aXA25Mj|3GxeO zaCmkj4a7<Ec6VXuV3qX%aySb-B8wRqxP?HN@zUM8KR`kD5>H=O_D4(tTzaY>M18V> zLS>#Vjv*T7b0;|p9Z=w4-urdN`fo3PIvnTIGI6l9*yJeLoV@1192p^P$CIrthFuRP z-DwMY@My~dUG{tH9!}xD(arR&i){uY(~WG=ie?5EHjnZf|2ma-Gp-VR<XH7raNRMx u$(vUv*<EgnPyf@ukat!8CjRLChq+hx+C+1`t853lfWgz%&t;ucLK6T^rBrzU literal 0 HcmV?d00001 diff --git a/www2/images/logo.png b/www2/images/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..04c50a937604e51321891e6f48370d3410cec742 GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvg8-ipS0GIih_aXA25Mj|3GxeO zaCmkj4a7<Ec6VXuV3qX%aySb-B8wRqxP?HN@zUM8KR`kD5>H=O_D4(tTzaY>M18V> zLS>#Vjv*T7b0;|p9Z=w4-urdN`fo3PIvnTIGI6l9*yJeLoV@1192p^P$CIrthFuRP z-DwMY@My~dUG{tH9!}xD(arR&i){uY(~WG=ie?5EHjnZf|2ma-Gp-VR<XH7raNRMx u$(vUv*<EgnPyf@ukat!8CjRLChq+hx+C+1`t853lfWgz%&t;ucLK6T^rBrzU literal 0 HcmV?d00001 diff --git a/www2/index.html b/www2/index.html new file mode 100755 index 0000000..1ff2bbb --- /dev/null +++ b/www2/index.html @@ -0,0 +1,136 @@ +<!doctype html> +<html lang="en"> + +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + + <link rel="icon" href="/favicon.png" type="image/png"> + + <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.css"> + <!-- build:css --> + <link rel="stylesheet" href="node_modules/dropzone/dist/dropzone.css"> + <link rel="stylesheet" href="node_modules/@fortawesome/fontawesome-free-webfonts/css/fontawesome.css"> + <link rel="stylesheet" href="node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-solid.css"> + <link rel="stylesheet" href="css/swupdate.css"> + <!-- endbuild --> + + <!-- build:js --> + <script src="node_modules/jquery/dist/jquery.js"></script> + <script src="node_modules/bootstrap/dist/js/bootstrap.js"></script> + <script src="node_modules/dropzone/dist/dropzone.js"></script> + <!-- endbuild --> + <script src="js/swupdate.js"></script> + + <title>SWUpdate - Software Update for Embedded Systems</title> +</head> + +<body> + <!-- Navigation Header --> + <nav class="navbar sticky-top navbar-expand-sm navbar-dark bg-primary"> + <div class="container"> + <a class="navbar-brand" href="#"> + <img class="d-inline-block align-top" src="images/logo.png" alt=""> + </a> + <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + <div class="collapse navbar-collapse" id="navbarText"> + <ul class="navbar-nav ml-auto"> + <li class="nav-item"> + <a id="swu-restart" class="nav-link" href="#"><i class="fas fa-sync"></i> Restart System</a> + </li> + </ul> + </div> + </div> + </nav> + + <!-- Use Bootstrap Grid Container --> + <div class="container"> + <!-- Header --> + <div class="jumbotron my-3"> + <h1 class="display-4">SWUpdate</h1> + <p class="lead">Software update for embedded systems</p> + <p>Upload an software image below or restart the system at the top right.</p> + </div> + + <div class="row my-3"> + <div class="col"> + <div class="card"> + <div class="card-header pb-0"> + <h5><i class="fas fa-wrench"></i> Software Update</h5> + </div> + <div class="card-body"> + <!-- Dropzone Button for drag&drop files --> + <form class="dropzone border rounded mb-3" id="dropzone" action="/upload" method="post" enctype="multipart/form-data"> + <div class="dz-default dz-message"> + <span class="dz-message">Click hier or drop a software update image.</span> + </div> + </form> + + <!-- Status --> + <div id="swu-idle" class="alert alert-secondary"> + <i class="fas fa-info-circle"></i> Update not started + </div> + <div id="swu-run" class="alert alert-warning" style="display: none;"> + <i class="fas fa-exclamation-triangle"></i> + Updating may take a few minutes, please don't turn off the power. + </div> + <div id="swu-success" class="alert alert-success" style="display: none;"> + <i class="fas fa-check-circle"></i> Successful updated + </div> + <div id="swu-failure" class="alert alert-danger" style="display: none;"> + <i class="fas fa-times-circle"></i> Update failed + </div> + <div id="swu-done" class="alert alert-info" style="display: none;"> + <i class="fas fa-sync"></i> Restarting system + </div> + + <!-- Progress --> + <i id="swu-progress-spinner" class="fas"></i> + <strong id="swu-progress-run" style="display: none;">Updating:</strong> + <span id="swu-progress-name"></span> + <span id="swu-progress-value" class="float-right"></span> + <div class="progress"> + <div id="swu-progress-bar" class="progress-bar progress-bar-striped" role="progressbar"></div> + </div> + </div> + </div> + </div> + </div> + + <!-- Messages --> + <div class="row my-3"> + <div class="col"> + <div class="card"> + <div class="card-header" id="headingMessages"> + <a class="h5 collapsed" data-toggle="collapse" href="#collapseMessages" aria-expanded="false" aria-controls="collapseMessages"> + <i class="fas"></i> Messages + </a> + </div> + <div id="collapseMessages" class="collapse" aria-labelledby="headingMessages"> + <div class="card-body" id="messages"></div> + </div> + </div> + </div> + </div> + + <!-- Restart --> + <div id="swu-restart-modal" class="modal fade" tabindex="-1" role="dialog"> + <div class="modal-dialog modal-dialog-centered" role="document"> + <div class="modal-content"> + <div class="modal-body p-3 mb-2"> + <div class="media"> + <i class="fas fa-spinner fa-spin fa-3x align-self-center mr-3"></i> + <div class="media-body align-self-center"> + <h5 class="mt-0 mb-0">The system will restart. Please be patient, as restarting takes about one minute.</h5> + </div> + </div> + </div> + </div> + </div> + </div> + </div> +</body> + +</html> diff --git a/www2/js/swupdate.js b/www2/js/swupdate.js new file mode 100755 index 0000000..f89b47d --- /dev/null +++ b/www2/js/swupdate.js @@ -0,0 +1,155 @@ +/*! + * Copyright (C) 2017-2018 Weidmüller Interface GmbH & Co. KG + * Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> + * + * SPDX-License-Identifier: MIT + */ + +/* global $, Dropzone, WebSocket */ + +function restart () { + $.post('restart', {}, function (data) { + showRestart() + }) +} + +function showRestart () { + $('#swu-restart-modal').modal({backdrop: 'static', keyboard: false}) + window.setTimeout(tryReload, 3000) +} + +function tryReload () { + $.ajax({ + cache: false, + timeout: 1000, + success: function (response) { + window.location.reload(true) + }, + error: function (xhr, textStatus, errorThrown) { + if (textStatus === 'timeout') { tryReload() } else { window.setTimeout(tryReload, 1000) } + } + }) +} + +function updateStatus (status) { + $('#swu-idle').hide() + $('#swu-success').hide() + $('#swu-failure').hide() + $('#swu-done').hide() + $('#swu-run').hide() + + switch (status) { + case 'IDLE': + $('#swu-idle').show() + break + case 'START': + case 'RUN': + $('#swu-run').show() + break + case 'SUCCESS': + $('#swu-success').show() + break + case 'FAILURE': + $('#swu-failure').show() + break + case 'DONE': + $('#swu-done').show() + break + default: + break + } +} + +var updateProgressBarStatus = (function (status) { + var s = '' + + return function (status) { + $('#swu-progress-bar') + .removeClass('bg-danger bg-success progress-bar-animated') + $('#swu-progress-spinner') + .removeClass('fa-spinner fa-spin') + $('#swu-progress-run').hide() + + switch (status) { + case 'START': + updateProgressBar(0, '', '') + break + case 'RUN': + $('#swu-progress-bar').addClass('progress-bar-animated') + $('#swu-progress-spinner') + .addClass('fa-spinner fa-spin') + $('#swu-progress-run').show() + break + case 'SUCCESS': + $('#swu-progress-bar') + .addClass('bg-success') + break + case 'FAILURE': + if (s !== 'START' || s !== 'RUN') { updateProgressBar(0, '', '') } + $('#swu-progress-bar') + .addClass('bg-danger') + break + default: + break + } + s = status + } +})() + +function updateProgressBar (percent, name, value) { + $('#swu-progress-value').text(value) + $('#swu-progress-name').text(name) + $('#swu-progress-bar') + .css('width', percent + '%') + .attr('aria-valuenow', percent) +} + +Dropzone.options.dropzone = { + timeout: 0, + clickable: true, + acceptedFiles: '.swu' +} + +window.onload = function () { + var protocol + + $('#swu-restart').click(restart) + + if (window.location.protocol === 'https:') { protocol = 'wss:' } else { protocol = 'ws:' } + + var ws = new WebSocket(protocol + '//' + window.location.host + '/ws') + + ws.onopen = function (event) { + updateStatus('IDLE') + } + + ws.onclose = function (event) { + showRestart() + } + + ws.onmessage = function (event) { + var msg = JSON.parse(event.data) + + switch (msg.type) { + case 'message': + var p = $('<p></p>') + p.text(msg.text) + p.addClass('mb-1') + if (msg.level <= 3) { p.addClass('text-danger') } + $('#messages').append(p) + break + case 'status': + updateStatus(msg.status) + updateProgressBarStatus(msg.status) + break + case 'source': + break + case 'step': + var percent = Math.round((100 * (Number(msg.step) - 1) + Number(msg.percent)) / Number(msg.number)) + var value = percent + '%' + ' (' + msg.step + ' of ' + msg.number + ')' + + updateProgressBar(percent, msg.name, value) + break + } + } +} diff --git a/www2/package.json b/www2/package.json new file mode 100755 index 0000000..7ded5d0 --- /dev/null +++ b/www2/package.json @@ -0,0 +1,47 @@ +{ + "name": "swupdate", + "version": "0.1.0", + "description": "Software Update for Embedded Systems Web Front End", + "main": "index.html", + "scripts": { + "htmlhint": "htmlhint *.html", + "standard": "standard --fix *.js", + "lint": "standard --fix && htmlhint && sass-lint -v scss/* && csslint css/*", + "build": "gulp build", + "package": "gulp package", + "clean": "gulp clean" + }, + "author": "Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>", + "license": "MIT", + "devDependencies": { + "csslint": "^1.0.5", + "del": "^3.0.0", + "gulp": "^3.9.1", + "gulp-clean-css": "^3.9.0", + "gulp-filter": "^5.1.0", + "gulp-gzip": "^1.4.1", + "gulp-html-replace": "^1.6.2", + "gulp-htmlmin": "^4.0.0", + "gulp-imagemin": "^4.1.0", + "gulp-minify": "^2.1.0", + "gulp-rename": "^1.2.2", + "gulp-replace": "^0.6.1", + "gulp-sass": "^3.1.0", + "gulp-tar": "^2.1.0", + "gulp-useref": "^3.1.4", + "htmlhint": "^0.9.13", + "sass-lint": "^1.12.1", + "standard": "^10.0.3" + }, + "dependencies": { + "@fortawesome/fontawesome-free-webfonts": "^1.0.3", + "bootstrap": "^4.0.0", + "dropzone": "5.2.0", + "jquery": "^3.3.1" + }, + "standard": { + "ignore": [ + "dist" + ] + } +} diff --git a/www2/scss/bootstrap.scss b/www2/scss/bootstrap.scss new file mode 100644 index 0000000..c4a4dad --- /dev/null +++ b/www2/scss/bootstrap.scss @@ -0,0 +1,18 @@ +/*! + * Copyright (C) 2017-2018 Weidmüller Interface GmbH & Co. KG + * Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> + * + * SPDX-License-Identifier: MIT + */ + +$theme-colors: ( +); + +$transparent: rgba(255, 255, 255, .75); + +$jumbotron-bg: $transparent; +$card-bg: $transparent; + +$progress-height: 1.5rem !default; + +@import 'node_modules/bootstrap/scss/bootstrap';