From 3ba405ac6fdc2d31b451ebf3b9dd329ca025311c Mon Sep 17 00:00:00 2001 From: MMS Date: Thu, 1 Aug 2024 16:36:28 -0400 Subject: [PATCH] 7.4.0 --- .gitignore | 53 +- README.md | 72 +- arm-cm/blinky_ek-tm4c123gxl/README.md | 4 +- arm-cm/blinky_ek-tm4c123gxl/ek-tm4c123gxl.jpg | Bin 50478 -> 0 bytes .../blinky_ek-tm4c123gxl/ek-tm4c123gxl.webp | Bin 0 -> 29976 bytes arm-cm/blinky_nucleo-c031c6/README.md | 4 +- .../stm32-nucleo-c031c6.jpg | Bin 43475 -> 0 bytes .../stm32-nucleo-c031c6.webp | Bin 0 -> 23864 bytes arm-cm/dpp_efm32-slstk3401a/README.md | 132 +- .../efm32-slstk3401a.webp | Bin 0 -> 16264 bytes arm-cm/dpp_efm32-slstk3401a/qspy-output.png | Bin 0 -> 30404 bytes arm-cm/dpp_ek-tm4c123gxl/README.md | 132 +- arm-cm/dpp_ek-tm4c123gxl/ek-tm4c123gxl.webp | Bin 0 -> 29976 bytes arm-cm/dpp_ek-tm4c123gxl/qspy-output.png | Bin 0 -> 30404 bytes arm-cm/dpp_nucleo-c031c6/README.md | 2 +- .../dpp_nucleo-c031c6/stm32-nucleo-c031c6.jpg | Bin 43475 -> 0 bytes .../stm32-nucleo-c031c6.webp | Bin 0 -> 23864 bytes arm-cm/dpp_nucleo-h743zi/README.md | 150 +- arm-cm/dpp_nucleo-h743zi/qk/gnu/Makefile | 2 +- arm-cm/dpp_nucleo-h743zi/qspy-output.png | Bin 0 -> 30404 bytes arm-cm/dpp_nucleo-h743zi/qv/gnu/Makefile | 2 +- arm-cm/dpp_nucleo-h743zi/qxk/gnu/Makefile | 2 +- .../stm32-nucleo-h743zi.webp | Bin 0 -> 31144 bytes arm-cm/dpp_nucleo-l053r8/README.md | 150 +- arm-cm/dpp_nucleo-l053r8/qspy-output.png | Bin 0 -> 30404 bytes .../stm32-nucleo-l053r8.webp | Bin 0 -> 24888 bytes arm-cm/dpp_nucleo-l552ze/README.md | 150 +- arm-cm/dpp_nucleo-l552ze/qspy-output.png | Bin 0 -> 30404 bytes .../dpp_nucleo-l552ze/stm32-nucleo-l552ze.jpg | Bin 39333 -> 0 bytes .../stm32-nucleo-l552ze.webp | Bin 0 -> 18508 bytes arm-cm/dpp_nucleo-u545re/README.md | 2 +- .../dpp_nucleo-u545re/stm32-nucleo-u545re.jpg | Bin 95704 -> 0 bytes .../stm32-nucleo-u545re.webp | Bin 0 -> 37174 bytes arm-cm/dpp_stm32f4-discovery/README.md | 5 - arm-cm/game_efm32-slstk3401a/README.md | 23 +- .../efm32-slstk3401a.webp | Bin 0 -> 16264 bytes arm-cm/low-power_ek-tm4c123gxl/README.md | 96 +- .../ek-tm4c123gxl.webp | Bin 0 -> 29976 bytes arm-cm/real-time_nucleo-l053r8/README.md | 2 +- .../stm32-nucleo-l053r8.jpg | Bin 56638 -> 0 bytes .../stm32-nucleo-l053r8.webp | Bin 0 -> 24888 bytes arm-cr/blinky_launchxl2-tms57012/README.md | 2 +- .../launchxl2-tms57012.png | Bin 136290 -> 0 bytes .../launchxl2-tms57012.webp | Bin 0 -> 45394 bytes arm-cr/dpp_launchxl2-tms57012/README.md | 2 +- .../launchxl2-tms57012.png | Bin 136290 -> 0 bytes .../launchxl2-tms57012.webp | Bin 0 -> 45394 bytes embos/arm-cm/dpp_nucleo-h743zi/README.md | 112 ++ embos/arm-cm/dpp_nucleo-h743zi/gnu/Makefile | 2 +- .../arm-cm/dpp_nucleo-h743zi/logo_embos.webp | Bin 0 -> 7576 bytes .../arm-cm/dpp_nucleo-h743zi/qspy-output.png | Bin 0 -> 30404 bytes .../stm32-nucleo-h743zi.webp | Bin 0 -> 31144 bytes freertos/arm-cm/dpp_ek-tm4c123gxl/README.md | 5 - freertos/arm-cm/dpp_nucleo-h743zi/README.md | 121 ++ .../arm-cm/dpp_nucleo-h743zi/gnu/Makefile | 2 +- .../dpp_nucleo-h743zi/logo_freertos.webp | Bin 0 -> 2928 bytes .../stm32-nucleo-h743zi.webp | Bin 0 -> 31144 bytes .../{README.txt => README.md} | 81 +- lwip/arm-cm/lwip_ek-lm3s6965/ek-lm3s6965.webp | Bin 0 -> 40428 bytes .../src/qhsmtst.cpp => qhsm/src/cut_qhsm.cpp} | 414 ++++-- .../src/qhsmtst.hpp => qhsm/src/cut_qhsm.hpp} | 30 +- qutest/qhsm/src/qhsm.qm | 484 +++++++ qutest/{qhsmtst => qhsm}/test/Makefile | 13 +- qutest/qhsm/test/gcov_qhsm.bat | 1 + .../{qhsmtst => qhsm}/test/make_nucleo-l053r8 | 6 +- qutest/{qhsmtst => qhsm}/test/make_tm4c123 | 6 +- qutest/qhsm/test/qep_hsm.cpp.gcov | 677 +++++++++ qutest/qhsm/test/qp.hpp.gcov | 1284 +++++++++++++++++ .../{qhsmtst => qhsm}/test/test_qhsm-funct.py | 187 +-- .../test/test_qhsm-struct.py | 243 ++-- qutest/{qhsmtst => qhsm}/test/test_qhsm.cpp | 14 +- qutest/qhsmtst/src/qhsmtst.qm | 387 ----- qutest/qmsm/src/cut_qmsm.cpp | 849 +++++++++++ .../src/qmsmtst.hpp => qmsm/src/cut_qmsm.hpp} | 30 +- qutest/qmsm/src/qmsm.qm | 390 +++++ qutest/{qmsmtst => qmsm}/test/Makefile | 13 +- qutest/qmsm/test/gcov_qmsm.bat | 1 + .../{qmsmtst => qmsm}/test/make_nucleo-l053r8 | 6 +- qutest/{qmsmtst => qmsm}/test/make_tm4c123 | 6 +- qutest/qmsm/test/qep_msm.cpp.gcov | 669 +++++++++ qutest/qmsm/test/qp.hpp.gcov | 1284 +++++++++++++++++ qutest/qmsm/test/test_qmsm-funct.py | 204 +++ qutest/qmsm/test/test_qmsm-struct.py | 227 +++ qutest/{qmsmtst => qmsm}/test/test_qmsm.cpp | 14 +- qutest/qmsmtst/src/qmsmtst.cpp | 772 ---------- qutest/qmsmtst/src/qmsmtst.qm | 388 ----- qutest/qmsmtst/test/test_qmsm-funct.py | 200 --- qutest/qmsmtst/test/test_qmsm-struct.py | 213 --- .../{README.txt => README.md} | 20 +- .../dpp_ek-tm4c123gxl/ek-tm4c123gxl.webp | Bin 0 -> 29976 bytes .../arm-cm/dpp_ek-tm4c123gxl/logo_ucos2.webp | Bin 0 -> 3580 bytes zephyr/blinky/README.md | 11 +- zephyr/blinky/qp-zephyr.webp | Bin 0 -> 7106 bytes zephyr/dpp/README.md | 8 +- zephyr/dpp/qp-zephyr.webp | Bin 0 -> 7106 bytes 95 files changed, 7876 insertions(+), 2485 deletions(-) delete mode 100644 arm-cm/blinky_ek-tm4c123gxl/ek-tm4c123gxl.jpg create mode 100644 arm-cm/blinky_ek-tm4c123gxl/ek-tm4c123gxl.webp delete mode 100644 arm-cm/blinky_nucleo-c031c6/stm32-nucleo-c031c6.jpg create mode 100644 arm-cm/blinky_nucleo-c031c6/stm32-nucleo-c031c6.webp create mode 100644 arm-cm/dpp_efm32-slstk3401a/efm32-slstk3401a.webp create mode 100644 arm-cm/dpp_efm32-slstk3401a/qspy-output.png create mode 100644 arm-cm/dpp_ek-tm4c123gxl/ek-tm4c123gxl.webp create mode 100644 arm-cm/dpp_ek-tm4c123gxl/qspy-output.png delete mode 100644 arm-cm/dpp_nucleo-c031c6/stm32-nucleo-c031c6.jpg create mode 100644 arm-cm/dpp_nucleo-c031c6/stm32-nucleo-c031c6.webp create mode 100644 arm-cm/dpp_nucleo-h743zi/qspy-output.png create mode 100644 arm-cm/dpp_nucleo-h743zi/stm32-nucleo-h743zi.webp create mode 100644 arm-cm/dpp_nucleo-l053r8/qspy-output.png create mode 100644 arm-cm/dpp_nucleo-l053r8/stm32-nucleo-l053r8.webp create mode 100644 arm-cm/dpp_nucleo-l552ze/qspy-output.png delete mode 100644 arm-cm/dpp_nucleo-l552ze/stm32-nucleo-l552ze.jpg create mode 100644 arm-cm/dpp_nucleo-l552ze/stm32-nucleo-l552ze.webp delete mode 100644 arm-cm/dpp_nucleo-u545re/stm32-nucleo-u545re.jpg create mode 100644 arm-cm/dpp_nucleo-u545re/stm32-nucleo-u545re.webp delete mode 100644 arm-cm/dpp_stm32f4-discovery/README.md create mode 100644 arm-cm/game_efm32-slstk3401a/efm32-slstk3401a.webp create mode 100644 arm-cm/low-power_ek-tm4c123gxl/ek-tm4c123gxl.webp delete mode 100644 arm-cm/real-time_nucleo-l053r8/stm32-nucleo-l053r8.jpg create mode 100644 arm-cm/real-time_nucleo-l053r8/stm32-nucleo-l053r8.webp delete mode 100644 arm-cr/blinky_launchxl2-tms57012/launchxl2-tms57012.png create mode 100644 arm-cr/blinky_launchxl2-tms57012/launchxl2-tms57012.webp delete mode 100644 arm-cr/dpp_launchxl2-tms57012/launchxl2-tms57012.png create mode 100644 arm-cr/dpp_launchxl2-tms57012/launchxl2-tms57012.webp create mode 100644 embos/arm-cm/dpp_nucleo-h743zi/README.md create mode 100644 embos/arm-cm/dpp_nucleo-h743zi/logo_embos.webp create mode 100644 embos/arm-cm/dpp_nucleo-h743zi/qspy-output.png create mode 100644 embos/arm-cm/dpp_nucleo-h743zi/stm32-nucleo-h743zi.webp delete mode 100644 freertos/arm-cm/dpp_ek-tm4c123gxl/README.md create mode 100644 freertos/arm-cm/dpp_nucleo-h743zi/README.md create mode 100644 freertos/arm-cm/dpp_nucleo-h743zi/logo_freertos.webp create mode 100644 freertos/arm-cm/dpp_nucleo-h743zi/stm32-nucleo-h743zi.webp rename lwip/arm-cm/lwip_ek-lm3s6965/{README.txt => README.md} (84%) create mode 100644 lwip/arm-cm/lwip_ek-lm3s6965/ek-lm3s6965.webp rename qutest/{qhsmtst/src/qhsmtst.cpp => qhsm/src/cut_qhsm.cpp} (57%) rename qutest/{qhsmtst/src/qhsmtst.hpp => qhsm/src/cut_qhsm.hpp} (61%) create mode 100644 qutest/qhsm/src/qhsm.qm rename qutest/{qhsmtst => qhsm}/test/Makefile (96%) create mode 100644 qutest/qhsm/test/gcov_qhsm.bat rename qutest/{qhsmtst => qhsm}/test/make_nucleo-l053r8 (99%) rename qutest/{qhsmtst => qhsm}/test/make_tm4c123 (99%) create mode 100644 qutest/qhsm/test/qep_hsm.cpp.gcov create mode 100644 qutest/qhsm/test/qp.hpp.gcov rename qutest/{qhsmtst => qhsm}/test/test_qhsm-funct.py (61%) rename qutest/{qhsmtst => qhsm}/test/test_qhsm-struct.py (64%) rename qutest/{qhsmtst => qhsm}/test/test_qhsm.cpp (94%) delete mode 100644 qutest/qhsmtst/src/qhsmtst.qm create mode 100644 qutest/qmsm/src/cut_qmsm.cpp rename qutest/{qmsmtst/src/qmsmtst.hpp => qmsm/src/cut_qmsm.hpp} (61%) create mode 100644 qutest/qmsm/src/qmsm.qm rename qutest/{qmsmtst => qmsm}/test/Makefile (96%) create mode 100644 qutest/qmsm/test/gcov_qmsm.bat rename qutest/{qmsmtst => qmsm}/test/make_nucleo-l053r8 (99%) rename qutest/{qmsmtst => qmsm}/test/make_tm4c123 (99%) create mode 100644 qutest/qmsm/test/qep_msm.cpp.gcov create mode 100644 qutest/qmsm/test/qp.hpp.gcov create mode 100644 qutest/qmsm/test/test_qmsm-funct.py create mode 100644 qutest/qmsm/test/test_qmsm-struct.py rename qutest/{qmsmtst => qmsm}/test/test_qmsm.cpp (94%) delete mode 100644 qutest/qmsmtst/src/qmsmtst.cpp delete mode 100644 qutest/qmsmtst/src/qmsmtst.qm delete mode 100644 qutest/qmsmtst/test/test_qmsm-funct.py delete mode 100644 qutest/qmsmtst/test/test_qmsm-struct.py rename uc-os2/arm-cm/dpp_ek-tm4c123gxl/{README.txt => README.md} (82%) create mode 100644 uc-os2/arm-cm/dpp_ek-tm4c123gxl/ek-tm4c123gxl.webp create mode 100644 uc-os2/arm-cm/dpp_ek-tm4c123gxl/logo_ucos2.webp create mode 100644 zephyr/blinky/qp-zephyr.webp create mode 100644 zephyr/dpp/qp-zephyr.webp diff --git a/.gitignore b/.gitignore index 259148f..7603663 100644 --- a/.gitignore +++ b/.gitignore @@ -1,32 +1,55 @@ +# QM sessions +*.qms + # Prerequisites *.d -# Compiled Object files -*.slo -*.lo +# Object files *.o +*.ko *.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp # Precompiled Headers *.gch *.pch -# Compiled Dynamic libraries +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll *.so +*.so.* *.dylib -*.dll - -# Fortran module files -*.mod -*.smod - -# Compiled Static libraries -*.lai -*.la -*.a -*.lib # Executables *.exe *.out *.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf diff --git a/README.md b/README.md index cd52c79..5b49ce0 100644 --- a/README.md +++ b/README.md @@ -2,17 +2,17 @@ [![Quantum Leaps](https://www.state-machine.com/attachments/logo_ql_400.png)](https://www.state-machine.com)
-# About qpcpp-examples -This repository contains the application examples for the QP/C++ -Real-Time Embedded Framework (see https://github.com/QuantumLeaps/qpcpp ). +# About qpc-examples +This repository contains the application examples for the QP/C +Real-Time Embedded Framework (see https://github.com/QuantumLeaps/qpc ). This repository can be used in several ways: - [Standalone examples](#standalone-examples-in-the-cmsis-packs-folder) - that don't require the [qpcpp framework repo](https://github.com/QuantumLeaps/qpcpp). - (These examples rely on the qpcpp framework included from the + that don't require the [qpc framework repo](https://github.com/QuantumLeaps/qpc). + (These examples rely on the qpc framework included from the [CMIS-packs](https://github.com/QuantumLeaps/cmsis-packs)) -- [As a sub-module to the qpcpp repo](#as-a-sub-module-to-the-qpcpp-repository) +- [As a sub-module to the qpc repo](#as-a-sub-module-to-the-qpc-repository) - [Examples for the QView monitoring system](#examples-for-qview-monitoring-system) @@ -29,7 +29,7 @@ This repository can be used in several ways: | ``` -## As a sub-module to the qpcpp repository +## As a sub-module to the qpc repository ``` +---arm-cm | +---blinky_ek-tm4c123gxl @@ -106,6 +106,17 @@ This repository can be used in several ways: | +---reminder | \---reminder2 | ++---threadx +| \---arm-cm +| +---dpp_ek-tm4c123gxl +| \---dpp_stm32f429-discovery ++---uc-os2 +| \---arm-cm +| \---dpp_ek-tm4c123gxl ++---zephyr +| +---blinky +| \---dpp +| +---qutest <== examples for QUTest testing harness | +---blinky | +---dpp @@ -124,20 +135,12 @@ This repository can be used in several ways: | +---src | \---test | -+---threadx -| \---arm-cm -| +---dpp_ek-tm4c123gxl -| \---dpp_stm32f429-discovery -+---uc-os2 -| \---arm-cm -| \---dpp_ek-tm4c123gxl -+---zephyr -| +---blinky -| \---dpp -| -+---qview-dpp <== examples for the QView monitoring system ++---qview-dpp <== examples for QView monitoring (DPP example) | +---img | dpp.py +| dpp1.py +| qview-dpp.lnk +| qview-dpp.lnk | +---qwin-gui <== examples for the QWin GUI | +---dpp-gui @@ -145,6 +148,22 @@ This repository can be used in several ways: | ``` +## Examples for QTest Testing System +The "qutest" Python package (included in the +[QTools collection](https://github.com/QuantumLeaps/qtools)) +is a powerful [testing system](https://www.state-machine.com/qtools/qutest.html). +It has been specifically designed for deeply embedded systems, but also supports +unit and integration testing of embedded code on host computers ("dual targeting"). +QUTest is the fundamental tooling for Test-Driven Development (TDD) and Behavior- +Driven Development (BDD) of QP/C/C++ applications , which is a highly recommended +best-practice. + +The following screen shot show a typical QUTest run with the QSPY ouptut +in the background. + +![](qutest/img/qutest-dpp.webp) + + ## Examples for QView Monitoring System The "qview" Python package (included in the [QTools collection](https://github.com/QuantumLeaps/qtools)) @@ -174,18 +193,3 @@ application with the QSPY ouptut in the background. ![](qview-dpp/img/qview-dpp.webp) - -## Examples for QTest Testing System -The "qutest" Python package (included in the -[QTools collection](https://github.com/QuantumLeaps/qtools)) -is a powerful [testing system](https://www.state-machine.com/qtools/qutest.html). -It has been specifically designed for deeply embedded systems, but also supports -unit and integration testing of embedded code on host computers ("dual targeting"). -QUTest is the fundamental tooling for Test-Driven Development (TDD) and Behavior- -Driven Development (BDD) of QP/C/C++ applications , which is a highly recommended -best-practice. - -The following screen shot show a typical QUTest run with the QSPY ouptut -in the background. - -![](qutest/img/qutest-dpp.webp) diff --git a/arm-cm/blinky_ek-tm4c123gxl/README.md b/arm-cm/blinky_ek-tm4c123gxl/README.md index b8dd279..9f4b2a2 100644 --- a/arm-cm/blinky_ek-tm4c123gxl/README.md +++ b/arm-cm/blinky_ek-tm4c123gxl/README.md @@ -2,11 +2,11 @@ This file is best viewed in a **markdown viewer**, such as the one built into GitHub. Markdown viewers are also available as plug-ins to popular Internet browsers. # Blinky on EK-TM4C123GXL -This example implements the simple [Blinky application](https://www.state-machine.com/qpcpp/tut_blinky.html) on the EK-TM4C123GLX board (ARM Cortex-M4F). The example blinks the LED +This example implements the simple [Blinky application](https://www.state-machine.com/qpc/tut_blinky.html) on the EK-TM4C123GLX board (ARM Cortex-M4F). The example blinks the LED on the EK-TM4C123GXL board at 1Hz (0.5 seconds on, 0.5 seconds off).

-
+
EK-TM4C123GXL (TivaC LaunchPad)

diff --git a/arm-cm/blinky_ek-tm4c123gxl/ek-tm4c123gxl.jpg b/arm-cm/blinky_ek-tm4c123gxl/ek-tm4c123gxl.jpg deleted file mode 100644 index 5ed6188cdcb1be9d3aa9ac5519acc6cd2dbe2d35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50478 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 CaTv4! diff --git a/arm-cm/blinky_ek-tm4c123gxl/ek-tm4c123gxl.webp b/arm-cm/blinky_ek-tm4c123gxl/ek-tm4c123gxl.webp new file mode 100644 index 0000000000000000000000000000000000000000..320870b8dc4b5fb35851c97c64650bdc8708f6d7 GIT binary patch literal 29976 zcmV)XK&`)0Nk&ExbpQZYMM6+kP&gn2bpQY`m;s#uDp&%f0Y1@OrcEd%BciO>3P}JO z2~FHB>%diiY>@rC-s8&8lYB>hPW5BczE5Re^!;~kD(5rxvyN@+b%K%Q1L^%9m8?YA{u&En@h-S*5PaxjU2ZDk-zRr6#nj@uVL{_-2d=p0?$J^kXPDG@J6`H z!U-@j&$JlKs`@B1OLI^@P7bdUM>1Iobnuzoat_ElAj;Ic-CE0tEU#G#nf4#CJJKA3 zvowfc+xssVimNt3WSG5ws~gs37JhE2>G@+eH`V69Tk_#6vZ}XEUhNwt>E$LPFSj-A z3N8#G(K6DBXWlAOuQB_?0(J%{Sjs}KF;6HpC4aw(hHMa--Et1dI?!p!m8*i+H?=h@ zp>a45&^~SgVyud_$~~b&hWT2sE_q104BtPAbUFm!BxiAPuK!GeFy$S8R9{0{?!3}- zp^0#dip#Lx8wvBFC$?vH3^CF2Ko|3MW)dD5u{IlDqh58H0n{x*Ef`7GOpWm*wTuS} zkfDwO=dUj`?HdX^U{hYX2V@h%`<+4(`Rwqi7$v5K-{$H;F*osYdfZ&2{&1~C=C^jU`tJ778dgB?;Mpl@TQ34r_D2Clg-Ij<}{2wOK_MLMC1DR3Sw(Jj| zxMb-%cueq^Bso7vJi?_Yy30wT=`j`E`N{q#SiC19>Q9m4wxfgADVS4(72dYt})9Rwei`zkFu5AuxqLd9i zoM!A>J%nFRGD;(nF89Z3`T@xSs$2}=*-G>412Z7}QmQsr z=%{CFzFT=Cy*~|9uAeF=XCdv1G`wkY~Kk$b*${5i=bcGymAV0<-{@I?~ zll3q2xEXnxzjX3P+&o5DSHnhUvKzX=b5n3>G6ACRNd~?Vdg;?T`hXzL{Y>YtF1*Al zBvOw&YYWG`7R$s3`@W;CUApj~==C3ON2YJ^JzWFirm;yf0U4VVh7855W%PJuh$A;< z?dKwl=FG=m-$HamD7U#e$})29r?~QeORE)zC&V+*s<%*ABnra|YC{@CjIgk~%VQF$ z35xo>inOxx3Idf*P%8eVz)>%9$@b}ijor92%#k7BQ>xO1U@d7{aEM4NsD)N z8|g|tcO#|S$zPu%A3$e*?KmmhuQILypA^OthppH4Vl_rx&-Uz4!Ash2{gvnXPu+*g zurSSjOM5=nH)ov4Hjomfhu6}?v8q&sMW0D1l5X(S{Ft5DpW!C)wS!}3{vl_82rmqa~4~D;(cm=?~;RLjhD-ip5vNg>c!lj-O2tp3nL5N5Yia3DXT~ECrmdu0@oMbr!+%4x@ zvDQ~N>2Gz+o_CQkWISghxxD*N9e67;uVdo;Z%XCm{~?|Xj9e|y=UNnA^*#}egu!A5 z75cH+=ldTx`b?Q><8X439|C|BGcNj#nv=W|Vk zT?|Ums0L(DV{1LK$}XA_NCA?1TCl<<+5K+$yCFl_V|blVhj}48AIVa2Ou7Nz zOX5J)NC&}UBN@XK9f;*bvTEV+gN>kn9T35yl_dec<{?{WMckaj`Y2Vu^i8oAk>cm}Ah zof-pRtOm|8r6~{nbaL-TC$5n()Ad&L&t@lRgK8s{Wt53ULW}HUPiq)h9{h++Fr)mz z^66TqD6A-pvhZ%?^?x?{F8}iGYC`xXk_3l;(l*V8WF3%pLD>gn8Sm^ml-BvP|4Ovi z)SF5DWpK6NJwg&U_xZ)hTKX!M)!qkS%%ZklQfLn}VG7@4oE?imX6R9-k$2%JRl4zlSadrFcsWquU z;GYm+5P6Tvxr4m3i*ycp9N79tYIu}`-}7j}@EqJn`9l2pADrfXDRd>7ol7s*1JAzs zOIL=-J0R?XvJS{QAnRG7VBXU_!@w;Encduc#P%sdyLBgm+{xOF^RB-0U)7Qx{7pa5@Uk1tXR21= z`Bc6tW&i&0w}pg!MDUs2at_ElAnb#(4#;sIlnK=*Z`zC`zun^lvMa;Z8vO4Yu`{~l z9gucG*#~4Dkl~R3o#S>UcU*(A4#+zifB^pe|DXT>47YE$%u=zxhHQkocuyRecNig4pNH)liWe(x=MWo+VbVG6qq5W}eIg1G$Rk#u)tu@SbQ0y4d7F^DKcLQ3qc z_4-PS99`Gqdh=%ZeZ6|SrePU5gXi*3kP?Hc%B8GbI-yyUNH7w1N}_*zDo9ot%rwQJ z{}a1r`ANgu&zG75t^+@IPSzOLN=cF@K{@DYFKVt@3A6 z-lAaWJ5Hg|uT$GOmk-5&@lmXRX1*UQ+84)469x)c6N?xQH4E(lYL`+)`gh!|4{_1) z000PRnF8e8(L4&?e#6`n`s8%7*g&uaV6!Khu6WRdI+^OnxiY@;)j%nimOp1A5txel)fl)pD7AK2rQ{)P z%?d>snos*R9`g?{+|jN}V}+4BQc*#Yax8X|4Bd21GldQCB!vqf2DC$+Pt|sG6IUb# zFPrZhoi;&0In4A_H^D#$Cf5`&TrO;q&pebOQQ8^0EFw>4qHe@Mwskg6hbwd(I!qK5iU@Jk^HLw7auw1I*?l|k#i!|XEOvpA)s$RttXtfSpM>Pxs@T##g)K57&{S6H96cduX!2_^4R1H@C@ZqwFMo(;5Hv9E(yTs0H&tf+BO?FhwH}6?B zEGTT_Ch;>3dX;~|Mtc{qubW+baoUEcZseL&p)LLgqwef)L%k&<@}0z~K4wVVSrkQJ zHtT-e42Dh}T8g41ouR)#p4%;?BL#EKRQm5B_lcro*_Th;W?!>I41q#;Ex}Y$-vqg9 z5UW-6zqXFM?siTf@GJtRW^apW_}`*h$~T#Z4^f;Pn(YL#Yw{w zwJl7Zu0(OEsux^p)e%^poU_f^CrJ$buV+U;e9lWhiP)e$QZs{wZ6H=o1MTY4ZB2w8 z5~ok!AUJ4S4QZl(rnPaK{)ns~Z-?8Fjwa#R)(XL*aA;7>3xoY!Oaw$;1yWwQmm`le z@Q=(GwTD^?Yfbf`GmrRm^vqO-KAL3OXbDkpTpP_}ft345Vi?sD)gf>O$t>y(f`%+rqK(e&K*NL| z0Nos~-8#iI?6mcfruuZ1jT~iie>HwUqDg%=j8}#bHe5zl+yXU@$jQYdJ}Pn`Cvw7j zp{Alj21nmt+3bMD62Md57g+8dXRXk@>k|dwfbEFZ{((}08+#D~TM`C))95yUo`m$(5f4 zHT&4kc>0oibd@Y~TTuVqt7m3(lOPTP!mx=`-MuAMl(=QHjN`r`A17gS=g8ogWcTy?-Jd~uYakj5|$gA>k+WBW;Lg8)E^VwZ*5$F%5JJ`3b3P3b6@%JCK zx%V;*dNjxY9}1w4hv%-8KrKhOeXx9D=X1sWcZ;lnV`s;ji+Km~vD5g6-(5l{UdX5^ zR66GPmHv8jGg0AlxJa9=y3gKkCypOp##LH>L|UnICXPPV+aRB?{swA7I7{fJqW`EY z+>q8P(kds>Kw@XdjGt$^;VcEM$+&vNi8eO3DUaVC1jabB_3K!|+1dg7PbePO_34l= zAOjo`c2YMb5Vdr)4v5IJJ6C9qC7zY z4!wGoS83DPSDh9F)A}(iI1LMEa~q+HKxVuK`OZcdUeen-Zx6zSp{kfkm}9v}lB*Yp z9Mp21NR6&6;vI{{aX?at{l6F@o;1^oaM07If=_`cg>bNx8iWvYg`{4EISBNOr2<3K zuc&*r$k@HN`dE_{_JkV(b4Bk$sRHq}v01WIW*{D7&jV8X=7mP#qA>{o-6ANX-D9gK z%y_-#e3<)QOcoXJz@Nk^8b-9_1&Ren7nn4rLt(tU8c&;tR2(uZacVX5w7Q8%o0g!{ zLtf$$5*PPC$^sf4GK6#<2K2}&nfhPTZQQOkD)~RJHlUKesQ`SFhLrj*E{!v*nqn$aFHAy<{z9y?S<=_Q(;XTbf5PLE{;4tGK$);SCo|UUHt@o81?3C%<+4U zo1nQ@anIlD2g1s*yFNm^@Xrj0M#JHmeti6>j*8|}thj3ikXfB+It%ujF_<2HC<>tO zBDJ|7;Y)4^wzhz@I-+oR7ZB|bP;rU|mtbI*gG!m*(vDkAxF4RZo!=X+q>mHzxfN zOt{6jX5e_AQGjWVwZkJZ0LnWp75{vj8Epz_p%H?US1PMw={+_V_?j~pE1Do(B9nw; zsd`&&($Sg?@V5~OT>gvjV9yv^yYeV6Y+umXguLMvw*|-%iwjgvou+6nAS^gZvS46Y zbjaB~Q@OQ6hpX|XirQr??Mvjf%(!2EIntFE3Dk<@VaN;?-`!i55W2O=vwU-ED9D9! zYD6o~f|pA#mkzyC7A;pA8T_)S;QLV$W*279uX=4}7xt*#4izG7^Sg@7|blHoD*`8MvP@+tHlJ<~wy{55b2s9g`OB@9>KG3Pvs- zg5I(P6@Y$eT-V>_Bqx> ztOu5bUuS!3ks_>isU&H5|h7OavOL-@;l^o>$yEASr{Z$H*$A%7k~lJLni zc>WJgPUj#lSK`ugwO-68uE6yu;#c@rq?evs!uAyM&*G$X;SM$B`hKwv!YU0&uV!uK3~YcZh~>h2;pk!lN~o*lB=MrI2E2-I3taKGF%b3IB8>fG<+CXF(q zVj}S8AS6OhfznJ73;EdwyKlWdsmg{j)tSYxb~tdC5QMsEE8Ryw7nwkB3bZ*Eq%gQDUd;q9<>zh3l%nSv8Yi};=Af7Z!2cFY%cGo6bG<)2 zh>~Sw58Mm&VS}r)->!-0`icm^Bj1T8k#VSa+Y%EFk9ht;=te5L74G@+SAf3_y-sbX z3sTao+Fk%M&PEqFX=A}2;1BL6Sp?Cyjf4aPS}xC5JB$#taT4k_U<$B{4_8y*NQYKo zM)Ph)lwEQ}JMvU(BQ)AnlSyrz!~ml_|45PCI(pNo#MN@r;H#hz24*znvl2mn7SZ_9 z7g|L4N4gWz$W+1j-?&C|&1%x~Rj^ zb~?_i^kNWp__=hsK`ycu-|cI#!V(b{ec%B`Z4<7oYa6rOAs0`OWeD%56E44~jJFlr z?FeWq*Ao(hF$LL(n@urJ<^|3qq;9vBvdCg#6-`|0@5a2Cw>|q^n;d6TcM{q9u3Q(~Xqp#{jdmz|w#@0z(&Wwn@aybxvll)TD zdB89mAGMY2I2HykERg?pRw#kNOIyeOIW15MS}lVvS~2(70@=FEAlo|_;N9rA2zH@i zxj?UW`Ht|3r22AuZ%s{&ZQ5w(^J874#0XxqiuI8-Td``p*Eb zQh9PwzlG>8#tP@C_|y4hMX{)K_Gqo)y5CFIXZlqx2u%i9?=(EwHBUs1m>lK$e@gpE zAc;JpOuOj}_oe$pGLrF4f_xeBN*nd(HIA9?jr7V_(B)h6Xo7vW5 z21%9BAqPN$%QNDEdL=jUzLIhT{*Oukz^Er9fW3s}Yr8qoTJ9q}b>M{#SO*C5=hA$Z zOhtEWvDh1|5?AqnET5?f*(Lri%yG7ryA9-Br2-`9QprXYXZ;2Z^BOQ3 zRtuL}nm7XRjCAlW1gWWDe-joAaI9>tZ_1!l78+ur<xktKyiupg5lz!CxTsl66$Dh(}&Eb!9+iXzxSt(~Z z)D$ zW}97cAlqi3aRt;ISUhSJ$Ak+2^*w)~@kq0)kN-Fjt``bEAC?;(VC@DlBBmiZG-P%; z%?q&?*mV70eoKT+QAb~EvjPA(`P(ofAb>#CK#-#6f{VZ^G(lzcMR4CH{amkBG7bbf zck+s7)Vm8MnbZJ#}jVm4G5pVsokh{3x1U@DdOpK>iiEYO#9wzu8nWa+nWcAQcqjg;K_p^oC&tX_sF}j%X=dccRoC1*%T#*0uYlBgxF-;C-dqO8Q8%Q&68Q-#NWi zpqr{CgPuM}DuwSCUC2B#eS#M+gIa&l{5S2Z8*(QZ28wF|z(4?lh!x<}r$(fQ z$~yu`DFQu^m=T>x>XONa{7P;@skP-t?Jgf0JZ%8wFx=tO3-^dS_XD~sz+zr(kk)$_ zsug-8+vKl7v(Q!oZw76g6g93|4*3=w3_a|4gT18=0Pk^8{>P?V1Ou}#f<~_<Owu%+rdQ9%aLV^VKQvUMn2 z$eovgGi2QY)$kc0^=xblkdaVc+_5SN5ssFYF`8(~ILezvmXnIcThF-?DC9(D4Rh}y zWoHoKMWCivspnU=vlgPU7>nFn1s908Nt3 zZ(T=?uefTL``{L5$meaQiM_0H7hXLWuZ=YeYNb$~c9?eA39)#=rLLH4FvHF?6CeKFs}GW`a6hGGkk3GfJP6f zK?~iE&V>?ZqRT-DS7qZVXd1PwHQIgID1puuVDs)ER181$7g4;1dajUX97J>M56LrtK^Hj&U)8NCJd-i z>q+Qp1M{F5jk+FH792ObtOuQZ8XA@l7grp#NYh9>6~?ITbsP*df%gPdMyRHBSa&dZ z9;i@bEE5LXT|&p=q`RN zvR)b7+WgFvOAUulm9Q(@Kg4M{f3*Ewr;cphNR@3N-@P4=Ql&bLR@6@s$D%3!M5 zKw_>Gw&j6@P!FQxivX98SmYZ66lz48&)iDOO{>x?F{6>1Ri?LrChd$p#?k%BCvCp- zL3gI`PS763__7-R2sLhZaTe1b44^*-%IB^RG((X1i(u>SWY;&dE)|FYHhW-HN)%fx zGF0z|Owq4DodP}DOZF|cD%ZqqI|9G*m^Q{&n%!j#1smYWe%Xak1mfCsy6bC-F~BY% z%Ism&hzm_bP{HEizRNXJdQ2x#N5)5ph;6t_a633UjvB)RsDPgmT8rff)^4G~3&Ajw zyYXCpAXxUyb$Tv+o!Qm00HxckDbc&afW~VwP%n5J>IUD=Ai_dRWcT6A(W$_||IsR}4J1{4-N=uw59i)$@e3(q11=|Q z0ZCg?>1+`mjU-`408w3-oazuB!%cM=jV6q@CCUK$27T%;ZAGPHq6?%F;`SF=)X*u_ zVr284A~&q}GX=w8ONLLPbL1w(Ra%W{Lx6@=h0~%-K^lxCcF8!WnAfhR55uIsBJy7X zXvg97{#QDYq2wJ^iRaiABt`jmsSpL9td_NaZI_smxy^7+id6aQO2b^Rt1&wts#QO# zceB1#kJT*s8ql^8 zs>LMJwFRY=JkLbnqNHkBxBGRR4Gwx7F6ii$R34O8Ed`v|p&Lc2>)hGbIwg zFt>4t45Ail!KBzQ0g{qRg&zM%)E(ODHL<$- zm3{dzc`=Hf({@>BPMPa~;QdX34Hw~5g=K(!cq~2 zd#!J0>$6!|TxWde*MrBl#WMe59F?htUatwglwE)ECzQ+B=U*mG5EgB3+{8BHGL*(DM$ds}la8t<9+ipx7jka?P0kiI3s?-~{(#I>)<*3Qhw z*beARR-ZKrHfW7{S_b``j}WEK1olgAVr5tai6g!y$~g?zVP;swQt=9Y;*h<#1M)W9 z5)}79N5&S~;uXe3t{%M62he`Yjn@=$r7XVAPTG^-1)nmkZB#o@%4Ho6hKAj%ioCA? zznDQbNW}^Q3=WQz`{daUT=b;uT>xjg;mku@;O}=A6`H5o0tEp4sPx%>n!zkW5*9c6)Pcx zKzRMP2hpC==H8(Zo3}jwVUiWm?^P~#BjME%a`MwIt7QS(_sv9)>a_7)CUn@`Liq;i zHc}lADk>v3i-@pa**wS}(SENIHg=CxUee?bi2qhKlb!K)Sa?ov^PKwv(NDP9ba#uc ztyyvKT^tC&TzJTdr|LdCLNIkVm5cqSKZl=izFO8V3x^j40Gyx@df!$_>vlcw@iw1( z?j{wD11ocKxJcH{I8FlF=fYu)k~JfEBT zLc(c#BlFYKZnD7X;c=m*7B${9ghoy;xhq*hA=fF}WJt*b$ogh!Q2T3TC5t^=WqkZk z6pdkEIwLB^Xzkhl;C4dX0!UoHNKdgTFgf4P6O#F*a5X_(07=j7d}o1MxNZPkEag-& z@QV<4gc}vv@m>p?FVob2GJ7yU`($v^<#EG;j^*4*stQ>v@$#n^V_id>oJ`w)f(vPC zs=5er)VQMgiR!c#J|?kw`B3g57D=fv-6oK$g+|HUVNp6u{p1C)5A9>^8Xjf(azZ|; zHs@{L!&VnxYi_VGKrGjhC5-Cs&cBU4o*e^IurM=?L=LQ|HrCU$nTig;z4g0#Y3h79vKy)({$X+{FBG4F*+FG z^qUtKO{rp>1Azk(n7WHeAjX^3!m|&ik9wP{Bo}`$S-}dO0ON;hH)%w9%mi%VJ)Kk< zdbctCG9KQ5=(C7T2HDm=$-+DGE+dOZ%x@n#+5)|tJ7?j{nUWPI`}cb{n41;Gcbp6Y zR*A{myMZq;2_2wsiss=n6Ph64Rk;U0^ks#>0ZCpDkpi*O&}w|ITECn+l{ldKda7~H z5S%79G~WxLVs=hQv#ia}!aiaDd@Ei?{<_a};|-8nyC1WAC`UlX&3jD{LhWlhLQb7D ziHj)2d^hk%o8ir(0|U|{ISaF>^Ep7`n?kh&=9(5VO$5hTrSnN~3T~dILs|+eq>tFR zRSM6U4fHI+-5uOOmb0)Q1C-4+@yL7z-G|nv=pnRNw2Ivx68djni`*|@OQ|jBN zo2dtHy7l2aJfY;0_AaDo?xSJ!hU63!M`C_6|G)Dq8Z_7vXjZt2WnajH%j9dV-#PwP zqpY^Ef6dHy*sEzeDsh-5$q{U>NdDt}#c{c{G(hUgxKaP|+Dz5T{QUCmwEhv7W}yG6 zp0b--51+Wr^I9IIwq{(E44x>v7{YqPH}c{iaz2udWU0IOTXzR?Ey564gZYT=Of$D9ai+L4vOF{CVbc6b3!_a>DnS(WDwC=CA0pdR=#vpoh~A<0 zaQu6S4kQ!-0;9$T5~I@n3F#`t&f^ZIgVOuajErudm)h0K8=&xR%6>Fr`_ISkGbjDJ zjZ`MBPAIAnyNWFwjraCa1&hK_+0h<7|1xinpxxNsbM{KD)s-LoRkWGkK|H(FkE8pf z647^B)bV%IW;>nfjp`1MLbwWGy$Wv;mV@7AuH$^7INrhis5Ut`+q_#%Y`ItOWSL0= zK6DyOF9iTQ-sMuH*SaYkW4A^6>t=LrOyy1$U`aoh_Wrx?UGBj$=>a%uD(ew^p4b=F zginX!oAmv`u6j@RB712IiZm8rsO^(4lF+q(7`KUV?7bwG%cZ=72^d5Ry+@Gr2UsuV zTeFkPbB1B_h?Z#pituR{2&iyH51S6pxW&>kAl#OzifedsytifN=u)8(Z(p48k4@C` zv#6SATd*MDd=HXHd!UVWdMNxn!LdIe&k-s59I!c()!P8lSxbelnx0J;eMbI~@XaV+ z$X*@rXL$oZBpQD^li8;7iC(a-L{VH2@rl4i zcu`9Ga1j$Y=lk4wew%SccJF(GmW{L)Wig~+7X*kFIr@mG0< z4iL0h9(b;o8DyG==V^ckXJE_v>xXnjdZA?xVs&3H3z_K_K_{{CYR|R~_4x?cD#@>J zwri4}yw-V=)&_jt8Qdg^i-mP~Bc>Ulu(LyNNMO~$^$qCiTJ zX^gVH3y;b7VhDBNF*Cw0+NR$gCbBr|xKen87d=eSde&dKI=M|PBm4W9C1IFUJT`XA zhE-mjE=8?yxq2d^r_RE^Drc1WW~o|%A>C32wU2z!Wgz4a-BESv}-aPirKt^N|Vk5I0WzWSbVW2wHL7g935Um`K5)SQRd2t_%gPrhvRIr}>6 zaX_u41#sA^-f1BXN8i3Ad1&Yn-SQ-oQKO_&WHs#U<`GtR0I&!KhugHfDkvCq5)$q(8ED5$fo@HHfb=QhOZ1RFC*l!GD8+w^OKgoyh+{meuT>#!un-*(}_(hWs#$1@Z=snPs0cklbLGF;_%TC8aD@353HOQFd`9v0hYI%#}b|8*F!)O)_LncHAKbGna#o_Z3L49heDMhH@4` zfK)w)T4R!-mN2a_?_Gq;mxaD3vNkLM7q?h)pT>uiCU+@(B+oX=&q=y=Qy%Ex+IZ{` zmvfDnEfPoVASN_rHDnKWlTZ5fvZy-7qCl%q+eFVOuKue?0=2+vPwA8yME`H!5m#)Cj0&_1c>Y3Shsk71q zf4>btHiHz2rdhKQ9y6-gq;P#yR|Z^s0FQ`v}UJtdtQ>xq+k5EnuW7 zrTZikW^^A7et}v@=+ZGYNqNLD@60abKKSZds5X!!O~u#vC($+Vw*7{|uBhM7x(0TA zj>g(N{u{+@W}wWZ(`;si8H}(5iB<9Qoo%0s0$1#;W7ZMqnx<$CGnl4#=-tZUd8UM- zCg~jT05xegKD?;~rW&?yM%c{BhldCo;X_igNcd&xIa~eM2vlTh z;56=DOfiB9i5wJZkfs(A zjJ;8_##m)Y=cDR#i&659^5HR!=ocA)gK)EupKlEzkL{+eDR zM1B=LU3a?b1PHZrwft6ii52c0d;ahB5`wNCZm;j`W-#;z>0uX@SzQ6T&L8LCNBIQ5`Zxnq z@&nn!X!8La1;Goz9`X62oW2)NU(0OioNutj0NS;#AhLIS#|m)I@dv%7^;#~u=C_=TEa%{A*0^kb82A6&r*C(_ zb5`ybj-OC9IfDip{U!W|uTxxN4CNqwQ_$1>_BmYRT9^=R@q&e;Rrn~AA9A5ROpy=z;|y@8>%wEzjP`q@rhP9ycYyk}o`nQsPJeT<776MXc8I&* zCPQLnHH3O<2TwUPi1C%M@@^6s6M{L*2ok%ZlK@~680Qx=;IOmU5Pi?wmoaA`Vl<4D zCC4ZWu`+i!qPZk8?ey;0Bp6VSIU-zzqLMng@MzTCnvFzJ9ZdZ-MeW*;Sd9KY$UP^S z4q&mJ^fglXn=PtI-!M0{ybGa{E*XjBz3X|rLbGi^N4g$KlRw=& zEyTAtb7PdMMNxCW2F6CJCCEyY7Yd~&XSlCV56V0Y{NdMgwxx@!60g)X=Y<$PNMRw{ zoiZ7ooOgw;p(YY6s<@`rFE7H~^~@8pyFzzRL!k|=pXvxMyBxugl2tv@7JB20yErV} z7q})wSj@=ioo3l#nT&?0RxsK~(Ne3Jt^$-&2`EFxMaBhqN+_@hh#fC;-X6Hou&*CQ z3d~RN5Sj2$$p3Cr@sgVNotJxN`RA$?>wwqqHd9-Mf6M>5c^+zA*b$giodg8Z^MLl^ zU>gSOOl6qg9;@Q|aO{aYFr^%ETw-~jz zd}ULdyG?k78UOZ{ecFSv(A%F^rsXR5t96a<0tJ$%>nb!&8zDae++fx|*R!$OnQ~$< zHvV-1i93rCF>HnM4+Eg>6^?pGL|kZ;?Tu{w9D~sqf;9kM31VmD2nGkc|0y6!_+zK_ zAAQYL0a=~m^r8vFe9*4wlh2Z;eYHP^cOtS!sdgQ4QsnQH;f)r_+}K|VsQm}3UQ(Pc z5HPQn6-c5b{Bl15Oun(n+X;;eEsbPaepXllk-mL1xJZKH>#E|AV?4^wV9XqE7Hpk_ zhy@h-2}tr5OKk|FH$HUR_N2QkGJzB~Kh5ufLm~dvh3#eS0XGsCEuXj4YZZHoty(L@ z=g$0DfVOWN`ZGVgCADnK__GQGiRLsF4?!M9 zyAGOszW}LYp{uTzpYM+`MQ-`K3Kvt#J7(i1V0>>U%n`WtzSkpW5vnn0i&+FH$DZ{- zOkKBO^<^3(?2_mp7y_zoP)lJ>Ayv=Y-$E>J;jPz=*nu?SHO~EU?n>Rt8z;eZ;{%81 z;RICSRjamH_(De#^LkFaxVArTo((1R-z zIu=7>9o{w>i~r*vyOi(($n_qExF^fnAo1&O5~Hc0p)*o;HfESj7yLs1mF7Ot^F;?q zB-(_h2keMM@+3*+!Qz&1H7NWzl8mBBJ6eR&0~=q=1_$4)vOE958Aar}S-uN#faGUu z#uKJF(2++NM2o~)1wGevXE0%Dj!`gse-S$)!w3=sp)nqamR-Iw*brR=`-c03vL3pF zcEsO|y1j3?YqcYmi?Y;NNsuDPt%ah^g$f1+AoQoLtevdVlswRa*L^tlD)nJMc%c`N zgqZ~nSHyDo#O^krwE{8|AEwpU?rRepL9gAUO+ZN-mY2U?G&7O17Bdy-ApGg7o^1UA36!9tREH>*Myk=)V7S#KX=#W%R4Eh0{f=%wyO z?+W~?9c63buDm!XtAuuG#1KE1;~ZMx%|D){7UT=#EFFcO!K85TYa}8Y(*aCsiEKpL zu=fN5(8odnzP8)gl;6Xf@cb%wLw|atFlxW+3Ue{vkW*|2-DCs3_}cv?;*I|Iozr&h zP%fET=eO_WR$2&$<{9%CKzXxr)C>vK5FH}s+zZBJLK8EI>Otoe8Px}}^EgAL&Ojx; ztg4y^kivgd5~`S6D5Q%VES20GPiwk`pzO7n@F#v2mD?q@7|BI!!Hh6$5xB6@DHy$6 z`5o}aOvGM>rZ{hFHk%*cJcu4aGzOuv6RZ2KEiJYX2>A`xB%*q8!Zqj2}TbH94)U%4}QLo|}l!}LS`cg^h60ddbe|AU zJLl(LQ=5g4H&pQj!2)QWSgYgEQwQ42T^deFl^a28;J2mpuEDF5xgJD&^{|#=p7n>p zzL6t)@C`W{vC38O2*0g5WCZ55qO+3r7j2Gti#Mns8fMc{3FZBGA>P>DQ{o;6{J=BN z1?hVGo`=W(D-+>NA5j8FrD;97{1uv!?g{6CacUgh?WhEnp%T@ZnJL`Y)=t79K-}ON za0wCXn%5WVqz4+do51P^@CaWEkVnZ-ujElsG@qHKG@#*h`W4C9Umv6)VmX9H1AhHWylxhf~+JrA2fTI#+P3&_a#l1l5#!zl_pkZx&ieDwhuVHVq z>cx1ad~6&c0{kv@jf54o0V;)nX&ZBZl;_6|`Kk?_Ch}rwb?a;ULdgxh(EWJ?yQ^V` zN-$?tYK7YDB~9db2i9~^k@CF2lzB%Lvz`U+qMH)C-3*=VT*$Cc0^-a9V&kMFHr)y) zOKX(jD0M2dPmfI_`y|@q8T+S9d7Wb-!HHs`QuR#vPF73-O z?a_r}<{-!0cI+lT{B2B980jFaDogXc9Kui?^yxRgs2#^LdzApkVNo7eOIfZyl|v=> zDD>sF;Z{d+64xi#Gc_cqx;cCULV|sj$_)ctES{~+nVM7kDqa2R)aryV=&EYeCtXg8 zEWKRvy_(OSw1TAe$pTd7?l|qFD{m-t)Yqww9LHkpzp;~0vOf2E(Cr2Z`f zaeNF(^9J^84k1t5n{XI_D+|ujc`1jt6Yt6k*#4L618 zRW<)4Y`w~*cI`ewtkn2djXhi} zCTWcbc+c74S0TLO=znQ&=%j|%O;TOQKQ~ATJKI8`^?V&9yz%&-1s4d&J;0vz@q`xS2=^Dy3A(NZD)piDl4-d zncg(KGNQ~JBncrN{4x*|n4KEAoz^M1gj7ksl4ge`#pq4su8>94QSl@a(RE&ugKtV<*CuWTjZw{ezgFOP>MkLxu(N zGb0S(9jA6$ii3Ej0YQ7?XBt$?)v(%=ecGg}}>OZ(r6E;xVj!f!uT8yi;Rs} z;?+BPNpFv@tDT&POZ#6H;nXjTH!lOT)t_$ zuP_imNLO)Yc&`J5Vt{zT<(E!z(4S`>>?t5181K%bfk4Gz6JT-3+Ns;I6l<3AQz_Ip zXer@k#yCu84$(p_?9M$5EA2zoEHKvV@klxD(wBUVt2}Y$-6gV4g^h^w-hfnMVT&qkZ!Ja7q^`GRy{t`D-|geCoPl)W2K#Vzz!58ya2q&pr@ z(-e2pmoAd4%1|lE9}A3Z-5rS2gwye=rip#TddkcIO3e6Ec-ouZXu-Eg6;@)Y*a5W- z4l=7In}au3uNAmOlSv@8z*Veb{B9t(iKfhC;qqY6+d~j)0=^buV#BUxuh3J_QXuTb zNe*BtY!9=TZ+u{Z%fSFMju8x|ycVC@`9bxDuQ$ZQH>B!w#yaWoQQQ~_b@7LRXcjEJ zAwP{)u@+RPBHJKpqlp>=2`j~xrH32&Q!~|Hr5rso2SO@$xY_%97wvI44X2 zxW?eqc6#nV+LrpOz!C%q!&`vK-57ZjPMloMj0FKZ_N}ek-7;WOtmN8-wxk@Rc=zV;$|j`I#%|P)DUHV5>Vk)Hyd$I-Vz56ewZC;hsT7 zXYKe==UD5vVZvd`l+F43c%)s7T`!)KZzRaJv}9875F%3U_HGMZ8FGbu8R%`~5vhAT z*M?u#Kzv5JAC*iQELXMhZS+uExfsOw=0~S=xgm^$G8P~~3_y$fgS3lzA?mT>1l3+O zQ&>wNxX#Q3WRDZqP`eGW2XJL&E$)!4L~hwAFyP5NyTr(OoD<2PvhB&KCad_N6NW}% zf`aX9EFz8XNfE(r2zbXJf{T3i#$=htDtq|OdKtZ!kmM^-T0_mPOk1Sza^jqpnMI9Uckvrd4q!b3d(q*)+IF@ z`eg3(>^bbBU_mHIIEz$!As@1GTPmOCx&0^{3Mw3~GEl~72?D5i9E{LyWrgezj|h{qq{Hf|KUC|ja@=@1PE_PH&kZOx+838i?`U&d; z%5+RuIwPQre?S9}JwWRi0(2pDnWGSLMoIQ1(&S|WsD8g(QGB#CGwaf()aeH&GFV@! zz331firJ{ek>T{LCMFp2J!qr6Ru48zno3W=G;`3em(Z&>2bx*kXMLUbUW!=m=gC`&Q(KeynoXCt{%6kt>4 z`yrFe?iQ4av-{C`(K(GSKRflNytQmOrvuH5gWbz%gy_ zhYlmF)HDI>N{R5%>Vtc_2f+l~XB8hugu17;M|V0qf!7vC*kbtYnC>>|Fmx#Q%${n~%~4 zpPM=R*F8EnLqFb&B$dG+ycg4SGHw{Y-Dtq2NA=O}8Es*-|EW+u8xS2T3EG6D438|nR zf(U@qnYkLa@}tYm6tlDak8O5OorICg1m=$Q(<9_5cH`_P?$ojcM0(^c4}zFbQ+2EE zsQg6{`$RZfbRi&#Fta3Q7zLY&kBJ&jbGx+2%9<~wr@Y_P`&$XQA&d*(i}~m3Eg`?o z5;A`9Yu(nAmRt!c0iqBrQhMD=KFj0F1BtT&I%?Y6^HXk~hQU<5?GrKyCs967rPfZ%#X^2gm%hU(iLtebCN_J*h~&L&q>E10f0sPF z;>tgv0hX^k;@1}g)6)(S#3h$^fc24Bz<2v}67o6%t3IQv62ORWGKmyDLSqw%>aJs` zNRjpOXr=Oqlh(Z7_wbe_id$nNWAqm^X}oD8E(2_q#Ol59Lc$>#^tXF=j>$2a8BYWlE<9i-Zd{GI6oM78AK`r0;@|5FZa6yXRz z?utHMx2|7*qtbX)acEn?jRLFD$sTo!Ka2CWGOmPFyy3Q`d|dVOwFFy;Vh4Z681>)J z8Z>M!o$(Z88cgUCs|lh>>*jC<#E-rF>8&G&p{%wx7vRdzftYQQIMWj49z*TI|Nj7< z>+i6KDiCRO=0n*E8FBst$b>q%t&iz6Dw7GB_->9M1mUdZEE96!f@?9dBo(Aa^VuwZ zB5emI${=6t5veOdcsR)_wGeuvyluGG%QmvQzZCZA%yWa&cX3jQ9rrAy463oqHTSe2l=LL!iW~k!?_9ayo$d|j{P=n%b&msmmGbN*HArS|0(ju zHqgLS)C>h?^dJm&Wnw?>LfTTkTpZE8R}5J5Yqa0vt|!(|FwU2hrSgFxK`P{6K2GU%DaoonU(V)Jr+l8(@``}G*) zn@l~4k8{c-3KNlMcTtEvkzp0iwjJL1 zTNBtiQ@;nd4>WEjh38xJ_PRkJ(LW(1O9tktY@xH=p}BwQ1!!&hix$IlO>p0nMAQIikOK+Xoh4UM2iZKzMjMU@B(q)y_36|oxzE& zv4LnJNtk@sbC-HmDSH@Yld}dDKj}E&2?!))rX%9CinhO$h!x>$UvB;2giiH*Vz$+z zLi=+Nf9FpDapb&b>j7OeLY)`Tue9BiRr1?*!0}j0h`o?}x5~JGNsTBl9B~Me`9|lE zfwF;rH9c@@NFIA8l_?|j?XYy!tSjp?Q@um__@`8yL+%{jL#r85@xDNF{y*X$`?*yD z)Wr9=2aOxoM{X-M)ZFYlGN@~bh9qNKH=lFM;`)%zNsZ24E;I3M7=_-N`Z+zJx28Sc zjN`A4#@EWu*!=dQjaa#e7{!bE3p)39&^;_%G2k-Tt51Cf%bu(3ddBYHWcBeLU_yE0 z!!~gJjN15t6qU^tjbKMs+xg#fR|D-qWfm{`1{0ZQO|p`O9Bx49g<)6vX}7(!f12Vf z7M8! zU}M25QH}M_wy9G0@xw8ces7Xo1#ELi&d+cWc9S7-LW><4WcdgjWWnwet^EZ>wH3T6 zr1HWAQ9)uKQh7NYCZka^Jb*&`YuTLwxE*pc%i-PsY&__t9(0dfRYce1$=Gu;Yj(ML zWM89yoTO4Q8kisGN;X^$&JceP^TX4^a498)2HB0X5e{M=⪻045f0%ZXuw7?j%Uw zjM3hD*~;^dl(-Ct&nFis$11NBFRMXU16)P~3jHEdt!AAowt9blX!_78&#|8v+Cn4H zjVigcV#b&R>Wad@4}4P}561}zc_M_$N8=p-YSz*n&=l#qGQR43PIuVZx;n_*YnO` zfBp}j?dmXE-61@$V=o)R9tVMki%=Og{lyVuSFjrv6mKkR8Z zA->cI1&O!l#1`L|32D)5S6VHbr<(-95sl#X9!ibID)-zuj{x$YLLZUKf#4|2>V|sG zFbs%z%M}?|{}S67R54&dGd!QE?xw0u5;%9ic0JrjmT6II(s82bAR3X}4V)_o z&{W%S&mJS~bRS9%0X?*UiE3}Jl>JAC!=tVsxPB?v*Dhn&%R??_d;O7zc*_C~UD%-( zrM%l}$8;KRzdnIPzcilUK7|( zMdCeUSy7w!%d@_jFH?Grx9NfXwL+Amd3Et`{l4Ak&D%&3xUF)yUj!)}BM4A5wA=>k zWgQ&HEj)$b)fKD&W{?GapS%)W5UnGtHuXadnKs4~B?*iz-Tal2%OV-TS@LjCeBR4A z%!l6pXPy{hWrc0>Ad7!-Qr6o2H=;nrI&qs&%UTm3mH2gNufDRmksKla;q5GB`DS>X zK1wdhn@JvEidmz;J9uPkCKhAYJ99Gw*b$Hzz7V~JiZ}kYE>+uj9!X}^pk`$QhBiT< zEok;u!e1~Iyr@AK;e+H$5hH9+@rb?sE`c9YUGjy?JQM>lQWi21pZEcFA$Ul=;$B5x z>|~Th3O}jX4kU4PRUeCtl<2k-8pL6*?%7n5Z^~7#J8Y>gigMKxe|2{{H@hiouO1OL zdv(bP<;=7F7cDW&tP~s$4tLsKAukmH{R)1=UWDuOsn&zSvcI2fVZ0)xmJY7l5J#o> zL*a@czE`Z%CrM-kuIZq>U1?{-6Z0Z#Ex)Pxr+q z+1)i4GZV_mkKlij*YhfQQhjc=6XLpvv&%7VZ9+g4Itly~@l{1{i|@P21L%F4H7TmU z8#2$s7`+IcRsPwf)GD{0eY`-?{yJsBL+Ssn%VWeV+mlALoYNhPta$ct%#_C9?$yRi z8IwBCXv}pJLbbpSs9DlSN4i|njnvY?pNh7~HK#DzNb-#JWP1iC3>K|RCy=~{A@?(z zV1qOI%jSA7Ke!@=!pVs*FXPa68|i#%Vv7H|g;4d$?4^4PO$fQv*riMw(n9n!bs!mb z^Lk61IyD|8Yl4Lm5{1emrxCDj)V9#S1B9+t)#|{(7hDnu4;X$7_O=GZtM0#OIyKoW(dhDd@Q z2z|EM6r~^F_#^7VJHF%`%*-8B0=+}RP356Pi;ewsuBKYdG8Bj0F=h`pK_ z`8Geqw;DWd_~%%Y(6Xl=3d*sP!^Dm>>wQc{2gNinXwz1nSN2vvsb` z|B}D7cs9buxTd(~yD+vtFe3L?`|g$iAEGlh=}A^cS0fB+qQgO?%6o@~6;<&C3c8#u zEP4JwBP%#BHUORNLbqc!9KR7Su+R&z7SZSK~ zV6E?J>Y#pZ^NwzaN>yW0I-OrG<6Y#Wy2)8o;E((;bjLn&R1Jh-T?0hJ>nN`9^oRsn zb(V9;l%7cPW18~F`)7t&u0@T-eUu4qc~T1SIma}+;#fLb?TtssCUgg zgp5(3dS(Elo9v0mbk(RVT#U(2*&H>f&e&J|kz_-uL8@V_kK&b-c;2B}IhFbuX>e<|iU~F{S6O7P&Z-LQd>Zv_)~@)z_;elH&@x9C*qZ z!;L%*BQLchzHRA+*IXlpv3MdPamfxzKdgS>Putg;`?kWAsW{wgmj-qDCyD#&>Z}{W zjKk=gRxXb``l&w}JwYUDUzd;>JLfg8B38h+<|A${INdJ6)bcen!LW|eFu>;gwO&Rx z-b+b;_q%P$6GYt?UUbv~`$`bHmHu+wXG8^Duk=m>coG-~miPesl+ga8fGewYo@Fg=FAo)#m=Ox&2}GpO zX2Q#P0TC*^4g%GErhZ6NndrEAi6x_po|7rg*0hbXs}6<-pZ<7@rH;sWNY9V~g6RV; zq`@KMF}zHbxdtn6R9JD(j0)Y-afmkT@(h`^gY}w+e^?R{XjKB}(ZRnJz3w2 z9s^C|Q&NPL)6R?iuRb(iF3iOfa5=7jQ4uLUfOSC}q|`p~;K&ASJF|?kDLDn1ks`IoGP6H<3uo4omc)9{5RK~#?Q5B5CjorD_Qv!*Mb zKsrk9^A9WWA`)S9Cc!|CUs&Cfoj5i8(0LafxrKjs3$?@q<%EnZ#UsFI(k&9k=W*k4 zwem6u&FVl0a;^7{|Iq#lT`e-G+@=aR>Vm(2kA^pNU6YWh-Fe>D)o~SBT4@rU-m=xVWe(k) z1A3>L*Y80cCKNimZ{zT9t9t!)n4?Wl?*ldMP$)hEF4CZe+V;{)J`(b$J5zl1e;v{9 zpbFCTK$zxSu=MKjGUae@G6Azpi2mwM{-M)<5P4~M#KmXFQAK7-s%g1E*m}(U25c}~ zb_eJ7BTiOVFaOvjum*@OM~3`HNpt+#t?BEv`IB_G;|} zH7cYmpkwZ8ip%*WAD;VvI|T61N08HE=AyMAjgplE-Z_4C`kxPTO$cu*G_^OQ8y@NM zd@RS?Oco{RN%(l*s*l~5BST$cZ_|Z$aO!dd8`bmNcYgR})eb6GJJ#wKcwp#&r@PBr z)dw_eFtl&VHJs%pKfRL*ii_&7h^yDsidKwMe}N>5rtVb>V&3-iB-KCbcrKP777EW3`Kcy<+Ob0DTU}Q6>;y4v_wQ!U@o^J zaf33EADcs`W-@o?$%7(rfZ1ggPK7b`6*{c)bp-E1HtFHGnfNuBQk8Na!6{nGM;yn4 znn2EyQjU$KFmq0#`AI@R6f{hfaYb~-$i|WN+QxiM*d(m5+PoSb5cs6 z`i$EuAd>P{0ap*oib|b@T#ec|&;&?q5geB&8+_zkGx_F8VtU-wFow}O7qxiT>{q;> zzOsszo^DNtfNV5mzLj0taMK&JN~aQ9`w3j|!2uM!B7m+Y&KNBw9Nb_jPZb|e3%$+R zUN75Wu(`}-1cpi@e!!hROqq45o3i)I0KzaCi5JU9VvC&Kbpx!Ez*ZzgOu~6@lAM2% z^>yHao7M*}Ksg*bIuY(565$Vi|E-7j1C%NNQ|{GfcTbyqg@T*aW+;f&rXqX?XueT| z)JlzfDk>A}x8*otmhXu!d_dcYn?|6;gD>!Ib3lFYOTJ7sejPPEcrC4k((LOm!%#{7 zMhqPxpx%?trQTEv8Rr)x!4>OsQnJ%@_PStPB`uJL$&mJwc`@v(h&MD`bNqf0+r2zA z|4@0{1XM}9=Rg$f+|EIA*#!kRt}tBLl1hzc>UPhpW%@D#=|db$isZy*7;sT3!6t~T z)jW6AMpvH88_X_VQh3VqVtRhfXQ_nk8D*kX%DPvm?>R>RXA#oMBzkD2%^t=*4|A0~ zSIz8m4FWs&Alc>i1~PX|%ajZ#G$e;fu`{s5v@dS=wX?33UUU_*Fn4`@AHlVj+B4jJ;K08!fH z08ar1I#NKK0tTma1V%ULxFdSuTKK<&TeJDC>C&%6*3Ly4zr786)9}T4hxDqdrI6m; z2`lAdjnJy5gOD(vabK7Hbv&Im2Oc#MjKN@%sNV3hDv>PWzb9Ylx5zLK@3Be2$%O{m zB^jZ}=b-RkgdCy5C2W?_wZzw_YK62jY{4|#kGRHaq0U|Rb_$RS0kxt7=}v3$vum3@ z9)>pN&tj|3>5^2Me-13~BVfRxqWGszlb`=*R0})89x()xqdF39AW~+-tSQ&pE|v@t zESnoc^xO?Yifu`HKkL5)1i^yCvW%<|hn=GU*@BrPF>U%Iq}7WeWQRS=9Aom3 z7&Itwuk^9R+~Q9E=hu$*!oa|63#ail0w|MBJ{=B=Ow9RDA`rm^+eX>(p}&^?$t#MN zyMF29)fi-r>e{e{pdLw80l-9o=c4vc#|gnior+FwNux947}B2N)3n^2*1)2bv#G=68`^jzx+I zsqem;&S=O`HQ7{~HRcLTHsSRtJ(Pr`F;@A7O~B@~MbTPqZ_&nZP*dG^;As6j*~@1$ zMM9GW4S8Ljs$mypkT?v{(?<|m{?e4xqVnSD+5DAI3Sv+%JR?JIhtoI!y!TYxk+6b% zK(4fYer@t3ANlEY$DBkAmqk4zh7?nfe*hRt`g#?38Ked;8{(ZP$vV-;(MC?MO-uLH zF(%FGo&E<)^g=+)>5Uh5&P-;71!Qh0^+ag#H|gqaEyVBH%W=SQ^d0o*&Sfzy6Ugd6 z%a6$S(oJxltPvOMySl#33?{NY$5329E9ce`ux4ba6M?#R6lT4osP8$zv&|jT=WXc* zs3%zwcAfYr%3#%02Nx+Jmlw}b_#()wb(LU2Eh!_W1L>7Dxeo=5`E(uKM9Q&j{hpzG zraY|j#YtU&@`&fp$cKPG>rNyn$JiSOLj>kG06poe*2_XJw$l72csC?l_dm3%LoT=*@7E!55^Za~6i<&aZ7qub(RU4^dd+wemoPF>^@l}=`^{5;7;K#l zc0Nt422->mt`?N8KbOD=()%C_0~*iDT=98p>@MhmLIJp$^R`g9zVvN&cs$xBSt^Pi z;_>g`e;sjM-3Sm+I+HF`Hum{^n$u_+cZvmx)(FfQ5nlo{4jFJFXxIzFf+VHE1=0^) zAszxT)|ys3wvkJ`^BpZvOibYiHT*pYF;}5g<+)!%ND92nXi$n6$?z#eIC7Ik!vt}4 zbzy}w`U6V900kYV$~QuI5BT?Ho)Ipw+@8jaIqL0uZ+2sN-Ys8@9mRsh2F2CO$LkVq z!Ezpeps}p$0sFa%l`(7qKH$p)Js|Ulb>3If!!S|nl zA3INTfk(-4zeHSrGRSyt2JI@E_$Y&qL!{rf>A8)8F3}}ID|FoQxbvPKz1&Ii;w1w0 zJj||0duVMf4S5gz7m8=DlY)&k&|Z0_Ld*|g)=Py(ttd1T!Cn#XCxWOQQB1t<{2_D^ zYbfl9Cl~pV0&St!&1KHyn}s-Q_bYfNZzOMslp;h#@}kVJ<0yBm(P!4~My!r*$R zKC06|lN+)PfbI9UVRAxTXN?o*H-0xphvZ3F>v!$O9-qzlz(`S z_v?##k2K0~^n1In?FH(1U@~r$J&9}6x19ULW7o@ z_HCswRI|H~T2YV!+lG`#!Q?Mgn#Vl&=~R<^!B$|b$Fv5x9Hf$s{9r>v6pC7-o`Kf* z(jmiW6ju7@+2_QIor_=4HAN#1#TLOJ$s&CAux)n0v5Yruw>D(K@5(G{Hf-8(5)Y21 zHtQS|iH91HbmNjB?~2r@@U1>GLS==NcX0V*bo*7)-Bsv~`VmxkklCW^zYYg5@=U)Z z8t`#JQ%7R3?z0FfifEg+uWvyw^UxC1Sw(@o zdOjoWJ)=Q>mHP5naKfGd-Pj0oT|fW;M_|?c+U}lgS1=$;Na43yR-wZQEp(Eu70qSw zi=KyL%HduprX*nJZdUf6^^?K5n^LObkTkTcjQzCF;425uW`iv4{UVA;C~wz%bsK1o zn?wf6E8@3xM$ z)-}?SBz}V(L%1`cB`AsRM<)S2&|w5BTc-n}AC4D}pji0bQxphtetoGHY5)#WY?2)! zgJC&x06PEQ%b166g1Y z_ZpyrU9=TW*7MhP>WpcjeYelxdLgzhi-^E~vcoew=Wcd82d=2pvh_j|l>Co?ZPc^2 z%_xqb0DCpQ$<#4gpqc?O4tEZCYxLWnvl$Km00?zak$FCe17&j zQ567-68~WGT|myHU$cIaCc*h|@HfYO=)|)jND3{zB`dZvQ>x>#RUa~eAS&F{% z;X>~aj)AUamnXLzqHX3wWpMIEeD-hndgEbL$0h3>u7R|;NFBgq-A%G#x<_6WpkDF4 zsjYN{LbL*Y%9siQM^I8mlpO63RW`fdrDm-J$Y))zn@Q2vW?!iB1rD>*hXGibI3aAa zIK{__9XnQrVhJ+QV$!J)+g52bfxKOc-|sVUl6z!K(>_7BG?Q+OT=kUEj>u%KQpGwF zz1z~;msycbSAJ*;e)mw*&{jfa-a(YtH<=v~=t2={e#X79VW3o{Cjl6@>aV}$MorkV z*yt&v(K`w+_(ra$$yhUM8D+v(OS!$Zeb#>JADj zeIH;AspuVoF1#8gF-XBS{^ zv^xP(1O?OlNns-@7)lgTZrO6VA_F=IRsc8~R+22f`E9k^IlccMrNnuuOw zJy8>22Lp{O`dOkv6y5K$7Ts%ht2qpfoy1QQOE2Rb>I z*`G3t7~4i@V<>0bQ3>#X*w;!``sxH~MoHMY=QNBk04xbaWwJ8RjFhl2RfsD^g9DK$ ztD4JMx{t9Pye!Skv2F6{a+CFnrSYc|-@eW#0c|ftL_#$hY~)rhx6j<0LMd2;MGVbX z{5Rd-2yCcnCK~EDtw-5v?Jsd!r`yN4V3;2T2j1uo)*v7w-B4)er@^B-&5eK;gNvDV zkZPrfc|k?T;739#yuYo -
+
STM32 NUCLEO-C031C6

diff --git a/arm-cm/blinky_nucleo-c031c6/stm32-nucleo-c031c6.jpg b/arm-cm/blinky_nucleo-c031c6/stm32-nucleo-c031c6.jpg deleted file mode 100644 index 6647e2d493863c9d4268596be8bc982a1ca49ccb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43475 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 aZwdcScKknmYz}5d{lD5b|344^F8mKp|M*b= diff --git a/arm-cm/blinky_nucleo-c031c6/stm32-nucleo-c031c6.webp b/arm-cm/blinky_nucleo-c031c6/stm32-nucleo-c031c6.webp new file mode 100644 index 0000000000000000000000000000000000000000..7671b37121854849ff63a5d8782dd3406e5c29f7 GIT binary patch literal 23864 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%0A{lp=ua5nEhcSX* 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%0Ahd~_%rts8tHXL2r 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 **NOTE** +This file is best viewed in a **markdown viewer**, such as the one built into GitHub. Markdown viewers are also available as plug-ins to popular Internet browsers. -Documentation for this example is available in the QP/C Manual at: +# DPP on EFM32-SLSTK3401A +This example demonstrates the [Dining Philosophers Problem (DPP) application](https://www.state-machine.com/qpc/tut_dpp.html) on the EFM32-SLSTK3401A board (ARM Cortex-M4F). + +

+
+EFM32-SLSTK3401A (Pearl Gecko) +

+ +## Features Demonstrated +- multiple cooperating active objects +- immutable (const) events +- mutable (dynamic) events +- time events +- direct event posting +- publish-subscribe event delivery +- cooperative QV kernel + + with ARM-KEIL toolchain + + with GNU-ARM toolchain + + with IAR-ARM toolchain +- preemptive run-to-completion QK kernel + + with ARM-KEIL toolchain + + with GNU-ARM toolchain + + with IAR-ARM toolchain +- preemptive dual-mode QXK kernel + + with ARM-KEIL toolchain + + with GNU-ARM toolchain + + with IAR-ARM toolchain + +## Build Configurations +- Debug +- Release +- Spy - software tracing with the built-in virtual COM port + +# Code Organization +``` +examples\arm-cm\dpp_efm32-slstk3401a +| ++---qk // preemptive QK kernel +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| +---armclang // ARM/KEIL toolchain with Compiler 6 (ARM/CLANG) +| | dpp-qk.uvprojx // uVision project +| \---iar // IAR EWARM +| dpp-qk.eww // IAR EW-ARM workspace +| +\---qv // cooperative QK kernel +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| +---armclang // ARM/KEIL toolchain with Compiler 6 (ARM/CLANG) +| | dpp-qv.uvprojx // uVision project +| \---iar // IAR EWARM +| dpp-qv.eww // IAR EW-ARM workspace +| ++---qxk // preemptive, dual-mode QXK kernel +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| +---armclang // ARM/KEIL toolchain with Compiler 6 (ARM/CLANG) +| | dpp-qk.uvprojx // uVision project +| \---iar // IAR EWARM +| dpp-qk.eww // IAR EW-ARM workspace +| +``` + +# Building the example + +### GNU/ARM +- open terminal window +- change to the desired directory (either `examples\arm-cm\dpp_efm32-slstk3401a\qk\gnu`, `examples\arm-cm\dpp_efm32-slstk3401a\qv\gnu`, or `examples\arm-cm\dpp_efm32-slstk3401a\qxk\gnu`) +- to build the default Debug configuration, type: + +``` +make +``` + +> **NOTE** +The `make` utility for Windows is provided in the QTools collection for Windows. + +- to build the Release configuration, type: + +``` +make CONF=rel +``` + +- to build the Spy configuration, type: + +``` +make CONF=spy +``` + + +### ARM/KEIL MDK +- Open the provided KEIL uVision project (either `dpp-qk.uvprojx`, `dpp-qv.uvprojx`, or `dpp-qxk.uvprojx`) +in Keil uVision IDE. Build/Debug/Download to the board from the IDE. +- Change the build configuration in the "Project Target" drop-down menu. + + +### IAR EWARM +- Open the provided IAR EWARM workspace (either `dpp-qk.eww`, `dpp-qv.eww`, or `dpp-qxk.eww`) +in IAR EWARM IDE. Build/Debug/Download to the board from the IDE. +- Change the build configuration in the "Project Configuration" drop-down menu. + + +# Tracing with QP/Spy +When the board is flashed with the Spy build configuration, it produces the QP/Spy software tracing output to the built-in virtual COM port of the TivaC LauchPad board. The trace is binary rather than ASCII, and therefore requires a special host-based application called QSPY. + +> **NOTE** QSPY host application is available in the QTools collection. + +To launch the QSPY host application: +- open terminal window +- type: + +``` +qspy -c COM5 +``` + +where "COM5" is an example virtual COM port enumerated by the board. You need to check the specific COM port number on your host computer using the Device Manager application, Ports (COM and LPT) section. + + +The following screen shot shows a typical output from QSPY: + +

+
+Typical QSPY output produced by the Spy build configuration +

-- https://www.state-machine.com/qpcpp/arm-cm_dpp_efm32-slstk3401a.html diff --git a/arm-cm/dpp_efm32-slstk3401a/efm32-slstk3401a.webp b/arm-cm/dpp_efm32-slstk3401a/efm32-slstk3401a.webp new file mode 100644 index 0000000000000000000000000000000000000000..0292490bdc3deeb839241811e0ed6af4106f56ad GIT binary patch literal 16264 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

5IoT*WP_S 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

48s!6PLv3#1J$zTBSi{a{Ql)}O! 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 literal 0 HcmV?d00001 diff --git a/arm-cm/dpp_ek-tm4c123gxl/README.md b/arm-cm/dpp_ek-tm4c123gxl/README.md index 30842ba..663bcd4 100644 --- a/arm-cm/dpp_ek-tm4c123gxl/README.md +++ b/arm-cm/dpp_ek-tm4c123gxl/README.md @@ -1,5 +1,131 @@ -![STM32 EFM32-SLSTK3401A](../../../doxygen/images/bd_EK-TM4C123GXL.jpg) +> **NOTE** +This file is best viewed in a **markdown viewer**, such as the one built into GitHub. Markdown viewers are also available as plug-ins to popular Internet browsers. -Documentation for this example is available in the QP/C Manual at: +# DPP on EK-TM4C123GXL +This example demonstrates the [Dining Philosophers Problem (DPP) application](https://www.state-machine.com/qpc/tut_dpp.html) on the EK-TM4C123GLX board (ARM Cortex-M4F). + +

+
+EK-TM4C123GXL (TivaC LaunchPad) +

+ +## Features Demonstrated +- multiple cooperating active objects +- immutable (const) events +- mutable (dynamic) events +- time events +- direct event posting +- publish-subscribe event delivery +- cooperative QV kernel + + with ARM-KEIL toolchain + + with GNU-ARM toolchain + + with IAR-ARM toolchain +- preemptive run-to-completion QK kernel + + with ARM-KEIL toolchain + + with GNU-ARM toolchain + + with IAR-ARM toolchain +- preemptive dual-mode QXK kernel + + with ARM-KEIL toolchain + + with GNU-ARM toolchain + + with IAR-ARM toolchain + +## Build Configurations +- Debug +- Release +- Spy - software tracing with the built-in virtual COM port + +# Code Organization +``` +examples\arm-cm\dpp_ek-tm4c123gxl +| ++---qk // preemptive QK kernel +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| +---armclang // ARM/KEIL toolchain with Compiler 6 (ARM/CLANG) +| | dpp-qk.uvprojx // uVision project +| \---iar // IAR EWARM +| dpp-qk.eww // IAR EW-ARM workspace +| +\---qv // cooperative QK kernel +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| +---armclang // ARM/KEIL toolchain with Compiler 6 (ARM/CLANG) +| | dpp-qv.uvprojx // uVision project +| \---iar // IAR EWARM +| dpp-qv.eww // IAR EW-ARM workspace +| ++---qxk // preemptive, dual-mode QXK kernel +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| +---armclang // ARM/KEIL toolchain with Compiler 6 (ARM/CLANG) +| | dpp-qk.uvprojx // uVision project +| \---iar // IAR EWARM +| dpp-qk.eww // IAR EW-ARM workspace +| +``` + +# Building the example + +### GNU/ARM +- open terminal window +- change to the desired directory (either `examples\arm-cm\dpp_ek-tm4c123gxl\qk\gnu`, `examples\arm-cm\dpp_ek-tm4c123gxl\qv\gnu`, or `examples\arm-cm\dpp_ek-tm4c123gxl\qxk\gnu`) +- to build the default Debug configuration, type: + +``` +make +``` + +> **NOTE** +The `make` utility for Windows is provided in the QTools collection for Windows. + +- to build the Release configuration, type: + +``` +make CONF=rel +``` + +- to build the Spy configuration, type: + +``` +make CONF=spy +``` + + +### ARM/KEIL MDK +- Open the provided KEIL uVision project (either `dpp-qk.uvprojx`, `dpp-qv.uvprojx`, or `dpp-qxk.uvprojx`) +in Keil uVision IDE. Build/Debug/Download to the board from the IDE. +- Change the build configuration in the "Project Target" drop-down menu. + + +### IAR EWARM +- Open the provided IAR EWARM workspace (either `dpp-qk.eww`, `dpp-qv.eww`, or `dpp-qxk.eww`) +in IAR EWARM IDE. Build/Debug/Download to the board from the IDE. +- Change the build configuration in the "Project Configuration" drop-down menu. + + +# Tracing with QP/Spy +When the board is flashed with the Spy build configuration, it produces the QP/Spy software tracing output to the built-in virtual COM port of the TivaC LauchPad board. The trace is binary rather than ASCII, and therefore requires a special host-based application called QSPY. + +> **NOTE** QSPY host application is available in the QTools collection. + +To launch the QSPY host application: +- open terminal window +- type: + +``` +qspy -c COM5 +``` + +where "COM5" is an example virtual COM port enumerated by the board. You need to check the specific COM port number on your host computer using the Device Manager application, Ports (COM and LPT) section. + + +The following screen shot shows a typical output from QSPY: + +

+
+Typical QSPY output produced by the Spy build configuration +

-- https://www.state-machine.com/qpcpp/arm-cm_dpp_ek-tm4c123gxl.html diff --git a/arm-cm/dpp_ek-tm4c123gxl/ek-tm4c123gxl.webp b/arm-cm/dpp_ek-tm4c123gxl/ek-tm4c123gxl.webp new file mode 100644 index 0000000000000000000000000000000000000000..320870b8dc4b5fb35851c97c64650bdc8708f6d7 GIT binary patch literal 29976 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⪻045f0%ZXuw7?j%Uw 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

48s!6PLv3#1J$zTBSi{a{Ql)}O! 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 literal 0 HcmV?d00001 diff --git a/arm-cm/dpp_nucleo-c031c6/README.md b/arm-cm/dpp_nucleo-c031c6/README.md index 9f5e47a..b090412 100644 --- a/arm-cm/dpp_nucleo-c031c6/README.md +++ b/arm-cm/dpp_nucleo-c031c6/README.md @@ -5,7 +5,7 @@ This file is best viewed in a **markdown viewer**, such as the one built into Gi This example demonstrates the [Dining Philosophers Problem (DPP) application](https://www.state-machine.com/qpc/tut_dpp.html) on the STM32 NUCLEO-C031C6 board (ARM Cortex-M0+).

-
+
STM32 NUCLEO-C031C6

diff --git a/arm-cm/dpp_nucleo-c031c6/stm32-nucleo-c031c6.jpg b/arm-cm/dpp_nucleo-c031c6/stm32-nucleo-c031c6.jpg deleted file mode 100644 index 6647e2d493863c9d4268596be8bc982a1ca49ccb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43475 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 aZwdcScKknmYz}5d{lD5b|344^F8mKp|M*b= diff --git a/arm-cm/dpp_nucleo-c031c6/stm32-nucleo-c031c6.webp b/arm-cm/dpp_nucleo-c031c6/stm32-nucleo-c031c6.webp new file mode 100644 index 0000000000000000000000000000000000000000..7671b37121854849ff63a5d8782dd3406e5c29f7 GIT binary patch literal 23864 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%0A{lp=ua5nEhcSX* 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%0Ahd~_%rts8tHXL2r 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 **NOTE** +This file is best viewed in a **markdown viewer**, such as the one built into GitHub. Markdown viewers are also available as plug-ins to popular Internet browsers. -Documentation for this example is available in the QP/C Manual at: +# DPP on NUCLEO-H743ZI +This example demonstrates the [Dining Philosophers Problem (DPP) application](https://www.state-machine.com/qpc/tut_dpp.html) on the STM32 NUCLEO-H743ZI board (ARM Cortex-M7 with double-precision FPU). + +

+
+STM32 NUCLEO-H743ZI +

+ +> **NOTE** +This example can be used as a starting point for any other ARM Cortex-M MCU, including those based on different Cortex-M cores (M0/M0+/M3/M4/M7/M23/M33/M55/M85...) The most simplifying factor is that the QP-ports to Cortex-M don't need to change at all (the correct port is selected automatically based on the standard preprocessor macros provided by the compiler). + +

+ +

+ +## Features Demonstrated +- multiple cooperating active objects +- immutable (const) events +- mutable (dynamic) events +- time events +- direct event posting +- publish-subscribe event delivery +- cooperative QV kernel + + with ARM-KEIL toolchain + + with GNU-ARM toolchain + + with IAR-ARM toolchain +- preemptive run-to-completion QK kernel + + with ARM-KEIL toolchain + + with GNU-ARM toolchain + + with IAR-ARM toolchain +- preemptive dual-mode QXK kernel + + with ARM-KEIL toolchain + + with GNU-ARM toolchain + + with IAR-ARM toolchain + +## Build Configurations +- Debug +- Release +- Spy - software tracing with the built-in virtual COM port + +# Code Organization +``` +examples\arm-cm\dpp_nucleo-h743zi +| ++---qk // preemptive QK kernel +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| +---armclang // ARM/KEIL toolchain with Compiler 6 (ARM/CLANG) +| | dpp-qk.uvprojx // uVision project +| \---iar // IAR EWARM +| dpp-qk.eww // IAR EW-ARM workspace +| +\---qv // cooperative QK kernel +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| +---armclang // ARM/KEIL toolchain with Compiler 6 (ARM/CLANG) +| | dpp-qv.uvprojx // uVision project +| \---iar // IAR EWARM +| dpp-qv.eww // IAR EW-ARM workspace +| ++---qxk // preemptive, dual-mode QXK kernel +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| +---armclang // ARM/KEIL toolchain with Compiler 6 (ARM/CLANG) +| | dpp-qxk.uvprojx // uVision project +| \---iar // IAR EWARM +| dpp-qxk.eww // IAR EW-ARM workspace +| +``` + +# Building the example + +### GNU/ARM +- open terminal window +- change to the desired directory (either `examples\arm-cm\dpp_nucleo-h743zi\qk\gnu`, `examples\arm-cm\dpp_nucleo-h743zi\qv\gnu`, or `examples\arm-cm\dpp_nucleo-h743zi\qxk\gnu`) +- to build the default Debug configuration, type: + +``` +make +``` + +> **NOTE** +The `make` utility for Windows is provided in the QTools collection for Windows. + +- to build the Release configuration, type: + +``` +make CONF=rel +``` + +- to build the Spy configuration, type: + +``` +make CONF=spy +``` + + +### ARM/KEIL MDK +- Open the provided KEIL uVision project (either `dpp-qk.uvprojx`, `dpp-qv.uvprojx`, or `dpp-qxk.uvprojx`) +in Keil uVision IDE. Build/Debug/Download to the board from the IDE. +- Change the build configuration in the "Project Target" drop-down menu. + + +### IAR EWARM +- Open the provided IAR EWARM workspace (either `dpp-qk.eww`, `dpp-qv.eww`, or `dpp-qxk.eww`) +in IAR EWARM IDE. Build/Debug/Download to the board from the IDE. +- Change the build configuration in the "Project Configuration" drop-down menu. + + +# Uploading the Binary to the Board +The STM32 NUCLEO boards enumerate as a USB drive when connected to the host computer. The boards then can be programmed by **copying** the binary to that USB drive. This can be useful for the command-line GNU/ARM build. For example, to program the binary produced for the Debug configuration, you can type: + +``` +copy dbg\dpp-qk.bin E: +``` +NOTE: The above command assumes that the NUCLEO board enumerated as drive E:. Of course you need to adjust the command for your specific drive letter. + +Alternatively, if you use IDEs, such as KEIL-MDK or IAR EWARM, you can program the board from the IDE (e.g., by starting a debug session). + + +# Tracing with QP/Spy +When the board is flashed with the Spy build configuration, it produces the QP/Spy software tracing output to the built-in virtual COM port of the TivaC LauchPad board. The trace is binary rather than ASCII, and therefore requires a special host-based application called QSPY. + +> **NOTE** QSPY host application is available in the QTools collection. + +To launch the QSPY host application: +- open terminal window +- type: + +``` +qspy -c COM5 +``` + +where "COM5" is an example virtual COM port enumerated by the board. You need to check the specific COM port number on your host computer using the Device Manager application, Ports (COM and LPT) section. + + +The following screen shot shows a typical output from QSPY: + +

+
+Typical QSPY output produced by the Spy build configuration +

-- https://www.state-machine.com/qpcpp/arm-cm_dpp_nucleo-h743zi.html diff --git a/arm-cm/dpp_nucleo-h743zi/qk/gnu/Makefile b/arm-cm/dpp_nucleo-h743zi/qk/gnu/Makefile index 7512310..ffb441b 100644 --- a/arm-cm/dpp_nucleo-h743zi/qk/gnu/Makefile +++ b/arm-cm/dpp_nucleo-h743zi/qk/gnu/Makefile @@ -73,7 +73,7 @@ VPATH = \ $(QPCPP)/src/qs \ $(QP_PORT_DIR) \ $(QPCPP)/3rd_party/STM32CubeH7/nucleo-h743zi/gnu \ - $(QPCPP)/3rd_party/STM32CubeH7/Drivers/BSP\STM32H7xx_Nucleo_144 \ + $(QPCPP)/3rd_party/STM32CubeH7/Drivers/BSP/STM32H7xx_Nucleo_144 \ $(QPCPP)/3rd_party/STM32CubeH7/Drivers/STM32H7xx_HAL_Driver/Src \ $(QPCPP)/3rd_party/STM32CubeH7/Drivers/CMSIS/Device/ST/STM32H7xx/Source/Templates diff --git a/arm-cm/dpp_nucleo-h743zi/qspy-output.png b/arm-cm/dpp_nucleo-h743zi/qspy-output.png new file mode 100644 index 0000000000000000000000000000000000000000..ee764450fc698007b726222ee98e0c4ff8a2347d GIT binary patch literal 30404 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

48s!6PLv3#1J$zTBSi{a{Ql)}O! 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 literal 0 HcmV?d00001 diff --git a/arm-cm/dpp_nucleo-h743zi/qv/gnu/Makefile b/arm-cm/dpp_nucleo-h743zi/qv/gnu/Makefile index db8f982..5fbdf72 100644 --- a/arm-cm/dpp_nucleo-h743zi/qv/gnu/Makefile +++ b/arm-cm/dpp_nucleo-h743zi/qv/gnu/Makefile @@ -74,7 +74,7 @@ VPATH = \ $(QPCPP)/src/qs \ $(QP_PORT_DIR) \ $(QPCPP)/3rd_party/STM32CubeH7/nucleo-h743zi/gnu \ - $(QPCPP)/3rd_party/STM32CubeH7/Drivers/BSP\STM32H7xx_Nucleo_144 \ + $(QPCPP)/3rd_party/STM32CubeH7/Drivers/BSP/STM32H7xx_Nucleo_144 \ $(QPCPP)/3rd_party/STM32CubeH7/Drivers/STM32H7xx_HAL_Driver/Src \ $(QPCPP)/3rd_party/STM32CubeH7/Drivers/CMSIS/Device/ST/STM32H7xx/Source/Templates diff --git a/arm-cm/dpp_nucleo-h743zi/qxk/gnu/Makefile b/arm-cm/dpp_nucleo-h743zi/qxk/gnu/Makefile index 81ae52c..7013053 100644 --- a/arm-cm/dpp_nucleo-h743zi/qxk/gnu/Makefile +++ b/arm-cm/dpp_nucleo-h743zi/qxk/gnu/Makefile @@ -73,7 +73,7 @@ VPATH = \ $(QPCPP)/src/qs \ $(QP_PORT_DIR) \ $(QPCPP)/3rd_party/STM32CubeH7/nucleo-h743zi/gnu \ - $(QPCPP)/3rd_party/STM32CubeH7/Drivers/BSP\STM32H7xx_Nucleo_144 \ + $(QPCPP)/3rd_party/STM32CubeH7/Drivers/BSP/STM32H7xx_Nucleo_144 \ $(QPCPP)/3rd_party/STM32CubeH7/Drivers/STM32H7xx_HAL_Driver/Src \ $(QPCPP)/3rd_party/STM32CubeH7/Drivers/CMSIS/Device/ST/STM32H7xx/Source/Templates diff --git a/arm-cm/dpp_nucleo-h743zi/stm32-nucleo-h743zi.webp b/arm-cm/dpp_nucleo-h743zi/stm32-nucleo-h743zi.webp new file mode 100644 index 0000000000000000000000000000000000000000..594e7f717c5919e4f3caaeb78ff724dd4f86aaf8 GIT binary patch literal 31144 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 p;Ys$ycJcrK00000+-v{<0000000000000000000000000005oGp3VRO literal 0 HcmV?d00001 diff --git a/arm-cm/dpp_nucleo-l053r8/README.md b/arm-cm/dpp_nucleo-l053r8/README.md index 538e556..bf96c14 100644 --- a/arm-cm/dpp_nucleo-l053r8/README.md +++ b/arm-cm/dpp_nucleo-l053r8/README.md @@ -1,5 +1,149 @@ -![STM32 EFM32-SLSTK3401A](../../../doxygen/images/bd_NUCLEO-L053R8.jpg) +> **NOTE** +This file is best viewed in a **markdown viewer**, such as the one built into GitHub. Markdown viewers are also available as plug-ins to popular Internet browsers. -Documentation for this example is available in the QP/C Manual at: +# DPP on NUCLEO-L053R8 +This example demonstrates the [Dining Philosophers Problem (DPP) application](https://www.state-machine.com/qpc/tut_dpp.html) on the STM32 NUCLEO-L053R8 board (ARM Cortex-M0+). + +

+
+STM32 NUCLEO-L053R8 +

+ +> **NOTE** +This example can be used as a starting point for any other ARM Cortex-M MCU, including those based on different Cortex-M cores (M0/M0+/M3/M4/M7/M23/M33/M55/M85...) The most simplifying factor is that the QP-ports to Cortex-M don't need to change at all (the correct port is selected automatically based on the standard preprocessor macros provided by the compiler). + +

+ +

+ +## Features Demonstrated +- multiple cooperating active objects +- immutable (const) events +- mutable (dynamic) events +- time events +- direct event posting +- publish-subscribe event delivery +- cooperative QV kernel + + with ARM-KEIL toolchain + + with GNU-ARM toolchain + + with IAR-ARM toolchain +- preemptive run-to-completion QK kernel + + with ARM-KEIL toolchain + + with GNU-ARM toolchain + + with IAR-ARM toolchain +- preemptive dual-mode QXK kernel + + with ARM-KEIL toolchain + + with GNU-ARM toolchain + + with IAR-ARM toolchain + +## Build Configurations +- Debug +- Release +- Spy - software tracing with the built-in virtual COM port + +# Code Organization +``` +examples\arm-cm\dpp_nucleo-l053r8 +| ++---qk // preemptive QK kernel +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| +---armclang // ARM/KEIL toolchain with Compiler 6 (ARM/CLANG) +| | dpp-qk.uvprojx // uVision project +| \---iar // IAR EWARM +| dpp-qk.eww // IAR EW-ARM workspace +| +\---qv // cooperative QK kernel +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| +---armclang // ARM/KEIL toolchain with Compiler 6 (ARM/CLANG) +| | dpp-qv.uvprojx // uVision project +| \---iar // IAR EWARM +| dpp-qv.eww // IAR EW-ARM workspace +| ++---qxk // preemptive, dual-mode QXK kernel +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| +---armclang // ARM/KEIL toolchain with Compiler 6 (ARM/CLANG) +| | dpp-qxk.uvprojx // uVision project +| \---iar // IAR EWARM +| dpp-qxk.eww // IAR EW-ARM workspace +| +``` + +# Building the example + +### GNU/ARM +- open terminal window +- change to the desired directory (either `examples\arm-cm\dpp_nucleo-l053r8\qk\gnu`, `examples\arm-cm\dpp_nucleo-l053r8\qv\gnu`, or `examples\arm-cm\dpp_nucleo-l053r8\qxk\gnu`) +- to build the default Debug configuration, type: + +``` +make +``` + +> **NOTE** +The `make` utility for Windows is provided in the QTools collection for Windows. + +- to build the Release configuration, type: + +``` +make CONF=rel +``` + +- to build the Spy configuration, type: + +``` +make CONF=spy +``` + + +### ARM/KEIL MDK +- Open the provided KEIL uVision project (either `dpp-qk.uvprojx`, `dpp-qv.uvprojx`, or `dpp-qxk.uvprojx`) +in Keil uVision IDE. Build/Debug/Download to the board from the IDE. +- Change the build configuration in the "Project Target" drop-down menu. + + +### IAR EWARM +- Open the provided IAR EWARM workspace (either `dpp-qk.eww`, `dpp-qv.eww`, or `dpp-qxk.eww`) +in IAR EWARM IDE. Build/Debug/Download to the board from the IDE. +- Change the build configuration in the "Project Configuration" drop-down menu. + + +# Uploading the Binary to the Board +The STM32 NUCLEO boards enumerate as a USB drive when connected to the host computer. The boards then can be programmed by **copying** the binary to that USB drive. This can be useful for the command-line GNU/ARM build. For example, to program the binary produced for the Debug configuration, you can type: + +``` +copy dbg\dpp-qk.bin E: +``` +NOTE: The above command assumes that the NUCLEO board enumerated as drive E:. Of course you need to adjust the command for your specific drive letter. + +Alternatively, if you use IDEs, such as KEIL-MDK or IAR EWARM, you can program the board from the IDE (e.g., by starting a debug session). + + +# Tracing with QP/Spy +When the board is flashed with the Spy build configuration, it produces the QP/Spy software tracing output to the built-in virtual COM port of the TivaC LauchPad board. The trace is binary rather than ASCII, and therefore requires a special host-based application called QSPY. + +> **NOTE** QSPY host application is available in the QTools collection. + +To launch the QSPY host application: +- open terminal window +- type: + +``` +qspy -c COM5 +``` + +where "COM5" is an example virtual COM port enumerated by the board. You need to check the specific COM port number on your host computer using the Device Manager application, Ports (COM and LPT) section. + + +The following screen shot shows a typical output from QSPY: + +

+
+Typical QSPY output produced by the Spy build configuration +

-- https://www.state-machine.com/qpcpp/arm-cm_dpp_nucleo-l053r8.html diff --git a/arm-cm/dpp_nucleo-l053r8/qspy-output.png b/arm-cm/dpp_nucleo-l053r8/qspy-output.png new file mode 100644 index 0000000000000000000000000000000000000000..ee764450fc698007b726222ee98e0c4ff8a2347d GIT binary patch literal 30404 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

48s!6PLv3#1J$zTBSi{a{Ql)}O! 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 literal 0 HcmV?d00001 diff --git a/arm-cm/dpp_nucleo-l053r8/stm32-nucleo-l053r8.webp b/arm-cm/dpp_nucleo-l053r8/stm32-nucleo-l053r8.webp new file mode 100644 index 0000000000000000000000000000000000000000..8ec1391f877e8d34effc716add47b32d91c67472 GIT binary patch literal 24888 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 v>#ybJJ<5=Bz9gi9TWOQZnk4FdsE}@;lS{W **NOTE** +This file is best viewed in a **markdown viewer**, such as the one built into GitHub. Markdown viewers are also available as plug-ins to popular Internet browsers. -Documentation for this example is available in the QP/C Manual at: +# DPP on NUCLEO-L552ZE +This example demonstrates the [Dining Philosophers Problem (DPP) application](https://www.state-machine.com/qpc/tut_dpp.html) on the STM32 NUCLEO-L552ZE board (ARM Cortex-M33). + +

+
+STM32 NUCLEO-L552ZE +

+ +> **NOTE** +This example can be used as a starting point for any other ARM Cortex-M MCU, including those based on different Cortex-M cores (M0/M0+/M3/M4/M7/M23/M33/M55/M85...) The most simplifying factor is that the QP-ports to Cortex-M don't need to change at all (the correct port is selected automatically based on the standard preprocessor macros provided by the compiler). + +

+ +

+ +## Features Demonstrated +- multiple cooperating active objects +- immutable (const) events +- mutable (dynamic) events +- time events +- direct event posting +- publish-subscribe event delivery +- cooperative QV kernel + + with ARM-KEIL toolchain + + with GNU-ARM toolchain + + with IAR-ARM toolchain +- preemptive run-to-completion QK kernel + + with ARM-KEIL toolchain + + with GNU-ARM toolchain + + with IAR-ARM toolchain +- preemptive dual-mode QXK kernel + + with ARM-KEIL toolchain + + with GNU-ARM toolchain + + with IAR-ARM toolchain + +## Build Configurations +- Debug +- Release +- Spy - software tracing with the built-in virtual COM port + +# Code Organization +``` +examples\arm-cm\dpp_nucleo-l552ze +| ++---qk // preemptive QK kernel +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| +---armclang // ARM/KEIL toolchain with Compiler 6 (ARM/CLANG) +| | dpp-qk.uvprojx // uVision project +| \---iar // IAR EWARM +| dpp-qk.eww // IAR EW-ARM workspace +| +\---qv // cooperative QK kernel +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| +---armclang // ARM/KEIL toolchain with Compiler 6 (ARM/CLANG) +| | dpp-qv.uvprojx // uVision project +| \---iar // IAR EWARM +| dpp-qv.eww // IAR EW-ARM workspace +| ++---qxk // preemptive, dual-mode QXK kernel +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| +---armclang // ARM/KEIL toolchain with Compiler 6 (ARM/CLANG) +| | dpp-qxk.uvprojx // uVision project +| \---iar // IAR EWARM +| dpp-qxk.eww // IAR EW-ARM workspace +| +``` + +# Building the example + +### GNU/ARM +- open terminal window +- change to the desired directory (either `examples\arm-cm\dpp_nucleo-l552ze\qk\gnu`, `examples\arm-cm\dpp_nucleo-l552ze\qv\gnu`, or `examples\arm-cm\dpp_nucleo-l552ze\qxk\gnu`) +- to build the default Debug configuration, type: + +``` +make +``` + +> **NOTE** +The `make` utility for Windows is provided in the QTools collection for Windows. + +- to build the Release configuration, type: + +``` +make CONF=rel +``` + +- to build the Spy configuration, type: + +``` +make CONF=spy +``` + + +### ARM/KEIL MDK +- Open the provided KEIL uVision project (either `dpp-qk.uvprojx`, `dpp-qv.uvprojx`, or `dpp-qxk.uvprojx`) +in Keil uVision IDE. Build/Debug/Download to the board from the IDE. +- Change the build configuration in the "Project Target" drop-down menu. + + +### IAR EWARM +- Open the provided IAR EWARM workspace (either `dpp-qk.eww`, `dpp-qv.eww`, or `dpp-qxk.eww`) +in IAR EWARM IDE. Build/Debug/Download to the board from the IDE. +- Change the build configuration in the "Project Configuration" drop-down menu. + + +# Uploading the Binary to the Board +The STM32 NUCLEO boards enumerate as a USB drive when connected to the host computer. The boards then can be programmed by **copying** the binary to that USB drive. This can be useful for the command-line GNU/ARM build. For example, to program the binary produced for the Debug configuration, you can type: + +``` +copy dbg\dpp-qk.bin E: +``` +NOTE: The above command assumes that the NUCLEO board enumerated as drive E:. Of course you need to adjust the command for your specific drive letter. + +Alternatively, if you use IDEs, such as KEIL-MDK or IAR EWARM, you can program the board from the IDE (e.g., by starting a debug session). + + +# Tracing with QP/Spy +When the board is flashed with the Spy build configuration, it produces the QP/Spy software tracing output to the built-in virtual COM port of the TivaC LauchPad board. The trace is binary rather than ASCII, and therefore requires a special host-based application called QSPY. + +> **NOTE** QSPY host application is available in the QTools collection. + +To launch the QSPY host application: +- open terminal window +- type: + +``` +qspy -c COM5 +``` + +where "COM5" is an example virtual COM port enumerated by the board. You need to check the specific COM port number on your host computer using the Device Manager application, Ports (COM and LPT) section. + + +The following screen shot shows a typical output from QSPY: + +

+
+Typical QSPY output produced by the Spy build configuration +

-- https://www.state-machine.com/qpcpp/arm-cm_dpp_nucleo-l552ze.html diff --git a/arm-cm/dpp_nucleo-l552ze/qspy-output.png b/arm-cm/dpp_nucleo-l552ze/qspy-output.png new file mode 100644 index 0000000000000000000000000000000000000000..ee764450fc698007b726222ee98e0c4ff8a2347d GIT binary patch literal 30404 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

48s!6PLv3#1J$zTBSi{a{Ql)}O! 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 literal 0 HcmV?d00001 diff --git a/arm-cm/dpp_nucleo-l552ze/stm32-nucleo-l552ze.jpg b/arm-cm/dpp_nucleo-l552ze/stm32-nucleo-l552ze.jpg deleted file mode 100644 index 9c7f096cd29940e568908080bad3feab4d303457..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39333 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 diff --git a/arm-cm/dpp_nucleo-l552ze/stm32-nucleo-l552ze.webp b/arm-cm/dpp_nucleo-l552ze/stm32-nucleo-l552ze.webp new file mode 100644 index 0000000000000000000000000000000000000000..7290782944e0556025c2bd097803e21b90482625 GIT binary patch literal 18508 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 aI}Re=`HISb0000s@Ivmi7F)mo0001NDzvEp literal 0 HcmV?d00001 diff --git a/arm-cm/dpp_nucleo-u545re/README.md b/arm-cm/dpp_nucleo-u545re/README.md index 6297f38..027500c 100644 --- a/arm-cm/dpp_nucleo-u545re/README.md +++ b/arm-cm/dpp_nucleo-u545re/README.md @@ -5,7 +5,7 @@ This file is best viewed in a **markdown viewer**, such as the one built into Gi This example demonstrates the [Dining Philosophers Problem (DPP) application](https://www.state-machine.com/qpc/tut_dpp.html) on the STM32 NUCLEO-U545RE board (ARM Cortex-__M33__).

-
+
STM32 NUCLEO-U545RE

diff --git a/arm-cm/dpp_nucleo-u545re/stm32-nucleo-u545re.jpg b/arm-cm/dpp_nucleo-u545re/stm32-nucleo-u545re.jpg deleted file mode 100644 index d980914c646db4b04e0dd142d75589f7b44fcd85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95704 zcmb5Ubx<7L6E3{C1q~3K;IIUO2X|e3cadO$;O=fgLvSa!F3Y09-3cB@U~vhs@Dki1 zXfD61ufDqf-kwu+s-~;EpP8weI^ECnZ}Hy-fCQwhrVKzsLj$NjUx0rr00jUBI{N?C zvtd3jEL1&}e}@V}JP#U*F9aHkLm zODV=D`8jCYq0Vvea=aT20(wV_iKjHi{JvM zTetc;?4Y1GpO={!{i2dSAJmSK9|)xgb51C4kJ_tU5l}6ZXg_i^%(mEL(?FJX|oT zOL$GKz4LvI^!3O;!290Y=*HhH{{UAj{{VT8X^lROM!`p6{{X|TPZo6rf5#3lZ2tlH zo?-s3o`HbliKI5`Zijmwiy8j`+8m$UYo}be=IurE`d{NLvtIul5x>2T41LAz0J=^4SyL)(Ji9dx9=nYX8@JcX<~x$iv9$t--JuYoKA+NA}}&+*q){{f^tRBKcK z8}YZc3Tv}R-)9N*FG7}5bkmqi>5Ump{B|@&j5sLaHS(4(kX*MERY zv44QWtBJq3lU~VcT7rdd3o@G`xn76kUeS!K>Vrz*WP(3 zW9ju@*&XEYwB)%Zkmcj?!~`#m_RT3YaNT=<^BX+!jLIwmA@`(U|;WDat-v4 z&52d8{tskq7HFZ8;F&q&6kNv`Z!whjBwkN4(0l#4d=%W$6jh&56}DRtk~3+dhD5PP z@2b!IcN72=x7Qp|RYt3nr|zdtPSUPzsog4TN;p6a$`hXfKQ@(=#(^`Ptq>L2i5mRlt(?c zjK1*Lyyq9MNiD+s!zLxCi}fb6@2*XzwkI}EK4A;OCbLfTBJ|lkCHwe2;0NnHm`PRo za*EuII7UpSpr;&0;eaOaURUaq8{-A?S7vN;j+U(o4%T(p<+|{pnq3(q1(j6d=2UrE zu6NEkog5$v9d9I5Di|N18k6*Vfwj;(=QckWnQBv6(CAI6S*KbltYL(CZP9jpned$o zRG%!JeN?5Vf+w?6JX23p?4f_mmz7H-h2o1|rQ^&z4NJR_+;@dU?t2QoGFDm7(g1hNu+;%5$5(rz@PGi@`+G^#-wlGZqriRIRg=h6>AJkV!#{X6eVBC! z{vD1%mknCa8lzs-@*CA*jLx`cyrRqq@w$LF*D;Yteb2f)^#{ABvA?{ zErk59*cOnYhYwnW5IVNW6M&n$h`0c>VdFrI>+REifYwDa}{flaf9WUlL#Ce z1nGJaVt!CbDVVx1vf~4(L!;&JWRgtVxJ4b`Cl$uT;YeAvRKM*O}1! zdJ}K!{u}y3RS&2|d}lYq6VgdFXPy`@Kkhg;x_UB)-|wJAaW0G4mO#!Y!OLmX#* z5xu}I!m^6^jqwRv%UiVdV9KE4C0)hOvXy4TAvSk2UpFRMXD~%r!DEk6sntAf*oElV z1-_lOp`&R4SH?S_oIPk6#?@?ly3qbkSc*&bqej%5YIOaX`iQ3h+xC-IyC2;m&-cT9uW6_Nc%)K4xV^XzNGCfPHOT9}|h{qpni1dPc zta*s1lHquSL>Rf;@0Sct%V?Bn*02d;;*yWnV$ZQ{p@H+v_(<{+wdpT+)vNV*xf$AW zx_gYD4<2>7furp<3*5SIg=XTp zVr;Uty@>IR@tt0#=ViFA%IZ+jDwpd2*5hr}WTp?PIMlDquqRfk#6C?Pc*myt0fSa` zW4A?Y4yKTXo@KktTl?eQ$M~B75KrFY( zny~pRLwC`7(4lY%SQW$h)>lS?iDJOflsylvZAig)a^{$es%o@SG$r8iU1uCl&8QF$)Xuj%I;yYiehEK$R zN|~+=jrwRa`alh$ulGA^KFlq%O#oSGdF%agISCNRMc;n=X3`rPZ3ZT7>fykLrrv)5 z7Eo9*0o8mVwxn!t1qDqyD8N=DNd(-*uFF=kY~o41h1So~$0&T1 zkx~xGlXUn8(A;+M?f0mitvDk=PfcC!A=8$m+tqccyCQ3Jg2I(bwAFQAsyP@zm*tUA zGcXjgT^jlLTep01)0Hk=$;T#yA9((Y{04dVxyvH5D7B>4@8n@*w+76W$Xe90=MJPE zZxFqrsjSH2xsWu-y6*f|@n+aXdu6UdEw=5uOb{Cf;56{=QCMhC)27jF8JKGXUiSu@ zke0PgN4CFs;pf67N|#bNYqX?-Haanv*Gf;!f9K@t6^R;4PNy8+L43Es(?(p*e|GR1 z{q+-}SI$zS@%h$pAeRG8cDG&MnJeALzTi(gh9K^HZX@l}WD%6K{{j%M`zuaD7KlX08A6Q>(g# z=6O-^6z-HCU4B4jN03qIa_a67IgHy9;+fpIoh&(xdT7>>npLlKGE~pi@E(1k?yqW1 z+`{3^Ly|vn^gBFg7$;aW#a5sB(&dY6wuX{&kZq94vW={KGJ3lF&+5lh+>2crruqX$ zx3`mB1*u|_?KQLLm?y0k?=;g-A}7YTYy5|io056q{J#^#dJegovcXKyQdJwEY_NkT zo*l#eG_96oV$tP2^Ioq*X`2&=D5-gUqSqffSKGL~ner_0IB(#%JSb_krcqE!(SE~sAZ$x% zz%(MdIx`i>LC07)AukLPefi&;megh*4%Qbhuck5r!eLfeiKl8!9`-z8E}CB))yrzU zz8xI1mKb!E@qEK&C62r~s^hBPS7-e~La}o?hDjtHq45^NLg2gJaL4M`36>poBLohQ~;fDq<2bLl3ocUyj94Up)8Nm=0Y4GnCDkw%#Gw zIwBmRVM+@1nW0}KR7VY5ZXcqn_M7Red|FjrNZBu4UHa33%yr6x!v~*9XdH9Ce$It+pABw+@d-c`PfKm=mXNLF!#r$LoI*Ua zb$im?N`ijWS{gqzN?m5Kz`fuOA{QHbqWFt=2$zgYse5y%)J4b5qevxKu0zE%iRKXE zJhz{k=M~vw6oagAaiUVai6o9ZyG;nl3rHPrXGH7>c)Y3IG!(F(Q)}SCH>LjTA+-d9 z<~qoy4UjD1kBJ_ww9nZ>J1gCJW08X%k|@44^WhRDtGB;%j8tM&JhWv7@ABEM>khgK z@|EH3S|#jT>c{Wsy%1$EeD49D8qtf5C!+-U3h#lYN#LY9(eJXBKkDlz>^kcE80lqX z9yl(--$%;}<8ak2O_R~|GeebmCt~m0-?DR)u15~OZK=?uGcPJG{UpsSaR%=w)Y~*( zC|n|jRNhps?uq{3sQenk{Hr;QO9Qjx@V+} zo%fACT=rHF&%Jew4hB2za*M!#=1vWVY%wXBsiIgc9{ zwv_cs-$u3A(33+s^?>)&a>It&BHnH*d_hlX#YaQ5;AF?t25V#JjbJdUWzvATWsy@M@K;7s zTsvmooqH7;`K|j7{dD*!nnd`N`|TgQ=I#=p&(&zft1`w0-cqJFwW%|p?BpnO9BN%^ zE{32y%Lx|6i`j7tUTwSqUt<0h@u7}IvA18oVG)xBW~h7!h@IAQ+TTKHq#vouyQ`_& zfxFO)z!_W$$J^J_Ul(|R?_hg0g&6&9wbaC#K_V~gUAP0|wnYHa{(TqIvns@``N+6{ z9|+Oaod%%p=dNKcG+_UP759H&WxkXTgzb{^K*_r=-lSWQos(c~Qv2wP34wD)A@iUSpvB z01$;e%Q0+>P?IKughPX|arR1xrxk)nc=$Je%ee7qs8JgP`Kg#lvoY?Yz53zsg>vXR z1|eTC*(OZ0s`B;5iKGastSk|K`-i)3LeC**zqsk-b2qiFHY46{;qK)xyxD?o#XmL7 zo;Aj&$JE|9@7>=_>Ok-b>sU#&S$8jy=rxjNdZ0PIaW5l-=ns9{i`))aT!IlV&wMnA0U*6_4-@$aRt3it$I25H{U)t8@{5o zI62@X&$8fmbk{wJyw7^~KY-V#ws2$TDBG=7ozh1kL+{$6j+|7UyM_gJA^Fx{aS_a3l9Alx>q;aY`>Ln!Kt&mgQ9Uy7`V_G?pC>Z%?*+<$|31iaszU|PR- z2-(A}(A%1D;!)+xB$=rX&qM8$Ryv0Ttmq57crbcboUK}q4*Lf7GtjJTlj zxQ^^bT^@%y3E4C811$)%EdnKl5rDk-fDF3ZCmI+MnLjn_-AYeA&CM{?<-GR|^%$X} zfia&iBcn53FZbA&Z3l;Izsph6uVb>O&AZRkB7{!1hE zUK#(o>@&-W{^MUd1|q>nA(q(e+Z23*R-@IPmAZFM`alXJ6JKBod&upmdJM{?=?}og zDLq*ZqqR1u>3T#5HCLdXy4kL!b>6U2-3F~=O?glON zt5toLv^@|Ub|XtAV(yirS@{PUy8Rl{r09|WZTBH@j39e04#N;23>?*$;hhR{#v`GhU1I%t@v z_T9wCW}?R6D!MkF`_ZZzcY#7Q(gS zb!52gh$M0L&s(Q^lXgR&7Z7^ASF|AIIcfDoI4h^E3wbr;TTK%|4o%_x`kGFo&mY`x zF!hTB=q>o;?74I|%EB@j9xh7i&+4lsKOHKy>u=8pY5musN4WtrMyeEn%_;?sDEMB1 zAY%!~Rc2c-`oSLZ!g68LtI%=*4i@-j?BU=9jflUEn`}T}cyp z5llkMAGK5dCeD7#+|jbc^FF>ClI?;7`W%gDr;#~+%Q3NUM2RxohzyEpZKU0Rq6LEH zE|632jHPCBh9`{ROfZR9jtCZRMbs+aqxLM z|L6FjohcVNZaO+~wmS<TIwvqI4e2qQf+;MHq zoI*CCWxa9O(W!%|x`Z!jTXHQPgX{rYUvaW1J#~Za%8%qn)isAx%@fb1Kh9sYde$`G zsxoXJIDPAr8~5e(KbBe0{^2DsAL)Qbs0Owzb!hF;8p87X#3B{FrCk`z-oAfxPl;S= zGFoe7ub5CQ=a-OgkY?)ib$=A5C|Wa!yZqC*z1Ebu(}+f3(MqpsJ(6BcIsfiuA6Gw4 z-d>d7&Z`Y?Y)4050=E@)k((y2N7*78J?-y&$TD%MrQd|_RjHWF@`xwQjvQU25Gv$< zXLcs6@!8lNdzgRnVgC%qmT+{20ln^xzCJ=lfN_Zt-2FO`z*FfxI?{OiQ4zpT-jll~ zhxGYgHkvP>mOA6)E>ublFUL*JbxK$v)7Zi*ovoNH zwUt9>kNk8;wYAwcsOJ_V|yE>19?qD|945m|^!z1szEc|Y_>(G1|9KIX7 zoOoKK3J52r|9k5wU%kc|*1X>kP=?jgGR>s+8r36|O2|(>$}ZtjV=uqO<`mxD-_o{yf@>XFxNm&4a56Fs?_jUxI%L7kGkUA}CA`m`I97tf$9<+V5`QexM0 zx2hL|=hlLdN-MzAUdU&UUqZtJA^BH4M(H0eG40s|Eq_$R)YJL577e>K{L~ssnWpCW z&wFRZbh}ob?3*M;^MJlU+NYqN4*6}&;bQr(*>cE^k_;6E2Q@hctAfW7XEynK^;oc( zTg~JP*NgK9>5k(oAWObdmiaim>+-uAx8dnP(kdVkcdqk@1lIdLq8?~mXjxQ-_FK{+ zuV%IqdROh&tV|dG7X*!z=JP2SKS$}?Hc83p!e{7L!DX{lDnTx{gjOT%vs)j6NxKm@ z?-XI<0lY(CLl2>HtGt$?us(fkw<4_&qotoKAF{5ss6-QCOQL_oL+Uox~c>?i*kn3+jS)JF8reNou6mR_oRryFHhEt-KDC3Jz{ zdBY}yD@vC%VwOwPmqB8i{G%c-%&H{dM7wV=9{g%GFJ>Q?AIY6#7kA0v|p@QRYdd zjXtUb>v-K8S9t~(@o={yD7T!)Ss)}cbP$v!{u!BP;?lWHbUc2YdX3|gMr9XG*PsHT zi!lYCWs~2!nzS8smn@k0cR0_2(IpBZ`4mz;8sTfqMeZN$T&m&U^q7dy(a>*o){-aF z@gMdZ4l%#AYbu*XG+GF2nbJE1@o&9a6D44E(HEsU`6O-hGPp`S)WcigvdWlJ>fQPQ zGTUwcMbl?VffX(-X+{&v*4YJZ{qNI9?-WW#;GlZu2@_~K%vD?6(O_^fVmdR!_Ti9p z8lH+6cJ3*b^{tiST_0yC_@R6KGlSK(pODLt_3@CCc+xHa`Z#8|w7T#9rdzT3kQ8QpPuk7-(F4Xr4XzK3AE( zMGjCi)OX)4ymQPo8>PU@Vr+V3uZQRc6mz+b28S^8cgyZ3X%sG)vUb7Bz|bXGZe6tv zpIya@14#Ue^8oML`zo1J;+>kkqZ(4Nn2`s(C!_U( z^{EA0QkZ@WLx!b-%yM#ogd@`k)X%A4A@R99Nye2SPC~b)ubZoZj%?@kND67$3r@8D z>7a|GK08TI_=N?1D&>j`5y&L@Q{99{%ULlKIuT@}O0FBMq8>ciy=3a@{F zWupjWPTZSzjpQFZf9fPohymcD-(H!wEUnq+NQ32;|6pKoh;B8Ml&JawS8%G>w zNTT}`8b^ZPAK~M<6@M7{fdEgH08}MzRF%nzlRGjc9=!;Snr>HBsy*97MrBQ59JHn= zj8#pd>{}{2ic%kJ>EtUa4aTKUayA}MM7iixK=FY()6sfFuZ`waB{R4Sr5A^*r;-BS zoA{1EkBoiVosE8Rov#!4xJN}*u%g3)q|)8vcV}B7%1I>oFXs@4Gh2BF-Yv^{tIy*& zePtZR3Fty#6jr|a0hZuVNFK=f?jCCA@U`FNL)<278TY2F)VC7%Tf5M29RZvRaash& z^cDzD8uu5$rDwxtSJquV)F{BsRBcG7LOD`giNXM*0ZU8(1>o9Y>pL@CBo9jIfAp61 zDtM(?^gBh*x%+*3v!-)L9B%`;q{mkDhL-9GPFTESxvGZu^*=zz8*b%%_AfMo=Vd=m z3w5#NGQ-vA;!*BYyR&+}3LSGu$Cm3b^#8&b^0(U3yJ`Ets^;NE-9tW7jpyPG-DURP zV)Nd__flX@X#t>C;P`6Vw>M6Qk_|Eih{P`{UCdWRS(L4AB`xRV86}GLs@~kTgF2^p z^hvB?7Yi8f8QeGY!EJR8q1x4U&0|f=-u)(V{0v9f<;&^G0|Vi$Xkn}90$vo#*ZaNZ zO)Z>W5+1)}@5r*KKfkmyz+h9zd$`mLnK4W#g{7F7tAf;PTr7@3ffso}S5qXT_T~|J z05POxy^tHkw)e)Y(wM|j zy*kJX<`?5_oQe+3BT;?LfHwz8<;}F&;6D~JY`%M(K;BvEvdfpxyieTpQYn~yI_)Kt zfHX@-J~wTJ0gXzfs|HdGh3=KClsS>xpV_;%avq-#zoe_^??^9Zaa4kHE9hT$BF+)Q z!m81k6NmimAkQsTeBg8@*sE%};keSMiAJNs?H7L*92>?&ntD;;3J6cHI1hQ5=WloD z80(scziMeWGb$V(OA%s%n-RnR=QK)cgj7HHJ2~`&bASDhNJ~3B4&?0_VwGE9uF7bB zXWW6i;ebG)y5&KQfg}?ncJ1_>JS|o3Sa2^vV4drU+I%!vpifBKk`HgtgmHuWM&jAJuQL1RYtnt-q5;|JpJ+q}O@1_mNFG`v< z$UhRD39x_)Exr-c@xad_;O)vtK#2v5OF55Bu9~Elja(9Hsx2C zlitW~qYf_5XP2Ck-SF;+&6evrvfb5e^w8g}xEdk-H9D-cEovoo!s@H9>GHz<)5?X- zA55=$2{*e*=3pT0iKt^@b#`NjB$Zg>U07Nl#O4(Vw1z|`62x`ham)cDY2@T91>b*) zqQg=(loj3HNR@2jx!1gZ7M>L6d>6-J{`$j1sJ;uN(9c3G?cYxq(viWhoHiFn{g>i9 z1TMwk6?3HL;6d5<#&W|QPCC%e!BP+`#CmT$W7b|ZKZ$RRW*0{thL^QPcsRz1Nx@{> zD;Yww_6IljK3nhWyv!>al7jkxP1mc$0r={I#0yMW%8Pqx zVo6a_<)gtWu0%Go?^W@VQ}{NOx|RIbsg*q8n}{$6ox$$i_o0G#XdUQqMo z(zg_@R@UlabqoBJRI+D6B0k=nL2xBs?lA$byYE%`53rc7!X=@A_FeqHD^Yv_Z0WCz z(Xe2rwxfM#{S@qO`GCOp@^fNQe;pDtIx^2XS&)TU!Hjx!f#LtXZHX+#Rby;FAS?(| zk1vav=7SBt!7TH0Py?_!0~k#nF4=-3#8C;l9xp!LWkak3v4dsIgtV^C-uC`njwjHM zt`O7(lMg9)htkZb(%#sn`uhHC6c8%uN_(}t#eWs47ztxd5M%o3kX1(C&&#$%b z0%j>MBeA%e1U66S62V$Brv6c`kUvM0=`I0I87;p~a}%>LVnxOJ&t;^z6MDAZlUL<0 z{)xHdDmWZaFQiojNVnbE*GG|jQ&yfM795d0#S!;vbG>by>!w+&oOd{X{kp7}SAz|2 zSWFbnSVbnYV9p+r_`ThCM&2i3e0(mY$&zv66q))Cx-U#H-$@=5XIxx}N4msj8_wsM zGz+e?pN@vf*}vgYSu155Ad)8+?VrhEt4B|wcv-TB?1-r2;#5>^CoW6dEm)e>{!k>v zeEE^lCf|vvC@;w6h*oaoZ_F-~<=DN;g)-eZwpFf~QyXmmX3kPjTfMFYcIdA70+UH4 zVRe^LN(qEonP_9-7rk^z_p#7b|k@B=jp986A>a z(<22+x_cQ`eO3y*9afK-J7;3NDUaq5m(lvMj&)S~7RL4CSqWv9EHXR+>o-*pd8U3WGyccZ3ImORQPLVmYH7=*>RzRkF7?0x6c!i_w(ivX%IN;!o z?8!-2DsFaNP0kW1yY8nW9RYa4Of?XzrhI!p^t+W3j)iC0K3g*h6H`LVPi0-{Hg5Vb z^2IO5A3ExYt+HEL8l{G}j0N%%;ikIY;Td#M?gO1Daf8&HV1?5o-dw?>F$cwrz+e0M z3N_+6R$7YUX_cfA+2c_1Jao@(EkES^P?}PUxL;;&t$e@>thNjdg-=3J6cm`@+QoDs zG{twX=GChZ`kFR1(6V6ymtqD99bS6|D$rl7p>3;OF^s$Y?e^r3-2Esu73I5qS_{YqTT7-4rUA*a_*~$o6s(hBhaDJ z&J+k1rtbOW;KX|Ek$;Pcnhe;JF|yJN@OF_2G~#oh zJh+frB10gOKU1)M%U>~;WrcH`O;zKwEx64Gr>?i)`qApUNj;cT(pT{?T7jTE2nKLW4Ke zc8RaKM;yhbh&@-H9xer?G~nXZ0&tyPVXRa45ys5;P{)u|?aq_P>2m4J)h{F*Yo>CG zdqAnI0^CuQ0`VOmg1z>T0=j37LbvTfE zKSIXfonstTM-tJr+jje`5};p*Bg}Eg=fe6~AZDNCwCLK7^R`vD>5iI=~?t;T67?W*pKevih0X^ApF=@OD|^YOw!L z)RE(nqwnu`M_OZz?425|#bY;biLhTXdlnt(aI|CY=i4;So!G|ZV0OgR{L0)=kBQR< z8iQxFKw6u_{I z@q%IB_7voSW~&=AL_3U~Q!+$eJ3p(o-WiEoD|9e*Amw;~F6vY}S&&tXLb$l=K@DZe zQM^1hEi;Ni6|W_-$ntS>5`!qSt$JU0F_L|f^AUL)71nd~Yu2l~0B{raoJ zvz}<1WI44d-e;tss9-Jqdh0S{`19T1cR*vt6sDzq9r(^v`T3B=LFs=*`QyIGa&Pgtcw{n`O zdXz7=#4z3s-0PljHI0V?iAJqm4i&@PW)-Fg*?Ds`?Kvql#K=qUc%u4J~%BGOMFB;X@U3q_m3?5s8?R^n~kzPaff(=g?o-#U>5=>Az`tcs4)h27Rj;8~OS-TH11_q~K|<`)!5LSH3E>n@gp@ zb!u&^U8>!KX?SK%%|C$cf%uQwX8|DmYlD$2y0~6+dJ*ngfkZ?Cly_%PF5)_K?qj#5 zQuHt9Jpu@~_f}z&h3+u1xs>Snf;c(3>ZoLrrq4okK3QwWtW~pCJC&lBikm8L^J!*k zqMP1cJWAnv|Dn`OrH0p7`FQwOjlYn=3m660f9W-qqV#E}X9rU)6fd`+>oKyc#8Qc? zgx)D|@V<`X$9G(8YK$bqvI{DAXZrg*WGODqHlMcr?TyOYR!ui7Fw76#Q@ti;iLDrN z4R4y+4~n=J=4sAmqF1@?f7Z&5+_--d<~;CKugl#hqShNHwyy&?tQ0qj-?PVzWbA5=Pb=vGD9#m7qq4Uh!pV;^Q^jpV3!+yW2 zDPth>1JGVfy>o92&VBA>MO*4)>QPLJ;n>Q=p|i$3 zQzc%Do{ zxuOu4^I^90_8{rZS)Iw2R~b5!f8G)alb{0+mFX zCf(%tzLk}->^$_S=w;Ye(@S^GN%CeQ+nUfT_Q*=&TlD%tU;syfhm@C8$h7!F9HhwL zN5IEa_w-`pa?4`afT^e6s9HJ&*z&R>MxE>2hDI=ym8*$Ww{wO8G$w-8xX6}Tpq+k{5-Oa z#wc|evagE4&`vcs>t=XK+hENL2S>7v$EVjci;@>g^^xCx@}EU^SaHRG7(Y{-yf{{c za7pMrZjOY0C}`-J@@6?vBF&;*$WBl+Xj{vBNs4h z4M)@dG8OE!2Om?^mP*a<9Voc4WkNI4(-JCOaWEN2 zOdbT23s6)lJNU*iDIw7&O;zJJ)w6Xg@9%w*XU$mkyOi*>Yh#U&d$zH1-dR#zARA;ruK(?QGtsE1!=VP}-h8ce_G9_fOyMCn^HoZs zH*?ng7khF?_-X2rLfGqwLY6}5+nM-vpJVRj zqi(OmIBmvuIe+ikk2Vgb2dBygb1#C4MLFUN7JvRw|6-Zk3uap|z6+aCAD#*5ug|XH zqcgrRT13UVv!uh_=xphNz0JluPoC<$1*FC}%4az*^;wIrs;k+`!5M6d$z3lmX}YNP zgbzfLMD=VGqSbk^+Ua3fOkH%zYE+`rdlgbiv-mq9t0h#eP6+5-hNjn1EEY&T@`a0- zgvtPap((vGX}ynzsc%J~Ng!VY6#s`40?C`ZMIIDVHY~vrKx;L`m{*#6+)e?=yBaxqL>T)y=vv4RTNv z&-V1aS}RlvmFLR#GvyNi;DeG5Xtft%V^1>gb&!C77K2+Ut!sv0a`?KshPza>?NU8C zG#$b-znlM?w|56ZXpHLw`90twMPJQrd0um)$v)F#jUV>t^`*2vQ<~V=f)QuyL_I*- z59xbixUZ9{B2JgwMG?l3A|1(o#lZKY@nG8HjhQS~%hk0z~nKoSz7+~K39sjK11jH1ZvrrFR zH+`=thpJJNg!SNjkN3e4ouvQ=oCMH+b>#9nte8qaQxagFcp>_UuV$Zviv=S*F#jdk zordA{J3~fW)6ta{Yw1W=DjK=#{Vk7BZV?4oR@p_T@P_qzRkugx7sKDNuc^kv&M zGt?cY6d`V4e=P*)6yg}Ev}yIWv2j>*-ZytZ@ijOvYJ7J^`+|Xym!b50t#3G}rw90w zeP0x4PnZ>%rsv9aCR5d#cx9Cd*iJggx~m#4mkHqA53=AeYHj=}FQ)RiC&B#DPVIP? zIsq@zYll*iaY7bEpcy#7HQG@tc;Rq!_9_JnES2|A;!5YTEJg zwIPdy3Pw>@Z|-x&FzLUXTt2r%Gj>$`)cPLek$Fkw=?QGowq+k)Zar=FKl)acFBmZBA;3Maw_~|B7{0OZC=gK4+g1uDKR1Mn*Lmw9IND3-}QOe{G zeeS%zr-$xRHs_0SPsh`BxhqWH2XCXxg~h^h{W*I*b}q8YG?uoYSHOLseX~D#;!wom z^-QOm`XZHl8o%t;M{P?Q+`Z58_UYq?^GlT=Z#@o6aS)v|5r8aJGHJkDXkRnSx>p(zr3G-Snu4^g*gO@9F(bKhCfgPUad81USgHh=7x zV}P4g;JVC>zkI5grp=W0lYBWsMoH+mWhPF)AhM%n>F^>c) z%?x`v5+dDEZ_>31+1J$>`m0vPhNazc8Q(@8l!_B9XP1xO7F@XB)Nb<+fLKrFkk}ZH zGO%ZJ(8uAtq0GMz zF7S}Gkv!j#&Y{#zhB0PF*SF{YIH1EWfvJrr zq6>s-e$?NjBWEm6K@9CS$X)g?{A}tOJmlv2tlJtO0sl`})@B8HW}I-{&1@~A#?#CX zt53HL2P^ySPU}U{!rloBP&4as^Y48r8?o>EMsF_q+-<1gYz=%9+^doj>YAPDOKylf z&3ZYQO_#R|qK#LuR|P3!zhl@vD47|Es34f3I~;u`LXZ4KoJ+OJ)V$$43XX$sg?u?& zw6KG&*v{6SNZaKU;{A7Lb)FE=%5(x92~AG>o1JOj8t!bC)$_!?W`N1!1{14H~6Sc%qn%gJ`$jE|Ohx^eh z!w%PFDSGHDx;SY$YmaZ6i!xpBUW7ddAECDp+~C3Vlp5hCdJqB^Q+iJ%viC0j1npk27>Dukc<`Lwzx?OD2LP zOg?xOD|nWs1(1k9wp5ZuC+~; z)@dP$#Q@-_pEC|pD~8rfor-4EZGiQL-O~F00f?%m8hOj7>wlL zSF)t(?SWH4#XK2ae_Q9ukj2BFY@_YJ^Viv8)Nvr)O-ih9#8s0NdS@8?M;I4+y)Dd! zw%t2DfJ=okF$xo4{vGbypaUmM#iJTldE9oaqTtqtdt46u%225iR12;Q3tI&DI=`n+XjO4}nEEWWg47B-$&?@SW z)AmmNa@f)eVu5WxFxhfoh;65B3rQKbo`5+YB@vyFuZP(@%!0&-jjU8SE>KsQPdn4S zU__BXm?pusDBQAXxKa;~kF1emIC?Hs7L#RXy!SllDwqAyxigW%K zp9F8A`ycf{OF~R`_ABcd@`%yClf}G!;a@$~CcIZ<_{Pl^x+NtLp+Bjlbm0&3Y3)N1 zpVZE!Lo;EoFj`FxG&>SR!s`t`ex!lYIJwh}$3{KwM7;o%=(|Z+IlQtkUb7GL|3ZPA z`ZxeB`#%7ZKyAN06XQa@&SWGX4MV?u-1%o(=2>8{l|31jHa%}&GQG>PtJF!*8mToV zt0tdVZIw9x0KP*@Ofo}-DM&cMQj>#@{(ZF3)64$mxO%HxrB)g$qcni*X$fqG@Deht z_UG3_Ut3ptrog7bs#}%0by!kl$*8{1#o{EbTQ{r@co`pEeCQWmt?r`9r$VmPq*-t% zbZHQ35@x(HCDrc;CmqPh9sISGd1kdLQW5xy#5Xuob)M>al}M#jD03q>C5ahJt|hk= z(wFd$yn7sad5wGbYBU>S-$S%{_34Q56qLZi9${_}Rh)Ji`FZFNyZYH~#)(IuqBFH6 zQscVA^V)qNOHpu?I04UL`D)MhQtS1Gs*izLs~cg&w=J0yB)YAy7XV9T2a%DE9roBC)hNHYHbx#dh^Ip@$>ftK8l9HVSdNd zuPd_cNHuG&GA@|3%Cw|B%A9gawiT$PhK@e!fh1ra0My={O`S8OQ>YgGO{s6z9(E`0 z)>M+e2_Fx|$T`(vdUV&Ow+!pK`n@u?rea8yJ-LWV3Ivobv5-L-JdQc-t3K4Z&70DZ zU5`kaB1Iwho^hwpGNlwCrC3gQ!NzrkW0~2F4wP|``TaJlONVc{_7HMpDvWi>M$Nl} zY$Z9t9F9&-qw)GXHWk#TQ%G4wN()hj8r+EPCBVG);~2@+tRPP%9N>%DKb1a97;Gz0RI3MduqsZ zc}$pXNQwG=Yt-r2H``O;&8-TQ)E4S(%0noMq?Dy$ZITHj0p;n9Z@R4NyLR+yby{49 z%o?+@9C>eozYBg)lYz=f@2LH4R9KU(nRS<6g+5!GlL6*kNM$9%wMVuACybvhUOi1^ zm0I(ODe)UXNGanZAo=s>qZ=ohkpjfU3JI5l6zz)NIVB+T^wNQyXot*JvHj8fw4ip< z=zK>qM{RkPj5|CT}G{2wuS2C`jl$TN>s?ImF|$8DP@GW{CEU;kDr#Lm*-ZgHVwV@ ztb{5^OTm!Z6cLpx&z|_zKh;{jE2(z%YVD0Ws|F=90gB5l#@Jk1!6YkpDjcMIIw=%^ z$}cu4JbvT7k=OWLSE@;gYD7difdR*xlD)1eDeuaO?TtM{ycnrnFWNQNBm3%797E`N zBf$idpRdnc(Qc@Q`kPC34An+T<0+XcZ9ytICm;ZReY^M4YpU6~ztU71yHyo8PMoAI zKrEG|w2%o`m?s^+nq6zZBiv(EYE%*@Pb$~_r)ABK@4qU$F>Z+IZMjKa)qe>+@#pzz zwr5@2cItB666wrUJV4rEd(ujVK*mTvJ#%}i)+Na<=%rSz$CDD3F=2;xyi&ZRZc$Qm zkTK`;)77InhA&E>edk{A=bzpv<-(kU@RQH$tdpA_jM33`;&gJgX!x}E=T$#apkvMvmJqzWRUK;Xivkf`1)Q7G0f6 z-E6VGxgFZ8E=!E!q#^c$jHh;78OnZ`^7`nEq6Phr5T$9D`kMuE5{;fBzt7W5ea7%& z(yLnlBeH@)#>D9h)jD))gAg5kv`u*nbu1C_DGA2q50LZpH4#X=Sh<2pfjp!~vY0XGr5Fom6P=%4M0dkk^Q&8QqegKR$a5Y7Z*!`xH?j z(XN?N1i5Q&6HY=%VOUTqan)@(NC8+Q%<90t?)g@w3726*Ze+QW8HCDTIA|%uw<`4< z_R|GxsrB1lG%tRnP^3TOEtexhe|pwN3X;&qQ;eL0z|NS`8;AlW$RmB7NCe)i*C@2> zlA&*tb;D+ABflP9Klj^;m$}rXAvsP8Ksd)5Y3UDCuerCyE&#I{k4mV?DUmTz%1m~! zFhM!nlbuVcKGjj+P^VU^^Z`d(jwKB=*d8H4QqUCd7{*dZry57ouW8G2vv*S{FqwT4 zs}hTCts7Pj0PcK&?Z$!2I=OcmVGwE{9l)dZkQ{qNumK>Nb0-Q=Byg`y4D2hyPDv`k z-Sg2q`$w4{`$NT2fboqjoVFFnz+XT2^3b@ojinBtS|3S{BfXX*;3qGrL3&s zLuwKDYf}N>+7j!DLqm|P;2w4Hloh&#rCWnBJ{YapK8FBO-uIM&os9scnmb6q!gtD01KH;2g^Q( zRn753>a|{z9xa^InUq(lO}9^Z^`R?_vAC^EDoH0l2=e=*R(Dn@mmT~q$0*dc#4!bL zJk!d@fan8e(~*S&F^`rt4Y_U}q|cF2X5AHJHe*NeTy?FDw)jUSIsOy1Ao+fJU@P~l z;v0#ca9Gq{#4hB|p!6%!oT|aRXJ#v?Gs; z$o~K>LM|?^Md{_WZi|7bQ!5f;AiS1a`1j+IQZh--Mh84;1^3jq8qhZA*Ub zx1`Xj@Px`+$=Kv)F}KYB0G_G3{{UGk^!KVB=^~j}EW%5UE+cB#!;4T#6rb-XjPN{$ ztd5^u=&p3xH!XC=jO$8uGLsZxKLUzD8S^6_nA9~kx4xtq74O7~x9pwK#$9FBtjI`P zN()H^UwC=<)Ssz6Gji>x(__(PB9|TnRkqU!1SdRTXFO}-x~Ff$r~B;4b!dBB2wM+A zSaAvCE-T^T7$D^F=bdY*b$ZpdpQ)mx^tKv{8{a+ZOJ%l{g#oi_hyw)Y>#Hd>jgceT zmwY94)O!YWSf*5&QE0)&zYWL{x`dX=_k$uO4rPCsN z(vd8-SW9h<%Sgca4td9)IP}(r%CAx!!9{mr+q&1IA#i=4s&+3=;?kX{ z{h{`(sO&_2x0ba08;M%g*aMI`$8B2Buen_|wrO!=(qvV=+K{lB2$O~$c`7I^f_OM3 zC-Kxfsy5x}LX`%aN4O%(q(y|xW*V0%wu&7o&xw*pmzmR_v%CwAt3tccbO<#FDQ|RI zf4nsyprtC@PSQ#Ol$_+?Xez9wT&NMX>0?#Bz|-1q+A8b0x~}WA8kI)cWtfSNCIEkg zxHwi1pV#H8{>tl3>k9m}+^F4kNf1*}YsPEd55|%}BmVwcp8HYQ^R5o8N2*))wcY z^R+5~A%v)Ml;^fjrgN%fjccj4AL>MpJ4b}N#3=2@DT?AUlnmsYV~<|ijNZ>Bii8L( zv|3AQAPzw!{oLUC>DsGPsl>RXwue}hm@*dAZZy)A7LmXp{Kr3zrM(ca=v`;(b2Qtw z=4Q);hE(b*541>Ifcz*Myvfdk5beUh_G?{};q_*vOhnhyN0&@e*8$c3@5M*)VD`>H z{05IJvZGXb(yqSqh-ySQ%61!#tRYHsX$bF)r_(y;x3YDGP+w3wi4K;xB-AO97alC8 z)DRv|hyqlf_=Y&qQFvQ-WzK4Klu~E5!;)L~YGTg)p$w%2t)d1}rFo|(gYwg?L{m4szqHhBg_@qawDlw90B#sZAUJQ4#OPqJB?ZP9Uiw{wC|fvQ?5s9 zct~aBgrTVEa1r3_;O6l*s3dikVPKF3@a66|jsSl-GIlz^m#=OZ{IgZ=NG zrWd`taQ^^l?h1SwRLM=&B(Wi>>^PJ#$`FycDp0}Cd<`|YQLk+Wf7p_z$gQ~^spFT#TT~JG^ zw&q~vfYveRyKw&irk2iJ342?FD$P^3)zPHQkw{Dmc@zOaO;d%I+uYUl|% z6B}44*`IDoGzHRRDyq{DL)?;-I)J35M>r?bu;)>G$+~; z1(-_O7Iu=9AH)-_n6T);fKqu0$>`RtLXX#~!%U?~f|)P)WlJi;H)k0<5&`nm)~#gR z@w%-@sEJ@vC#5f?4JpXB28M8TD>YOffeY|GPwwDR!WLVD#qpTiB+b`Y9$&|iEX`(lBUWP z@osO(5sprmT5ZOUchsM#G~|}kFD^yCn zIrY@aH0dqNFEY==ke3nN1m_-E?ar<%r>%23b4?KiwJG!>B3)*v>#0O}OCz#L$39pG zRX?-6ixSMO(vwo4PHLl7G9IVCDk1jUN>iVSIXiQmO?r`Xxl)G)+NRtrIaZSyqMB^h zTlaWJ9I3?|9G@iToN2xq3tLCT^Zuaa2G`8Et@`}hoeGmSqaE61LStdm7<@$>1Ld52 zv#x)8Ro!(LX|+mI*JCo-eo6lTQ=HffcM9PtAY?0?bN*WBA5UV;Zq%kGWqLisH7Frf z2^N45YRfW|xMR`#d%ZMrAh#$7$cR-TK&w!lCs-_ zox>$KK1Vu32c))ua+vC9ts-1CmsxePt?631S98vAdHH;_i>lShbUF+NBFS6`&Q56) zX13ntM`Jv%=sfjW-W@}oM}Y!mwRK9YIK-Dr5SJXbsmKWfBjL)(&jYt7OzN)2QN+bp zn$&EK%XR*hSr0KeFHj>%6GBwrcxP}Nrw7PqC-FK*N9pAT*8$p90-x{ft88-HI9o|0 z7zBCpdHQOTs`b+DpxV_soh9*f$!)mh^h$<*)L&Ya;-LvZ#~cg{{;yvY zh!X9zCZ93l+s>(#q&DC8_hSP&J@mgP;b2#caX@NIpwtsTXxkxfT52w&b^_+m1nRAxX}J#nxB2x#&iIsD{l!uF8cWM zt}S7*aHS6F^wN(NK}m6c7##fZ>7(eGy%DLrZWhD;^q9c*rB4F`q3`e!|oi zE1t}kY-!Sr3UgAu=0udX7D5q%q>sZ^6+YwX&9!jQX0Gv=^KhSjqRl);+FW78sl^oo z^*Q6P8uauvDxWVi$YfV@S_=4z_}iCRM1rDsIP|M3<6f;T}pDRyjCVZ>Mb|$$yu} z#C?re;suAeg3NhRI%{N1t=8v3sV%80dK+x5#fQs^*f#)F22MHj)VB4zrPX?)Kbh7%5uOQ9Py-_b`TQk1zD7llN~#?g7Ct{5r*v5TT!7JLZc+PuzgQ82LojCshM6?HJzVIb1D=s{9l`Qh2bN>K* zX`81p%NdsDaKnUOH3)4zYf#@5KiKG4nwww$ch? z;iW7fWbnWJ29(p4OWD9LafS6-iOSaTE{?rfber3&wQ38}<}lq*#)SN6#0L_jp?gbX zIqnHK)VrV&7t_}l9k`Foa%_=ASYZDEvGDSuFjYIrG6ZpxGZCq0$G9O?L4RBurjvgbPA zQU`Hcw{P~Ur5ZIgOl)D;| z!UJf1)UDFqM*#LDbLFGM_L4w$6>`a!0x6Li1O@xT5%G8_QQ=1&zGU&CE22FtrS`2MSB!0RdCwowTknBV8A~LhKpADu^>X5Zy1gHayf#;}A z`8C$6G^iVbN*0$2&@q+nz7qprd`)mD^{N!l|Iz>5r)>_#u78!@u2k#)Fi!vYEQ4Na@1t0EJ>s|w*glPD8>}8 zknhgAH%q(dbrdw1)p(LzNevK}QVN!P05i^VF^>A@U$O5`);hn`8baoHuEc=#Iz2(L zwY7z)geVMlJahBWk^YTqb*NN`Q=6sIq0?TBN}vKCd^Sc`yXVgzFP@v@C@G^7NslNgyjJ9Dp)1e7yAPtGAsA0sF0yD=s@&iko=zT>KqST$KF(!0s zjCqbl3fRNQLIOza2ssCg@-d=KRFAm0-(g?^$@f?~mm8%v4O-=z-@LI7IdLs#{i=xg zQa-2o>y~xisC9$dmiCaUY`VnR3I+D))P`n(+c)yxvI}pXbY=T>I@}^kb)5FD?l8KkHC+Y%U)m9 zZ)G0?J*TJFTLN8sj=cf)s=qoB)HswYu6+5{`sE@eN}X6GPeVET$<7G!*GamQC`h&? zE-DL7U;@UwOD#w@|&(mFC zyaMRfA}I=UdZI*Wva^B}wJ8MtVCrC4?3|ugHl$Jth(S|HFq+86!atUkX*>cV_<5BT#nf7lM|wbR=n<;c z{0oY+%OyyC*3=S^l#byj;PLW0oL<)(HEx;LB-g2uqBC1&Qxl>G47O@6qDYkDn()Ji1c8q%cE)`5uHm++HeDvD)Y@FDfv6E9 z#7@P8DOnsOk}-jt_Uv`8N!6qXEg+>}H<`_dvEPr>HYK3AxQ;?gX#^5ddH6~7#xbvR ztb3-P)jBOv=bc5jJcrtB9my?^gs0{41FIvb9W}1mHzU$&w9txL6l4X&bHqz+pNIlR ze7~lvd0j!QO{!6vc4J@JI(t4%b=ukKE1TV)Gnq~ z>veieXi||9*Qd`!g}I;Jl;;IF9-w@__MTnsKRH5?P;EYD1Cdw^Z@M6V5`A5AO0YjN?7EVNo5n>lF)<71b)2Ol631 z<3mi??FR@`e97E-I42+ZHC}r;Tahh?>9D8TQfXDHoOc~&c$gg+3HZ05XJO!+9C4yP z-?!+sJ8p_9)OfW=nT*&E%497^;T)5JoM`-eOEOrMnfW z4K$XMCA1I{=t%V*e=SREH&rf~F;Hf!#C;K6m{`Ve(nrKc&l+4Ch{_PucqwTJPSho& zZAcz~4%!}lrTUd@Sj$CbWkPKwP>`y0i7?wlfa^|Uc29KoBU+dDA7)jNl>&j>wp!{P zy)H!P#n=3Jl;c@>2xydu_~Rclj@pw@YcTFQ3<|9|ZY~VgL(CUaQmv=9LG7VCrk>QD zIlg+2O^HKYR#f-tUu2`+83}B#l@%$)6@0gG+ZfSDV^LsRmW3vdOPrdVSWNf{kd>u- z@JT$RG@g>QalDG7P9hY*(# zcqv%OKZdk5OOD*2`dV!&Py00N8(Ti97~@J(N3OOdzY_xh=OYK{twX-}gE4en5=8kB zCJc4>EW<>1TnkuAP!jUH9FIJ0^4Eye)HaC`+HoweB~B1PT66Lphn93V3fgA$>VarM zn(OzJdw{9P3)~%SCDp4Zoa`Y<yY z>O1JB#aH<=c#FncBYR4{7#9A}#;OwiqvRAqmo_^Qki>rtqTvIdhd4fJC-Kz~ivsL% zC@8h7DhmNa5Y~A7wbk0MUzm~C71&)}v|`+Qj6cu`ZN=p=?$5p33({V_y|x zU84kA)q)RW?rY~=V(B+p2UDw6I%PuJk3&Rcl{8iHD3YZN5TVBaAN<<1t1LyLThn|g z4ANq>%GdA9Z6z%n4o*iSCs|gi?ZgSSwz4kCoKcTq-VWihY1UMtakN5SbfK=CUJeow zY1RoIUhJ>wuAW(4S*b>ecGhK9o4Te_;|HM9qsH)?k^+WQk^v+Dc_TO&)aHxUcWPZ2 zs$M9!BdV_#Ar$5mr6taIIoqD+8P?ZSl{i!P2cq+Ol0K&+Pfss4T|!N#S;~k3A{vfQ zr*Dzcuj~crq$DoStfVY_DpXYfeF!+$Q)(Sts8>2|ORWJCg*oZZM16)gtz`u`3T;S9 zIRhs>xgE5cS5@jZ7f2OWfgD^yMOkb|67q#cXd`$Is~jAT=O1`#-r6dAf(|k)vd?Hr zx7bFC?WOFme>rs0<;I8<;d&#Z!*$dEG6sJy$4t|1ew|FM$BzoqslutE2fQicAtfd_ zWGJ(f#&&`T`JE7bQS0h$ev;6tj8Ryrs=BWU_%A4k&3)A<6#>q8$F8HZS5mD?qRpY( ztR{-4p}yk@V5p#8Bi(j~;bv4wekjwWvUy zF`v}R&A&*d$(2yI>V?UyF!+GCGU6RPgbbgFJo=B8s84Du67=?hkmRaeA&r*g$0H@S z-T2*3(X^0x$qMosPVZisOhU!siiGFv4x?f<7xtlQ90w~qc+y*i#HXuMXJoKR6X)k z7M*aR?#faURrww@8T)yg5}7hvt8%F1da5bgUL?4LxZ+X|&=qI#)@emyxhU=tW&D?m z_>Oc-3Kc5btP&C!3DYZ*9mDCuLWmoW9nO1e)vfd~q^W8_;X^pV>^p;_ zpWEWzu29*qrK&QdDw_e}Da0>$WT{0%9-weD@;VYaOJPy^zkN)9sCPRyO(ve#j^#zh zNZzrMl#SeW16k*`>`>>-jV`UOpw-1OG}*1qgBn7U7FwdOYwZuZvGvrWqjqHUsQ|Z5C-nwBy!bNf1{a zp&9n4=iJuIp!nF%c7J;qJ+s?O(-kc|^NQRS<_eN~XV+EDq0>n=rRMbcZ#MNRA_$~1 zlgmZS7YQCj5HX)qs~JUmi6?e>&Z%fcKNGoX%MrF6&!m79k^+*Uf(XwV9y*)sG1CsF zR$Z&P7EKOw#Hr=d-YuoW>QFe(CpsXHDhF72Iti-{<{FP;ex_9Y9rj$Xx)%E7P${BC zU1hd#>mM~ z-Q}yzd;)z2sLCv}9;)g}NK3L@M&fXh&aR$j7LDpjU69Ce3_75dI6z20Jo##Y_JwAj z8tQ_>k}9t~REz@A5ot?1Q5M-$S0poYro~%9T23wd0Z17Z4r`~?d@@Hy!wybX}0;vB!0T1avo+$ zQj#oFD4w&}og}niQrBeIQk^b2?(zd6NGnlD0Q^Ul0&;)LOq8yhyr$#Gi)L1$75o80 zNkIVlVI$|<>h!m-%Ui2TW|3O6D%R7f{{UHr-C8o)QpN$xY8dZ=eMhdRO;D(g$CP2m znx^8QxTcXMA%WyKmDi+PXS(F0~GOh*BpeVwT%)c#230 z-I6#7J@9j@>Dr94ggE;OZRZr%1pQ8Hb4Z63slNV*j0vC+UrR~x6fukwjd@~37_Wy* z2w`8ww6%p1=bU%ajUcHiYb%bpi)k%|<>Khh6Y4)+`q&aqw*QiUiu%y|VHJO!02ZsGDh zy>NBr;ifGf(UiGsvf{^As_YJvHl+6}&`&F{fys0cR z45>0?GL`4Wcma>yl@HfUmjbpMF&XtsRCOM`nrzcguh(3v-89>#M1<~&+(1%W0c3?| zCpgF-hOQgzOoL+FA?SZ=Axs^y8_rfZ?m5UE@I5tFTD4(q-m+b~B2%rEqM5Ktrzi%Y zscTV4Sv)Cf&U4!Y4=q_yFTZ`SQK*zSO1b1ugsJJ4!uGIQN!oI*MoIbTJL|6;fFnG1 zY|4u_nGT5xHRn=YCf9zR?3LS2GG{_;wwR9+1{OfU2N>k!;OY92(kjgtqLq7SRM=wW zd@I77+6tRMP{F`HWcSWTZA;js-PAI-AlVExxCJc7l!TWsI11yF#-nwQXj&}-k!{uL z&CI5Xg5GIS62Wy%tp{n|K;UQ0=u55lNI%F`6txOOkI`*7{Whdokt^*%5t^yK^R)ok z@S=^K{PDPqd_?{3G~02ipKVxRO5>| z3RZGK3FS7_d@&$(h;@tB)aTXAPebp|_YS14=__*T>3*Ftsm(TZ16Z%cvH##JCy9#n8D zF%-2g_roO%$iVJF^wG$koLi79$*++*WX4=Cp)zMW<4ITt7(pO$lc87If30#X+oIv4 zR-`&)me_uR7>~6{8Ow^tB=^rKU1 zyhjPf(VfS4ujAWS=dt&*Ee;iI*F@OWb;D&WDJ(XShZLk_C1B(bNWuRArmNnHdq701 zO^HgR334vE)np~-nd+11!o7;RHsmmHSS5doq}Jfv;& zPy}bV&#%P(4Ybrq1dNx_vXIbo!;X=tGg+g9Riw;Z9sih*u{eL)VX% ztuJTTl^e?2yJ)owS*tdl^C^!R4M*@CDOgY^1fEmeAD)tjLZe<#>b1J1S|r+3hv`qU@bR}Y$XW-4P_jtKK3OCj>Ehu9 zPJFizK5O$8F!;%pH>8*4GMI?S>eXw&j*!z%rZP66AYnWn_yh6Aq>*}AONVSfNUh9% z;h81C^oh@qmlmzSg#ez|BUPme*1GIiHoe1h%BZl-I3!f1w=B3Mqh}d!o^W~N$moAp zQL3NXHkyS_d*0uzB|@%>lezE|_{LfX2O}dG&_3Y=L&8+x?88=#XE#Qii=8%v#J3!%JHAo_#lW>5>&LHe%T%@4m~r~K0+yER z(ic*i8gIsE?MWagywbCijhN42o_pw%Ln)4r3@J-L#HFh$C+GhFO)|N7EL}-UTSMw< zX=T8Yzk??Pk=s?x#npBdSbC33wraJSlz9q@6xYDgoJvVr3CF@f$A44lt0!nl$;y35 z^wk{?s2^qZ8mh@|mlBaxt1g!@q^V8G+#6P3-Pi?h9ly+IY;-Io@*JtqgXg!WP*nB3 zXUUJ_F!f?PfowPuqS$R%DLCN$etH4#8Z~0$h=yav*uhv_g@xn9&!#)^jy2J5ZVsMB znNqZkC@`uOI*}~45ccpgp~xq{Is9{=``OMs8<(lbqF!@p@NMPN-*Gc4YFZjYs7WbK zP)8@XZ3mj=PQZ-)JaSDFDs?j6&vt3o6tEK5K^sFrch4QW>s@-=sNK?-j|J8OBDNNk z1&@gH*n`jY(Is#DMbfP5LTT#g)w1J3#~Y0{OKMu5LQf0aqE9^PTVQogmDSFpQz6x? zi#o)&l*^c_ILm=PB1S?ml>wZPe;p(@UA}~H)uQ#e6!t{wBmEoeMKx8VIGS}~q`+}# zUP2Y0g+zD2K7TEAxBF8Ljd06_P^>^kQaJs+w z4v3z6IjpURwl*cnQma5iPAyZTghxVOb=0^Nl(eCczo8ky^V4-I@1j}#)KRq`?=%vD&Z81dn z)X5(5P#BKtokVy`N<)pMN0ny;>3G$3#np9Z8Ce7A3`SJ00|IZD8an zKBHTZvab3~9s?A(%)*M$W+Y@KmRkonN60RrnumsPEOz5mdC}9J;RLaGdr#75%lwzG0*r1^3shb zr~d%Bv5)Q#<)s?J9w&zfzD41{d%wO)Qp!AH z`r@!OJ z8j>=-uc+z1<82Mw^_Lot;=ZU)01^)69j5?e&y%Ao^QaYvN=~;T4PGd=?i%aPQ7SVT zl_e@}bTpv0@&_3TA9(yH=i5-usa^CMyt)NSt83IB6l$Nmw-Ry^fb!CwMiqccah`h} zR#0Nx@j7=+vLB08U%AeYTU3>yV6Bq=(;qm=P~}+j1Ld7eCR$e&a{FXOhZ)AjW?RKI zWGTp{COdd11B{b_^9N16s`cDNxpzMJuBC-j>odJhn@x({qdpX7(qC>u{5J~5&`57@ zr>O0x`PYPKbPAh{(B;Ql?JcJrDn`Vtq=bblIL=0(Hm6OhmX}a1NE0PHD7zMWvR;9> zF&R!|1fcd$2aKN~rW!T6Xm+$1vs;@Y+=F;ZRO0Y)#~qEZ?OO0YB;=k)9kel~q1c*x z*$w1Nas`F&wCY(Env7UY!ELh&8_7#M@>RSMpNJKHgHq44NqRe`LyGV~3Jc`B^HK9U zhIAr4m{tN>klcn^_sJ$JQa5fx1;eln+~XXK`s%?r&=%TRwe=a-UcO&*;YeRN3Hc3c zF`H7iD12DPeD$~yuPPbVP?_ZjOL)Q0IoGuu>%bV-twJ^CQ~suF;RQ#5o-@Y108XOa zOr2Au*|iB&R~cfe(lXQX5({mDKq^*9811W8yv~Hl?BF(JlpWc}IPZ;pNGmu<$@yv< zVqLXb$e9kPnoOslM?;Rxq)YL_@-w+W6Sw(%^(&@SSdx`3r&6V79|_MGJpP)FoEt`7 zs|Aa-GasE2E68d2k=S{Eai?8MR==PpCrIuJi?phFd6tsvWrt?8;*z%mi#TkjgsF4aY>UFO1xRgS<29$1`>sNk1|d%sHal>rzrM(wY^4h`qf3|!drrk zz6*IL3sK3>(0UC}mv>w`g?zMxORuV!+iTv2DXsWP9OP%$%ktNz!1TP__2pR5o^w0Y zu&@bBJj=(gGh|qFnb*zdK#tT$ecqla6zK)u5yYG&#S_@!Ngpf?KlI0~wr@@@8yasmC3=SR84gnSJcyHlZKsf=<90_m1J^$-H?O8t3YAG!SxJ(KZ((v` z$9$qY?g7e_j@c(u7p6XH35=NAV5OV|lei2H+A*&oRY36ou7FDx`;@#J3jVj!ikvp+ z)t`P3Df)9xsfMC0!G$TJd*p5J+~p*RT0T z^`X>jm6qluRDW?}EeND!g1ix&?nwvGX~(8DI9BDUE}-M757wrs^wFuyTG3BV(0nnt zbAf`R+bTV@i>N-*wtr16hpUs_dTC0F5uwLg6zk5OFfej3anJPC9oDDr6181&atBhp zk!LYVcCk{nXtH9)dZ3{ZghFw(CDN4O1#K!DNd%l@MHLa*jZxtJrcx>jwE)BjjU>2~dZ|QXaq~aZTBv^0{av!>H6`leF4}8q z{q!mA?R9DXEvp=M?W$jvmv|bMrwyt*ExFN3s8pIn)S^qVlv+Dh(vDJac>~mU)fLja zk^8#ll-z5QU0%5oETwqJVaB{f<7!ai6fhJIAd$}=nsu;!qUaq{vs|lNZa&>nv?&Uw zJ+wT;oB|uc#!1h9*v7QAw(yh0LQL-X}W#e9f~QR0HU~of|jZ43SP{RPdssh#(cEG+f9l(iz`*7h}@7D zgKJ3yXFO-mRR#Cbg7T}C%!oe3?zON?SYB0yF7>rS`?aQE7#R#eO;&AG>XCD2$%!=g+YG zH1A%LwxRfqp*ypZp@E%6rdH;%yg10n8QP_7&Vm@)@*^W~KXT>hSyfl7cDa(IQz`Lg zqD%6Y3EBbA1I+QRsn+_{XhLEvr)Eq`Gu`)gR){Vr_<-P~k0o)OdShJd_8+xhuGH=- z+^35Lt5J|4y6kWx-YI6t12P_7s^9X!mZ zNfP5F#WY?@3Q$y&&eP^Qay;{@?xWHwwQ}C6TGe@U{{ZZ~`iiG*jFOke- zliym>>FuF`g@ZQ^IrP*+snU{dxon)T#rFKYPjrYhaV zOr`i~sZ`;>4xO#0L#b@3N62K4mbXyE{9t^w9O?CTDiMp3-%G=kDO*Pb9N=-~pVv#< zl(!O+vI!X{fywQiFhX)84=y7PG2*2jI@xJps34ENMsf!o`)gE-x`hR8rcH969d0Bk z33f^nR1ab@c^bJEeaa`cI{T7v>aq$~w;iwt9=z+!x~eHK3Y|e)YCB6|BWe1KYg9rU zY%MC@li5SD(#(-u4!QMT7EnK&^R;@XE)q+5vvI5zF~>#3vV=Y;#6HZj`g+D?xEJKs&pzcJT*MlWg

lNk){U>NYTgf#2Os5+!%smt(#pjOO}}wgX>u{+Lz?qy7{~EsWAGzM z!zw+2C(~c3Jv|fg5Y#%*pPGGL-LowBPkWe_d~_5m;zIrsliLRw*4qZiyDy8WQ0=($ zWYpPx9vrCZKk9=cX(~CwMh+AGb>{_?9oYjOUG!1@&gWic=e(L%33&}V6r_#A;tAlN zsn?kQ05Hc!^y6pP)b+pNSq)xi6X5PWQf}E+Z8NBMBt=K8x+4JrMN1jIJ%=L$1E-?zK-y3`AU#=x56SA0kI1(;EEvJs50WJ*+!{Fb97w!4D0 zZ3OyYFHYJ z#-+}gOKMASSZUw&XJfhd(7o#b3}j%RO)$KYbS+uKq>lZx+FA<$<_r>2=L^|4lF zl(*X<|?l@XXP!Rf*dH=m2VhQR-A%9W7AZ{YpQn{UDFcYx9N^Y zw!m_7WRQfqmGF`WpCj+KnSEDWyl-S`7MR08?c|d})2_up-pP12=?6G9b zp!Le1BgLE$9+Jt8DaEX_v~sK~J9FF9R6n+}%C?nNz{ZCm{|Qz_I2pLzPrOHaB+&gD3RxG6a0ILC9x&s_zk-4$C3 zr(Ks+kcypFokfDg?sB5|O7fKuJB*Bboux?woO939R?{EWRrETOo|g6Ar*fJEJD!Zy z9opg*BAB)uE}{0*!ht`+at|82(wtx)h<<6O4oNeD`tqQo&+10*CUWRagd zsOro@umJClGwY+P1Ss4Pok&Mk=KYsuRHaIe%#QmJ(7WtmZ1RA`joGN;lNf}#%ql>wiYoKi=&+x|pWr!0jh#H#HZW-YaT z#FErCrl7;|V!JFX_(%c4l%t$r@_u>IT{LONvHG1a>~7Betk+opjpn zX1N(v_fXVA8GQ^kocp@l10#1k%8qq>%R60JNb}Bf-{E+O)f>eTW2YO2#HexcA1n`DQEeuPB13c$YtiLaWX%a>wwNjLB9!hA zl;rs+XVV^9E-$WtkV8>Ik+cLyEDlQ+|fEh??{-98LBUZNNyZk8GEPU!j!bQ)1*4Gd+$Day5-ec@qXtHJve{8_-gNjAY>DN1xMIoeBhMVN@8D`1I!3X(1t|@KugLD%4)y=~b^w zoW(*USxi2R4-GP$2wwnYN#qmrI-N#+sdWW1hY4{fa*>YTBc+#Q3keE3hgDHfIeCsz zYT~CKD`|1poNYb$^U|eA8_C)6C}SXUb>K3DbN5G?(+peU+^JMwgBr6H*-Rv<#!~W1 z@H6BNM`NMZvd5@N()lsz<%67LV0JoA7tWK%tJCI0g(;bloQ*Yp9A{f~Dof}5CpcH( ztxwgVu+-;OGBa&JR@qBifCf*Zx%f}W>rZIRg{vHpbH<}RNQ{ANO?-^F5EI{wZW?{0 zRUy`5u`UdzrbKxB4=}K#tDGDW!R&O))Y!{z-J0oGEtW!dgZ?4TvSs7uYOS&%69Ddm z9RC1-X-a!(Gy(pjA04(0DIK&tWief~LQx)hxsM?YZfS41xqhD!)%LAW6dI#U&3Y?| zQFYl4gcSB47oNH%Hb*L}yAr>QB}5V5pQ!q3kGmY8Lh3!$D)gqvof1_ww&^?AQ^{ID zR`%Q5!d=R;4}N}JIrZn-a@FW%W(*q33aQI+mCAAoI3c0NN%bTVkCuYD{?m6o;drX) zwrkTM(^Bt=8lL(>lE-6$G2C&Y65yU-Pg6SlVJ`JLw+5|WxhkWL}wnV9R!%ARBH2vw!Z-nFk zJCEc}w*0kjpko5XZhWUmD4rZfQyGE_2;~aSay-8cILoNB0k09~5`WlVv>jgUf zw&25QsZ7p^1;2Q4;8YZ_Fr%L=pDkP|kkpolQ7)jK#BrTuf9e{f_%ZF5km?e&s1&P^ zduwjse8!qR@k{%vz#L=KUXdY0jGa@=(mM|0BqVyC!$TLge^T6l^a~Oz?lOrf_nE6f z=flYX2mUR+v`Mz2<795~#xw`}Qo7^b&=tVy)Z$u0Xh2su7$ko^dT&6bFU$e_Pb2g3k_pjaZjX@e{RP3iu*dcd)~+gq z8?KztekEQaN=Zn`!SYe><*!$tg>?;W)>-f)so*^)Hy*^Uiqqx~XZtL!ymZ3Uqt&eY zCfKLOrO2#IDtJdYa3we-lbrM0@YmkI`#jnGKIxP7>N;JfRVm3zkt4;&jJ$U8^BRhE zTc`DIja?S9;M{Vn*Nwv<#g9~$GTc-QX9LSQJm*sz-=S{XRut=s^}6TXv+1n(t;BJD z9AfF@0*~Uxb>~%_En#f))by4w4{?ePrMJM z>_7ap{(1}5{W{zx2G-u=??d%keL}BpwbvQ-D=d()_mjxuI<9(g78S4U1yX7P6q8+m zxswZ-AT27u+m7FKajDf(uLhQasZ$t^KsXM#l#+iPQ9Vz;mD7i6T|lG8GpjKnA{(st+L)>%zdV?;*fX=BxIlEs?wh>JB)=X zz@>VnLybSx)p+|{R%)>4cn@9_SSD>cQz*cY+DR&9z&!DsD+4*lmZ(Orxi*xi>DB6U z@F%dfHtQaQ^@t_3VGeTC8sqR$&bJoND17LkIVV!l8)ll$^lY`V3E#zzso~^N2%;ly4BSgY&7E(*(!?a z9D5)IDJ4V`*kGvWfVb`{OzfsC#wECw0^%BZCm1049tQ)Re3=+Bg0tw>r?yFGINjF| zOYOR?=%#5kDgO60`fW(=*vXdaGNcpq!2bZ#ORPJd$*oYBw#*uwc&tS zu>=n3AsO}W>8Mvwx^oJ3^Knwzyk}D2)T>_n>cm~lu_TY(q^J;kg?zqz9c6)S(rmVk zQbp4;t4Li@mkJdKq1C$3T2!R>$}qpZ>7Pv*UOnscSikad>>OHO=b%<%QymCp)jbw* zl^spJ@kdToxwQHxDp48doh`TeS4y(!wf5p~p7iLej#DAhgzX^lymOv=>Rn8a5u~bA zL;IPSk`zx0-T?%Bv5k9{TU$=H>QduMNefE56#0X#jn)o{nT$F}0J`GLDrAbN3kmgC-t7X}rXA!jUIvB~)vwH4_|5(Q+_ z(QA7|QPmB#Y^#||bgb?>igWPb;CB9c4}WR&7UT6oTXNQwH83(mc*2r!LR1yy+w{>N z)n1}Wv8&MTdNUsTE}a$P!ts{ST=)xwjtB#se2#_--ivqpY2667YY(?3;EKYe(yGm~ z;iMFg_6zk&{E7Mc>086Sy^5_hnKnArbkW_EIn$@V63=E`Kqt^-9%pqvIe= zjLZZe_`eR<6b^n6KAw7oTy#s1q?Ngp3!kpLbl=E`!DD*9lm8wgq12XVX01#bA=p%xQ{c8 z4H5K;!s{N=y+jHL35MM}ai}Tz71s&hQ z2RO&q&qd|5;s;%?I_pVOaVoH3PTKJaC|bwFjC`@%zJ#jPEjwjQ7nHu(R@RaarnZB| zkW;ELY7C^aA(sfi!WIrRwHQ)2B;8l3!sIyA5s?r{c-9ROx z6BWWjR!<)h9$3{o?Ee5AFxsw{87bP+Wj)Y|hMpRFPcMo23&Y09f(#9sV z6ME`Nx;^a$1FE+osnOypGCkdIw!a+;P*P4Xq>PmF>#J$bRHA#HPKMuSPKv+NKA}#z z7Z2R(mAH%hQ7$ZPLdxv5u@6sB+iKS8E9W36f910y5nsPD9;UE6=6_Y}CVEtyWRrkhd@(u{MEe;sm~ zhkRFRY`PP4Ol{`RA?eBrC*`VnGelY0T2uuXfn`JCK1WL9!C|>;mV^%#Tony+FQwf= zt0Sv+yj5IPIcqfrLiW#DXd^uC`u5jd1zDLZbzwmRcV(;M>^bL99U0aDc4J3TrOIl> zte8Q?&s=92X|_UlD5zj^euwkbF+r=)W!aYfHlJn9HxwvR67t-Pri=ycJ|m7O^1Z|W zJh}DMr>$LgiPCy|l4aB7N^LC_rA+PGm1hYG&mi%i%R$Ad?QwEgRk+nl(r>>|*_ycy zA%*RI#I0FFNjT&U9+rxSab?v$Lv4Pc5oFtyyH=sn$a^I{Z_AJ-Y*JKJ3FV}Ch$F~n zusH9hI?b}WNxvykDf3>4Ytbe?;YoAHWG{1x9%qbjHACG$v_`!)ytxz`auO}K*N8%L z94{aq=Q#r-i>( zM3BS1wI8I6=51hNTO9(%oYTJ%ras@&@T z08r|-^*NIjDriflI+p(c+Bb};vOI|G<=<9sQzU^vmmdTLHV%BSR5;MqSS;}krlzO> zVGjUpguwp*0MdpRT?y< zlto$Im39O1*Gc`WZeE{8>V=~Q{9)Pjc#$Man-)JS!Qlgra!OAhF|K~ywAi;*;aRxt zC~1vFdG#hFd5&#$rpMh%x#Rx28q>thsr_W%baH^&)jC!sYV z5?w>?DMW<>o3CZpf2XmnZ+aAwcE}>Ja=s`?Mt0-ws z1mp)&J0Hw`S}p?Agp!}U2N?C#Uiq*ibz;MlL#ZIdnw9vFq@_O_E)G(x`SXr6)6=s5 z02c7xHxPQ>C+6c7fs9_5H!gXKimF>GRCKiCj3^;~B8qYq*nm<-MxO0jU2CLQ)JZhj z+%Zydr}Dy^Qqbc~jmL6R$ps|&>M7J%SG|pOwM)2X%VqFThUP3`rx1d6l<)`fcJOL>6Y9stSh$E&yLfGaje?(!b7^T)Jom| z0Cdu8GHWb8sHhLaOm>S+##blqAB#Sj@5Y?39=cuE{jUy*Qksu(Y>yR902KBIWqh%% z6Z%_RxMbF!RYEM9jW+^GEf&&H2i^eVcf*5`!PG*lZAqrqBGTCo&zm3u(=9TfTqm#t zxgRm>qpGI?YXy{iJV7nH)E${sx^AP5k8QbmUldv-QR6uxLVQFH$ZQdkeFuGXou-h~ zW}~)B(#vURC+Ltdsw>&Up(CaA#n&s#QtR`O3vKM&BRAh~ZVBhUu2srxD{@{r?ncr- zEqw3%htwB3@KeC*eNX&b(x21lU9C? ze@<OEyu8pRHQA@XumBB*Br{`+yM`+YX0f1(Ro;*o081nKq0 z;JzJ4!lu-{qy&@qic^gwUrXtYL8m&E1uNa+e0(0<=hIRZ`%6(OmB>{&Ha#9~ zXs^c-ek7o}58qRGBghY)G|SVjn?Skk=@oZqOsP%4ep;cbk`olI9H;mEXSws|1Jh3Z zD(S60_P8i8l|zL+`4QDJba!c1?>3@ARu3F!>#k*bVwL4%Zd)JKQI5bCO|VKL(XlqD%R^7wJd@;b9^n^pU6_UW}UkkVMG!DZoGdMEDM zlemJOPC}2*@bcBI(f*g(mdzb)L8Y>$99bj=NC;P{&z~R5RzZnNWKXbsEO@JOM8PL3>1`}726}~brqG+*>BC6IadR5 zY7!Et`HLS7A~{jtgq}P_1s+Gs9kpcK7u6DzQ;kfQRAv;pAZ%g7mEiU#pM)PGN0HJx zmB~h9&b>Hh#yI-Osf7N+hxl4QnXl?0(EIRn!?kIPlv(KeG6uBkz+(_fKrOO}Mv z9aBZzqq#^Uu;l({MamXiR`mVtHpzhzBgR}tTv#Nit+01wbDa-hEzp~xRr3N{ui7F{ zO)ZN?l`7Y5Frl*Sc@5MYORUUoWPlPA$T`o`I*D4o+LWH1d*rK5$EVR}x{#MDFFvQ% zlnkAy&)o-~*H_=Qk54HTex3@18dMi2M38`$N@sdf7I1OqeE1p}p6MK9&~ABSK4Plx`wvzI~__)dte-a^0a+fzBLT z1Ssd`27mR_&rH3dC3NL2$hYm<9XLsGC`;l#h@d$+qV(YN(2rn~I=X3j`k#qw(Zt7#PtX_>tf= z#eHLm(VE=$fwbJMyIHN+5vA4Cu=DC+?+vFEIowb@&OZ^2O{qO+e)*d&O;Vctc@_1g z5q{4KQw=bH0$M7^1m#|SdTXfkLVH~|nQ&3ww`#uNys5{jYG)u2Hh{7T{<}>B~^%xK)0q?>7_TL11B=1ikWVCWz|k!0%0dq0wiW2#-TX9}G)i1ogVCVJZNNSkP=TC$j=s1G)&TpX zzsp0SYFftkJWXyyMMu4pikd-g6!QhZ_+gJ8$ zCte`c-)4y-TNN7ocBe57i80@h_W>w*B&YD!i4QFyYH`-UK+1_&_(%C@YNqt=Wj>v8 z(aob3tgJSJ z_iz)=J#}+UBdyA&Rn4-)LRY@kcL|efOoZITIZtwy^Q!RH2r3Ho*C6gHMB!6?=*>Og zo; zjDJmXBc{?Ar*$saWl|ZG`f3ciRLS0yjo1k%%dz9qo&g@8T@D*$ zO`Jg!_JGJSuB&1rYuek<)Z*JG;a=5wk39puZ$z1r>2V{v3?4JIgYh3Tk5642f3zlr zGO;e5QfWdn(AWrNMCBx@L@0h({PY#jEt)O2b-}COZ7!v2$CJ8aEVxkW(~-gnJ^1}~ ze4nYF2*YP>;;F_W)7HQjh&W;<`v+L7@sw5RVRs~!0LbXj!{Iu&kCcNthf9sdBtG-7yyk+TR$9K>h- z5&X2PNvZrpYyJ`Zw5L`xQ9PdGL){&h)h=q#r3QRwLcI^fbV8ovL(L(lotY&qpcEMn zZc#nHEp#1B-^2(#z3C1otd#k0q^1+}uz>hZP*u4@8Tn`~v#Yc1yS|}Ie=CIhrET$^ zN&f(#*Gzq@ZoZwyye(Qa`5IM9n#)g2lNux22u?5wBcI_q=WXjxrd;=|>w?c%MYyL3 zio}vswvs=D`sizh&gRtqvP&6KVb-3XDJ(e|Y?joetZ+H!P%9OwRJ-o296FTKw<%k* z@OSb(wKKI~sx4xfBH~LkErwk2XT*$!g*w>eq7`v^q*#~5)GM7QVRXB8QzOQY zH*tBDgUUzOj{g8X54}P)3U6YUo?`l{_-hM6hzVyszASG4058KvxSSe}>yHc+bB^C# z1fIc`f@sy*bBv`(nzmGzm)H-85CA`)6M@g8|fypBNC5mEL% zZHYcD2KB2_nsi}lb=56+ILOLK@7wUz{{T*yqPGrfwbZK~AMVP6oL3kc zX-0L`4j{#r`err9Y@NaOne1aD##^)cfjQ>Z--NWZk`%W80J@`-^ZfO1^#1^(md{PF z{21m{Ps0qRqd7sxf=6Veo&fLV=cn2-kj(VEB1*Qa;SC?+$0uHH71b#rZ^DMm^0V+V z^t3QiPh*vNcGc|l3tf1z>I+AuV$$6%;`-%h5nORVzNBGAq#SM?xIc$&SL*7uzRPum zzL%K$DfVN?1QYSPaF9Jtp#4(ojIM}u!d1(6(;5?6kQxvmNDl5wj|40n6W_Ll>W8+S zzh0`jGCi$ZW*n!Qkt#Tp(GRH{pr1@<^wQ-hPTDqL%DO=ddxzQ*+o#8v^x)4(_zceu|y{(9&2#qE7*Tv94BUa~6f%bg)I zTy#loUl!emXel`OK>q-|>go1o_MD^jHNkCBC^ZUl>5pZq)T`GQI}QSVIX(@SQ_yoq4v9#79Dzh zMqNFJU6RE%OW*43IJA(WILYLk4Ek!qiyi5a+I3_yw+4J7l2o589c!OTdC03nDh@gb zI3T2cXH^+Cc-*(*)cxvLw$DQ8lo-OFPr0kJX{u$`S59(5Lkdc{H~?pifzG8vrqp2~ z-jdRM88k!|qdJxCQ^@l{^}#vDq!5`YOK5qJl;9!6j&qaTW6a}Kd-d+2isX+Obf)Qw zsC%mv#I&y&_LQzjJ=28b=j3&=+hc>XxINX^Q2|7=b_S9IM`{#uc7QT``)lb#?f@E6 zxg03+Ip80rby8j(L~;waEI1GhdVRYu!;tsd2t$vk6r2S2P{AFCI-z>`?GtVEd#dPW zeYIPxJt>B&3^>hK!DM7{@D2$0dmj1u>3TRM?jGtu1N$#~g}F2f-m6$?`W%L<3y&Gc zD#t5=wBRJPKZp_u+A=}OJ@pV41Mu3q8>8Jcn$23{S~jkvf){`m6hJ3~$sBMnG&|qE z+cuX`=#Eq7S+z=TRvl^Ba}t#$!Hgf!e!5lc_XJusyTb;O{8 z^n{~79^;&Fc+Y)2^lFz=rqk}1X^43crBuD{B-yM6L&zW%kc8kRAmk3+w7{cQG_3&^ zb2}>>>b6vODfKE)0CX;aP8oZ+$+95dSR2$T0}^`Jx29?i-Mr| zs-mp&##i8^D3rI@q$di<9(sQ^y(ylj-a@2N5}R6}p)XF7<`CoDfIvTVj{g8nMQL%R zbq3tHDlV`p4O_4UBAu~$G6*Mplnnm>cW4i)fYC5Kh6;LFW>9U`@4lYY>5pCJ z?rLEva-b5F>>%VM1opuP_0#;0rQ5WM>`PI}OZUb?A*x4&M06|w0#vTskEU~|e?b~e zC|z(~KEM{H+}+M{~I)+!~Xb4aAFu$XjNHFHyb6Rm|l>xfcv z629OZ3~G&7VoMle*j-fd)GY05zL|SHJrs#)lA3IVM37K01Bn2X{dpSMdEP8o&?3r_ z0;5pz^jaA;x{Z_K?SvOq!ex^#M&i9qabbzK*QjxcBa5zcl%<22B z6-tG@Zc`N+t z@)ER?*a^l8&QCe~^$_-yfg)sj65|3!a^N%BWI2d9?@al(O1hSVU&z zfKozpj1qb0>#Um_>>0Xb6Z;8Kdss&fL6SGA&}lM~lqp{cIUH+}H>_!q>nZ`48yga! zTgd~zr{k`X^^yh4OtG7$PlYVcXiwbqhk};kON5nY%y%Qp7|?r6Vd?bQXpZX&ai9aO zy1l3Vx(gBN=`iE|z#~D-Npu&P#R{sEpaPuEL>#s1S`0l!-_8?>Dz|cd;hrjAzdF}rIR$4Bb zRtEBhT#e&6Jda>A`Dh>OD-TVrM1dXjIS{NVZJ}8_liwdL96z*D*mA4(JxK*jKM{ns z!@*btsQf^WJPaKLHif@#TlcjtrPMhOO|{yR9Gcq-T3uR6!Q1?`wnx;<7r~BnfR^E* zlD3fBU?c!=Ml}!WBzYAY)iyMBrN$iE7KHPki{+^gQ7Ci@h5I&rpzH80InN)nBh4#Q ziEp^hNXI1c{dJ<(wv}p97Dd&qaSxOUj^5Na2!!lk?m(O2FJ{j3S^M!)NA!{IsBHJQ0X& z5AY}XYk3&$u9=`S={V5&MVa8wl)(G%NLWe#0L*{sq76eMR5b-$%n1qI;<$5+k?|f! z`RWaQ%30zA9^VigXRNf@g_jcv>Sn|`r2GXyt0~WKo`O3Abs^gKqT&`AdQB&dhmm@EmWj1s-`k@$%O=uBuBFtER0|wW7GX7mlPt za$--6wvtE$;~tt8<{QwPQ~Js6K6GS3an(p|X$jh+$0hzUgskhS? zU!~Vyk5chjT(@dfW}M4g0+tYUS z{^&tC{Pb=yWYLQm6ZpORCpr^2P6C1wd8mdn5FuJ=&{&q4XR9+JTZ_kbDjoBRz6yL zOeIF9#Z0z+=0rj8Ei9yXK7}B59Aog*8>+Un+tSl+l@OtaOx7eV;lh;K7r8(Z4i6{3 zxyc>0-X+yur1+hgB!zKPkGd(EwK4W2JMQhciAngJIKoG%`3`jX9(+oJ@39J@4r-dm zh?wt(3O=~)&U8N>j@2Mk3$*7V%bgBmk{PQeNJ#;1BbB5hX~I*tk6l`wGqkI8TJ3JX zU#CZEqdm6SX%Jo>5?CCkjD7r-6ZIOoN`KVMslN9*Wzffrz`x6Yw-jkNXZ-&{XbnG>Q$)C^H04Y zu8}5nVbrzuLYAdBu_-{|3g8?oJbLP&_EffRTSKdr$d!0&X~j}XYkj3ULxrl&GW((A9!aYzNHajI|ZKw_XDqRr6>#zKqK_W=c*#ri4t#0 zI;$<#0;B?>r}6vL;PZp!#;!X(^-8tq&Z$L3P?+Uhll!#y)z!;3rbRf2xojnKSUZYH zBb@Qvchw6rnM9G)sMq^3RUOC`<(y1^>T*F6!Wg4g&8g_;eoqg$?c=g z{jGGeqROk4XAspor76cBGaD&cayh|J?T`rmS_6H!F1mM8I?S4-u_cG2B*5Ek7DADILZ_sHq3WXWO zzRL}%3w4~V2MFgNjo*RBgxVcy$hqo`)2Y|eS6!1?Z7f4fWhHK>f8R;%lg@sb)sIT2 zQYe?T$ZJ9A@gycg3uU*nM}5bnrb=o~OA9ZyrDP*mhQVw|mTzPSz5$BY(mH0DzD@&m8JN?Y~c^TK@pr>qaE&US%c3 z`{g=GDH}=n(xKS!LC^Hle^0uPAEQhv*}5Q0ViZXZuAf_n7{1$xS36V&NIy(z=IQEq z>dRl*%O;sBOgWFGbxN$(Om?HToDvcU_=&*d=c*rnmzmL3C3_vm`sM1x8dUkKi|Tig5;bN_VKJ@{l~c4_$Qz<*{d0 zopGpBnS};ZO(AjJYj%7x0M8?g4%p5$%^z;0xW1>taK~&m^d(0P$7rDm2qYB)=bU%e zr``i(%LJ%-lMi9;pTg=KTitCb*>yNCx0V<<1*L@Km3rkTA5T3VSFHk%U$6t$Qsz)0 zKtOMLp9RIEZ-@KU4Cf=ZK3W7nXWf44vf^BFsC2Z*qCYGqL%RrcklJ>jD1tM|!0vQw z^>Rzsr$O#W%Vkf?n54vvq_37-QNU8M*d+2!vZ}*dbbFn(7T>O3}!>8%dULkn13mi9I` zDJxQN0qj-y>rFlZiqi;N#X%&O3WiA@iS+z+N4IQUmA;@=Yc(h?vqZU2?J8pkaPN%H zKXmXYcMHr(dH>nDssA^p>GEH;1D(qEzq)?*#=U zpFE`ewdSQ}w7SeG?pt*g*y^e+_Nhm4Edt6xQEgnL6$8iP=c2u#zTOS_L+K+Qw99FI zq&_5}ZI}}FtdK&u$iW;Paz6B2#8=!gmiEGtlE_d8liwQY$6P3t3Qdm+65>dNmsLI3 z@m^U{nTn!RfuAe_c=FIMM}oN_=9*M@Lq4ib;lS^u*){Py4Y=bL&TGADMY;%=Tk16! z%4OB5bC}v*3c&crb=wInDw|YNnF&;NWBs2YBLiHAwccm_AX~ANTJeO|R1(%RpAdR| zHP<$qbV?&>Qg#f3&ydhV$c0#RrV5_lQ{Dd1+ATcqgB8YByeG{-@yFAh0sUQ!^oq0y zzywE9@Zk#KUlwzZ$48&-0imj?OQy|1N+iTU45>%>iQzc(&{b+%cI6iKrBwQdA?NLO zq@>RgbK@-vJcJT^1LQt>wo7&?Hx``qN2}%SwHi&|VHYgq0;64&-n(&`zT|gKf=aIq?#dukhpi z^d$Qs$gphQxZN}>DpZxw>QPYjGsaL_ibhJ(f4k-N&WnDdVHV{5pcR&Z$nT7g(?%%J z)De%$5OneWqa6A8Y5qe>0nW5R{{V7i`k;R;Z%=JWjN07jO(Ii{va*w{{Tdg?^$WDy4#Uy&eD7~q^N%FN=Z9_Rxn5e zetHfp%7p4IQE?@xeV(Tm;ci|O0XQ6Mrasm6j-FKRYku0l-FdoayE`@aV-Or+1Asx# zbr42ATIWr6g$BEDR4SIMt4+RSDY$Bs4~SX^;mGyScaN0XpVmFnnr)kb_e;$N9%sWV zCppe|$K$9KlNI_;P%04?<88w(Z%IR7m@!!nR83ekvh7ZCy z`RmV6D7LNZc-N|(H&fBAmlff%CM);dz9L6)-}E}keClt$wFqxz>iqgea_2OuD@&`0 z$`>Xog4Z3Q_wOBS58??2>OPtx>z9nkux@H~n^T^#6)e9Ve24w*g0AaUPIi(p z{?D5o+hY8w%ra9Xxlbu`cf>KAV1xDjbaqu-L>p4NmKbHGOc@GV5Yj*@2srZd*Q6IM zHGn6cvYQ&g{G7$Py{tOLc^NFKz2P+)N}M7RJR+3<5(vgrN5T#}Y1WVJ;a&5z@#m4D4)M5Z6f2UTVoF;MxZ=D*gTXt={{TFG8r#!~%&OJJ z{{Xxssqz9#WoqCMpmF%~rRBpNh{#kFPN>^{&X=8jMH2CWdm*^Xl&R~dw&IuLrNtnr zD)hz=(;6sj8VtKq(uqu)EXK~~ zNgRHfyAqiI{qUix>s`UmW;fiHWA)0jb&6eTO$x4<{^+SJ1gS1FxT|3VdXvtfS7$@z zrfsnOw^dRYrA1svQzYTX0**@a#!gB62CSu*lHTUX&tg3FjX5QJlZ1}{08LrXF~z)2 zAmH4W%!b)LHIZxIHM@dCq0~)@?yRSAD@Q%fG`8clCR`Nj&VUljE!<3@EY4DQrKM~M zAz*So=+vyZ;+3%^sOk@W^$Gh$>WbK-PO3nqHXNu;VQ4~QJ`Yb z*@HK<)ysGEOW7`cpCW?}O*T`)nC(Rp4sfC{w4)u4G!0Xp%qZZIp9~MvM|ZXaYQI>0 zm}J~`pSlSE=gU}=qX|*C^4hbE=-mC4$_ci5 zwa5W4r9_`E-77%KXEls&0Q}C0581_e+>m;$a$2-UqqPF4(&avbPH7R^wrFnt<>MNi5Cnzbt;96g8RN`^>eQ((1+u`P?l{P8 zWtR&>bBRyDGk{b<9sIlMv5C?}vvVS|CbIi9u~1!IG=wLCAxSw>kEd;JJ$F-+*i9PI zsMgBqE!5vJo^7(zMO}(j%8v(tInrtUWO{8v8&>_XI^=EodTLG>&ZQ-$xCJ{^f>ql9 zbCaiwTPKe(CAU>+`56NCth857=tb)~nIJen)*o^?jFMdONB*;T>AEV>CIQJ zHyu{ojK{gEB{g#VQ0IrcU{>U$tGNL_UV7-qv`x_p==NW_CqYpWYLwl~g`|Zfg@ClE z_S_0cKAPrD9<5!s+HdTttjbHNK}l3hppdK#6?u$z&>0n5X2Fc`+N%EmS$NnTN9e5v z&|;fhx9f6hQMa`Fk0rdT1dQcLIUhY}O`&7^Ms*@J8pfy9X$xYW{J-^*+f2Q%WPq)p z6WfgoweF$0BBsaVdD>4n{osfN|Xyks9{A#MMs|Glckm|uGzWRTZ?S z7U4>g6OqWk+CD^i{Pi8_KUuCDN@{1@6$T(xW45;a>NYdAV`_oj-;d|0{Z^|}pfdGJ znDXJxOPh?2cv{qVD?dEyiY`;!tNU%(ooSZg*mXRGxab6)#SHeg=fc~5!7Jbs z=rt9-x@Qjjmq%uz_ULdQRF$&c-O3?2>-mzZI>C4nE}Dd!Qot$l1Gsq znpJR8E6&!Pjd#$b)@d~P@Y{Jzwx>k+=+0dT1D-fI^9R&vx3D$7QBccm5?4Y;J*k|N zCOjoMBmnV14!<}Zr%O;M_`V&ad3_GK8*{q)D(Vqb;zqy;K_IJ>u9|he9EkS7W+W*P zsjoXZ$WY`ZLB^O0$WGJoBzM3*x%1FHOQ!qFYeOkzL7-4UDclb|^QE~XiPUw5>tYl4 zBAo~?{{WjKkxA+ez8&z; zwwPwpQXuARK3t&(A=2 zR*@#7It*6Ug|I?*cwD6NdE-ZC?GCkGtqM%`q=sCM(h%O|aN>#OIP>7=L0uBnwy9T) z8F$@5@oJ_=`r>16@f4B)_yF_CI_>^M%MkQTR}aHOC~P{~0su}5fbtrMbqR-N&!PLSL7)xS@=X;bfM5>suq@DmpY zA?==9N#i`8JLrE9?O+dS6#hl&XFdGR*KY$Yp;#!Atg#!QoV8hS}nSd9Zp-591A#0 zB?UR-xIgEjm$3tH+`=B8{^1}001SUEC{JxCr~d%BG5-Jn{#sC;+LKxE_t5!7GK0k^ zNimfBo*^Dz5zz*FjZl{K#5PqONl`0((~;%z9BNE$>0mGWK*=$!3Turwmw+Kx`XXYGpAMC*59?S`7cJNxe@74 zNs6pH842JJdxEcsej4We?L>ht?XJqR+)TO*d1`74(pxHV)`8%hXls1xZI9YXdTIv*1CIKV*fAj@_M$5A+TE}o3aJ>a66#t2 zKGqaGd87V0MpOy|zhwx_HVOQ)yETgHlXvKK{08jyF zC+`069OLPu2Jm`YR>fJ!hzoSYcql0FQ?U7HA^n~Q8_DhfI$^K$Pv6PA<7`N2$x0@}Q=AyjM455~O@Y^N+5S!nUJQCc<^N zhANzK1Ok!)=NTFQ0KPQ{y{>AVv2{sBE^6bYN+g8f+-%NFaA1Lys@=KbE{H zr2wUpjflZgw~Qz2s(WPpO@j~Y_Z@<`&Lfp}1JoYb`thhYQmo0h6g!R_D)Y4JZF)Kq z>uF>uO{jb&T=&QcABLs1XWxNKREYZt+%i<)+kxrx=Tvu5ujxPOs#TvlL4i+&LR7}w zLxC#~sVAQN;|V$z(ZhS2*1XPyroEwhWz`!?+3IDvYh4oR^p&YBJqSSnzR@7_kBELB zT?#OIId(A}rexcd0OA@M!d&MA*BT~zDSp;2OY%%g)x|nn4n}cJp~uDxiO5OY&!FQ( z&$B(_SH3K1P1hs|j>DL^tVu!wcAyd8J^uH7XN`SU{CM{}eRfngxy`u!4!R_KO17#^ zjARlV=k(`9Kd>iD>Xu(zO-gM#Omw*g)OgE7n?O7ON`^b^qPpQa9; zdnw1E623!|#F={}sR;=H?N0!mCaSc#w3*RbQd0D$6v7J504fDJ{4=cyh+0c(P$A8L ztvj~>uQ8F_XI^SDCPb#nnFb)ACM!kO<7XZwKJs(xj@k_uiwI*LNOuQ$j?U>U*$aVR zrU?vD*`Z7_T5)S_^rv`AP=HDJRh>E8P$F42@-FK}=YZuZB|q${gvy_a+L&2h6?W2P)gMp~7;G%1lBEEZFP<_Eewfh6hQLf} zZ1yz)3tG{v-SrnEnnZTrDJuauaHxNKkH_-T7ogVZvLv?}krc9(?JMz;4+r|__@;kg z8n&x-s8qznr%|7BB(j!^ZiOLO+K@>kA78Jgmcp|vnuL17+oDH(npAX5n(~=AN?cA- z0X@$Ljb>=k@i$zcM#+IcOsz`Q+g;x#G-xqt%4TD)c%YrBbtfN>_0jX~nQys&bXkbB zbs}8Pd2T`*bwC9q09E*mej3$h*tR3?Lz5AjVihTdq%{*E4m*_ZN=h@HQ~<^_kNZ!X zW@P$|$rmkpTTUrt!NyQ903iBm;=TN3Y{~~(oZhKdzQ?M2gRtI9$vZ$o z0=FNRuC-IG2p2@zWxIK?C8QUf5*qV6u)oN<417_RQ8{SQl}K+ zuzWCiAP=u?Sw_>LIa{pP9D{08?do*LAxMWLturLFl%$e?l@3nhfsI$#3L~f_x7hg(Nw7Sqp1w$u{p!XhLc+jne zQ15aK<-IlF$wymmYGlu|t=JVH-NMac8;Xq9Le$A{DZ~CC5KeG7!Op7AlUNnHq*_(V z%TX<+qD+@2MO)sUT$w3JSV|P%-Px0$F5fL*RCW}Ti;In+q$K=AgWm_a`RJ5>BZv@ILdTmPr8(^Q(rx?F zZ7GVZYnR@kE^D>63b(SY>k4ULRI3yikz7y-l?mlO-zGG3kb$-#N(p{)RtI}AE z;)r?3$=Tv$ZXEgWbLovQgK|--O$TGvVaj9O)g>h^@P@(1iSq#Qp4rwG^RV`_d}5(V z++GWTYC^!ya51kkWH%8ZPQJ@2DhLJDgo2~kbLMo_L#)NEIO7ae<5Xl8%i*>axQ4&I z$2j@wzw3cbMkN-fPHtUA#^cFDF2s%{Ltotm4xk*Io&v|+I;vC5==C?U{{U?{FLKXu zQDCjVd6Lr(yg_LTbt8YKJ%0^*T9T65l=>S=)>}^H0l7oEN2wl~qp7gorc`BrYHZrA zNy>~kVw}?|am26^gyphv`u7;+s-8GZlP1FPj)(~^4iHlPT;NE`2Y-@xg-{B@NSEvQ`mPUK`1V4vAg{?G}}H*i`^2TCKB{B<@G zNmktRpi`^OKJ`WnK;l;&!ji3{jOU-zMi8lIH{*_aN#=)N4+K{jsV40AZ#3&9CB-1?gx|b#3+qSR+if-JwTS z(Me6|Jy30@WVYPb;iQL>**xte`E#NAj64WZ`w7#f$?KId)V5trI(w^-za)Y%GwIu1 z0O}c7wkHG-w!Vu&nosTU@LY_rLxxTbB*%a64m6&9GPDLv~<3I-BDpemT(R#M^s>&#^4R z&sJ*8$8jqQrXLk4Ilnc@%n4uPOe&& z&vY^>GL<0+2}sXw4t0U?H$SZCZ%1cTmlmS9j><%_E&vWNISKP8gU4-Jux3lA!>3E7 zORTQ^mm*p!@q%0}h~X~sQIG%twnB#|KTRX{UvR4Ix#I2~3vuG9DcTPqJgc|UMC3v+ z>QaOu=LXd}+iBdOaga_tzynXx)vXmso@C=Y*!piUQ*I5@YEveA`;(~#UAm`GxXXF= z=Dmynp~-Dn9D$D6_0yv?Y1c)&OQ+jQVpR3j0FW7|y|G9Pl2q!C-334ZJxKF9DArW8 zC8d4TBWh4mFa`karup$6b;K?whY0|W5e*<<$B(^9FQSG?2 ziIG5gv|-lJ@|_7+o)mdHuDYMl+D-X?qT!D!R9dUF{{V1wA-(OE_jf*o=O005~ZBxnXyeeO6;Ko0wZZ3o#6>vE{= zN}qB2o9HS_C2#`16UGh)%Q^Y#?dhLRO@nDQM~@@Nd&N?mmfJoa$?+>TyeD zO9LB=KX*Seb-tHq+qCkBAyH$+eYr}Qg|g8EJVrO;wsC>SpwgikgiUf;aEF}$sU=(k zk1c!mXzxmGN z83|?*N|)fFDZyTGo=={{Q zry;c^X;Dz~$N>I&p?ZzcI{ja$70R_5jEPffPD4~$!e$1$}$wU+sP*? zA3YD%+MVxDy(*HT%B7|Z31~xaNBB&Q>H!SCpfU<~6M}R3Xz$Ci;jjl-)wvu2ZS>l@?O- z4W+%$EI2ZyA22{lc=Oanbo!i&iuZ*xsEkWxbm<9t6O+Q4VIcz!B>^OWkU1k5?tAJZ z(KQn_i7Ui0lU{Y||yD-b3z>en1)BwaRRnL zCPlX(Q`Fr0RF<~3+v@;sLKTt*Mtu)D-lEQhw=r<2;Bl2L#W|VnuNqS zh<*x+lC@zaNFJj-&uk4Uq+GP?{{X2MFkPh%pHibOZLnQsOL6oNaJ+$zLcE8NI<)%b zb4{jo0yQu!COdGvW*TQBa*B#c9}Y9X?ef!KN$*)N^$LMbQ(27qmWRASxo%(rH!B}K zEje}<;mR}oT7q*c9y$%v>t64$;6GEe;K325xQ5zGWl8u7NN{JIP1qL?On=EuN^LkwM0W!#W+%& zwgx|kg=gpT)XSqcHB#raUzt&uxsqCz>~S!*5#zR#@Td<$G5YDMu?yLVSwp#0Sr_QL zD}JS4x@$Drg+8%8O-4;W+!n)8qk=DQPKlDFe7XasL2hetH?)wH=PTwK8clpS^^L@6o2mLeA8v zf}$2q(gDs!JdUjTy)H$uTD#}fA=InTB~qfuEVAOidm$x2w9pyA$12CD`fCQGj)7^q z<=B7LRX)?KxdypRT6TujNt6=5E@H%Oth z>#s2)RB5sm87Nv494jYcLWXb-c{&7XbcM-54M%15B}5++1zHm^II{N`VX<<=$ahUA z%W~w3>LjUi1MMa`bwK5Nh6g-%#=7m&27S)wn#;EP4PA^Iy#W_hBl~+$RBJ(UfR!nP zpA`+L@gZLkIsJ7Y zy=WAe*L0Tc8jG{7XI?3%KP{u;Ex#?^n)7N|RDbQgF}upDDVEygrKwVyNAD1YU}Yel z{q#IIpQurL4AW*y>s(1qwqA(>oZxx%@|0vJ0G`0;`szZORlhj!78)Z8?~jKX6#bIi zvbuNG+m6b#W;;`-%w;m5RUZ4&(2?;aL->EsMQ2eE1+P$9_=sx(M0Xh<_xNaq=xPRh z!XgLzjDP$w{IsP#w3-L|jDPqC^3s&{)uqJvd+LFqGPSAIhe|?Sci;o>d`Hh$@$ae% zfFItnmceCDJGn&v0F3IwRlGn;_Jh&oudH;LF30}>Q+||NZNh#PoyQ|RkA8F*+I4Ak zOM+cHY6Lf3Bsf=;jPd?j>BqGYv97+N+ZLtmHBhPU!+t}u&_Gl~_DaF^BzE}^U2}r# zwfyn&4v}RXk zW{p&BOr(`VcoV<3z;p?F1lkgrDbO~sg z7Am8wAOaFVBy;)cg6_TQ*7e0vO*%@WAiA`v8*`JrUcP$uW!=>~masn1e99=;5R79# z7KR-OxBAY3bZYyr(W&@xBPhOj%QB=MZ%=c}jvJlyrFs6;r@Vl*m> zinws1rBho8Y!^}xuGsmHJwkn+Y4Fo}*VXn}m>Pu<_G2ZXxhwKsPjEjj`XT8xs$+9L z(rU_>si}~+RQqwZkl`3B&M-zX<<2$g0k49RJJjV3Nw9ne=spG-AnMht980bmf3juLWx zeEHLq>SeJ10EQ*>@=T43F69w-1r?l-FmulySkv@Moia^gE27tzPjwA0BQL(vkQ;Bl z%=RC2ar4$L>E9LZ5mjubWc3~r+agPk`?*_=fw^0_&(mKK9Sy$g=t)bCcOgfOZv}!5 zBk}m_JVsO5gZUjQ*^I|i$trP0M>##tu%P4bD_dH5f-t6Wla6vUr7_w#{n~$BS8~xB z5~QSnrDI-)iR4NAG_*%#k^8j%y4oYOk;7^Ib+xksNjtQJ?W2QQi@? zNf{?Ra*@WiTFZEtwShlrKT`=(R@;OquazJk#CPLgR{B|KJf#T7!b#&AgTm@`y434^ zVhjNmssm+guY1UGD#M8g``AFhB#z+cRVCZk`F8~>ePY~dGjZb8U8S~}E6HDmPUZ3Z zCyahN#_#w~b4oww8(2p!D^I-Jt|#}1`=?7Gc4O7y>}k|)&CA37zGI-Slp!Ayl(T>U?n(6Rs?i-U ziB^$Yi3+~Kqtxc6eC808y1x*Ab$Q@z0FTd7j;9z+bo!_&OfBeTO@fw|l&NYf03#%D z51vk_Zk=5goF;B6gA{6o0-oh02=vJE)0qG{w6A-Ab$f^dBepx~wmn7HsFN<_R{+bp z2S%;BY&x@%A4?J?vg-C7W9B1)5qT8h*X75of34(*&exF&q z*>+V19GWPpCIc@$A+<^=@iw2`V|eF0e6+gh>U`K2)oxv}N(@D#OjH-0T(%i~J4hKq z6o5!02ZQITE|G84-s+rdmQ}n2H*Pck0KH>)PBy>wf{=C|Q;snrZMv`B7Vt<4AlpC1?v9 zk~5G`KV5m9bWo^sV$z?T4xJ)U+{AN)0zG*0Iv%>2eAB5H)B_^fpv{!kGBOoDuHo?( zkkKVUDI++>GmLYMD(b!K2vw=y{{RfYaq6WSGcv@-OHH8;?${dx?(I8{d-Kn2dWFYk z0(m#}6|Tag%p#eVi4jukYC_PUM&ul%ocSFjol}cTg!IYJw-y^CEwSNaWDnFe(=hFtduv!g|& zlAsotNmzAi9P#mzIr17jQ$v5WSlJhkA`xy?B1e$>24hKelm)uii}5xO0YxC>XUjeH z^}5svG1z$%nk>HOfYYJRfyXjN(0db*cpisC{Tjr*zqa!#RVrvw>&*t{KjI{&Gi@J* z2>|~95FbAJYJ<`X)uw55WHPqt5ht3e5>^RI%UZ%xen`kxJoleXckyaJ?>I87`&dUN zuS%*)TnM#j&(s*ol^wUxR-QRH&;4}P-EtJgJMOipFKr1+n_d|iJOlWiF~>TpDBVA; zOOHdM#Z7*$M8&dPZaQ26Y9HRg&%?;)9(trI7HwKRa#d1Ik}J!s(-$55xR6UQ{_{xvkT4N7X zDNeg4GSr%Ev^ZOHazeTIbBt%@u1MZhDNw7N!zhTMttuB9e* z=S}ySDsfAa%V|@GIQYkJ&t18vKQbbG1?5elw1g>KlN~%^V z?6l%k+SU#SBRSOC`Lii)UbR$N^>I4Y4=dayNo9(}x&H;|FZ=Ndlxl^xe@iRwa$ zM}?9Hrs1Jy*%`|s#_KK7Vp_FTS6Oj{%YjjJkM*=9^OM+leRNRu0diZQRPX|#7C2ws zImpikMK6dMCzKr8WbC%DC0m^A$ zNOK_tK}4u$jNlRH=b(1adTko%ejA});HL@k3EUE#=Yg)K`%+G^u3NH!W8E_T%#kuP zu9~9pvI{4LFQ4K&cpiAyH?HeRh}Xqk6l#-om=WGnQRgj^3+;pOtd23k{WLY~r098; zq@5VP8k%yuHA>oJI>L|^R1QhUm*@KG7h|qP9`m0Q#M>8fIM1lm>cXNxcI>7xbkvbb zx14Z^vl(Sunnu&e^3!GOXVRzMRdZ=p1nLoaEybH5BrU|?d`Hv1h6hlMeZtGwa#9CS zYK#cyHu(;;Fm3NTy4~H0YFy=oe<(l$B3$Atwk= zKMF=OoPQD5qQc@nP2)y+?4neSPFPg!*p*4LoRJ+)s64Z^NGe)J53yy_Ht2nTt zm7fe@WmpN>lgG>)YTURT_eIf^ur|Lir9oZujx@Q~rzxRAoitN*P~vRhq>ABL{&;NtjDQFlorw)!0{VD zsKbDcLCZc?5>s&f<9OoDulyf6am-e@QzfC(Axz|gtcu!Ap#meM%x z34YA7Ef~E`R9IB%yYky@Z>4f%mkeAa9f2fd0zAHYEm@P|GvXx#Hj&9Af#?4Ke@!=0 z;!+l5RH;!KX~VcVA(j#re2-zO+o-g+D%Zo0RwGs>QCozOOlp!;7KuU3lAx6iN=kSm zSYp;2;$hi0xIOnQ9-zA^%O-fIKyIq|32{*h0?UZV>^?w}HAztI`?{F|<5DfiiB#B( z$t^n(8(4G10I-Z7kKoFPIOiGDOuKULO?K{TJc_p3s7YMc#70oE8q2P1gI@MXK^o9s$oDnn+{Qqi$0a$f=&CZA;9sk>TeV=Nxy|*|E^Lg(YeV$R$}EkCw3F zzC_!Zk$62eq*KzCQn|>CB$-K$c5O zY6H38ep->aIhbs)x14FF93i&cbz65U>Q6d{b&@6HR6N3y$@<>TE(X7eZx*($s{@OK&M{p+PMmp4lo&lzkD6d%UdcmcKTM z1yh?`bGzkBwP^5pI8pLA zC-FL;)~v^%-Zv|++Yi?z&z95l+JiDYG)6#dCuvvk?N;SuvE7X}qa?V|8lHbI2q7*8 z<%MFwoldlAP%6*1?N%&QHz6o+ETDndpE3qH9BI|V$sA~6taS6KlPy}s0^duCqbc-0 zwbi5+<~-_F3W64s$_dU7r^`fqAnQah^3+- z+m87dABV1~Iv+w9cFuL0IIUBNgJ8c5ygxn0S6OKrZ@~SbOdbrx1D)FVIwFuxG_U)6{a5Rc1NG|FOIt+0opR;ZEe0pOl zcNlTxtUQ$;J*0v@x-?Nvz9ubfo7DGQza{ko+opz_kyVb6`MLmL)~bQ?gdq2G8=MA!9;h008my^ zaEyYi`m0Tq>jLtFa>}S%@gl~ZDoc*ZORgnQUP*09OQ{=jhj;^@ma;V=I^{K6?jvPo znJ222luDwh&)1_OX8;TxfRll_U4cHDUsJg02u%30D)E{3Xz7tDA^euxIoeb|hdA@q zOAn^k1s(;(Oo>Z{QdMoJ$ZlknfEijzD=NSQV>}U$$6sp}0?qAlH%+Cqzj~p^L(*M; z2$vzH5>QDv9AFJ*DL{5wYwy@bxQST%Le*)rZYz3Z2~Ej>?K*M``;HQzk~ZhIay7~u z!mA<`aq|jN+D=YOYvVhPx?k-PWz<@$wJuC?6;q74DT2{ESwI*#`tALGdIKQQ8mh>1 zbTIfyBOw_H=g;%dne3f$Fz-$0@(eX1JvFLIpLo+1E%nH85*pZCR!V<(p5Ly!cNxc= z4G)N*pd91Axd}+5GfBH?jV3x6%(g~Ca7f-b*JGP(COljK2ZDq84KD-1jIZ$m-*0uT zeMz-rmy**;f=S%00z!fO^bd7C=V#Pm#bwl(i&oNbeRQ*?yPax`RiPcfHOQ%p}FcTlG`md z2yF-fAPz7!8tN+Eexm|AF7AxACvXRXbI)&!v<_t!vrinSX`qL4lh2=nvYG%I@}#kTro)vJ!dqg2&eW!4*!7O<53 zGfc{{vQtixPBD`C$oPWQ#~yzW{PYdmvuD!occHqVxMgIe(yqhPKjp5adr*sB_qpgj zIjv0;*;O{(lxi!$Oa_zuc|3E2!So)w=H1(9CYN^BR`=TJ*A6Dikpn2L2GHdLg7csU=Yq}?~9rm@rt zMJnm6w?Lvi_GMHHMEEU$ek^~UlwTb?r?Y$95$&sm6-q)}OHrro+NTkYRgGjO+te++ zgylNTp} zj)s5P+tbuhD)nl*>K^wcOcWF=JHQ0vIyGv_T3}2l8Bt-+FYui)s=|vETVE#zabB}- zL8;WIJvIk~>R)gv0R7XvpDr`blSH9HqsVR8Xj3jJX&aP#VB{Sly)Nptt#nma0zqMJ zNq2BkLCD^(Bdu2T>sGvK=@mDVAua77B>^B{{Ix;m8^_~1573EMI-}jPXmuFys^yr? z$CD{&4WUG1f}wzZWcq6DiPqZnu}_C0sWHmRCdX7ZLxG^Lw2*L=WwDK`-hw>-4MKgF z=uj&z+>j^4YDF>DV<~7_JV0;;2?xtQdLp9Q*5$0kRHl~DhTDNr(AqaN!oeeW1aNzg z!%qVz9T7a)76&>#Zb@i!UqvPZbJkp_hEgP`41V`$Dm?mGQB9GvmxsfGs3u3el|2t-=fGfY zNl{5VM*w9yc0{BR@hb=9GpO~4NMegn(v)ZYr~d%Db+h*<8B)o>&-*fUkekJ( zp%*v{QT#RK`Ao=RO>bH^0yhE3`RTqaxY7fKlBI1{2rZ8Mdh2*mP|8^f9-#pL0G_M4 zHyE#ql~UZZU3P?}OP+-Qlqh^f1dZem;ythis`@8ZZ-v`(9CBP&*+icS>ZAmq$z$R_ z0BJ`nQa}Xb*Hg~0#*I+0l@g&D)iWk*EF;2LV`9{x0{40h`ub|2xG5I<9YOHyOTkfx(c z!0{ez1MxVJeiM>-`DzZE{PlwLtJ{=%tB`1vz*SbMAb^!6Josq&_vh!Q9+=y4Y8LJD zZ!;lG%tZ4ZO+qV)Q%@fVV2p4E3IWHSbjj2Hm{%c6l}McAT3rpj#m6JJwNex5pFHVi zVB6_DM_46|AitR{v}eq!Ue8o1B~h)|k<$|#?O5jrp6d9s_>DAm3#-yCo7!w4;x^yA zvhz?<+Yu`T1i(1?%mE zdWBbJvogwYr_ji3B{GjG2P5^#{B#c%QPeWE7Jks}9dL>o9|QfBM1122lUVjFWNzwVJiN}x{rZrDNK|6UG<~?0BE?%S_41wk_27Jc8f2N?Ak<{YU z%9Nxl!^bDFBl+u}alN6Vp(Sav-cCu#Gdbjw{(4ZqX=v*)(rnjBZF`9_ys&jq?k{Fs zfPBt@%jF&eS>& zG2J=BRg3_5&PKj;3$NCXw55vbgBxDj8miIckdn&z$0zd|kKBIE)iy6Q!KcpqM$4U- z(H=+d643wo^&3xbYmqvfH5A@4Sv{nH3Bk}{|<~kzaroRdK?AIYV34|A1eG3~K zKsYK<-GB$KysG1;ret`Ft4Bn4h^iM zxhnXN80S^(z0%vc+KplA%|15Tu4+=$910FgLu5AC&TyZ*`s+<@$gkY&H85I=wv|hy z2%(0ZZA+f^4n6{Q6d>*(E582#rnD5+-|aXuSa?|m_KmH^onE$Q#G4)VAEe7rlN^BC zoG5S(xlMLg=h5pgq70R?hdv{){qB4J0Nj8P$#Y)fQk_nh&rz|khM z`%N^oZFMcBN=X|*D!?i;jzAoQQ1)Wk=Mny&> zWk_wxaZm_DTNL@MN_JIJA{)c8 zcY@G+ zmZVN-0$52r5)Xd*5O|0Ag%_|i88r^GwK)u_aiUY)L(U)_t&$UfPCMxE>N;CZwLM#~ zt%pBMr$YC#q&s`2Jz}{!e@3aQwAp16q1HeR z#*0DL;6;dSLQ0v%K0o{e`Ds>?)472cJ^VEP04*xje&)lunjS6aPP_yDDMJZ$;H0E? zJI;uG50oV>4XvTWelvuSJj&IsiN^l`xDNi%`h3LoK9wxCq``Ka8APO#5s*&gV+QXkpa>d3@DV9`X4=YPuhZgr*+k-T|Ky}2&Eb9E>fy)qbPuZz;ixi;aq&a zdgiUwX(FF`)??D^ZPuVhkftM4!%9e!+D-z%@&}y@aPDbKY!MVT+9cK`JnE2RshM*b9-E=*odwxH;7B%eB*2ufTyLB~IVB2L`rFAW2Ll_AAFhzcwV~0Lrx;~zd}+e{KswQX-SaK0nxY}R z5Vgp6;ZOv9^$h79xq4LYs;ewi9t&x_5E1~%&a1K*8L{wT-R$={^;VY_WSLRu55FC{ zlk8+ThPE66K>MWe`0D5tE4Ax}lFhO2kYiG+b6;f=98`$%+DL6-0c3HxDmWRzRzUOA zW7%~nMOM60*NVc~j+LQF2aY+$IUmzSTuE*;(oo9wB?->d0GtnBm;Rc3m#V1Po?hyn z$2vNLwXa*9a;^AfQ(~1NEq}3=dG2BeaF=GG{dy%HFv30 zi0;*+CD93fFNctjw0uim2Pr&bA3YKN@bknMK0glxjhXp^KpLUCr*XuU)rG*Aq)}lk z#(`0t5^9-#LXX6Zx4bmiJET6xxl6MUhBh=+xy$0hVOA zR^l*7P%1s}pshazWb%-Hx=BT*)2Xz^B2m)PDXapPLp-M$&woDs^t2>{+e&ReGapnq zsGiV&z@N)ri-aB<{6}qlLQXpkeNip}4NbuI-g6PXmDIlDy&&YPw0ciD7k#h7(_PD9G)jo6d!qVM_+Efr+ zQ5h>&-UT6Ex+1G_6I!6w>8-k1dFW1tR-up%&NqHKA9`IwfljrmHX~8}+Tgj9xu)A> zp_fBPD_K#jI%Bljd}7j;r0@7h;DnBI+f5Y9j(0+6QLQM{2{!_urBb9xjO%GbdzKE- zoMhmWfzGsb4qOLSB1gG5A8UZTrN_g+{-HR=4)kcrppNEh}f(~O9K(SJLYr@t!lbFS`MZ)|Q( zetP)gRpd44G7xx92g_Ku!gwVk>#px|;6&>P*r4bovOXXNay<2F)@T+*I?4M&JczE; z)Y5!5n^s&4$8s~DO;t<6)(FCYJ-m*-DYSsBAZH&wHB;27gg3F3_~%V6o64;cn7Omu zsj%0Nxf>9jqaO(%tGVs2g>>tvl`E0J-9{sAC~X^(fPy$4S^4Xjy#qrhr`Jl|W}51g zRAV0X8P^|A!Z~e8;XjVLDbe{Xx`u)f(`8Qtr6H2D&N~s?@z)i$K$LF=NjlKw2Awt) zN~&s0lG_Vn3slvq4i}bE5}={LBjPzc4SAb+SEO6EyOfo<#AyzxnF^j7T$MP5l!CL_ zV*qkJMxI+5T# z8R!w10|*hyiEVkvUUwW|><w5K`{B66x_}#J6O$@+qy&QkLpg3U?{OQV9pkIr{2R ze)QfQDVl|P9nTsP=ON|6Ne3=IS}EFs>E z4&H-a1M5%lkIPjpEjOs`2RsaS*0~k95K{NOO^(2hgsIfHunH1;6VDm)&wXoLg&g1k z#;Q)B+O_Jn_a?Iznu>)sEAZb`6+3}7C=PCgMa?g`ghf##N zQ7aKyjE6iY9&NyOtG?6E2O3D#c9$YErafjPl(5%`;={?xQ~l%5Zrt|OQpKfm*KXR= z$e{g;K&d*pp5_Wtd{&w%NyluhM;|?-Np8-c*6wID^G&us#4xEpXUuREw)~Q@@oWQy z6p#ofjFX~w1oQoIzBy-vxZ8~*ghcy!$cl}OM8+|GYZ16z=LyYGSm~PjBgk_vsR|q|Lp&>t5IE!Kpa@-7 zYtLBSwT3y9?vG4MoknmDGJ>2uSWA)c) z*kj)tjN?lUObAF?QgBGX{{SPdNZAo+S4HJbYSX7FQdK3Uf)J9De|QNv?s&$!@YF?y zm{Js<6{eDm`D7#vXYl@dS_jH7vtSbg&u?|DtE$dn_ZQ+Au5zRPJ~;gJ5cN>VeysvC z5;sP1Daul=3WoG0WoDq+Gt z1gnCeeqV;9x7DFWwr^Q*C>IE<(L>u|&Rb<6^!Y2kHKO0?<5k3 zR1^}Q0E`pgk)cc35*@wMPP5$B914?l)q9!@I@2k`bq%L+R)2>X1MtyX)KCShJOvdb zFb+t;&PH^4AApOsv$#pX{{V82{{V)c#9^Yiv7_l_*AfV;QAeP3)-nR_4#zrdT&*zw@!X+ zXXP%TAde0bF@V4Li3%9`4Re;_woyvDt5D%o*{a5aEy(T9Z6|D$B;YtcN4MduZ6m3z zCrcd*k=#i_+(ANt3LAz9I)zzcWdiJ%5XsFsE@XUMVB^ozQfnH9ZtL!qLz_~MM~5lU zhw4j4L{xu#vocXbsah6EPzz2*(o#MX&QHv0vi56bC#W@c%0ioZlFCa; zZ^TN*@t=qB@AT1UNTkGy%0zf9uvX$70k+0>C+_p->#stOSU?z0GksRr+D6o-+UhM{ z`nyvOrE@=MQcXfqR8|9i?55*|Y$ZejH{_2#bvd$?1E@A_y;`nPY4vH-rz#?9GU5*w zTPVs~aGp6l;P%woO#%f`owBKs<)FA;!r2({GlHy+=e|eFO!v!6hRv@YIWgL9tkN4x zU?c>Lfq{+(%lhjg=*LPXX^P3B?YT6G1~on~Vk~q-j^7Do2-*-e?I}vZP{M%VohBjH zohUAq9R1_3QN82d9WLOtv?V1coafU@&rKWwp%tV7uc|^E_z4+MJb9m8c^`D@KX%@R z)R#}EM54&Js`HYknt>M?Euf9cC0qbG=g(RqmOV~8gd1rpqr++{5ZYVZl`kVce!a9j zT{PQ{W#3V#N4O;_l?JNZaPv+&RKnC!Nm2@Mr0oSHp4ios7q3(~SG0?L= ziE0Q#3JD7E$Ub-@f#1te*j39e@C?@2xN6q*D!VnsJ4)O(OIu1PD%*^t5|TZ5(dvy* zEMnU(OPDIg&YX3sWy9?=Hq`MXt_*cZ1qCSZ0s?%Np8jXooi@>}N}ajYIz7iavlc{2 z6_?{P1rF|(!)I|oDI^_*M3OPsgV^fGwCL7#AFLG#6x!FlRg&xJ_df>-M;Iw8BPRf4 z;Q8q_Mv+=)s8u?X(x60JNp#a%ZAl4IJU!nKJ=Kt}!01eS&0M$QACZnO3)G7BHs5>w zCsb>nX*k6?oMTG&7ycE^QO4xPR(oIoK+d0U7hH8N%5FN#tD5VGW8Q+wNx}G2$qMzz z#xe8LN3tc;SHG#(Jd2^l&r32Ah~iT}?8#9%K_isz#t&|E>(nW1y8P1HAuoxJ<=0tK zM&0KGta*B49)0y&@&-a{QrP%|9rhGo_>X8c!)u zA9((H_M!?72-b&rSo&*P-!1XCIpaCkXGGrG5PPH(>UFTUpSltF>&h4^Yj7ZOo^|C8 z9otD94R%^?LNVMVbNo8lu_Slbgq)3eQm~=*#<*mcH?xawucvovn08Pis?J(sYfPcR zw0-0&m5=y!&>oSk_nc1jt||k`NomKzO1pPYb$qd|e)~4N0j{0g>UugJckMRQy;Rjm z+BS~PkGalxI_N)1JOeAk$G{v(X?_7vPH+iAyCiz&TtVE;guJ6Z(=KP;Luo4Hrz*(& zbSd9n$Tub1ajL5l_xmxgdva5;lC=>fDpB|q&l~}wfh9vKYaz49z{uCMxg#8IKlyZb zBd8}zWg$oQe4k9Q?b~(hjl`~-J^2fj8ROz%V5K-D5szQPNMdv{;HNc3k4>q>qf3N^ zFy(4Ahdg55RsR6PBWWt%>)d*3`ctnJcO-$H0RI5LEo)QGtAL_@fM~k18l>VPi?M6E zz|AYpkM!y8meT9+UY^}axzz(Hx59R;{0Isv=aN*CbLovv6(Oq{lJhiPbmejXoZV7b&Db33SAv|(N zkmPcGbzl$Fgn{NRWB$;b)D`HlE#g5wemsKVxklXD!6<-&;p~RN4 zoF9v}wJGX+mR(XR5#J4u-YK_}hWxU54wWYSZGITUgZEYAO)TOrp$qPL3 z-^*OPPg84F?1$kp<8MYn@)GMuAaTIZwwCAICWYWSm;V5<=h@aDTWC=nfNGMYsJ7DG z%6v7E@T+JX_CHK(s7an>yz^`+r`<^*NkYjv93DH3a%a=M4o7XYtxhXBJG1#}0liJ^Z;66OxAN5O&uFmVN=o9bNl9KgO2;_-bP07m z*%KzifR|J5yOO2&XE`Ux=;ZyO)Dc^qZpxD}Fy4<1z|P!_$}Xn^LDjF*W-be^mjba} zW{FOa`V#d{LJE@5Cz3{dyXyHKK$&75iHwXpz39hgQw)F+jtIwnH{R7rGpewgX?r4- zq^TtFoa$YBblsam@v73P_1O0e7^^8_r5z{3ker+mgXyhSzfWUaSFIWp`r8x;PCgR# zNz@XE=s5U@JbM0GU#{aF?80lRx|$+}r?2KR!Pl9-T)}HpNLG zjo$7~Jn@mvh5rC#>U{&GyywanX+&3c1!)nLP{vr|nzTH_{TNyvFAJScjDp)B(|Pl@&_ z5GP0r8EM39BzFg&>!{VB^y+oc{AI{ch=QVoIDEdRQ`b)kFb4ISij;{@xlR#{FJQAeixbplpRr3fVVitbD&Xrtswu^^o zWFHSaXFc(wKB#|jBpwVV{uv|*q zDZo3&!hS>7Mt`=Sv&BF^{i>lwLSobo$uXE#15RM>S8g&fpuluq<6Fv8OgKtao*e}L z04-FAK!1!lIvCw*rz+@jjU`RhnWD7xWpRaUT2+C^o-wPkCs8g+?K!K3ii@x)@+UJ) zW+#V*9}R^m^^QNioP9Mz`xIOEjXc$ime9k=jF`+wl1U0BK;Zi0AE?oW&9!!jh-I0y zR7OGG+iHpa%|zsoG2fHVq0_3~u%mGu^f_&;gY@gDS990Bn`&GyJmi-lJvqr~05?6A zHWt#ei~^sC5$c^-{X@>%T}l`xs?j;)%h2}HU+nepB%(ugdLwQ&l9Vh$JDW)uDM|7e z^46JFP2pLnQrxWEke-VMK#}0aV2>3;7#Z^V>M>Gz2`fgdcPEard}j$5ImQmYpkQeW z=Aq)1B?u`|$pv3MEn|O%3!o)lfagmX_ZW$=b~<6W?D+Q#xRd?%Z8oJ5Ds7pN)rF-B z`^m;R$o_heB{|l>F|LAC>`FKcG-Z1`pjM@7aFJ1A`KWi|lO98f+WPR6?^=M}oDRT_ z-L#&o)4Lm|^hnbb1R7;HDQJ3A$_YtXDj`8fj`-u#R$|FR3swo*3Bc7E?P*V)aeF#l z9`1(_wu5h}Bw!>qt=@e6U9s}kmfr3(W)91T8D{egE#H_3^aHh~ocKkbgfYSYx`hbl}~@Y0*yN=F-xIUb*ufaMyU>O5J!JEmF@q_Yq# zq1j)#;jJZdVNa134h~O#{CaA?>YuwXvJ7WR-FXQmQ36om8@rH7lsjM#JnK`SCl{mK=byDa zi9gs%a=Ze=O1PFvg+M+rlgETON%{W(O;IRUD#_p<(^r?Y*lm43rj!zvRbO!B6u$vH z5)K{iPd&9?+8r&Qa#P)!lqHMTayl1>Tv=@OqxP6#LIuSkDAzg>1n;#2~G z7z5>`%5bURlfd1bcn%d~oP4$9jHn*xQb~DxF-&?VPVUglJ|X*EyeV}L1qtK-0H=?L z`VfA+YoWb3oZ*i1ZY2z@*OG;9d;-4SUVIVTT=Di~C;b^-i`e7k}wxhJugD<6FmZ{s)-oS$^Nw`| zxVo6tw|7Cemr9c+OoWG2@K)5N8Bo9kd`kFx4^iu>)mo|`(`HXX3&J}Kc`XGKyJ|_m zQRL?yeEDcd>Q7#+%hp9IwEP;oaNKb)oJ3%fmmNxXsUY`HD<2T@G5`I1i_x_!3#i%7bgwah^%3iMUVWlKRy zQk3U{Na0xoV?y1zdUUF*URSs7l^usjQqjERg%O{2)taz;@z*YyT0Vj_>+P(f2 zWTb@w+=JWx^RHzKXDixM;qt7ffxtZe1Ri~LwMTfG(h3c*!>!P!QSFL~J<^>eH8!MgX%ZAhQj$9rZchil zIwJ#bIuw=xInFjDU~|u5>%r0rlp2@4B0L`f5t0aZkO|MP)iR|SGGs?lam0eJ54UY}hue@o&8H|U zXTu1Lr0xgzfcMuiQGC>G_g{|NXni99c*C{_%NkFVNq$5|xPwZ2m#?yY8LB6=1)$tS z6a~uM5>I2a>#9+uOk3x28d8eCy~rOyu1)(NToNn3(6*ep4Wq_Xq5v7feiMvqthDvW zN|vzGMDE5(#;{g96L;@$Lj9mhE1zpL`jV9?rH}^%jpIO{Qk|0`d|0hIea&PAB`UyI zKDs(TXnnS8DWS`iEf8N~Dui^WB}-R|l79?;BcR^R>2bU6`fVC@ekB^8Ipm}5Ip6Hq z7&%h87#wR%pQ9^_*5}G&sf`t=>u~@y0s!60M|=`{_ta+onEaX0;j-!sWvwKH<0R+4 zbtk;Ke2Xsos9SAUBUamG{{RV^lvcMhAZGzdJ+ZI0{{TxLuHRI;M2hqpOE12L9H=cL zVvK~T9K6h0YoT%y4%89=0Y|Xy#*Z$cFr#TteJb6t zvN`&V3|`8V>VHdmyIAS7Q=?TMgAHnGtqg+QNjb<-P$Udw=$gOx{{UxdX+pno?)kwO z=Oa2b3h?R%$L2&P;D5O=eOpQW29&3^lR^Iga%2Ah4L`_fN_%UDTu+Pt04)y`DGNht zYr-mQy!leWz)$ZLq8)q!ep()F=?$f)S}OR|>-bL6bNj_>l9qHg0gu`vZcT5gbegNo zt(sf3#YYocQ3H169hn|v5ukG4l{S@KdIC$L3Xk4*7Y0h>8LXh}k+k3_bHF1S8s8vG zQhqV*Xpbc-XWkG{q-{dGWaHP@P#b1c+6B`kg}PS}y~;vXat244K3bL7w)Csc_oLg& zt3#lfZg?(Fkdji;4|N=<3=V&;mh}Uq!rZ=U)RrspYbcIGLZcbAY;<IS)h|MP&xSWr3H6+WLu%@IHee{H$20Vrc@9U#6xbjmaq2d)Mc+anWHa;K#eA)uNU-s5<%9X=t zF2!xeB1v3yNpeXfka3(~m>#5C80>YuYL-|Zcu)lq~79dISrSV{;; z^8TFYm4N8*+ef;%Pw{112mO(6i4bmEtJWFp=L^s@y+JuEE#ct!_;~aN7P>BLdWoQ7PcT!G3 z*M~w}Y@uz14>EI|Xo!aC@f97E4-H2o6P-=Y#V!8zwJ8q;Han24fvS_*uGpzvJq)eW zX(%tqkn0VWdBV_F@n_}h^3|gjGfgtK(twbolgZZk1;*jLSV&vpwRmYGIaW9r)ZkuS zSTC3j)H(rg$hIRwr&|!I)u>^mB6?UK1EX)m2t459@jpEfeMYuq&T7VTXS~Upn2BX_ zqmO}Zd>BdNAeH!`?N+l|Tk=_i(D&86X0)~CZISSezP$2Brl9>S z>mAcJrEpES(j8`+g$WVX5|>(0Q3>$jtb?S1caL0bW( z0shDgm2Dl=2^zxebB^3z8%9FpuQZ(O_W0@fuq~Tv1CYwr{Z-kfN*1-HDDHUj^ZfNu zSshe|M7HC>odL&;a-xT$f~~_lyM8+B4^jFw}=kh^|$UC?3vCm@LQjC zDnSG!cF!L@HHP0A1*L=k0146V@3U=>8P&98Nbyr0;zB?qs2<(D2kEb@dpg-A=K+%X zzt);>aY}GdQcmvPqZ#_>ZFdR{{eUrLVEjzFPy8od+hxUl)?D@FCr3Iu4`(>oX$z32 zQw_(|LPmFm;{ap(yy?nkv%QfXRC2izP=_RJDhUBQ3NxJJwsFtQ>$?)$5D6i~5Ih$N zJn)0BN^Q`PR>O%(zr2!=e;piddpudI2xSgVOUr}fxA1|L__!k&^yle~E2jG=+gHUx zRT33abU6+!#D_snQh=25Gvq*wNILI-d?nl5)~P=l(3~UrM?^P3YwTGGtVmW;7^CjJJzn zpg>VOmZN}AJfEhVDL359w%?I*!)?ga#4SxzgXd_P6Ww_~!hDGG)~tAMvpgPj@rh4EaDt$4r5u07`f1Jw zr<~)(n@T&}^B$$@XVZw{yqNeBQ$*-TO0DS+w63Sdl*7*|Ve#Eg@cBVT?)`_5`Dlcp z-&PGCkqSFkbv5q=l(t?|fNnVN-{-1AFR%l$AtiEdw8nU#Zf&Srl9ESYqu;*0v->`y zun0G5lt|Ap1~cp5O%o5(kZ~3my!w}^F%0#M%jES!%};Bxlt=zB{<`w6sM+2B0JW5_ z{{U(~uBe6n&z9D5F5(Z6Ofmg+t)E~x3`yBC@^lb0vAD?!Kc2YQzMKC5>@%yI>Mhu; zOUeGQ*s+!n?cYlZBOoQr=k?awZ&7V)!BVNTJAyqgiW^npZZq>lkBPQv5v`jrEL^U2qjt*eTc zWJ7AorBvYFOt~!;8L~H))XB~Y_i(ikP6B>fE1Pv~7tr#9ZlH3YK`0+TO)|MUMCV*` zH1-~0qwzG$soazPEOz{LujPUMlOu>eteo2Rg>I`J-IEekK0^@W#RODdOMt$zuZR>M zyYU=;Iu7OA5M{i#-z&?9cH*E1;l{d4?Z;JNx>ZHL847H{83DwpAzmo+{58!)brNj_ z<;C|#9c>P70mjKV-w)v9@r zw_Hk+gyC7^opOiS4z&Hv?FVYkC~c()mV z?FD&Gw`<08!b_`4!U*9Q`=mc3FXhYewrR_q@_&AI0eA#_&#IziqQ<`+*i{>#kC&^T%zGfL(inA$yr*l zuFAN8pX~>y)gbj|l~`%FV^Zc*z11>?QjoB$sTm!PK7P6gty$Blwb!Z6DNeG5Zc4^T z!TIZ|9@DMB>Xpp{q|si98of}AxrwMwz-Af&ATM{3I8gjG&6@p{Hs8Bv!4+1gIZu$d zik8!9C~zQ=xO}yZg?0e*G^Bh?@JMo@BYK+*ILeWduH@&o4;}mJIcL8vm2k+0rxotQ zAwD9BBk?+(SvEx5+U%uU>aRtniSC9~GFxd&41@ejKAKB^bfNoN@2yhNaYd;rBi;#_ z381E);0?|H0Ea`7#OzHBEWLxON^0w?MU1x8vka|iS>Sv_9(*1&ZpLI@trmYba!j^5t#v9n3NF;- z?n;xC{qyIjMK1WL*4E4?188U{sFbG!_VdtS>KLPNvG#YVs)>0qaF(2qHF37gcHrBdob0{w}EJ>GB-a?FZpq9o!?Yk-G&}yFcOs2IOy9;|s zai{6Yb>`eoLBoTe(?@b?qD)4^?Ir!-ZVon;6#>{DJhbN?_4fFY5@b-W$vkQ&cg0$1w4|W;NKH;C3B~{${IvTqsp@$N zWndu+B}AU%<@44KN7U*gA?`S!o_<=`eiP3hT_JW0(%5Ms?+otBlnxFwwnBe#+>#N3 zb%y5CM3;gF2PBOlDj;rBl9cDUIMRO|M>#!?m~UnzOrtboBs%PtWD8jL(fRFE-q?5{#k3!+@=`+wddjsx(`5 ztBv*4orqz|{?j*ER0m%w_b9;u8%P9aBxf4;(tAc%OzXFGYNVIjr#u{zcmDUrR{h0I zgq&@{a6I@{j1|@f!$AwS^knAd>GNr(uDesNRIXQPQDi?Joh4xnEUC4E2^^8NL$^O& zQ#7hYw`r=Fh$=(0x347BIPa((m}_z6DsGihX!bW! z{?A0lZYa)C3jOgLRG46`YEx?oBq%8E1J9GC9YeJ%Ju;CF?zK?;Qrcx@Q)telx|RZo z+@ufgW4JoApj-5+O5R;Qof-jumr}xU;vZ9-{{T%ZZAyywjg>s#hFkY+jiemsIpeX= zH}3PX8R8(uUJ}0PM9~tb9xb~l)GbNuu3M4ultNiKB`O>Nk=x~@oj|cAUH8RKYZz2z zLS?3$K?JEuaH&`xd>;Bm)>}ruB9(8_x^+~IYpcg`%9Syv!X9x7>=J&tI3GM}Ino<$ z`m?VEOuX-Sav(9eFEVNg0nC69g&h1U2kGBI8r#8z8&iE4_dFFf)@CgbD0a+)G+;RA6Z6epYD+{wK)fkV(al3`tQeiy! zJ{(nqj3|2Jj2}%*x>07T)R%Ni_djx%SDNWeaH0~1x9vesBys>hh}MT5pf(S4HO+ta zT}T?bPhDcLqqW7QNq8Z^-cs6CjiWf@&rkh1>D^k{y(Ls;oy@8jX#gXg`0x7T@YI3M zt5X}eRZLW=4MkwB4^2xYQHs(DQVPcafDbwK^g2gU>(!qInM#=a=MdFKU${m}+9NJx z0h8!+`W;weS*}YXX4m3I`n_{dpCPT$BeDt^ln>rgob%g^?HX|D4Xr+} zLkq09@7ZYyL?#xHgqFt%2p&LwXPrFX7d^ILZk<_N8EJx2`Dx{+a|u1qa6rKG`RYw? z)R?(xtxbmeFUCI#Ol5^9kKq{Y<;H~KS%)vFw;)Exh{xAU{x?jzV^W&fLsK4X#EOjV z1!@@ja1L}Edo|n;s2yyf&#XS%aNP?)b$p>NsPU3dsT}G-?W=o=_4^XnWjKROY`E&u zqH^l9^YXyZ=QrI@l%*lmIDwF`l>!fu8v56yU{=^HrLKs4XRVz~Qxz%k$GGwtq#a_Dx=qbx|Rznu?3YJlJgZ@j5UztsXbUP9N=Ue)Yq2aT0OD-?rKnetv9>9F`U{@>8^oOCW z*DLc}nQ^rUBs%K8B}s8V2m|~igO6Wc+7o@1I$W#gtT83ZisI?iG?{M&XKL4+G?Sj( z=TnbvJMH?#%S^OmZ})fu$CH79;*vl~`T#MabFs1Vv(pzDKm)S|z`pEk2go)Pxn9NU zpHe!9T&7V))iIeB320@%1$#n4Jf1xP=jo#Ru2#iHvD4Z`4xgHo#7~Nu3Q*pX+CdH} zd>zOnazCzzPhu{brn7cb?&-1CTc)JPhqxV{DIXE%gN%=+jAf+wggmZ8 z(g((RPea7E{8MG`+e!xK=;dn9d6dy)J3XrWmnro$!fZCoDDI3Ewmg6;CnwWP6%LeL z65EIpikFW=siqVckmgdj(b`gy=^kOikTcsP4?Pqq+?=R$fxz@SO%dm}$r7JwvVdGW zh)F^{PJ0a{8Ei*^9)1d`{h;@6Q10sO&0jStROswnrHPI(>qoT&?}TunmmT9(i@KA6!F?ZP!PZNitcbfy^Ro*+KbYo%9fezITv_BA7Q{k z2N_O5z&!rC(^t2?`S#aHy|`HhB+`PFC)|i6D?Ipv zBmSD^%CCtu6`1IZ%g9a+SH^x{rj_K`?l!d^VlTB{0CpwI?1xEB7q9kvan|C(Tz&^w)(?qmPs>nD{h(6UA)8Jk#kB5Aic(R*$FDj9I*_>vszQks%*9v* zNkJJWKQ453e$jhbx{W%GI#krcnHoC%*tV4&>fMzmzovsb3#1Zn`^t|;dc4gcx$lNi zI&s1y4b~I>!VW9SYn>JvQr%r z+Xatpn>74L%CT!iE&@kT$$Q*yMVXt2d327>Vyi?BfS|PWGg6j-uQ&{*=>9U+o1_ z8`9G@dV(XuNFW80afKWlWch2GwfiEWZC2`VKG0%hh%YKK%6P_jtOijGF)mriq&$A6}!c0H+Ey>Dt=wGwnF zb0@eP_o-Pz8Xw+KJYZ|(-O~Dn3hS*>U9HBSHWS5{=CR5YKnExzf-pyIP{M!i6u!Y# zX-;)wq{B*WXhk)^6Tb&J&ur-OZOMswDpC-ih!R4(Xc+bcveQSew>l+Fxzz>2SdfQO zK~Kexm#ERuS)QZ+0LzcW{{UZ@(~AcrT}0?~?YYJtv(g%_^-k|{O4L-s`e%)9SU<>ut8?`lOB=K`GAj+w{~zCs3+4ES4cY%PqCL zdW&cv;CXk@TJA9iLK+^#dj&qKDyMB6u?NJmf;ur;c-NUK0fpn! zTNIrnn6ieI^vrqR5_9Y2qx0 zQ~^`V@l>qizhwdVY2&8e)Qldl#Cm-C#F!OIoAH`}cx{$lDhLGjJ^N^0iECA*nN6aV zKg5d3dEyvX?$8c55sum8KD=qt(6=iL*XR>bO_ruU)oloou;4h_vZUi4S>$ z$GO;hI)xt7p;PHGUQ^NHj3L#Wl>(x#!|!A8)UBsd=sOgZbB+#l#z1YR6oK%Tn^zz3 zjQ+auO?1MLrG*lg55x~)>x~h;z}2gd$gAy zLXf1Xm2#ka<4XiIk=T!+I*P;@a7i*5aa)zd+?AwLZTK~2s|B5tq(}(&K%DN#Ad)=B z4|A&8-RMQt4&1q@)7y??R3B&;WXLW!w0MPXsU%|=NeKh|Cs)hLlL??>fIvHsa&)yX zDoY4b)su{o>7vDih#|!V`7~{g6G;uS2t-EG+e|c+l2VWYai21ApT|p9?%3_A1L9E5 z)8)>*xYAZKpa~p}X?egYD3F;FDxDETCh$5^v0hVks%;#C?otsokM!z zT&PoeOL9wu@QYGvJ|n(@L2XJqbDzgSt!CHi9d*^$Ux_%MK&H)7pK^-|WTy`0DaheV zR(o@#CfTM4YJ2-JPdt(S?wn)t`sic4`muVW+0va!i2IFSXh(%ncpMg)Z2?Mj`g{vV z;zy{{Gxue7vvS<3mhIm@-1URyiYU3+ipZ zMQzp}MGBoBLP=9AL}czturfjKoMS^zwG1wybvodSN1<6YcP;v6;+X`bd&15S> zy&|O3X%%?R-IA%vol>f(g!pZxU@17y-#Absza6zQ_JO-E20B+ns#~>K4O0M#?-I5Z zJn2yYgb;cE0IrzVm3}>j*6o|_FKj9>tzlUC={r72ZA+HTu;@ynbpT_16h?tpi${ePkk^R@LZhYhaVW_CM0uNAlVFsaJJ@ta>MLxkX-=LG2`$Zc}$do$BhWoU?%_!3-3)GLm0s%NTp z&3>hM)T$8a^5;>@F-!5;Rz2mkI+ZP<&nFq+@N@Omw9K;mUL#T?yxGncmF@=}`3GMF zpALX+OLh7sRxKg+XUd*c6)IBEjiioLuRq6EvrM$q*LS+4 zDFbrSSGQ>G$nx)`D}F51Nkn-i^&k+h1;D+(Uii@>&3~*9*hA&#Ienri_a(DyH3qo> zOnb9Z6kSxcI9=ZQNKq>18PAt(21~W#RFve09e5GS}WnN7D( zz*jxZGq=w$)`=Rt? zMd}?2JPAfVCI=Sdxx%mk@Xp*3oMS&dbPK2Opf9LUCBvyw=v8@@1wJWp+M-b%rAk~miETlp1d>n2Jcl|8ES{Lm zyY9MW6YXfQS2^Izb7y2W*;fHX`2pXZDah!?xXtw$nUbkdSZ`{Gima__%CdO#IX+rL zaMmAkwH363;DePVD=8%TW1Q+&cl55KVcgYf6SbK2C!)LIszhZ4H0C_gN0Iz=hT7@0 z>&oq=(p#v+g)Vf2vfQV$v66V)ewqv(;hP}!3SVG2@}~8@`HydqnDnO->&hiWZoo*~ zbDbU?MM)N=M1_1l2{<3|4GW&hl%djYu2p(vRZM5Al;|p2>U8z*YH0)zy!{S84HSJt zPAxj9@(mBwK>q-qj!gv+M%itcPgBNV$NvDsPx2a21~sCdf7E0D0O6AZPyo%vP)> zHukU({h)N(tRAk@t7%h^Y13(*>K|=n4d9%BN7X)ldI{)NTAWJkhy_Y^I4VC9PJcag z=i0WGzN_BU4wusX%lkn#Gx8MmK|w6WNX8Yr_*8Mmd-1MzS1gIN3xa$jRzl`MeNkOf zTgpjE?lIhR-$UJ?+n1nxXU0K#p!2T+o$YNH3Qp6{AcMiwde?fTPPx|&=hmo*+;aZ_ zCms1GQ>zNdt6z7O8rg$gY8={}fgQKxqibka_lZ4*v|imJnQUG4+62n`Q)&>MG2fFJ zJCdy9l#$#4j&+b5Fr97_UcpmKeP5_H%YpIsQ=hsD;~`-4^ZuGCdY^f90@b;jW`f)7 zQ&Q7Sp;6!}PV}gs5o#bDY~X?BPKQs~`)NS8>rFhw-+rntGv4rmFtPD)G2D4~_0{#( z>g0B=7&Lg1YYf$7wYloMDRFUPHc9xB5)S2Y{I%#Y6cz!zPcxQEe!tnvPOMTIxjKVz zJoQ0t6wi1SczZXidH9IOfBiKXrdx5Tl7sC@@l>7&Bw%OPPhCT}-J@Q0x1qYJjCym0tdiPrN#nWBmt1#aYB#TZ2I0Bv+jXvxiqz&J zu1u)3V1^rQ10~fRs5vLLRr+fFjdfIL9W;8}yv=SUVmyZBK}>gcs#+Y$0c#%$TS|$} ze1@qXVzlO@>u;eBv|-^{PIqC%k*ING1jP->LSJ+URVp4&pkN6e2-d*}`%_z}5b99pP_DEvNrV^Du+do|1I-?dc5 zJ?XDg>aEFfF@_us?IBoJJ7kVNTAEW~<)pl#3Q9ag?NA_$XCqsq*V5?=LId%VqS}<& zf!cn5K6OGRfz+X<^g2sdeI9dEDN?Eb0A_oes*I$Nh4{)@@w43Er|=qE(=L*(h1ANk z^C`>NYO2Y@eRI#d;GGiUP3d4gq1lZppS`V%p`J=k1aM+>It0dp#uqRL}2&U#)=l6R4_+;>r`b^snTSrPqVo= z@q*m|wVuTP0CaGB`Wub8{8wMz_)gh!qSkT_#c;jQN1a(;kDG?wP4iiQeK56ZDiBb+;yHw@f1nq zXBixDJr0kmo=QoAHRVp05EnhePPOTVbyiz&;uQw+qwy%8B#$$XEhC}VDfbOO->Fkk zHZJ|8ZS%Lc2hj7VZ(5N)W7ga7X(FvLsp)j2IvFjeY084Ia(nQ2{Pf||g|aC12@KO_ zQr?>@#FE7AyUVyrNgF^I!c&elVu4d)a9GUzOq`LrI+Tp9V?PgnEogKQkW@DDlb@e#1C#jZGB?~PO)aM*J;pWY@vLebf>yZ)Xh_@=p6BJS zt*gXuaBXAPcN*%fw&n$WHROz|SO$E*U3>7H{t>38{hw+y`pl`6OX{IRVq{ig%4wL*EUgGY zNI56I2aw}dIxBIXbx8^yZa3r z#%7wd{7OrKOH%i4DklVTbH*?X8zt zEjuiv7lN&YRFd8xTN6Y z%U*rt73?6DbH~%a<*JN_bH{T30F6?Q)O2Vubcb$+u>Q{WH)Q6vq+ zzPv|`?}=KY$d4fj_*7d^SV{al9dEW#xFwWSNAeFBhf1pUo0+!Ua;A#>rBfxxhMkPS zjOa=f;0ewGPF0-x>LXq0h0eqUQyBNuN~Bd8hf9{F=P?<}foDC!l%2UhFI^PV8j!d} z*peE4I><`a!3s#{)OqU_4kFtwNLm5ey-Qkv!bUmzayj|ybjff(S%>0Qf8GuBOGfms zU3UbUtXZ*}x>{kyZsC}rpsmf1O~fSk=ObF}`VY9tx9SwzQl$yl48ATW5Eec0utwB` ztM4DYta;}|d`Ri3Ls4R&#F%WjPUz01K_>(65uAB`di0dVTPkImg9J8%yd}hB4suWH z-_u=d*#7{e=i;LHdCcEvigc*6E*E{uY<_2o;A`hZY0M{Nvn?YPcmugP+Lk0PbwXV`B^i6s+eM9Cy-O zmJZ{s81o1eO>c6@_I&B_pVbR)l^Rl0A^Cyko^d26azG&`x`%@iJEz zT$9xQRZqBl;zhk0u%9D-8?PZN&2L7$)I=Blh&L%#KXwRmz1e=Y6zH;(7-K*+&4`kaqlqoN*WQk);>7- zebT{|DQH>dOsC~g^eZ4+qCA#6kCh_&v+!UDS_!Q&@p$_|thxvEQK`f=rk+Z~o=U~J zTH_mEq-3D8!f`LZ+9g_%-gI86Wk=s0zfKJ!ic9zsv2y+Tf2tE?lxos{J*}ZgIsYkW z)k+Am$rojq8CN1TIfq?K+q%YJZ1|m8qT1KAeiy2Vfv)_T3D<$CZ-gYhPTEl#q86KK z4v{y3srB7>nH(jRB_xmQ0899{58!mY1U_7#oP0J@#%=Vox<|F*kq#Eoa5}f&`N?7l zUbp*sPtzAWP5GXa-gX}eJ~%6dFoI(TbP#e5{lUJY{LhqYS;4@U8cS!J{c7;=SJiRg zm6O~351yGX8X>|~iR(f+LTABmK#PuHSY=pHXne2~^^PXK*IqC;oIo+|JQomHPp0PY zC3eYEd1zBnq&vbr1Dyer=4&`Iyy(}NNxuaC*%%r#ek-1W;PS~TQ^?e}H@H#%c`VY; z42VxA_78PglnLqX^vL-tZ~*8!^KRCVrp3c8q|WR^Oa9_6b~9naS8!R2*vlvh8bHDZ z3TqHpm8s-3qQt8p@PlQP_tp6Hy#$vWn{BzR;)qiEx)!Y+B5sezx7P)EySr@-rt>QM zi!QB2)Pv!2K9zomF4rDUQ~TpZzyRo(-Q3>Eo!@TUhTku2?et1Z4B%pGL*Sj|8HUWD`I(b#pJgayir z7Sf{%QkkDm6In9lAlWQAhqAVXUw@uS8))>Q#drMa&A;{;D<@>&!*~(?Icfp-HSU}6 z%W2;q<@d#x1%0Mw{c}+K zDZo)FAmY(yS1NJ3*bu*%yeVuzP;Xj0YSRNQepE^ImHzp6akC?d_~|K~Ci}?uTtta1 zGR1t>qd;iq8apAoB%DFYG%yd_{=xTx%vJSVZGTL2XYJi9eCBLF1y6bc^p0DX94?pW zs)o_;|Ih%^C9p@kr^yMbyoIW)vO#E%T_Yj?WJP5(pYw)fXXOjd)-bpFAoL+2oZ3L9jq6X=9H77*cXUx_0rbQ}AHT7>RQXI={3J`t zYd1+}MttU)2L@_1QXZZcevqmP$c{Sndrzj7p5W3gXOhnppoH9TRmMWp z>>EuGbEc&D-BR7=Ib%C6r2v2ff=5fI_86iwo zm0n|p){m%6h=*DciJ7)MRK;O@F&rGVxuLBnYK|)#h=JP5~w6M^3;wi>b>jP+yw1YZEE&P*>&P5SNRz}zF%e!@+Zc@It>Zw z6>z@iT!J^1K@txc$Sk2M2DACObZA&fJDdL0{#5$LMQ>hD6%DVEO&1tO>fne)2+t;R zZIv0Ee4z2wYVDE5!F={MtJ%_$HBw>Cb<=3B2z%%+I?5Sv7L(M&A3OI^paH?B6^m~L}Xb($+#>3<+ z0pIeNnrH)Aq%Pl@euZTc|V1gjb!aV&=P`y|Y$BEUn-1Ae^vEowJ2*NAnoEX zM~VN+rJl<5=0w@{5WP8D+$rFygIUyS7fCo*p7Tj7y_&mETT)JWO8-mpbDi7_m$9F- zl&t)zCS`cQ&Xa_fE0mkjZu|3teDtm}Oj@_RX8+JiDh9hJtu&P=Sd;m1L}i%WoYP9Mv!9s2XI;qUy$n?6K(AH~rWKbyG$PE1 z3AdLS5L%!pCC0`+9iwWzn;{+FDg2~jZ{r$?@0QEMH^s<`N?r;d|NG9LXQe4cRm625kqB1I+W z4S*17_f?cGf^JM-M8dZ}Q?89kYe#FX(}Dvprg1Eixn8kfM>8a3)a`xdcvFcXu-Pu+ zc-U`YL{3C}+(6RMp7*tD;aK2@hs*V@-B#m*iMJF;g+%ReAQM+j<0(ihDSy?dBP5v& zg$Xv5-Kfjp{keGt={M%Bn@Xc8@!yJNK~_{IGc>9xei4!Zl%k!RHIxbx2}$gf*@HW+ z-S``|OEe(~j6AR1LT`o@6HqU#6lnuLiA4h?|TJYF)^D`9K3B*}xJ- zmBIIuFgsACf1>p6c!in`#^TNJ{TEM9roV}k;`RaotaP11w5=D>x)-zF!H+dP^kv=M zTAM8fXq=c;?6;(fl$T7B?~XcOcH2kx=1}QI)D+Kh&FebHEBta;ti`Gf>-D(?g5nki zBji&QZGEqhL0Stf3R<{0)y4Fhs{{Ai)vxPVlhH`Wf%msM!jxi<0%o22$>N1nt?b`j zXXf*;>N!g{Y{TAKeHHapx-Z`yQ3lLsFP&*9l~L>+v7W{m%H`E1PBiYOLQJIT@zsiDcny87mZ z-cRDVEpE#pJ95_vn>?lccQm0EZId1+e>*j|qbBM_MANS724W(mXdU26NZz3oKE9j< zKE@wCTM{3iNgSzrt?-ld4K`DKz^tKdL7se+^ExRm6M(>De68kVZM&nuV=mis^O_Dl zrDVz;v==vlV>>zGH)(=msD#_CGJ?`Vuc(%{!k08Pe*P08@9-hfKy#U8v-h~x-#6?M zlT*QcTR91%NE$HwRkHYU;VA7tG%-Xq&Fx3QB$Q~Fgq505CI0NWLre|>Z{yF{Aul+) zau`>ZPD@eAPGSLMO9@5_C;wUAFrgpGtkD07!AO1x{G+gtT$yOEL_Zn0Z9bL7*?NS; zQ`G1)JxAS|Pea7+Q>(qVHVc1m_h4vJUrhZIHM=~f=!r!6H|$%yPdYx&#Wc#?I#r!b zV-flmNqdGr*9X6AXJI4-sO;{vErAY!oii99(=8_94af1mg9>!Nw|mSou=gAU@{L6k zO2ZKud3r>O%tqd3#e5^RT0PLJu$TM85n(TRv?+nR@v4pKT8; z@gTx>P6!}D{+Wzl)DBnY_UpPBACWG4&X_{RN4CGmO8pP5#)w~4_-VvgCih#!%|}p1 zP~%R}2J5rw{pvSrsg6WfhxTP3_o0U3?|(IOk~_WCQWUa^AT0%h|RN>YlG-*>5`3Q506(?u4H=D7YY zG%-wua6!Dqr-P9(cfYX0IGD0G{ljI>KcVsh$G)-x7$1vrGoH8h-+X7Hcjgf$>HG-9Nj|s(bb8UAZ#QY%p7x;LU#NBx6;IM`5mmHp2S)@H2O-O8Bx&G&2gmD z&#!C3$xk;e67Jx$4dLTE2-s1S$@QBwk=%BtbnMsULYbFm7_NdzL#gw>OAl)&(*-E% z5c8M9TmBStTO&78q9sEQwHgcU)d^;5g#Fs z%Q>PMra{QESYFd<3g;a5LhyBp3I7bVl7Iq5oYnfIvq`u}# zS#MaA)WtetqTV}8k8mR0R}ZZsD}+3e21Apa(J&w6S)~Q(dn)HvoDwXb%*|L4d0eO^ zs&}*16>O0bq84ig@wDD^4a?``o5gY(0PxLldIX~S?c5nmHb^!66= ztc@X2A~yq{kJAvrB1etGAW#r#N>ZO&=3n3p^&7oGb*Jd1e`r36k7;k88Nk0i%Kf#7 z6Yp>#jLT&RCc}@~yaGI<@bd6QS3v*?mf&nXhN(VwlWUl8TD{6F(isc5B5NY}@KK z2BZ~j5=e3W=we5^{3UPylmM-wO1}udauBD)BHL)7xtz{wb7N6WRxmJ?H7V${9@R4V zdf{2@q#(+S+xzb1smb!nr*St^FSi!_)FYs5J$KYXe4&-QJu{C9Nx-I$a;I$?M$`$` zzCH4>8Fb#xRVbCQ<(3tmI~0T_H+ZqXsZHbGY06_?kvm~j=5t1PL2 z*+UB%4IqF(3#Lo1TkAnk9V@MLg(8rVJ}J#%izC%@}G0w2QDfGJY1)87(aB z)P}1q(wA3@63hQXHssp~yOOPMIk*vr>Cs2kyG6c0;>Q(l8`ANezU zz^;dYM6INXQgbUU6)jl7`1bOyq*7H)RM42v&L@*v6dOYeW#ae}FytJI*m=T#9m`Xy zTN|$W2Ngj}>DPX*ZCw{OW0d*#QIQA)NerkF!1G2%g~{o3)0cSZ`H}H>iBLd)FQC)C za5yTwgBTvH4+mVF+6&V&qlglkMreNsIZ+y<^e+L4#%_bL>x2RM8W9Rh%+yH3RExn# z?ZnUV%ApCb#Ng^MPAzJ6cD?h5FIgz2is^4IWfQFkJlG23_7AnJgBw?iO+nC9v8IuN z;s7oX70<|8R^K{($UakOZ7ce)t*hZo&hiuc2u=F5RWj~{OLp9p1IU{d@xmNGB~eiS z6nSPOy&Nf$&ESvs!xNP5Xlcddc|Kbg@Y(1q`jOY=g&Tck>TF#Z)idGrhaREaV_uz8 z$|r%h0M@N?7lqnH?UapmDTi)dG-&3ltcg}<8l9>`k&qEjm#wLprK^tD_=;?!qSaAR zce|?EyWOvJCRZ5_zjx~3Qu}+)m%k@AE048uN_|yzNjBbeYsE|yp46CzP3_)yYg1OU zHR!Hjr)Uc(=|5jFNWD^Qh}XXguAx}c>UnM={YH_s|15yZZN8|JX;88}XXD0SF5IgT_cPIUQ!sRJ#;$d36AS<-iSC<1#a3H> zROM|4^H*LB#^cBBp8=AN48jLMspqU?D&%;}Mv;zP*X-P~KI|X^t2HmI4Xi6f!ToR6 zi-j||-lf+lV~Lt?<*6lr{6*2Ek4M3@^3?%!ie5!InKG6|)LaCoGxGe;*{CaNrp!m? z)^Lj%d$k6&hP{{%T44TJ{bcrar4Ah)+{=rJ#Q3Ja`251zZ(R zh*y#&ByRKO_AKxn7XKJuV&!asncW8GRh-ZK;Ay@Hl&>eduZFdHLYHg8m-Ar@9?iYQ z@B07ZMJkH@cIKy@KE@B;YurQt3CiZxOSr{Tu8#hpQ3%ZWSA6Dg%b%E!)wKEh+WO1$ zj?QnM0J?%=Y_ZI;k-t?$KRT_0kCsc-`Q} zG*v;RIJcv#De~fO-{3V}A1qP3NWL7WGS5iu%VwUh&e{hlO;KbNCgQm?V03&Mv85iBQUDvle(zdr)#UY{~Yuq7XFM1&KR{{Ds3V z$c2fGbwz9U**35d&<*|aL6tr}>$ywJomNlraCp9)MGov0DXd}N2~j~1^XJ9-;gU6t zAhADxYEq$086YKvc7Y@){gn#?-H) z@5=VFJ_~1OOk%6TUT=t-La(T9zpT0D1;N!uhS&9^r^cFmEsYc0?!DLxfVq+rA9mVe zY-r)-s2i=Jj*J@npS$3xepdoEI^(oi#f${S8Z$7plFVOT4or8!#Ki{D5Y)d*@%R~g zRtlGbdN)aIMYj+_O_taAs|>u!5IolKUZhZp$bG|VlSa8BWytSULSx_ZLvKFRDaFo1$en6*Flw~_MNY7HQ?Eae_94}H% zMNyk2gLGS@^ce%&GiwJ#$@=RZgIK#_#Mlb!$`U7ZYn-espH)K5rGz8*j2&>+NpE&(#ynvrOFGNB_U@6$j~pg?MX_G%aZBokWk* zGoUEfo0xY49n_Xu^@rq5d&GJ*`BQt7Cg#^<`%YvvO!2+bL@#zq`e3a@0fnz@>P_6M zbxZnu4wK6M)Fg9#cIcw(>Yx+9qm{6-eKi5DfwIFG(um-+yco{!u;{lm+UA2yd@lO@5&@_j!PcTujlBw9<`*62xajzbj}v$bnHC(JQ$=O<-mw1}T~FMU+Sqj~Sl)9JUp1+FMY#t?SPH6` zm|9EEuM$`F;W8l~{YWZLvn)@^-ZwU~>ZOoj{80*jgO0_THBa*xKm#(GdL(T2?h#q= zo-^Qz({pqcW36Wzx`oV#JAxrEp|U^3($xFx-ij*0I#n+)i4T z4Lmm`WZvreixHQgMkXJ?<#jNuJ!nKh6crHdqMg^Sp({S*_a%WT?_;`hWK^fVZFo2? zbvMQ>cj^>b%04%m-wye#JM}h5s zXcyb`9}xaxMu%1%PGjb@(BP!)q~Fi^n4_Kw^~Qb&fRZz)l$6eUF1Uw%BQsW7z}ES_fE*en^mMl%{6|Ba#$8G#Ia4l8JLSAsn|&KESZ&8>kcZ=hxF!N)D_}! zRjAf?O)C(#L6G0)4cU!s1~kz~v02CD=Xa$Jwy}C7`iTiiFx#zS!rCWBGv*J~m#>h) z^$^t<8HnSK)kZ(<@_8=rq9VM+4?{#Mi~Xh-yiEu6Z3#D z0=A70zi~Dp(89%c0Hcb@m$XrOChB1g;N>}|kib$?>gx%*Z_}>gFtC9AVg&y^)kODO zD<59;aabC>LzLi4wA<|tC_HI0#sKRi@qGHj#AtZERNNuNjxYH*0!`j4^#;xRz;bOPcQ+;FHb9!X-(?BvMAQ4Ty&Lx$a%4lT zbb=b}hSSYe_+2_7F)<`I)z8)Z*rLP_S1D!TJD(J2BMKD_$5~;%Z{eb5yAmD7%*DWt zeKGrrO!?{S9ck9pn_n)MuNG+Ay{EtLacI3#`5rRRsa0zl74vSF-@#Z>kBe&FjUMha zpd-Iby+<<<`aSvC|^8N1W%v8WUBAr_wId)ITxhk1~Z|I9*UJ=H^pw$!O{q_gQQX!Mph6 zKRm>u#087Sq-urEFd0Hh>6trA9cO7hVkkR1J#22%Zq)Z2`oeXv@?4)LgjbR}Fg|uG zkN$cF^3ea1&el%~;ks8E5(X-4KC#0d_jV~&S1tY(q{{6qoz8H@`F%1K-7p0m3H~C?2k$8hhsqb)O(iZTxbE;2>I`2%w?_ z_w!bo_lRN{bq;%O*=Bl(ZZ?u=DfhkC6#eAZXzJ&Efj~|?6Ie0n+(x9Xq!VRGf zOxC)bnUN;51px^ReW!fUJdOK3_CW@>s7vbLecMdWqPx!$p^6{q)lY;ib{P+I3lG1uwxa!!{pg8=%D0kgd zyLa!Owf0CJsyoI*F}%4H8EQX$(j?!L4mwV4-*sKu3Qj}+^CLJiq<=VO<>~0xFnx7W ziPgnu4KQm_>9Yih22)$fwzGJ>2^;Wb%q$X}tMn`LdCmEz;ND2HofpZSEdtx@qYLlt zhqL6Z&l{oV(K-SpVRvW9Dr054THMM-e^U3O4#3Ov9UV7+>CGvtQ$%Sl#ERIDPv}u# zp^p{A{40YREdL;9sLJ;4hZ+Y&Q%r$feWVgQfZlC;z7f{wg)nhLcO+N8E{sPn{w32h zx_Q7h=tH+(*2)YUhWu$~`t#YsG6rdG`XSC&9H&nho64@)emB*S0!t1ul*mZ_rV~E$ z(ZTcD!&j20VtoK>hdL;+LiNTb0gVg3W6U`<_lDPQ+9%|3ZncRgIYeJTG zWVM5N<3jz82wVsc1k;n2a4G85D&Bk>i?nIfH0-~%9vHIW>Q&O>QHnV4OL;e12HBCZ zDxEY#|uD-=S<-S3vWITTT+1> zlgZ9_ys&k~RJOEGTTRev3G>xrSxaq|x+m5RN$ekV%)oN;#UW}4i^RrJ=T|{P6f5kV zUZ#2z;PaKaPK8n!$04$pqg>LMSTh;xbX%=!U@Rrae`cB1r({$kuc7-VS+T@%GFTZ& z7~F;?e3w{q#|6aaZ*XLif{0q}6Y)nwZH?4$9xj&s##6oLwMD4pgU>q{h&X9-ppF4j zr7K~DTfoxGw|&FdHf>!s3u00jvRkWiM4oD%G5)8m1B0HIx}x4h{Ers*lnb^-u8sWn zjmT+{kD&uvW)G5~acWLT6wHCKcIrn=(V?0q|5d>>lqV8jS!oI3zQC@hnT2lj;hHWc z=`#&ms+EDp3b>TYP)Jc353N{cZMgwo+{b-G)O)XwHs%9%WA|W9Jt=e2RI!_)lks!j zpqROhhni_WZ6Mi@9$X|L;SnV2#{JF*oKUrx%_YLlp+jD|dLHFIQ}_lHw0g$lN=mMK z+%2$ZYCLbe@D|TfwZ!d??3VoQqUh;exr*(xMtXq%aRzY`Txo+=?{Z3skfq*oxj3ZF~DVyaXEp<#Xk=__d@VL=@+K-gy!V{y&n zLHC&V98c+bqz5H?`=?QnNwcQ15NhO)zZ*r;Jo+1fFQ2>v3I(t4RN*7us47z`ZqD~Q z=fZv<^KXezg6rEosgRoeaiuK=uFybi6E(c{uH5v$Ez%rnVmM_s(x+=|hnjyP4n}%zU=F{yqzhqN>h)&|bkzLgX2h zmWR>x7rb<)XQEF1=aZjWxgu2xhr>xHy?&mPRBbZkDJ5pC7CnBj3SBH+EFmb7Us~-c z@{=mgMVZKRYbny~RbnaIK;ITIu>nZ9*t>?8*H+0`zWSBK&($k1Wp$P-9m zN0y$$EIeRqs#@myR2eR+{=4{@Oq~Y5oZSq1w3>y-g8C*kbgs4!frr$_jOprnJ?UYK zx3DObufDu>U&*gTdv}ZKrf%&YN)2EB(14$dk#KGhW`6XtM5(Ltm6Vr@Wzq+>RR(rC zJnW$z_&n8}0B90uHI`r3wl9!A=3<>bVo|M=;L9X3(sW;nNbp7d0u@aoiX-a3+yYIF z-O>}Q1yEg}iEESy|DEb}g8?Z&8|!Y8u=*9+^tk=C!}4JH$WHWgdb^8)3~at^%}b4$ zx6pA^hRH~q_|K>Gj18)L_(1GZ#j_`ccdcxNO_S+w8#JIvCG;*ia)#W+)3XNk;-h{M zY)KnjgKo)R0FGIIUSw~SC&tG^?Lm1>Nd0(9C;6tNxv`zx1ELMkV2+xV+U~E2&rSkP zr?eU-LJAUrhtRhd-@yzYfDD~#Lf@_=M4ifW{8C9I+&P#~3072Hs^38%({~{qZ=Q!= zQQ2~0xZrtwgYi0hJ<3>lK$3kuQSHyZ@pT0f(L%&JIVpeaO!)fWwxT&4>3HQQ*XK8^O4SI%Qr1{t5Us8JKvpxn18Q^(wE z>NB_Vx-@(PqSdTU2k*GtDWDJ6jg^uNgMJJBAdlyr^>0h*vZhjmYAS|kB-*qBudjuW5^#>6UQR*Zm0e!UBz2vK;ntcsjnAyi-@r0c|r%XBZ^2RysOLaH$BKgv6JBb7-8<8eCYrh z31x02+&<>iO|1sN*(~AZI0MxNwEB-)|5d$V{+^Zj;`96AfBxw3Z6SFU`S+_%9|IvDrz?dBB_3(%5 zJ%PNo@W1^BsDF*7pTBJN8UDlm$%+kaa8}jnW^P)Y*AUFVC%sG(8|e9YdNy+rjj^kr z#@f#1zX=pK*5gE5DM*?sb;1NwBEYC|D$7~+SQsc}UL)|uvk9}3lN8UfY>LoeYB^$> zfsA8`72eH?b3X@wh>c!*2KzXN-a?m~^q2WM&$MPV8-VyXaR|^xo1!IAvXFqpli!cj=}2Ug0_6{zcn6*TU)7Vy=Rgok7@*;G;~-! z$k>4NH4>B-;y{~5fHapwV)d3r0Fe0mM& zMSB?GCwveywjlysZpH8MXn;-GB{_Ihp_^`LJP=f*>3(`HP6twgQ_CF0c3A!H?qsis z@=Msx8p#OfY@Ubi;R%=$w!|9s))bz7BYhhcPAiAvb=*%L8Jb^e$pfr5wyrFKh97d$ zP{t3|Vq9uqhzh9jqW^vP>p~=wP%vF@U%NfHD)Y0M_8OrdlHnJ3OXd4hVsx$f?;eq{ zw+DX6V#92ikH=`x1T+?UmiMrf#k&{C0R7a-OdMOAl1Wp&%?2Q5M(tIyY4u_q|7FJV(}>{B>l;7gQd10lM05(Xa(=k%Foyc#}_Eq;*L z262UohyMVeQ_E;3k;l#a>%d+2TkG$U>j|X0M#l zH!Z-`zW`LuJk5S@!-6-Sxl_Yuf;ze1A7ZPHt_#ls+ts4+Md<{XUc3|}{84POr&GY#E zZh#z`{Xib0jVL{Es(VL@{ka5iB)+m-l1mOmjsglP@n1~vhY@Fe@os-r-NvJ}b&+V- zDLv%%uSW$$A2>y_r@tdk1*JxKkk%iYfrl6k>v+Ry9?yARD`7Q1HN5^whH>M-EbRIm z1Q?K08tm_@rWQeXV=_q)HI*buyXy7(vZFZfrv!P6+Zbn&nhrmB_Wt_R*(Z1EoJ*d? z!{ekS4e_e_$_zZNr7@DxwRYvrAZP}~QFLRzRyKuy|C_3G@fH7QuClZt`zn*%+3#=c z(-^Pfjc+8#X=H8u#X7jicF7aedTdSB_zyPI@Xh6JUnd=vihtx?=%phu7Xge15ovL? zy1a1Ut`&qF)YKyO_uC@H=vtlwsKpN8KwX0g>2*P33ue&-w$sqfy=F$hj%%u||A2da zGT3PWKO{Lng4H-FXGWV|^WbL9McU+qo-nutkNExmzL6R$bv|UAG`lswOL37AoH|gN z(*z;frSmK*Jo7B*OivuQ#|TNO{VA`ez$L6CbsJFwrYD_;U?es@3fp^xT`&_WSH#tx zDIBQQ>|CzmE2SIUq5tAGe|BZ8L8YwZlHYylXiwTsPV9=zz_w6n%o1|V`C%e5C`!*i zQ&wy-Ga!J!m8n*tMWSHuZrVty96n}8SJKdusSb9&TT}`Aq@ulc-sQo%o9TsEEl!IyCBf;ev8>NhDmoNvp;BBCV2t;OHKv7R-f)*NV(zl28ixp zB$CgZ>n1%&_@Kqz_gZ;wnY{yM<+&;o7x^Zd4VG`Z-gi6H&2tQez-{Q5QtgY}U?k&2 zK7aamNGCoS$Q3J`G&X@JuE;a4yt0YVwxkZ+ielTw&j}$4Z{-O>kdJEw8Z^R~4N(eZ z(8g{~Y{T?n04m43)YGG8PLTtA-1z+)%xI@=RpYkDF%1tD>G?C4WkJZX)# z8ByWbb93@zz2?(F5#N`Uh>mqRE$r?^V_^NoG55j*7T491zCe;=O_z<_H!&?mMNh7c z_!&(_+zwa6B8!HE4lybJ!#=TTlFiH2I@1Nn|Je7sCuF-X0U7nUCX}*1_&PCci$R(( zLGO{m=>h)Xo3AfG)z+J^M*+7EF`v@CtVa`2ddyaf3e##3R$~Tyz=gJJhkuSZVlZ?2 z>t$4YVXV>1U_+j%)`&l3z%1n{^$J^bRDVev%Lxf=Lwzr$hUf`ZFCwQb-g-+%g5jmv z;f<@yn_rehNqu@4J-HhF<~wh$XL(KA6;zxQyjK|~r9-Z?Bb|(3atGzXMg*ZLyJ;r} zZvn63dXVA8EsNjg{CtwwNiE&P&V~Z&Ro?coz|i>-!tJ~bCtePq)t+$?pl@H=2784| z-qC!!+~yzZD4TiGD@`jwIh!RJ(3`dBT;a`x}1}43{QKvAn`ug z-(L{@73YG=B7||1F-dB-gi0IrQOEmY>>qZ2ePT0EYUeTq+k{hLYT$IqR>%TpNa(-j zREAGvky=+ux5=puVV=msITpe`?M7$A#dqqYwVB$&`~qc|T8RTFdr8^30a=)dS-sj>GzjG4sxZH?RgqG({nj1!^=y_gtjU#drUpaV=INaeFOQR{*EtSx`im@K+Lyf1# z&Z$3lX5wUI*U1{ECFG^jhN%FgjHQ|7`P_cUw@^2;gjp@o=RICIZ|8A<362>Ezc^tx250n`e zndR@rX_dvbbKa6NKx&<`{@V{X%eSgv9bm*tr@J;W9&uI!>Zs5Lkn~+RN71$keij$! zmhXD^8r&+SDV+0N)o$n)IVR31F?P7&WlNz6Zl$j#!=hSHxEhj!fpZ1uQg*-UfHzWd zyw2&Cb^}}} zRqZh~Ig|K~(PvC!&-FjczQuPCAdH?yd3(?KDR1@0k)H&9Oe_w2y(NEwZ7mhUi<}R| zVBPoe`R!I(>UC1yJlr_?Z2rULqXMm3zEn*8ocm8fx-SKv-GeO=iecZ^v{h=_vQ;sk7Qiml@=M*=UrRt!0u1*}f zX^foX?)HUo&(@f<`xZE3j3Ktj6;^NT)>O})_uNtv$xAJOQ}|H)TOG^HMTjKS8m88P zHe=r4)O*v>2)A}&2KsDWHSm0!oa_laTwD=dtf52oMu@hElc5^%0P!$pan!K-s(61b zV*yf)Ro##w6#R6Fy1mFsohjQc@pJsrWt1HV{!AWzTa8l|bH>hd{CkXPj9+rN0$M8gE`{stbU;HQ5gN6e>mq3isrnEt#%?LZ9co|g3 zcgYV_gX()A;>RS?-hycAHr?e6E6>nsXe?3LHaiwbT5n7qU-$oXac6ZPI58Q4OhGzoDTVLMW@@Vaz#w z=kQku8hWDOAWAuJXMSwHLwK?i?(pL^B81$Rh;9FZiDHwL3xz+|E_yI?Xa4Z^xS=wo zp@8=Dv0_ouE=1G&s-mN@Hb3qDbAvx4sRAeof0SrzZ&Sy~<>(tvEgth>khJ4Ap1l9p zi+;*!P=D7vukF8`&;X3pwH2jY3p~p8TG>b8w6vjo2jqO5b~=w0UGC;>G&0*%N4w&` zxup|q4fTJ~Q}&1n&6?A4GTt982zLi#aPhBGz%lr-i5or{2k z<~0>a0b;orROXB1q4&Z>t_0E79;sp?Gd5IxSN9@p6sBLh;Q-k7D^r-lgTHZK4EF}^ zSWrUsg5xu9!Jy=?_l*%G%wkgfyc}7*ti1ts4S7h*6P5jZa3F$b`_8u@uPoy?9q$1A zGk2-@PJ}K!h~+SoXJOnbYR)L<0SF|br#`F;9y4+A14;WKSSaIZGcP{)kl z3I6UK6#9@ga$t`b{8#k&thzJ|_RsZ4MAY^+c{O_waaD%KKTVNrHZyjB2B`fF3(J>+ zzUAzYXhUxJ81p_Kd3@Q_xHJ1NdKa)>|E?*OYcSFg8>3${75?l#YkBQCjoUny0`l^S z|DJMWp48E@u8QsGBE;jnOUJLLTOl1z7>7A45VhA1fAe)s*pH`Of2kdgq6LiENm}Rv zTE$A1vkX!EJv5m5i(zM5uAdI^EHNApC|HQMIf#24suSmo8Q* z;rM?1f0-%?t9Qao%RiNne5n@r_Q!Z(8~@j@jrR>~<#K$SJE(Xj+xLr91VT>#5I!j1 z{T>Xs9qA@*wvwW`eJx{|V2jBQBzSI6@&YGj#|Cn>UG15SYOMeO{`>X;XQ=Zk%036t zMKEPnNURi2d5jn0dZ-C95&41|0pd2$G0TBYM}R8BSs9E+sCJMYtb|0Qd@I(M%-I~y z1V6s;{%>}pdk_+7GFb@jnbeJ5O%Hj3W=@gvwyA2rf;dtye~i-+ul9=D^E9u*{l>kX z8lx3I^{Z)`0702R4OP-GG~2+fPe?QfWqyt(U9NhZFMvT7PtqS9#G&a0hTXZb(iJ}f zjOaA$bI%iXY*h(dmN}nY$V+bnoJ{FAt&{GGeRov))J3SDKiXitk1-Pq63;(0ChmUj z*O+fRUdIZ9{++x_=3z}XB;*V^)?n1f^54fOY6F9#3dh+!$_vU*eMRVo&IJvF^dHw% z#&L!AQNd^Do@@TMB)m-ukvLzhf!CCesn-vjELhAuC;+U=1PW|eD0p@7_9I-|wGB3-2KRk8AC}Fo~0f7rwbaP}wOg z{tWdt(kTD{zi~1VhGOw|;Ev>vNSAS}g6=1W;SlM7dbUZE-I>?{vg7>)I(XYF2ExZF zTN9kVm|h1Afbwg&dg8kYZr4muT6PFJ0kYNeb$a#29Ic+lfznony1Ara1T$^O;VtP| zckcOfO^;rQA8gq@G3M0NxQ1ngK5)pBu_uF*8F}6lJ?!JLjU409ix2EJB+8~MM0VC;RW8N}xrs7uyT*yw6b?T3fT%`Dl_yzhA7=1_{ZXY0Yy%i- zN4w3B&XpS(lWOLme^N08DRBiBNF>ab=>$$5C3|ch9776_=%X`*du01u#6m}-ZE1s@Jb*3$P~h8Zb#3Co15-Qbuwy;gfMjl8{sIUm(Kc^yn>g>ejql>TSP5Q}_m*EE7vfvoI;?Y<>QJGM3tEX1{ zjNJr{H;Qjbdltr5;mpusT11LfZ+v3loIJOvD3gH^aTjs3gsgKFbaz5H))Dd4Fxo?J zzBV@xT}@Et-=Uxk$H`X_anxXctsA=G z&D1(f??u(lF+=UvAFb75B>(^8YJNcBX5?6`CJ`a_=>20eKS8iQO(V&MKGo*w>?3&T z0rEPOn7v#{Xe4a-9~c;^-0Eh?V#4V;jpcPH0k&((fxERW1rDeIO}Vd!%rrA04vwE{ zRwu=)y+4w1#UGS+aG<2iYpcPn(ANYyv2Eh)n^qn0VdL!) zh`$_^VQ0tlQNyG#D+!yU3&OT0PNyS+x^%n3jF`NWOWX}px^Ym-W$hgOkLqzHQom(+ zi>GGg_BY=Sl*v_Sd```LYl~}oF|Jq|Hz#(8*vab8@{9AzTXbIOC^|Fp?;&dAoJXp5 zB58I;oi%W1yjfwLRC>S!1(J0*Z5cbw_y@PU3hEdPSQE+G6-v&4G$^@}^8692UxI39 zV3gU{utB& zG1aHE1#CgwsIK5>{)0+HCFgY24vk*(Y6LKL+>Uk`<{6L|@0<1YhkP%3|B8*cqg8h& z))*Td?WhpWWw{rq`{-NnxIplr!_+7{5NdJg6%71M+M81GmI!ggEH}y97cAbBtvsNi zP42kuL-b~6-RaKT`0RG ztw^)2<5Ae+h8cz9jp3_GNj*L^pR^(7jKZ-_AKd>1(Q|EB4T5APk#L5!|b7y*cP zk05>_?pA*qBB$W`xC}B_RUvCd@Kup`@ zBD3^VrzmJC;#Qmcde{8fyGyMMaT1r7>~ z$SC-9Jq0J@=4`)3ZEU_gY^^k2bdfJ3RIu76+CPx+#Un+$lq+U;DQ>G`0_=_ zQp$)O7U?+)?__=|n~-5T5~Gj_H}fb@->@PD<`995pBr1)8^#?<}QHV#i<9kLknv^|dZDeDHh?9Jz4 z9*~Kjy4nTm4EVFPV(1AN39aQqwDSqzQ)n68oAULH2v0%8u&uDMrulX@A+n*jdvSycluWm zh$y#~oC%S*HkF%~NTgCLB(!YlKv#mw5JBr{l*R92AwHhPNx=kUnyoK7Ovn%&ZL?(n z;8Uai54kP`H0>a{B}Ta3qI{;qRRu2H&5vWr3;#U6@HFdtK_}oFdO(fec4}NX{Z0dt z7>D9pp1WGN#0ARb%w zn3=t*e-9$1(IJ3&3nf)`5x4mVn*lMG1sWMbJ;o-4+RlgtwMRYNOsBKE6`>>S?&#yZ zqHn7$Q|@>b+R~m|x+>R%_BUE=27o2g927cE)1-N+<-R6fXu|Gk;BPD*b z_eu%dokl0<<;)BXtTB8ZZo0=mxGKvj&A{~d?oa!4%@il&Q1L0q0GA6#*zyYmu~ps~ zBc+OrCe+s#B9ZsM%&wayE@1Ny?V4OM!IZhH??DSu+&j^yr_M;#sPaZ|glNt^{sTn^)^radc3F zuKB^SD&bp5$m*a&L+{?%0BQ_-%ssEl@>ZlVqp)LTwB)U?R9Z9PGM$WA(6!hz*3C%1 z7;V;rtkmx_443Af)YeObsT`=FcJ9X)OmHky1~W@`+sNV zRXWdi|0Jqyn?vppYN0sw5popp)9G-1tj1WM$mIf}539dAR>zzjcJfav<@Yjj%kRs& zmzNafq-vDe+}&pv5IwLCyADuZY=XgrO>ICbBr5d<83yW0y5j*=H+s?r1P)oawRrBi zs`dCA77AWXnIeFllUL;TuD6%~XKjypvC7K-4Bx(}rZGFC9h6myD(<2EpfhDGkuSKq zS;n#e2ePGCnp;+uMf?5rV~bsYU~giMbuDGjR~s*e<7{LH4nYuX_TQX>$NGTzuPf;d z*3>k+^?9X@F+~VYP!jP{&$?-3Ohg`@FXiar@uaovMk3K%+{%-x41BAm5->wIO`EOL z0Fng38V$7dJ)H21b$}Wzx+gYQ2SGmF7TROBD^Z8K{@)7KVhC_ad~ydfn~CCeRxW$T z-f~d#DvjHrN;ujb9;5TOWgD>r<44A|;3hJB3TF-{$m!9@c)xQ5W=DL^<_^+y_VPc$ z52?C4%%%)}FY{yfxaU%f{bYx>I{%R|S=9PK@Yh*l@4*3gGaj%t%^yCy!>0pr@f0Nb z3`-Eut=nGUn&>R*0sp4UeQQ?gCF+WoNji!ahxHNXT@eIsyds?PBnaFXbVdgIIK@1p zVwm}wtTc`$D@&Nqu37Z01kE)e$P0DnWiMsze138v@UY*kJ`d!)*f!Wn-%QU zS|s4<*dm4sI56s?ct=)^$K84;W(?XaMf>52aydLrt5-`YsJcD%TouyX65 zwGG8q!WtG6Z7MiSC4~Y){g!{*Z1l8VPr!~$Fpy!AoT2d7JD5#Mc;F{U8D_`M8SAkjNv%_B7l)e?|6O5o zcDB7IX+mx(lEW7H^R+c-vOs+)E6gOK&)dg`^~>tkBWXy5Q-x5tnhc;%+adA{f!b+^ z^R}kT+zQg(5s_rj#|qFl)VB-tTve9GX^bwv1j~}SGAd9(qv5eKlS%Ton(dTc) zBIqdd2eAmO4+0h%I)+>v)X+*z?CK7oitRDDpX1${MM;s5@HK9r`)85hM0WXI3bzfd zx;kR;0)29(OY%fm9-;0Uzz%)MS*K2j&~c8@=nq5%U27pG^!@Lx3ad~Flb0f%8)Ki; z3V)C4jYUm>^E}b!)YepB@)=4;I z+YZbG18lGkS*H9dOdQOi0g7%I{JQzk{%W1R`o1DCmnFtV#QnjZe&Eyb2Ig1Cc$*JT zYOlMOfC(Kvh~%41cN>wt5t$cY+IR>YGSqr)gTyA$s&Q$sI_SwPgQEO>5SwC#R5W#y z6S$iHjbzq{Q&@Zf-hd$wgmkHXR6+Fouil?hfK{WUX zq1J&eUdCOEQV1kojKlq;%o$hLpKhQoL|AXVur2Mgg2mh2;=l**|ILQmltN`7l+9!l z%*~87QA9ib@iZ;1_&p4MS-<-!%HY_)4OAz^KjRk0gu(aknY@tr1nkg;qj&qZN;}+~ zcL*iWfs-`vb$~5;uyuNEf?$?Gn(=!HP)#JnVaJP~(QQ&HZAY<{HXD-@CgZ>Dfe9wB zFs-D2zN)zixZhMkW)`(rkPgYY!#jr8dqjMp617Ke<$_tPOeyg{l>+LR53T?O1uC?|>-23X9JhIJj=i9drk zaR+L^2v+mLEz3GTtSco^mPJ9U8063ubJ9z~!~ChhHuG?-3l!v(FIinKok1y-RM;@X z<;%V!e|(JFsC|0mFyBtl?q8LM+FfFTM>AujZk%C^i)L}4B9mRdqF7wcY!p|b9(Q}y zV}Ze6Bjs4(+NzghTR##^BN4g#!!qU*%6`is2|(Yy({Dy7uyxewqCSdYiO^!Res zsyfPY*y?@R;9ZL3T9P@s_-?5&K;t~X+er}Y4)nruvz;6w=Y{rohJNk%BI|;%d`LfU z!^p~;xZA(dO2Ce|;T$EBe^ZCTNT8?lsjUGOuE(xXH@OBrmxCO{bs5d4YSjFQ(k#1J z9AH=7wjnBIBLz>1F_+5Z!N#i{k-d1zR@878_r4&b!>i@tJ@ zh)%F>xTnSHR(3LZiIu3!1*oU-_~8 zGtrnqwcc_JE}w%!1G-+5X>bQ2*(JIT)^1W*;})cfi5+cer8aF z&FktkL~Xbq3IAYImP7}Q#waiQRDEas*AbSG8I&&?PQ_RH z(-K7t+8T(KQ`=taSf;u}?hv?vRe-es?{Xm;L0)4yJWZ}+6p8FRkg3k|^hUgijqZzD zBxIQkT^}cao+cFEGU6${$Tj1@0ORPHj7WI!m52b+0xMaybaJE1DRU2b^B_5iB#6CA zUMNkTLJ-jQg*3{<>9NSb)0WTRdZM_g$^mP9kD7a|x5_E8{Eb*R$6&4H`Do>3M-Ft? zbi_AP7#f7UVXp|BfzJUeZ-I101KrRLJd)ARSuoWL6yT3r12>3cHxyEgl4|49H0T(p zfLH;wmPv3&t=*zTz~U1AsK4$v)@lO`jW>!asBz^4E>0R-8!Qc)lp%RAkum@52vMioY-v(O1*!VU961`|X$p6fj@2+Gz zqB+pQs*Xsx_@tQ^Fse?~hha*4TpIR`LW3s~m8DL*6>5ABOoUoqMf#iJL^RY!EXWL$J9T z&|if$u!NK-HwplxMlO7EkY?KWebz>M{B_%aT(`_uWyLFzp+da3LRC`(vsg#TF^I|s6Pja$yuq# z#t@3-%(-Q){Fv_e6r+;1b^v!2Si1vK1#zT)tNj{NVBjb7X1!Md#{qy}@uGHZcM)F? zYB6>W8n548^69CQjcbP$-oaH&?Wmto5L>RZU=83j(LYV(so~QADVR=`Fx8BOR!k3g(z^RKjS3JNgVw6tGsq}x_{c-jV_|cN z;9MNpX>yQ&CzUe(Vo|^yQdpL(YD3i(A>ox59X^Lo6io$rHPvb_cJL>dYG>^PQ6}3+ z^_|}$8n4u8_tDn!kBUaWy&zjeHTP9s;5`NY{9^NS!WikcV2ed;w7xRB&orlUH;71~ z&GH3*?gApY+(>S2&$Z&kFClnXvNO%c?3n;=qM3s4&6YpK!e#srR&82PZa|lB zS#hQ)8AOw(na;dZeY}lQe)OfFyv`64fme9z4q)n-pVlE8C@B7tZ-^h?T;s0{Ont8T zMF2x7^ek0pY$83LK;*Q?NA+uD?Hp|&e@uO0xBq=e2hjY6<&P`L3e zma8|&qF9Qh*iAbjq=JV{e{<9z9XlKd103$9<0c=BMg?@)F#Sx$sH-)eQ&G-%6rBW{ zYrO+irM0F&xDP!=VQ%5@QU>b{H!O`-G@%tglKF0!H&FYM(ND@lQ}UnT^%N3*HYguU04k;StMl2i5MWQ^pcD8=(+)Dw9K8i)SUAD+ zQWl>!TMh+L(EnBZ{%5zAzoyb_SEiXL*rj%Thl~N}|BcAl%bx2+)GNHp<%Q4dC@w%7 zq&t{a`>91P@IeF^q3&JU?EJvj&DR?SlY){@6vF_>3@$t}lI7IEC_GJ}{a?^mK&E6p z(eRqEeRUbe%B$L#&GN|j%ZX^nH-D&_0Y@K$RE5DGHMN~C@0)02QE?Xt9XDfd(=8P; zX`j&Y9G-c?`c^OpGNewfe&ekh4c7#&^MXCNfE$}_ox>=Y1&lN;^ zmOCG%uh_hZB^V&zIgv(UU{jsPC~F>?*EDp0ey^IZEO#NgCRKY;A%mtN`falp)>f>$ zzG+lrhc72(h-Nzg2H460n@~6+4f@vcz%bJY7UH3Cf8wKqvl5Iy6Z^GguCoYbR#Z-F zCy>!iu?kTa${wT#=7oxn@0#<%@JY(G z5rXsYl_#4VPY1{uJd4SsKJO*k+Oq?4R6Fqc=%Zdyx5C(Rf>xJmPIPz>x!Y;n#i+88 zsz#V-t8ksBNr~Am73ysq;1Fhh{Y$1dyOMZs6sHytj4^KZN&$=eo-m8gj(ShN#1R7{ z?34^|F}Z9KNc|LkYl0B6x7q+8A=;EVIy@6}-saxcl2&`>L~9f0qO6|DYr&rc1L z>Qt3TN*lZxJqTM)F^P(CU1UH9r5-;ekh}!^d3qLd)bn-r=98?ZBU*F1MRtNV%`^Rd zQ4bU7j;OOd-;zIyiaSWZN*v1nvlxv|P5(88e$X-AP*p}6Zx`}kV)$+c=A;A8qJdB= zXv)6UNM(CYe0(mEKSH`;%^Xz2#j5VvDprl_wf6Nx4)F#kGV%JZ+Lc5ktbiF(Zr*ke zfrUY!dgoP_0ve~9-&zhZ{1VFo*(Uxb+rrSQaGOv8;V1N*LqrlDYo7JPxnNNlJ&0{9 zd}??HdE6?^evVq;ddbf)LZRhNYi5hl)%15d6y-a4s)5<}k?Uo{{E_yg`v83zA^hqL z%m%2rj9u$y~M1b&sTM=!vDxRLQ%=>A#1xZTtD}yKo z77uM6JfFY)Y%tKEbg8{ez^99*+G}|0En5|q>%Dd&hP~=H)DaJGg2x0zu>eZN@Y4%Z zOBj+f>-SdL>i^iD{tU8@%JyI%zh0TeB8vfNW@KdHaS}x*3g31!3n&dcZ0$SUZCPEa z7?2IMbh)Z;1C9X29q}RAd)>@h=*S2nYRoAW4JQt%We^g`3wXb&ve3wtFV}Ab3eE<} zKp+I3KDvJ-oGK{#iyM%pMP{3}lTKF?#qbH+Y`EheDSWznPlB2?PVhBhTweV}f0CE* zz;aosBDm`iHWcf2{=8W8JUTr(^J&}UTM*9OlPD}{y=R{adJW&teYkXnE#j>)_JiOs zJ?GQO2GgUh*fAj>mg(|N_+Bj(!%A!FijQ!SLGq#1|? zb4wi0nmxuJpwQExVkKwnBf>7J$T0ByKpqw3-)$O6$auh>GC7JiH7&2kZGxN!@u{)4 zhbr*0UT4cuOgs63HVM_k6`VCo{6{;WaBi**s*jN7alpdu7vya)=grhBA(HNkToaMN zns%DI!UZyF25AJDnvs&EC@d6!u=ytbA%N87-4KA%BtcmIBnryLJ~n;3A%|CJnqDo- z9LYMJC1PomogS6RJ(s|yH1W0&UTm!aO7ofU0I{tjLHuTQI>UL1(pjS4_ zVTP!mehjByFgF5FHHx@@qL>*Je}*rWz>N;I9k{;%raMM9^s7U-UD6nC8#NLW_xv~g zCnP)?7d8+7nh*pX-jA})k}wBnZOSh(n#YV`zKYEAvDZ$3GOd& z+qBz^O?SN$pp1l+4xR^xyY%4_9ubE#8EJs(C`MJ{JbU^(B7B$Lg>zN?YXM|eQX5tk3Ws0wj_u5mg8UEc7!*Ev1(WSIuO z{E3gTa!5Djt(w#k6%+9Hox5ibM`j#@$!pJ767 zpAJZ`FCKXN`gy?9RVk&7p9^9sa9WJ<;Ju3Ja>4pLQ2)kCj_DEA@9Pl${!)!4bd%&J zkRs@494g3qg-N?FJ87DPNdCGf&LpAzj>#Pu4_H(z%>hO|frXoeoRGwyR8BMt-^xYO z;E{SKo^rE0Pg}Wn4KcUm^7B}=@y;L2ETk`nFmL_H*e*OE`v8{!LhdGxrM2g_24TpC zGLCEQ|8EFvi?{eUV{lr$X~1yd#etSqA|M;s*uKV9GbRm?*y_PG_$Xiep7{cme!_qy zj-g%leuq@?tAt7lVkf037fV|c8x}!a2+intUIzw6TH0OThhKuaX5I+S}z4p0!@q#hw{(ri4#wE}Hw zqwzM2{~Qb=bowQ5qLW1fHb1H$E7VD&n6t~v<8(@`K#T)aou=Uasz5M*0qO2>6&TQ0 z12U4LU$so%6ac2+(myyvay|nw-$1_gg1M_KI=`ptD64psIO8bBml z$~*`(XMRsHdoqPd910^Z<$}ul5*ZAtdeW!^-E+4_;dQZWC&yFLxw zhDat=efx@3*T&J zKH2p9-m;$V3ueaTCJlz_oVl4yTQxLqt&nz5CHDU%D}o3`VAw*#KV|LW4-l?{l>?6P z#D0kl(U8)5+Z=RF)T}!@(;o_)sC&cER`Q<0$0b3hJnl_~^L6PgJy2~&{yz^+O;41? zgy=?T#usouu7xL3!X2n(lYdllT4VE1aNe#>e@b!GX;rwZ9DknEFU=K^`b(T-Bo|wB z47|fUOeKaGbmG*hW`UY(U?3kGJns@bD;oOusN({Jwt{SZqh+H!V&^5NJ*_w^_K99IVmxBcBZ0PffSj&!&eT9T2%GCfUAO?SL^tx@sC=kZV~ur1E8F&n>BPn zv5>>IRW63jX^h5eRu3F8N5SOqoY&ZE#!xq*+GA1ukQ~vrAlsrZ*!c~DIsow^z5E_g zs+RQj?Ri0{3<((9Kek=)dZGDFP9ogJ(Vd2eiD;4 zLyYlJM$*z(@3S?2Y%@|tO<@QZ6T+%^aIt6;6H(ZN8jMwdA(;~QzUSG1I4mlf3|DqI zcmC>>IL@SZe3t~lK@nT!Vqa>3MNV|C0qQ~|z?|q~iGL*v`@c+>FyOOa8M~i?OCZ5I zcwmrm=W#f-mcAKOz^}bH`^R`(3U5jIg?|QWWHmK;vd@chH^~|`_n8E-8=d@rF6Z6w zoII%jUu+u%Ms%yC=E0{te-1uT2PoKCNCBJwz)ffEBweaAFg%BtygY6F{GnB+Nemz=x7`fUIF zgtj%+9VN@vP&zv9YPY^HZ7ZT>f93+t+**l$7{?+*@L@U+3aI<5(H> zn2P8FzA?}|tVT^=Z9Vz@8vKP}gIF`<%OlCmFvXP1xs!nL3@ZX_ncgd>rfgWF2Asea zYeEkYCy0T=ZYg&|j}UVapi>gCTSgXM+^Fo$!b5t(jW+z)vwZ0KA9r}|zGG?axV6c6 zx)Am~JwIw_`#$m>cl3_$&}&QL+D zm^G29A6M7eVUdc53Fjyms0vf7YFQ6m7`AR%)(;lBXEzH?v=ONjgpfpnzr4)}OzHR_ zb57LsvjgF$EAf{}Y}+KXc~2L`V1f;PTPN~RUd@1V+$AmFM>7h|(d$GWO%n`-{uVUh zL|WzG9CAXJjHCsVvVySpow45ru*1(WL9O}+tB0$(_0#OwBc_^<~_C1qS7elZ^73I}7FP9IWX9P{9cs8XsO5 zj(U)YSBe{Q;cKl?gz-RwQjO z5QuAD_y5^P7$!`3r87b}0dF-n>#T;zKjIsXV(`H|vCA^2HpZ5x3GfqYK`8JA6$YFD^+9-pP_@Tghti{6 z0IM-_TAJxQo9WPK3+yb2H8XSPR|*@nI4tcnoY2>YWb0=AF5LhQLx=%%+`x30P4lE1 z_g!m@?REfLJchV@Rs(GwFDYrjno?xEzBhgZN;)`o8 zs4(j0&&ZGM`TDMZw*Hv64Ffwt+Q!r*na^czNK36HnGlao4 zDd9`gpLKl_`{?Kq@gfHo3rU4k)++Ppru6>U`zu*U#q|mY-9<+1m}|UcVu$dgs1KDn z*?=2frB{&MgWx55&HvTNbE`lr{4k3mpnxx4U)N1jyvZ~w2}mK55U+PCNx=#s9Ox46 zZ}EHAwzG>9KgyK$HpvXK*i#&n!8>1M4W(U&I!oNWY(l|wKFo@_;tp&6H9j*(0S2Ayfus%u$>vA~1>%Skw>o-Tl zS#(2%MBcv86qK$GY0&YPJ8XH6EDp_(3te)Fl5B&wxI*;}&pCOzfl0Px_hoUeGWioe z`@j*=qefA7zr(BB*5VNeeSvePS_{r$-3}!$ba)Xwswb@EE`~>)E8@Ib`6>WX;1fxw z`$X5lm1y#zK5;nD#%%kow_->jBO(UImNGnWF567|>Dr~IzM{$Lc!{<=#1V_}ZjV*H zYl@Lyh*@PXVPMW7dl%T&~bLpLyLspK9G3NQ`ZirEgo(x z^k^}QA=}umT|ueng-w&L=gHC zaT?94o=&>$j84puWz4&S)|l{eabuXF=Zl8~Is+CDUHqM~8;XFN*{#u>3CHH<6T-xI zPo7_K0h!!YzFso?c-FZ`wBG^jQ&w5VmCDMXNz2Yf`w1Q9&#l}08&5(i119t+g?YsrYJtv)0gAQFIx;3SG*WkTpIfC^mCNNrkZp;iM-z zwM*Ah+j%UHQwJ2yXnWY%@s)FyJK+%fyn_1br4DC`-eRVpMx+=-v4ztDIfQ%s*PQFz z_H$Wh9+-pZ8-e3$57<=?s)^8?W@Zyc6|L~mniv^&ejrnHfq1j2zK|Wjs497m$|FUMEkb?sTL=oBsCk0~mU07kTnJwlDMJj*6#2?bkxVy?u z1S}|NDDMUmr#%mUYlnD(PhBUNfD_08%hmmvjapL9_eF?=q2a>;YRMITonLs8Mrwq{{IK5!22`-bg5l91C6gBk+n@{{EOt zO7`2e+_{BXvXW`AxgrrJva6bvB|Yc}GuxlM-3`mj9Fw%s!?8mDnwpCLOm}-)$p}g< z+Z%heCOJyZ6jN{bIzNhOB$qHB{D>>p#%hil&97QHAR16z2K`{H*mvcLI2tt*$ud$_ z<4x6C%1qJ2=D&05B9k!`0b&(EDJZMM_?;|4N-;lU#Li@%P;D(2F%o_)OJM^P8Erh2 z?!Q*0Yz(G&MarIf%yF7G&?N`(GPYY*qWEx_|3umD=SW zaxR@5xV-a&=ty&cUT%RZLNSk_h!BmXvu6lNcV09Rvt-gR@_>PjHry!&45fmVTZ^t-7XGR{QS_B$53O|$5!<_)~~EV&-{sCizCzn;rsV83k$xOKzlC< z77Sox=1l65g=Wni?(8;glS)HJttVm^Z5KSG#F3(BU;mGfC0;<|^4?m;EH4OU@NScCzuNf7fc>h{!r0w-10&rs0*u}xtwWBLieM0tY zjX^fR1?0f|tm#K_9e{PL-apv=syS!xDuxa=>AgPHRW|dMd6KvG;V&`Y=88|Ym0gZT z#y80&XgsDMkNt2}qC%`!1dJy}G&kBGrSE-?M(Kw#?Iis1&pku48t3Wow*T+M7llum zYNm#Igt7&I6$D`ozu)kV{c#jx1*7m4Pn*1iU-2;*fbe{SRl~@{i$KzcHdtdyjppLi zA0Q%Cg~J7plB6o(Vi1SesUeJ_S`Da3(V_7YCPy5Lu{i)K7_e=P=^k`^o^?JQL-#mQ zn#-%tg4{gPcR3hRW$du8>sm~_Z^rqIh?;tvnMw~2Masx~A$GEldX+5IDg~Z&3jd~) z_hFE8yqZTjDj~lJg@Mb^NhO&M+OG16PLqMboBYI!tm4l(ERTFqN`ZE0n6`^>S< ziIY50Ct%RwsuNkfi$HiqiN4oJ+UVzM(=(LYru_av4~;S4T9)9VyA$6yN#A?czY09C zk0^3ebLhhU+;A+uA8b)!$|rS?Q;gAOM+9=?%cecyx8FV)w6Aj({FPncJ8$w{ZeDH! zV0<++P#o=5fxm>ylh0G;VPN27Ki3jln-VYlh9U|VH@KFShWqR*z8f~v#+#g=GsJ+2 zXpkTg)K0Ea*0``j2s&4sEt}ifn7_FfdvGLnM|Z< z?f(8i96#+_EG>#jnkdp53idGXG|i{64VaoEa4x(oFr{OvaKw?V`0(y(Q-d^)H1sun zLSz4WJtgyu5H@uABFOGAn7=_wp?-YuvlebW=*BedaLV30^pgTRAM?KB@`Wp52xscT z0qm7Y2f=y(pM##c?g8;PqBPK^lhZG}ez=~m9@~c&FUOc8-)I&M-&3cb@oMLz)m#`z zUBQP7c>jH|a3)6>rfl$`pv^?%2%w8U7sg3Mi$QEbWj`&?#e>Wk9>A>5&>W;oCWze= zVIiB=bPyqTheYR%@QW?1?-zG?Xx#J<4&t-UIB^7$ssdy@2|c5wQ_U?t!>k^Fe1#c1 z8%I>e^?QEeeuH5c|Gj)sIY}Rrx}bP3lPhljxuLf*N6T>UaBaSdQhg{tLmC>@&0WC ze|_)O2H;oapd7&`qY38Um|GNXSrf+ukIHn`TYd|o5-_MOQZ5pwY}P@QqdiA)^brF5UQH}Z;2>__zKJqG{ju^NVu18L?uxevBD8*D}8SW1$^ zftT~TMzUysq1zt^zh&%PX-P9{`gL@|r*Se;^-Kai{;!VqbffwK3FnzUipC3!_dBd#euB3R}cU|cB!5@!l|N`isRqtnc|q~ z>G!~p7{t~l!MmJBXBEhi_viHQVUeM$5^!s*jit@&415XfVKBRCdWFK=Hb}3r&UH9J z=)x4}Dr)oSn;i>Po&UpY!}Wa@3es{oL4ujC8j8hj<+bt$L;L-pKEeOvpoW8IyaE7zy9hWgN1&Dm!c+tnveBS|)#0Q;UaGtE~i0{FO?}g*)97 zcNsnFAU*r4#3h0Azx?P^SU@Jsw6lak#y?7^S)s`q4P?4UY3JZt5zj@q>%OU<5;seH zc3RYC3jFvYhpbuLie?|Y3!(Qs;}=jQ5lFZAx+Sws-e3^ImSl$Geqx}H=~q_nPYCb4 zm)y|N4OS`&K01td+uSF=wO;gJ1b@o@^gisFx*;&zl4>pl%-Kvq714+0QCEezKC-F1 zPnYXg3z$4z-($z>*F)@8gYDKw`$N7hDWG6kbzmfzbHyuM9&%<$bx2@}nH&0~l0xh0 z9dfOrJe);)P#drg8v@7D1TI~>n2^QZR;fK4uisPfH~0N8N|;z*m(zI9RNChpMf!Awvh>KCk06E6@A#<{ptdy zyIMhVk;F3=f;fpH3#~6oZVfVs09pKx=00zpOsh%`4J?Xw(lLsOM)WsO9fEGS$m6ON zVK<*3^KsCz-X>K;GB!7}?XrU}9ZM3IrJ!(Jqd zgzKK&;YPq6{hy71cdWz6>tT9KUC^LiYF|)%@%fqVwY8g5Bq2yXnXyhSd@1I6b$LjX zUiKsEKRx=4Olz?I3hlT~-GhA_V_}F0SlEPHDyGrg#9eeEvpZg;JZj}?X!u8yKXxj- zIqehq?3519Q5Cs2C3#Ep);K~ zV$r1d#~i2wGCZw9qAoc5$5XiT`d?4EtcjqE17(Ayz~=Tgltxz(LWn)acKoeuonRAGJqltJKk zc$4?}_DJZ9+T@tkfT!<#@|opmdI$y#lH(f|x$8$wWp61ZJ6tSR3QdX$_LqhBfiy4s58~|+--&hqmsxg8`IpiUF={PI~Qr$M14{(?k1D59qgZAgk zdT4f=&~uQO!?$2+AOiJ7&sSZU62mkUUz*r*qSQUj%CIoc{c6{7APk&`1!k-d-DDCn zwaAhj5<1R-=;2OVgN)>2Mc8}xX!|nPb&AR9LNu&;2J_=!tug8E-;sNu2yAUruqf9` zNB)Ww-9uNlk9L4->V_rGZ7bFP3E$>$hQ#4vh8p*a?^*36RdKUT@IpeNkBP1Oe4fg6ml8hK4ODfqD2bRyt8)=QVg^4I zCCH4>&cQcd8uYyf;H+AnKHQBUDz-|B=47o_C=*u&Jh+rF{)=8T?lODPCbud1)&KYQTHnT zC__U!zmRYm0LqNjfy>JRtFyb==q&lX?^uzPcFMDtt|YdSPeH>Q_s(f9`g2Z}^W}!! z`X|e%eMNtz1kcN*=W)ca3TXoA-_L@7E$Z-7YquJJD&+r2;ksZua^Udmc(eEb5tBo_ zG^>bPsOrgTu<}?B@-n78ONt!HNj3_A+ro`QUWwS6G<+O(qc-tUC+vJfkywPw-CV#5 z<}@q<38tJ(7pl7);iDv#vu8(p+{*!Yf@E(_FR3%cwyUB+30oIS2W4at$u{8>4XPeK zWP-Jn>^u?U%_^=66SJPdolo9N(}ZqE52vVZovPEVupBGD0;`!Ng`hi=!-UTlfxJ`f&+EgZ5m4viNzLa>w4t9x>vR` zC$cC+?N)+|BhDdjyCkouVKhF?QseGxZuix-K15TQ9(l)4D9PX__P5_}S9XmD2 zE0%8~w4UKM#oUIm8_{mZ9xCqk?Dogo{ZqL${w^Yc3^EKoc$A0aa^29*q zFfB5hKK+oV1O}d@sVlZA9klZ=2PK~dYk1lG4DRIrDTGK@66pqvpWw8RU1o#tX=}#Kv3*%jw+$-#P8T7fc`m6_cS^|EiFFEl-syr zsyz=eFG_xH!=ZANvUkng?>)bDuJ%i}sg7c?eL)lZ%Hi?fhr~H@s6u z682$}Mk-$t906$P_AhIWn}ZLwO=0GfeBg4Re{S#fD~=05f>q0(*GY}+PjZYn-aPKvi{q|@N&?fuL$GM{goepUmrUS~ugUlA{Mi<_wt+3-&nH5;bh zjTMN+;Axd(e#KeXqjH<6rH^eARJ1saBMRtWzNjcZWI17)tXh_-!U#OsV2Rl_IS;CC zfUu`a(QH3KhVZ4|s^i13J%O%z=yxD4cPBhrhrqXip4`z%BmdI!BXgN&2_{|j$8VAz zL$~#oJ1`%Hx)a=u#!WMX98I+-I(#ECI<_p;kYYe|2C)q1<-V*aXfLj%0dd`V*Wo3l z5}mN$(yt1q_P$T(e#S6O^L{8$;b*$hgheFx#7zlH%1;$y4WF%IA#O&yUqhdLmm<%1 zzevsL{3>`WJB&Q)xZD9Is8=IB4mU_R=~y|k5|fcTqBl+^@TOkcZy21>qR7xKXZFEH zR0Z39qkWJ&PiMaJI>~f1u%HDdV~nrH{Tc6o?eKjcJeHj2{fPbcfx61wu~u0zwQ{|A zQYd&*T95HOC@J-^QhJ4dEQF^4V2R;_!Y~cy;n6i-nMo!@n-qh&!x9uW^M!LTdyjjV z5%qU0H4q}189RXtsf8?Sn7*n_vouoE#A3H0SyyNhOFjL*8MAPGAr zo6x%zCH}IuoV2RGDQPUh484koXK_LaJ(l>=*U~++qiIkY^5!e=Lr!PcU=>T#G zf)Omp&{(|j=c|YjQnC^mXmlYxwZ>-{^9vZro3~a2cSaSLruci)?0 z0hu#8%Y$~D8@GvlQ(K!=y`K4esJPh=%_4*Hm%3zWK4s}pd|dbs5JooR2zpbMcrx|6 za(=_e|1xfwJp+_>XoEFnQ41I#6{ZUB%cTUoHsm5OFSl#aS{mDGJ0~Ou`yQ-}|Wi>UT zs8;8~D7j;CRg<#LyY^7l;jE_{@5!1#!t7OB=^*PJ;B-0zTf|SF?oU!Iy#+W?xo!_R zgv6N7X{CyYWXm4@qB(cZj{Q{6F6c`K@vT?kVv*M&mpMk)ns*q^X*yhhS)Jvc6)E4p za)6ES>;CU=Xweo;D^9U159MDvzUglQloID}iDaY9JLjkIj3WdICiD0DXF=dpODCJQ zwJuF{$%6$Fd;yp{00A9E-d`~$n7ETF!E6{@GB%XSKx{d9l;Qy}HM{eyr>_h&LKmR= zESz48*2RTZVx$zI3EGsf|7d;K4{e5ye5?%mHE_z;c3OvB=x0ExdWbeF5-!IVS-DOgW{N@MF^qu!3%)|GpQ9#;!;t$~&N?}Ewc7N-r>QXGAs&Ns@X zn^6NZ+k}eh&IY+%uzQ81`K`bWKB+J^A(O#VgyHz5W-U_feCyd)JW^i_F=O~}%Y=}; z)zCl#^#-H5aB4`rkPOgRzR4`RcXg~i+ofW9L>E*ZXzr%4G`S9rbn5W{k6e57o{y6* zCvuLgqK3-MAHm-SXAEURThEEmN?L&sqrkouh>EQcl)4n;|Eey-XQ7Y)(J0H~?&vSh1F-JGrrJb_9T$VlusrQVuW9r%&V#EXC{e4Et0h&9@n6P4 z(E?w27{Pb=3?1$ z4aa4DZiw-xQatq+3>}Yj`vdqb8t4G{_DrBhia%pWQ&yc(!9|0Ey0DS?5rbz|$hs?& z`-0Y&Z;M)~aPfrlkjl5ee;6OD&SXtToecCf z1jtwl{@l z<%?_#*y#ULe!)96mm%(FMrNbk$uVF2Q`%lYcev6_5gb?wk7(GkepfGNI|4-zryFi? z_R041hm?eNqS{C~YoZq#2q0!lPwuU#b&XIZ#o2;T62|FDcQsB~qo7@88~(C_3_v-y z9*^3&Qy6IOZv*x|jo z*;Y%mNO4_t_a|KwVD~~?mHNH8g>J+dPG&={2h|ASGREK3>bNa(Z0OTdp&*m_#@YgR z?aoqbapu+s_N9my^(R-s(+y5Y;Vd^5*z>OV!mNP*v|B?~7Zo)Smc~y|r)dmh?-jfj z`$_6}RehJJ->z8wjA35_DU|+*)|vswDiVA89&OpdUO1xLwU`MhUygggwdG&%0YdpS zyawT*SCB9)QML(GSteHLN%C2x9{6t|C5=Hg9IX|Rz%x`_h_zgJg@Cm=9ICf~ibQwR zHJTph4-*&=nUb}Qv%PaSXH>VB5!r+Ap6evlj>=(u^8K&GIuNMnPFPAQ0xbRf?w>`w zK%cy@a}wxToVX}XQYfT`(#?c;%88ws@G2izuHp!528Y><|7nvrf36KI7={b)S;rNy z0#j>8#2vjCSDPg1E2du+uG~f@1-;iu)%6l;4&hBxhx7T_Gknv|xZpuc6ye&y6n)w{ z?9F_QFhun+W5I2H33|4YS*y|~D zD=sU*a~h?{%%N{T>v}vQs$)-l`(RIY4J2-r&4d{+AbW9}It-EjO**|TiSRLhMCL7Bm<* zA{EEJ*fc3TkcOMKqB}9w)Vj&@OaiV zWyJ8{hyPR#Ez68RmQCJQdrjvmt!^R8R6WYvl9{VQ4GY4@6b1C%!*911RDJ{q)3pE` z>Cm7^2&zttTD&I-o}XcSLGR9H?-5RwlJ%wa7zj=sW#T7-RG-MJ)$v#_##a4t`&(xOeOC*!ANBeg!S4u$shi(MKXs)+jgn)h$Z zm}$X*30}itq_9#OYb)2g!xqHhf0eQW6;+AE#QUuGf{W=}5zxF?Vl=x4A};W~i#OeD zom(ftoMM>Wa2`9Ez7o;^6`&zw**zD%;Z(-bfzIiw2Xho;&c=|SSeYXqrWw_AO|jYr zrU-9WX;EXHja?_-cDKsD%R>=doM2Wv#ww0ss5z;8p;{u%SlrD25)Y8hxG|u7nnYQC zvV0_+Mr+6o70%!?0%kWW3N8e!rQ&cD0-wgm`U>q5>IM6K|Emp?4+pae6M_8c7U{6( zx)&zJal6ydMo0HqV=2!=`u2G#BOB~1z`kvfs^6WQJmNU$hB<6T1R$N89d*q)V6Opq znt-9Wg8g>HA7kSobI=wD_XX55>QbS+t?#W0OpPwIIzR9tmw*UgRdPFdd4vyGJ^SlG zz{YDqD)Dg^ckIBPY z0t(23N{`84zJ<49UQ0yS{-2>f(P&7JhEJ_~%oLMCtgXhacR%@Ckx=bpWItP~#l?snr^=MkCEe;kNEX!Vj^j5z9O zkj`oI7v^=(m)Mu?k3s59ocg&jM(z^5NfD>yj8nG7Odra9i-l%k@r83Neyos$R-^IDVpz_my>OVWoWgzxm21W6kOvEEP6y($UMZq6l zIzAVmOp?D0foPXZv~QuP1@@Rf6S&7`Da&RLc_(>pH=iUrK;2b29EmEFbmPS0oRiWH zqz{w0A402+9xNZ>%KyS=7(%JhU01@FN@n|w8rsh43*qMwuvE&DCtVkd2C9CoTuLS} zCB1!0Fc6L3Fu(Nu>-;=1VXKb6*g0Cd7(@3s-6h?g-mq`c=%o>)Xh~pUP*+hwJA+k* zn4Gl2x3kW8XN_Py&t5%IL2)%+Tu@J`D>)8vu{7)Xf#iT1#txX}QA(@9aJ}dUQ>+~x98`ob1tdb&-gl>`nKLFFKozGydj5M9dZ2s~aPPLPMA5;9~k$-{-KPq_{ zX-}J?-l=xI-lXZ!D zKkiho*IZO4x?8F+hcDvXZAy=bd``DxAQWPDhG7SvjZ23?gF!2k4H7$|AbujU0}w`W ztxAwLj?(T6z=j7UY(Xjt>Vr%?40Zf@!D%_B5SSpmWit3EfX}P-iF_gkoW2wpmnXLGoD$X6rw4|Oi*~WE;Zs5H1fskH%BEr z)WVP?Nbh;N3zDY@sZe3~w0~0FBC7XJgSRYvdF9Z~PUWZ|9F_AgbvX}VH3cUX<^!fb zZi~I1GqX;SV0a7GD3ysaFcaNBn`%B*%oks}N|_^OI}fppYRQE(`jay{f_iS=s4aia zST5$wJOsq~E$Cm=i<0P1l}ywA@_oz@tYvYAqMht0V-2gorgO(cZr8rT$F7OLc)9)` zs@x5mXI1l$M$s{Ti~BF^Cm{{&v3dFvCCB}7Lt|GLDDtVv0d58kAnqHU#)-+*R^XHk1yphw}1BQQQ7~^7Z>64Gg&5GZcmROI( z&csE^fIw+$5d>?uOi#;s|EI-Plz;?aaldYNmQ}Gi*jW;?y4c_;a20YyTA6SS9 zWphY)B`4S(l+?6UdxTWM#4=WZ2YdoME49wAzKK%zf{-$ABtlDLJZgZ9n5us&OoIV) zR5_uyCfzGlf%CCL4Lplr<@ejW2nnLkx=cioovP-j0Bpz{!8G}Q)VGySu)+m6!EAFZ zZV9+2bst{VValU3S7GZFADpx?+r?)Kt>17Ra#s`PGpzrfMk0ESu6gOa@%QZKNwwiR z6#CV2%XnwtpN)d2yZEsv#yD;Y zyg{p>!ef1?yPwdT*J~`WD6dmv6R*!98Fgt`mROx)D2oLM5B60|Epi9Dm}gPsX`s`i zNQ8m2P{jySht7ZrSnu-*Ms2(Mzy6Wt!AZFdm6%x^5wmLsNwS{40*VzX6&&5E6>EXf z!?aU6LTIl7*CQ$}YpxBROIZzpuo{n|6VY4d`g{PmX^hZM)xH$xyaK_O-BAlcKANsD zLUj=0MWur|}edB9K#6=1NiL*vTaW*kaO5E@1^(Xxw{iqDvu9PSyDK=(84 zAjtohiTKMk7x%j|ZqhZhB~cGP(Bri87x5cdcp!glqC}3fctn@bFJ{*eX6oL&W$1x*Szx&D6mEA6PNU+9`b#LIuZ^p7xa6GZqQG6K5rckpL(Fl$sy1FYn z9%UykZ{?@HL@sqwzTrIt>n}|XbVX$o1m&)oOK13akXgADMZTWCB**UR5$L-jGsI5uB}-6Eh06E}XK<5L09O=QQmucNUg>qy$r0i1ti6ss-2TnW z7=bz?X5!NDOGAup4Hd|ayi;wq+{gybfFE@5hfmU%b_4Mfo=wSVG3U4ODslq&ZaLq$x*L|)~l%p6G%50OKEf*T|( zI_`C_Y}tANTPUL~rq9{*Z*XSG`=2pPkOsTfgPMw zuUsVI#bUjp$Jz&xKc!=8JTC7vFkV%ox2q_c4A6Aa-onK#x@-XSO<@2=_Eq_4c-O|< zIj~~TxtYD%!%#|M2kF-#K1n2-jc!+&_+ATjLTqfv46Tl1Ha9bm6@>TQ)n%p#4?%A` zWRI-OD{#&}GD&o?$+!);tp4;fgV6E*KrS4Ottt<VprlS?dBL?gdTlI1R`5}~a(V!OTXI358-o)@%I+*cFoz=V>BbP9OEQ=p1 zKzpcdoxaujHgehNi{+8V=vua30LsHq$ZX?MaBi{8sd9cH59MDT1d!f~t~IO5W>9#9 zQHne&3agH$47293Nl$;FWAPJsV>(oWAKr%GPeWof2q1(#8wH_SAh^Q`G4D9*)>=t; zcw&r*WGP(#2aG=Ej+^FTi2UI_5DF^8QODEZwARz)B<1;{{V;(pTurTUmRaMWyc{Fw zZ75j@8*j2x)R!L_M|RM+LdFDezbgn|0%AS6jiQ&F@vFsxU`3f6qfcf9Z*k}KC@dc` z7}i~(VQC`hkkslE&qBj{f5QwA+*~4Pt)I95ZJg1H-|CJG$h@fWYJ1oNNjTk=a|wH+ zufr!ro6z0_P#(5Bgq$5xoyB`97=msA!8C=?%YKt=N}0wwWd}L1AF`8h?g3e}d+ib~ zNBci_BM(RvP}NtoH(+wjdKx}VLGi0FQm1=xnj8p1f?> z6Da^h2GG6u>bSj&>Ypy6Q$*shVXg1I!^*+{*jJU{C{*kU0f1S3s69-mp9xyC`>R+G z55jWpY`Ml3MLK}fcMfcGnlVNiOzh70MX!7RDE(bonJ?+#q({mGNr4QX(4Dg4kc@V$ z;r;VtfEyf0>+H}A?X+CItxFS*Hpt|cUw7-r5n-7iSi!-=wOCaRUYTu$ zlU}T8+Lny*wc+~8y5F?2*r6w{Km2@rgvoc2i&v3v_e5OD5I@wJHeg_`3jyJm7Job3z< z8fIYT2MUuafi{})hD%=@M@TV!-{;DR_{9c5bue~~$IS?E2%U)HVBk~Nx+CUYEbCV=Ehg9^z z_aNhPrVo6aju3zC+t#X`nArndI`GVIl%s`GjZoATp=-0Rd!~C~;m=R)r*=%{c?(0} zqh(HG8PTA%;nT-~8^%@7heQQI*{K-a66EJ9n3$gwfk17NPQk*z@Jn3TjpR}5f2kk* z=2Q%#zf%CAS2Psm0px?y-LpB=41BfhVx{o@j!N+Ct^PO-x>_V)wengq%Uy?ni?BvL zSf68@tZpvE$NUysN9@*3JTV(Y^mc0m7Q6zKC5=-ud7dCAVix2Ec=YOrdcapA4RJ02 zcs0S(;??VQu8h|ax=8rYC0UtndvyM8D#E+NMi4^9YVT6~i}V033ihL_YPV;+NhR#i z{LeJX>9m>+>ljJK;;B$b)A`H26n&3JT_vyBkbYRcprvXl00t^Qj>uKR zmdy#AmwMFouc%TG!X2GFS_Fasn`VS?`&vEY$j+b1pZL{ne1Ol;^i=#~f-Y%1{COl7 zQUgGtDzFTL*kt%fpI+`Wro@jE5=;fSlFwt z8=fM#gL{Pgcj+%s=p9dm)Wpn|EA8N%B6&fH2_n@D@b&rm( zSiS~E+2OSEh3TppxVen#Tw#sEO!m2`?00ad;ISh%{1F+gJ%a_2!(EQz%{h7GxwWlL zTMrj(>Gd>P91@~Aa!#*5g#eaE=&pc8b7q9D;XHjJjujEGo!7V*pM~3o^_TY0>Kj)D zLbkS87c=|l&Ttonq5YN+?S8q_$4#+P%!dCP<5`?|fJkzbloqdYrprX?t(s_x+X`}3 z?XbH67B$a+Bp1rrZEdX+!Q$%BqMyIzQ)xn^`a_;*Q2FzH_X1^PjR*4owM7p&V%%Qw z;syNsFUFxGx4VY9k+(3yKkqy_kPMq(dN7X=^PdWViU)<-A`Zfcop?kzlgM;l22<1I zpmUEP^*|OZT&6^+PLR+r-#suLlj2~=4oF?9fx^FTUd0^;=~q3u9dNZnI# zpUT0bg#I+FjzxYxjocozLsb_nSNjN_fV4OjKE9-d2aQlWwdIM7!l4Z+Jv7y07W2t& zDfZO(i1IIm&?<%()jNTF2YePRXQq2~sGG>sNF)~{o55r4WJ=CmchVxx4!H_|1s>pz zq~kkeA~KJ!K3e%s;I3Bz~Ss9*}a zE9WQwGM!J$8fa1Me_z}Ptdo6F);d>jA$2)lV343z5U(oL z=dEwiRSf~`a8@DAU~_MbSC!shZXl-ptF^0y0(YP_0o#2iqs$=T`#)DJkH>= zak!g{SLEZ_m6GrlYCDBYl%;vQMm+XRna87Axl@;4U}K{Wh_Kh2?k4YmfRz=E_c2HY zho5_*9nBD(k+Oi-{nud|Uyr;9Sw~}R@2Mr;el({zT?y#YK6oY^-tSbPIoMP;Fh>k0 zC0VgbGfUD)Paf5c;I>s}m6?CZDZbMGw3-3`kuExA9Z42ktIicvW2efgZS=DD&=*lq zhceWAGhx_+^34=&JZac#2h?08`YVmY+Fyy_uXQw#!?oZ}a_W@x@P5QBF8;lj6wrk= zQ&k8n^#!U?9;#r7i{IuaRkVY36PJIWURAf%z?on^;3Wf;u!#PO#CY)j!a}XD7Rr{z z1O6G31DQ$aSRXy3gVR-DHA5j0-1m9Vygd*AZS9Yx|7NfnV0uimf_v)K)_i^pt z1XAFUlWERv}Mtq&D#TC>p{t1L_ujj<;e&A~Zw?WVOoZ&U$1H-=jvJb5Gw;}=P5Et)o zv5A$Lh3I(Xvz@kfd7TvkoB2m#Si;(lyq%8E?AgVP91AY&@nR8QSGT8Ze7?|0!0gNvtMJiZsL-q9sA^`+- zl|E@A>I1|q$)Z+|WeH$>9*(9rXSx8Y7Hx{SPwc~~Yixvog%L4+d)T^W>0eF9q* zY;K~)LWhp~broh@0J#njfs-FcXEb=wLug2`IFLD93-M68)q;&=Xm&|ZCDP&m32Zgh zcDCIDV@WbuTHV(`8aSUJgu3EI-1@K|>AS9g;EPu3S-94U+e)uNc{@H+!CioK1jP*+ z-eXi^!{LYE96!CO^H`NFg1<%|WCpSP z!vZvh<%h{R0Q32(McMq-tftp@{zp7#$2;hxE&X_xQ@Csq1-j&*<>%?uRKOS(zsG@z zpnm}Qr!mrqfSQ%YX#{`3P=C@NEpDS$OnO<4guN)ucM40c@c{EE=cn)+y(?vMLuYq{ zhA*{^z+PS+8fk!^^8fyk_S_G|uQc&1Z+~M^hmGW&cQ-hpLpn2+q)C;P8XW=A#Ot_- zb(RlTX5e|-d*Uw|d z;~pJ{tV)M49s)xt&WTX1H(vRqEBGT5$69x;6*dZ3#oR~U*Nz7gT_cZhm)|VmDbqLw zGR+>z{lbuTh0nahmBUJ=^FZIf1bqdG`6_LP6l0Q_YqCfurm<*6quKJS6=zODT?MZ5 zx4o4(OlX{j?jXQHid)62j5ok>4zjWg%nY6Pm@qz|{=un-fYFax6KkxluuyOzOm)VppG1eBG0Se}r~v76O;opivh;|bAk~F# zB^R7|Q}I9RXoW-wA5;}$m4vi2}_+03(( zNy1WOjXYo9%{myj&qvTZ4d#L6nbN?H6Hd0se(y6b=1?@AJKzSbM5a33lPNG2Ux>^Mo8FQz z<~qrd)s}l`LUXBAa|P=}JcH?_a7hfsn*NI{WpWAnQ!dxI37Sn*WrpDJ$QgI5r0;F- zqf*7#&MxK9wO;CD{o~{=8Dr9RIRvnTUXS97HR;s5)L)CCCYL@gBS2ah>4vx&^kfnY zt#9(O9KT->>l$r~{U4*#G}^lBD!K(SF;ZBcP#-M^{^{Dp)%%l5!gT_0X04DX`5K+J zSFm>TmUrG3YCYMxA+!_k0Z{{t)U|aInSg0P0&XKJy=~PJ)qyrqm}Du%^ZZ}-;cAKL zWkv>hpvN2FGE@I{EjBdD)y9u+C3}UdDXgWkuQur=cxL()9KIxAIGNDw10D4|@b2DS z>v=nKyr-}^fe(DVVjrcunwU4z1-}iJHoerTkDBo_Dr3!aS;iTl3(@Qs zW(Vm*TS6@r?;G0*w`YI>B8SR`y`I$D)+0v8aPcCNNolee!OQ9{7LkcJ7Rl;}yMs-@x;F_Y(FiV^qZ&86&_7(U!@PhjUo3Y0 zqe|ktOd@RJOM2YSaz$9BZW|8Fomr2O?)jhY!S#^Ass}9doxPI1I}nePGHbSgt^G7X4v}SGfE#0xg3~^Kk^m z4_v3}?P}c;EQgTjiNr^p?uwJg{5`0Rw37e!HnLNJR5~XCNH%$! zG+IuJFDIl7mU%F~t??Sjljb|H=*P|-f8@=|JRuXS7VF1kNocewA2Fwqxn5$%W7o&} zEN(MX8=Cm8kbFSb*B4$1g)RYJy0Ldzc54C1$Q3(T;BK|H2@5(4pP2g;RHv93s6$&r zf7E#^qOsv*s1UkeuxkOkfvh9bnQ8k=k8@Z%SEz_(0;<$K1&da@a^P6Sn{yWnK#b=v z$&Y)V!JH&1E9ZsWWnJ`eiI(`I!|$%A^{29JZ$<%IX(1iB=nw%AQg-F`S7jmj&@vK8Y*3kSVl z!j4NEN~>RbntoLUF6Zw*ew6he5*gBVyk$B#5z?ks7`&EC3{uNz02FV|mwQO4yj6}; zypz0MPD0o>5U4KJqN$xe_%s{bGcD+jCGw=1FSCQ4-Q1zM5*T$+163WeL(2XG?&P`- zx?S(0R?9~OkF`7L;KKEmW~$~it;Qk656JJrLNTYsh{%j3$3-q%JGPbEsd2*bp!;|( zAfwpHm~Hxb_V$l{jNWG4En9sQ6UJ8K&|}MHeWc|dG*`W33?C+!Us+VouI{BaxO8*v zi4$IDR4q`}qacxV?q9P`JD`bb&3FShy*~FWo%|W9 z2Tj?#l8fgZ08Hsy^vdtQk?x9b*D2Oq7kXl=EVpH4ECj z_yDXQr7?pS4Ptm*n)2>iQ#gqTSijx z8Sw)fkUn`i)}RQb+`i+WN*dmXE>Z+&xfwM~F0^7u)c0V$F99{=Ieb255OC_F9sEY+ zoALG>+-eX13iF`s5xWMHNH`6zQr-d`_g?){^FDH5GG+Wtv$L{(LChty0143)ajWEu z4rb9l8UFIg9SEm4nY5k1_EXzDSrqSpy2U)wCX0oy9>?^f9y^;qKW%X5GRv4iz3y9t zO)F=mbcha8);n?4Ea<`ulRtO91kwksNECLFW`nCf=LEs~Zp0UO#g%NdSav$*A~*Yz zJcTlLq=U+*9K9)<3V2q>!XVPx)IPy`Ho#us;rL{_&UGpV^-Y9xGBQU7$Xl|?j@dyF z1HQd4s8NnR;c%Mh&@rug0e7<~z|vrc^i4F+4rfX-7JB|R#ZIwkEx0+xPWHVx(q`q7 zHS^CRy@+?!cXdW3jVhQ}MAKhvn;bjSf`n^9-L(|;4D+&4fnde;5lV9`g6J8)^QKPt zO)WoP$W9DnOPLS$t(Y)DHzC4R0)*ZIw~$4FRCI`TKWkwM?)(!8rK3e z`!vFi$a9qF&AzX(5XBGvr}R_1fvm-wWZnnrjxcy8gor=H3L03LX^{1tp2tW2*!0PX zFNB$`I!=0~={*7xeAp>5@kJB`pOD?Cxg{9sE8yIAMN(G{SH9T*%3OoJhjDapYypFm zZ?H{lq$OfIjNrtnh&{%F3gZ~8+t_#~hzgug7^=Wq;Fm9QFXCRY^ff-gy*1wyGYa$CHc=cj!{~B zs8{om4Q+@TCQ_ zPjQB8tO+NvsdY^>+UzyRZ#?ZE+ZSm+{51&WWY~*lXTtbJ`hC?EJtMyw4<8nJ^bX7R zGhh=Db|xbgQ)S5>CHp949|&j4WnCh7O>v0x`)7Cywd!fy$%I zg+1-*N0+PF0}@YR$c+jdYOR){Wsm8AKpRj9EJ+b*Orr{-W2@V}EObQ*Nx+@$}m28!+%D30QuXt~W6_$Mm z#r{;Ym_X?v-UA8?PL`38AXP-TXz`1_3hwJpVKg&u=N8~+cCp}Z==>o-F2qP!Fy=uy z-f1hMc^Udq +
+EFM32-SLSTK3401A (Pearl Gecko) +

+ The sub-directories contain code and project files, which are specific to the particular ARM toolchains, such as ARM (MDK-ARM), GCC, and IAR. Please refer to the README files in the sub-directories for specific instructions how to use and customize the example to your needs. +Documentation for this example is available in the QP/C Manual at: + +- https://www.state-machine.com/qpc/tut_game.html + # Support Code for EFM32-SLSTK3401A Board The directory qpc\3rd_party\efm32pg1b\ contains the CMSIS-compliant @@ -44,10 +47,10 @@ Please check the Device Manager to find the COM port number. # Win32-GUI Emulation -The sub-directory "win32-gui" provides the emulation of the example -on Windows GUI, either single-threaded (win32-qv) or multithreaded (win32). -This sub-directory contains the Makefile for the GNU-GCC toolset (MinGW) -and Visual Studio solution file (game-gui.sln) for Visual C++. +The directory `qpc\examples\workstation\game-gui` contains the emulation +of the "Fly 'n' Shoot" game on Windows GUI, either single-threaded (win32-qv) +or multithreaded (win32). This sub-directory contains the Visual Studio +solution file (game-gui.sln) for Visual C++. The Win32-GUI emulation is based on the QWinâ„¢ GUI Prototyping Toolkit, see: diff --git a/arm-cm/game_efm32-slstk3401a/efm32-slstk3401a.webp b/arm-cm/game_efm32-slstk3401a/efm32-slstk3401a.webp new file mode 100644 index 0000000000000000000000000000000000000000..0292490bdc3deeb839241811e0ed6af4106f56ad GIT binary patch literal 16264 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 **NOTE** +This file is best viewed in a **markdown viewer**, such as the one built into GitHub. Markdown viewers are also available as plug-ins to popular Internet browsers. -Documentation for this example is available in the QP/C Manual at: +# Low-Power Example on EK-TM4C123GXL +This example demonstrates the [low-power application](https://www.state-machine.com/qpc/tut_low.html) on the EK-TM4C123GLX board (ARM Cortex-M4F). + +

+
+EK-TM4C123GXL (TivaC LaunchPad) +

+ +## Example Behavior +The the low-power example illustrates the use of **two** clock tick rates to toggle the LEDs available on the EK-TM4C123GXL board. After the application code is loaded to the board, the Green-LED starts blinking once per two seconds (a second on and a second off), while the Red-LED lights up and stays on. If no buttons on the board are pressed, the Green-LED stops blinking after 4 times. The Red-LED shows the idle condition, where the system is in a sleep mode. + +When your press the SW1-Button, the Green-LED starts blinking as before, but additionally, the Blue-LED starts blinking rapidly for 13 times (1/10 of a second on and 1/10 off). + +So, depending when the SW1 switch is pressed, you can have only Green-LED blinking, or both green and blue blinking at different rates. The Red-LED appears to be on all the time. + +> **Note**
+Actually, the Red-LED is also turned off for very brief moments, but this is imperceptible to the human eye. Instead, the Red-LED appears to be on all the time, which corresponds to the application being mostly idle. + +The behavior just described is designed for the slow human interaction with the application. However, for more precise measurements with a __logic analyzer__, it is more convenient to speed up the application by factor of 100. This speed up can be achieved by editing the bsp.h header file: + + +# Code Organization +``` +qpc|qpcpp/ // QP/C/C++ installation directory + +-examples/ // QP/C/C++ examples directory (application) + | +-arm-cm/ // QP/C/C++ examples for ARM Cortex-M + | | +-low-power_ek-tm4c123gxl/ // Low-Power example on the EK-TM4C123GLX board + | | | +-qk/ //----------- Projects for the preemptive QK kernel + | | | | +-arm/ // ARM-KEIL toolchain + | | | | | low-power-qk.uvprojx // uVision project + | | | | +-gnu/ // GNU-ARM toolchain + | | | | | Makefile // Makefile for building the project + | | | | +-iar/ // IAR-ARM toolchain + | | | | low-power-qk.eww // IAR EW-ARM workspace + | | | | bsp.c // BSP for the QK kernel + | | | +-qv/ //----------- Projects for the non-preemptive QV kernel + | | | | +-arm/ // ARM-KEIL toolchain + | | | | | low-power-qv.uvprojx // uVision project + | | | | +-gnu/ // GNU-ARM toolchain + | | | | | Makefile // Makefile for building the project with GNU-ARM + | | | | +-iar/ // IAR-ARM toolchain + | | | | low-power-qk.eww // IAR EW-ARM workspace + | | | | bsp.c|.cpp // BSP for the QV kernel + | | | +-qxk/ //----------- Projects for the dual-mode QXK kernel + | | | | +-arm/ // ARM-KEIL toolchain + | | | | | low-power-qxk.uvprojx // uVision project + | | | | +-gnu/ // GNU-ARM toolchain + | | | | | Makefile // Makefile for building the project + | | | | +-iar/ // IAR-ARM toolchain + | | | | low-power-qxk.eww // IAR EW-ARM workspace + | | | | bsp.c|.cpp // BSP for the QxK kernel + | | | | xblinky1.c|.cpp // eXtended thread for the QXK kernel``` +``` + +# Building the example + +## GNU/ARM +- open terminal window +- change to the desired directory (either `examples\arm-cm\dpp_ek-tm4c123gxl\qk\gnu`, `examples\arm-cm\dpp_ek-tm4c123gxl\qv\gnu`, or `examples\arm-cm\dpp_ek-tm4c123gxl\qxk\gnu`) +- to build the default Debug configuration, type: + +``` +make +``` + +> **NOTE** +The `make` utility for Windows is provided in the QTools collection for Windows. + +- to build the Release configuration, type: + +``` +make CONF=rel +``` + +- to build the Spy configuration, type: + +``` +make CONF=spy +``` + + +### ARM/KEIL MDK +- Open the provided KEIL uVision project (either `dpp-qk.uvprojx`, `dpp-qv.uvprojx`, or `dpp-qxk.uvprojx`) +in Keil uVision IDE. Build/Debug/Download to the board from the IDE. +- Change the build configuration in the "Project Target" drop-down menu. + + +### IAR EWARM +- Open the provided IAR EWARM workspace (either `dpp-qk.eww`, `dpp-qv.eww`, or `dpp-qxk.eww`) +in IAR EWARM IDE. Build/Debug/Download to the board from the IDE. +- Change the build configuration in the "Project Configuration" drop-down menu. -- https://www.state-machine.com/qpcpp/arm-cm_low-power.html diff --git a/arm-cm/low-power_ek-tm4c123gxl/ek-tm4c123gxl.webp b/arm-cm/low-power_ek-tm4c123gxl/ek-tm4c123gxl.webp new file mode 100644 index 0000000000000000000000000000000000000000..320870b8dc4b5fb35851c97c64650bdc8708f6d7 GIT binary patch literal 29976 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⪻045f0%ZXuw7?j%Uw zjM3hD*~;^dl(-Ct&nFis$11NBFRMXU16)P~3jHEdt!AAowt9blX!_78&#|8v+Cn4H zjVigcV#b&R>Wad@4}4P}561}zc_M_$N8=p-YSz*n&=l#qGQR43PIuVZx;n_*YnO` zfBp}j?dmXE-61@$V=o)R9tVMki%=Og{lyVuSFjrv6mKkR8Z zA->cI1&O!l#1`L|32D)5S6VHbr<(-95sl#X9!ibID)-zuj{x$YLLZUKf#4|2>V|sG zFbs%z%M}?|{}S67R54&dGd!QE?xw0u5;%9ic0JrjmT6II(s82bAR3X}4V)_o z&{W%S&mJS~bRS9%0X?*UiE3}Jl>JAC!=tVsxPB?v*Dhn&%R??_d;O7zc*_C~UD%-( zrM%l}$8;KRzdnIPzcilUK7|( zMdCeUSy7w!%d@_jFH?Grx9NfXwL+Amd3Et`{l4Ak&D%&3xUF)yUj!)}BM4A5wA=>k zWgQ&HEj)$b)fKD&W{?GapS%)W5UnGtHuXadnKs4~B?*iz-Tal2%OV-TS@LjCeBR4A z%!l6pXPy{hWrc0>Ad7!-Qr6o2H=;nrI&qs&%UTm3mH2gNufDRmksKla;q5GB`DS>X zK1wdhn@JvEidmz;J9uPkCKhAYJ99Gw*b$Hzz7V~JiZ}kYE>+uj9!X}^pk`$QhBiT< zEok;u!e1~Iyr@AK;e+H$5hH9+@rb?sE`c9YUGjy?JQM>lQWi21pZEcFA$Ul=;$B5x z>|~Th3O}jX4kU4PRUeCtl<2k-8pL6*?%7n5Z^~7#J8Y>gigMKxe|2{{H@hiouO1OL zdv(bP<;=7F7cDW&tP~s$4tLsKAukmH{R)1=UWDuOsn&zSvcI2fVZ0)xmJY7l5J#o> zL*a@czE`Z%CrM-kuIZq>U1?{-6Z0Z#Ex)Pxr+q z+1)i4GZV_mkKlij*YhfQQhjc=6XLpvv&%7VZ9+g4Itly~@l{1{i|@P21L%F4H7TmU z8#2$s7`+IcRsPwf)GD{0eY`-?{yJsBL+Ssn%VWeV+mlALoYNhPta$ct%#_C9?$yRi z8IwBCXv}pJLbbpSs9DlSN4i|njnvY?pNh7~HK#DzNb-#JWP1iC3>K|RCy=~{A@?(z zV1qOI%jSA7Ke!@=!pVs*FXPa68|i#%Vv7H|g;4d$?4^4PO$fQv*riMw(n9n!bs!mb z^Lk61IyD|8Yl4Lm5{1emrxCDj)V9#S1B9+t)#|{(7hDnu4;X$7_O=GZtM0#OIyKoW(dhDd@Q z2z|EM6r~^F_#^7VJHF%`%*-8B0=+}RP356Pi;ewsuBKYdG8Bj0F=h`pK_ z`8Geqw;DWd_~%%Y(6Xl=3d*sP!^Dm>>wQc{2gNinXwz1nSN2vvsb` z|B}D7cs9buxTd(~yD+vtFe3L?`|g$iAEGlh=}A^cS0fB+qQgO?%6o@~6;<&C3c8#u zEP4JwBP%#BHUORNLbqc!9KR7Su+R&z7SZSK~ zV6E?J>Y#pZ^NwzaN>yW0I-OrG<6Y#Wy2)8o;E((;bjLn&R1Jh-T?0hJ>nN`9^oRsn zb(V9;l%7cPW18~F`)7t&u0@T-eUu4qc~T1SIma}+;#fLb?TtssCUgg zgp5(3dS(Elo9v0mbk(RVT#U(2*&H>f&e&J|kz_-uL8@V_kK&b-c;2B}IhFbuX>e<|iU~F{S6O7P&Z-LQd>Zv_)~@)z_;elH&@x9C*qZ z!;L%*BQLchzHRA+*IXlpv3MdPamfxzKdgS>Putg;`?kWAsW{wgmj-qDCyD#&>Z}{W zjKk=gRxXb``l&w}JwYUDUzd;>JLfg8B38h+<|A${INdJ6)bcen!LW|eFu>;gwO&Rx z-b+b;_q%P$6GYt?UUbv~`$`bHmHu+wXG8^Duk=m>coG-~miPesl+ga8fGewYo@Fg=FAo)#m=Ox&2}GpO zX2Q#P0TC*^4g%GErhZ6NndrEAi6x_po|7rg*0hbXs}6<-pZ<7@rH;sWNY9V~g6RV; zq`@KMF}zHbxdtn6R9JD(j0)Y-afmkT@(h`^gY}w+e^?R{XjKB}(ZRnJz3w2 z9s^C|Q&NPL)6R?iuRb(iF3iOfa5=7jQ4uLUfOSC}q|`p~;K&ASJF|?kDLDn1ks`IoGP6H<3uo4omc)9{5RK~#?Q5B5CjorD_Qv!*Mb zKsrk9^A9WWA`)S9Cc!|CUs&Cfoj5i8(0LafxrKjs3$?@q<%EnZ#UsFI(k&9k=W*k4 zwem6u&FVl0a;^7{|Iq#lT`e-G+@=aR>Vm(2kA^pNU6YWh-Fe>D)o~SBT4@rU-m=xVWe(k) z1A3>L*Y80cCKNimZ{zT9t9t!)n4?Wl?*ldMP$)hEF4CZe+V;{)J`(b$J5zl1e;v{9 zpbFCTK$zxSu=MKjGUae@G6Azpi2mwM{-M)<5P4~M#KmXFQAK7-s%g1E*m}(U25c}~ zb_eJ7BTiOVFaOvjum*@OM~3`HNpt+#t?BEv`IB_G;|} zH7cYmpkwZ8ip%*WAD;VvI|T61N08HE=AyMAjgplE-Z_4C`kxPTO$cu*G_^OQ8y@NM zd@RS?Oco{RN%(l*s*l~5BST$cZ_|Z$aO!dd8`bmNcYgR})eb6GJJ#wKcwp#&r@PBr z)dw_eFtl&VHJs%pKfRL*ii_&7h^yDsidKwMe}N>5rtVb>V&3-iB-KCbcrKP777EW3`Kcy<+Ob0DTU}Q6>;y4v_wQ!U@o^J zaf33EADcs`W-@o?$%7(rfZ1ggPK7b`6*{c)bp-E1HtFHGnfNuBQk8Na!6{nGM;yn4 znn2EyQjU$KFmq0#`AI@R6f{hfaYb~-$i|WN+QxiM*d(m5+PoSb5cs6 z`i$EuAd>P{0ap*oib|b@T#ec|&;&?q5geB&8+_zkGx_F8VtU-wFow}O7qxiT>{q;> zzOsszo^DNtfNV5mzLj0taMK&JN~aQ9`w3j|!2uM!B7m+Y&KNBw9Nb_jPZb|e3%$+R zUN75Wu(`}-1cpi@e!!hROqq45o3i)I0KzaCi5JU9VvC&Kbpx!Ez*ZzgOu~6@lAM2% z^>yHao7M*}Ksg*bIuY(565$Vi|E-7j1C%NNQ|{GfcTbyqg@T*aW+;f&rXqX?XueT| z)JlzfDk>A}x8*otmhXu!d_dcYn?|6;gD>!Ib3lFYOTJ7sejPPEcrC4k((LOm!%#{7 zMhqPxpx%?trQTEv8Rr)x!4>OsQnJ%@_PStPB`uJL$&mJwc`@v(h&MD`bNqf0+r2zA z|4@0{1XM}9=Rg$f+|EIA*#!kRt}tBLl1hzc>UPhpW%@D#=|db$isZy*7;sT3!6t~T z)jW6AMpvH88_X_VQh3VqVtRhfXQ_nk8D*kX%DPvm?>R>RXA#oMBzkD2%^t=*4|A0~ zSIz8m4FWs&Alc>i1~PX|%ajZ#G$e;fu`{s5v@dS=wX?33UUU_*Fn4`@AHlVj+B4jJ;K08!fH z08ar1I#NKK0tTma1V%ULxFdSuTKK<&TeJDC>C&%6*3Ly4zr786)9}T4hxDqdrI6m; z2`lAdjnJy5gOD(vabK7Hbv&Im2Oc#MjKN@%sNV3hDv>PWzb9Ylx5zLK@3Be2$%O{m zB^jZ}=b-RkgdCy5C2W?_wZzw_YK62jY{4|#kGRHaq0U|Rb_$RS0kxt7=}v3$vum3@ z9)>pN&tj|3>5^2Me-13~BVfRxqWGszlb`=*R0})89x()xqdF39AW~+-tSQ&pE|v@t zESnoc^xO?Yifu`HKkL5)1i^yCvW%<|hn=GU*@BrPF>U%Iq}7WeWQRS=9Aom3 z7&Itwuk^9R+~Q9E=hu$*!oa|63#ail0w|MBJ{=B=Ow9RDA`rm^+eX>(p}&^?$t#MN zyMF29)fi-r>e{e{pdLw80l-9o=c4vc#|gnior+FwNux947}B2N)3n^2*1)2bv#G=68`^jzx+I zsqem;&S=O`HQ7{~HRcLTHsSRtJ(Pr`F;@A7O~B@~MbTPqZ_&nZP*dG^;As6j*~@1$ zMM9GW4S8Ljs$mypkT?v{(?<|m{?e4xqVnSD+5DAI3Sv+%JR?JIhtoI!y!TYxk+6b% zK(4fYer@t3ANlEY$DBkAmqk4zh7?nfe*hRt`g#?38Ked;8{(ZP$vV-;(MC?MO-uLH zF(%FGo&E<)^g=+)>5Uh5&P-;71!Qh0^+ag#H|gqaEyVBH%W=SQ^d0o*&Sfzy6Ugd6 z%a6$S(oJxltPvOMySl#33?{NY$5329E9ce`ux4ba6M?#R6lT4osP8$zv&|jT=WXc* zs3%zwcAfYr%3#%02Nx+Jmlw}b_#()wb(LU2Eh!_W1L>7Dxeo=5`E(uKM9Q&j{hpzG zraY|j#YtU&@`&fp$cKPG>rNyn$JiSOLj>kG06poe*2_XJw$l72csC?l_dm3%LoT=*@7E!55^Za~6i<&aZ7qub(RU4^dd+wemoPF>^@l}=`^{5;7;K#l zc0Nt422->mt`?N8KbOD=()%C_0~*iDT=98p>@MhmLIJp$^R`g9zVvN&cs$xBSt^Pi z;_>g`e;sjM-3Sm+I+HF`Hum{^n$u_+cZvmx)(FfQ5nlo{4jFJFXxIzFf+VHE1=0^) zAszxT)|ys3wvkJ`^BpZvOibYiHT*pYF;}5g<+)!%ND92nXi$n6$?z#eIC7Ik!vt}4 zbzy}w`U6V900kYV$~QuI5BT?Ho)Ipw+@8jaIqL0uZ+2sN-Ys8@9mRsh2F2CO$LkVq z!Ezpeps}p$0sFa%l`(7qKH$p)Js|Ulb>3If!!S|nl zA3INTfk(-4zeHSrGRSyt2JI@E_$Y&qL!{rf>A8)8F3}}ID|FoQxbvPKz1&Ii;w1w0 zJj||0duVMf4S5gz7m8=DlY)&k&|Z0_Ld*|g)=Py(ttd1T!Cn#XCxWOQQB1t<{2_D^ zYbfl9Cl~pV0&St!&1KHyn}s-Q_bYfNZzOMslp;h#@}kVJ<0yBm(P!4~My!r*$R zKC06|lN+)PfbI9UVRAxTXN?o*H-0xphvZ3F>v!$O9-qzlz(`S z_v?##k2K0~^n1In?FH(1U@~r$J&9}6x19ULW7o@ z_HCswRI|H~T2YV!+lG`#!Q?Mgn#Vl&=~R<^!B$|b$Fv5x9Hf$s{9r>v6pC7-o`Kf* z(jmiW6ju7@+2_QIor_=4HAN#1#TLOJ$s&CAux)n0v5Yruw>D(K@5(G{Hf-8(5)Y21 zHtQS|iH91HbmNjB?~2r@@U1>GLS==NcX0V*bo*7)-Bsv~`VmxkklCW^zYYg5@=U)Z z8t`#JQ%7R3?z0FfifEg+uWvyw^UxC1Sw(@o zdOjoWJ)=Q>mHP5naKfGd-Pj0oT|fW;M_|?c+U}lgS1=$;Na43yR-wZQEp(Eu70qSw zi=KyL%HduprX*nJZdUf6^^?K5n^LObkTkTcjQzCF;425uW`iv4{UVA;C~wz%bsK1o zn?wf6E8@3xM$ z)-}?SBz}V(L%1`cB`AsRM<)S2&|w5BTc-n}AC4D}pji0bQxphtetoGHY5)#WY?2)! zgJC&x06PEQ%b166g1Y z_ZpyrU9=TW*7MhP>WpcjeYelxdLgzhi-^E~vcoew=Wcd82d=2pvh_j|l>Co?ZPc^2 z%_xqb0DCpQ$<#4gpqc?O4tEZCYxLWnvl$Km00?zak$FCe17&j zQ567-68~WGT|myHU$cIaCc*h|@HfYO=)|)jND3{zB`dZvQ>x>#RUa~eAS&F{% z;X>~aj)AUamnXLzqHX3wWpMIEeD-hndgEbL$0h3>u7R|;NFBgq-A%G#x<_6WpkDF4 zsjYN{LbL*Y%9siQM^I8mlpO63RW`fdrDm-J$Y))zn@Q2vW?!iB1rD>*hXGibI3aAa zIK{__9XnQrVhJ+QV$!J)+g52bfxKOc-|sVUl6z!K(>_7BG?Q+OT=kUEj>u%KQpGwF zz1z~;msycbSAJ*;e)mw*&{jfa-a(YtH<=v~=t2={e#X79VW3o{Cjl6@>aV}$MorkV z*yt&v(K`w+_(ra$$yhUM8D+v(OS!$Zeb#>JADj zeIH;AspuVoF1#8gF-XBS{^ zv^xP(1O?OlNns-@7)lgTZrO6VA_F=IRsc8~R+22f`E9k^IlccMrNnuuOw zJy8>22Lp{O`dOkv6y5K$7Ts%ht2qpfoy1QQOE2Rb>I z*`G3t7~4i@V<>0bQ3>#X*w;!``sxH~MoHMY=QNBk04xbaWwJ8RjFhl2RfsD^g9DK$ ztD4JMx{t9Pye!Skv2F6{a+CFnrSYc|-@eW#0c|ftL_#$hY~)rhx6j<0LMd2;MGVbX z{5Rd-2yCcnCK~EDtw-5v?Jsd!r`yN4V3;2T2j1uo)*v7w-B4)er@^B-&5eK;gNvDV zkZPrfc|k?T;739#yuYo -
+
STM32 NUCLEO-L053R8

diff --git a/arm-cm/real-time_nucleo-l053r8/stm32-nucleo-l053r8.jpg b/arm-cm/real-time_nucleo-l053r8/stm32-nucleo-l053r8.jpg deleted file mode 100644 index 1c7c4159328495d3df1d2afad20459ac481adb83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56638 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 v>#ybJJ<5=Bz9gi9TWOQZnk4FdsE}@;lS{W -
+
LAUNCHXL2-TMS57012 board

diff --git a/arm-cr/blinky_launchxl2-tms57012/launchxl2-tms57012.png b/arm-cr/blinky_launchxl2-tms57012/launchxl2-tms57012.png deleted file mode 100644 index 04766ae75bfb3eed3b8f778aebfed384af2f23a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136290 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 diff --git a/arm-cr/blinky_launchxl2-tms57012/launchxl2-tms57012.webp b/arm-cr/blinky_launchxl2-tms57012/launchxl2-tms57012.webp new file mode 100644 index 0000000000000000000000000000000000000000..72df6cd59f83d0484cca1515a186a9d43ce7ec43 GIT binary patch literal 45394 zcmb4~1FR@Ou%3@?+qP}nwr$(SJ+^J#W81cE+v*<_VWCY$*;vr3X; zVp0tN0P3Pb3Tg@*8c+ZL00{pK9~ht?5I|5yL81=?000o4;TI7x=ugwNtM=)r!N}OM zh4UyJ6Qw+=&3SSK%oPcCJ7H3+1Gr#hP`|!JF~r{I(T$AAFS!7pWv7yYaDF9eJ`9^` zcpdYa%JSglzwUB?U2o)G6w}%*iH+#3@g^n;FUuHKaP=sfhH?CJ@!;}|ht5QPE>wN8 zATPS&`8$YJ(Hy>lOcv7_Jf=t%(;9wbKos8%z%@*i-r4=tKVt5&fN9dlT5PaF%BX=| z6AdS(2zE~i%umuLN(t7v3s8aLo;lhO1O1sXSWG|^Ggol25Ne21L=eTiDuM|qgn2PU z6I27U%?6Hl?E;^pI14fCo*=l4act)j)sn+p;&fp(t)DhpxqxBIS*BYqbELMN$e%q# z-$)kBqo{5?A9Bpe5uDFhWa17kbgug=Z?-})kw0ygHWqb#ESEJSdt&!D=#kx)k6*Pt z$@Pa}+02fr%}E?RhPfN%kxHq*duJYX(WF<3^p33Kgr|3_B0AlYZ^HUsx1qb*)ZCF> zu>U>oLCr-|ynpt7TDESFFQRV2b(>+*+I8=*F5S$7^S3;@oN^odgBt3l`ucZErrh0P z4%|)nRpxm|3uekOxZ`vX^~s68?$*p+Rqc%#1nkzN>{i-iuug-2L@obC^O_kzh~pyqy@oMdaZmib`cB}48MqB7-CA$K@2b(6s|;vopSN2 zD_E8gtNK40HKV(NiS~C`b7A>QDuQumJBa>cu7{vv*LhHmpxRIzE0`u>mN*vKr+^w5 zY%+IRilFeZys4>zVW=_`cWwm=iaSwKASL*tUA_1~0kAX5SLF9NH2Fpn`nZZgWKix} zF0ZpnF0XVy?y>nS{&*w0+!Hx{?ph!z6Kr}9{*wbDzjs13fwT!1 z!?8iz)!3Dy_sf=|=*ceZzJ>S8fuiTjf}&XIEx0oQ&PO9T%t9n?dKm%CS4NmLMu;+M zsv*MBQ`iJk#6TaP0)wdG9^QC-B7+0Uk)y~@5S#?v);$Q+Nfa141hBKDC~`<(w;3>U zXkd4_f#g7+Zb|`(;T{G_J6>cN0Wde5e1FWEA&8+t7z>IZh6b48h#EqwU~)e;*eJpH z8Bo7s{61!2838iT9ZHB`dLg|z21tgJ{xnkrlezZPKU(TeGD-~e$u`y`hXm%8Rg=Jc ziFgtkBA6w*!UPk*OzHS05WrlSd}1kLtgUY#DPpvpUqDG>a6mErwgi+BK&QU*fHn%{ z(m?<>ie%9KqgXD@L}8L9m?TD<>4(fey1qmvGTcEwd;TLzNMM;k>V`SwKwtGT**`Kx z{PoBg{KpTrP}6vmccx(Dc$06Qz#;;OU;Gn7o5BBBz>q8`h=GCNDT4xr777zN(06bK zT*%-6lL)X~=M3|2+y5|)4b=ex1qOo)R>3~IRSYn}xm0PIUwz?`9(~sRjUurvS}b<8Ru{OX7tN>>zn$vF7Ijk1c=3xzdH@;_5V`v z4{yJX_-#1VzWu)MJ^1MPY5w_LlmDbI=>6tv_8;*=e{6Uv`O#kD{v=nL6}hddd#8(s z|NYteqUb&TUGu~DZu$Vf$G`ONe_MS|TlKH}dA&CMK;!x(`Pf{hKhsa{M!&9lulwRZ z@X>t7{keUoH_)Hvukk$i?)|ZU;@#m|{jmS$KkHre4*EoXkze1{<8S${dZvGkd)n#a zU+RYbZQRRv{r&jq(_iV`_*VSp{>}P~Jl(zQHRwItJ>viRE&2Mrvwi>l{XOtF4YrJ) zHy8eY$Mk$WER-5@0oVU!VUYHDOgbrcB{8fC=9+@WVU)+_cZ~TNMm}^yE+u6ZeNB~R zqi4|j|Bf&-LN_z{mJ6lYP%o?loUCN7l(NgM#6|%XbrzD*t^^`fhnHKMJ*h60*!@Ku z5D@sqV4(SX6HqHau)0SLLR`S3axI%3gP#8a%+CdKZiMf;qar$$WR32vj95p+)gkpq zL+yo3kXCn6bRrY!8=)Cth>sPGIUt~5KHM}eVA6(;AXZx=?zr@icrh_y(cliV=B-Y73}ct zS-O*)*~<=~`keAKv+-Z@OS&c9BhzX@oE2H+IM>$ObbK$wKM&JugbX`Rkv;WR)z2V& z#*npifK-0*5wfwj&dt@fiQu?{na`e_U%ik>YJR(2^3Qyc1UV&S zwB3FaQ`|+glcTN34NE$rpOgJK`&CsHwHt#iDbi9x=44m}<)q^05NLrZj+bVGtgT_S ztB~4%`UyT|nKjYH+_eEQeP9ca{dy$e-AA#1=!d*QccO^bJ{M&_da_VCV9r27cXXdL z%VT62c)rLdb`9{GnLps<4*-$>Gnl5wAb?cG4hi)GoV#hpw`#Z)`wlNJ?Y|q8n`A!@ zbl=T3Y}fI3ex|?wTv(+2wg?b3ngqSXpg)Pha6Jl#}w!fAOBlJVX z5k^dfAa<2+s!7KmFkp8_dm>g`1zbJursn)L81iFzm(=p`&O_vdhu>6>DRSK+PWN1T{G*wxMTSEbj#(#`eaXgv+% zRH~o)X?Q*V97ABBCuPl+Am%*k`#E}H^u`d>x;XiL@>+-2PA%J}+OLQ(uE(`8b9iWE z9arr8l>#D5hC&XRPw!@L)wa4Lo4BU%XpfL&4;7kZ6>l+Ef>cI4Pxe6|^TE#V9XG@b z1X1i-%PPWSyP>QEz6X*cwXT}r8w8`R^5ywXfn*RV1~n z{#6vNFTrN1piEXqW85$iDg%#<%!egnA=Y*4R-14^`@JL1A2~IHkT_jN@LergC+Ib& z6KPHM10Qnj64BXdVg|XY7yiW%ZekTAO%<&i2;5k83@x2o{=;Z4HSVc1w0@AhJ2`BE zen$CB&%$+0^xr!TlTlA!$fk}qd}GmD@kn`- zQ%*{|l5d;ZB6`G>*DC=805Zc+h`n|Sm1!bS#6;NRwtFrGmV=x-u-*FJnK-Kq_jfPG zu}oZ(u+)uYn%weNO_?n}?LbSJVTdb`Ngw06l&wsAQ$)0=_FL%gW)gzj!0?|nOx?tW zUwCusw2%{7o{XU#eaJU?_C6($La3)&P0v6q&2KJ>9iO*MPejk6qtu(_{*RHz{tV^O zuH?tw$rz`CbD`HYyjHt!`d|bb`s3uLmm+wbq)C8Jkvk-{rcy*JB7JjqF!C_9G!w#Gzsc{}&1KXQfS}-c~_xw14 zLjBHKX>i|D_cvqol7D?)ux2$5WpGW-#`9M~z(snoy(X$$b`U(ixHpgR>s0kUJigL; z?NGo9A?4}7ySSfhu0oCGJkL$!=J4x&CCaQ8XMX^9rXz3Pbjz;>H`ea~hdAIYpSecT z7Jrdq)m4-;lL7%{=>d$MErBQaA2`cE&EnCiN1F)Ayz|`#nigK7 z#;+dQ^YGm*Kl7`os(a>lx|g+auTzJP2TXwShlxIm92r&$n`+DvP5R^8T&p3i@+-|< zfq0^y$OoI|EW~j_iPE6VkFq%n!r3uzQBdBnUR|OH3)-L0R)Wnc90Kyt`$vJ_UF#%~ z$K!Gh;cK#I?$NzrMGw=LFx3ikYIz$IT$D8!ze_eiG0MCq?ReSXN7(Jd`V47WC8icb zH@_6ITGgB_bgd6}>4q;W^9qPcJ~Ar^SI3z^<_dQ6!scjBz>-0VeD|J(GeqtjXNl!!?(X&h6 z7PZ>HO{UIaPjNvpOo4dV9imV1&gMBvW%YVr!Mz9uq%Q-sIvc(* z6FHbzQ)K(hGa;G5I55{jsDv1H#E3$ez3bk|)9-dm`00 zUPTuQN{w=NT{MPw9hY-Thp^-l>JT?;=&Il<$iS6Z((Yo^hlGEpKYyP~tsLBeLy7Oq z7kvbd{zmY1*1b~y&HI9t*MUyEPnn%M!9Jcskt)zN`ye6@b47NG)oC{0-MH6hT|cr0 zIUXImpt?NC{VvD{#9Yjzi9pb1c^=|f{mZapL?D-@5Rs;ytrJ|s@7|iC`d&-n*@U2R ztDQ~b3PNh)>^-@`m$vpU;)}(5Vo_EB zP_txK(zos;(I|56uzZnkcFSGGNsmriq^t$&G4RBT*4ZybjNF@p3bh|6YQUvHieE>4 zySS&1bVJAB87Ll@su0|s@MDV7iTK8K;zIyfoF345j?ZQ?f@#bJ5`kx0-kUFDHrQWx zDs32?hkS5iB?0fbH=uHzBOvmb5l3jR8UCp$^azV9FoE-OCU^x&X9tNhf zE%zf&EoPaLsPY-fzkZH`gjU~z%cqm0TYTRPae-`nB3PEnpA^8gztZ93(6-HZ<&&JP z^N?#i%E|og2N{++Grx2vSh~*owxBjJ1091zpltN_MIiCF|LVhbNM!H)RH>73dp>%` zsw{AZ{yw0g$m5MkNRt1uobF|t4>ksLM*+)L>Qu=Ek6GAl{VHiq=CAbBsVtr=h1}Ri zbNH-mNC0=JWo^ZM?YH;Ex*>XC5b>PXvpc_zD}xn!KLArc4{uk&(>Rd0*HO4->_#VH zCdxgs#$(&DwFp?a)xJmsbMNiF!MVba`LBTIsm`qORFSe5{_;a5gT`nP)b@KZ3q5zV zCny3p+6B%m-9V%V>t6FKJ}a9 zpyCsMzCk7S@lJMrTs6Wud{xJ`ulJskQXH|HhzB3buh=o`}s zJDIkqZzHxSRzP%NX$7R7CTTkjwbz3?q&)>585bht!!*oaTKwRx!WSU0(>6ri+am$D z`D_UfUvzf%u-%>?Zh7a!ocAQJ=}e|^{S5dy-eK3LJ-Lrug0F8b%@mm6F}#)={HZzv zPu-;kkJ-4{;oj!peC7iHd;DtcZ6w7V%E=rQZ2BLG;wh^VAwrTP((YY`zlo?T+X20S zjCEQMN)J~?CohAE4qGKTM1-Q#g}!7l;JoMM<75d6j*4+vZL_nHhZ>T-ksMf{tj-%{ z$|zt7HD;^p+poVduTfD$V#ngCdCytW!?HduzU@wvom77B^ubV-xu6c7BG zed<4uo~-4Q&}dF73~nm*2I9kiZc2#`?*WQ!=Y7$v1XJv`)^deZy()`eU8&ncb zd<;A=4-O}|5kuLXmb%&pY5zbnq(2Kj{a(}Z7wYtpm3FJf6A#LuB&gW4|1TobBRhEt z2)m1ofclGu1vdr(`6$Yg*~>xfW*|Qq%NNF1 zQ#N!(R~NO()NLbr94~%}vx|I-ZW=&q>#tltsgTRnURbko}(} zH#Q5>oFpr%IKE>3B+q1rE|_aL?qFqX63wC0iu3d&je6VGL)o?8Bi;?9!Q|APeoUp)5zH7WrB@bg;r z@1^)Z8lX)|c)*MDL<3%-z!`#sA;p4+3Rdku|H4?dUqV%oKVmVND3EOu%`yo5n@y}) zYeF`0D6;1|eDimZG0;QsT#*&s;?y@gIgR*$Kg(b@NBhEv{mbPNTyD^twJuNU^8vAx zb4xXNtEtQpB-3Ub54wjP#6aqgP6Kh(&x(aW41{_}#T|U5tOCw!wRDSE8t zfSk!J5km1F z;3m9;R~m{0RApf-Q*k|MYPh;pg08k&#A9#(1Sa_@I)gVGZ#@>D(7^gFM=B-;B-R^* z9P5)qm>1|6y|kwJS$qPR;#!bTiC5FJ1U7T9J=3X0nL$xG%b^aKe-0xt3q9#?_|>5w zo!y?(IN%dXeXGJs;Ibo7*<|K3nrwjJTGJOzdW#zfUDui5mp@_ge}9;A#L3nC%#Umc zI)z=FvXSKF3Y0TcZ>^Rs%L8Pg=C%Jr5*DzD1RtU`^FQS2gLm7^D1ycmN z%~9@!5`x?U%P05WXfqM?o|R+xvP%4G#8f+x!E61lFGw}8nDNOk4Drnul9XW2u6cYj z%GZ-RyKLEtO?(yo^vR^zq98XwdQ^jr1N)q)evuC*)m#U`_cH=UEpq;yth##!PmsT` z&OE3a9ZOZ#^C#m#tTobcSkQ(h>j`BY%b&WFYA0|6pv}%I;}>#ZFx+waBsgIM6lyC= zbL+6M-Pk-Al^K0-Pb*S=XM)|AUC}B8hou>tmsa2tVEF0soMSG@aeF3STZnLp%(2}O z8l18jcZnS%v}i?F-bpfzgnR)4HpPJS!Kv}4n?Ut?;81mp^TwU`QW)$#t^mC`s)^O1 zCbPgxd)zk_35)w}4+b-!KZP1_u!zOb`ns2+$(bJpBv>U(xyN&SbyivAT!Oh@3Gk0+ zGS)%Cd26L+Dk5m4g%E#}q_7{x;peL}R087Z2V9WogR_N%q1B$YZk#aV%mX}K+M7b3 zt|+9Oxp7vmp#Bj&V{O763A+kB@wcE#kv=PsEOP`m%?l&jW)CgNIAoBhle1aQx6*Ro zznIu3u|dS592j#9*s=H4?*c^jV;4LXrk!TXV5x<4@aNweft`n_qg3$u(pfY0&DES$ zO(afL*J#!MtY_R^BFOgQIEfjbD0hh@qHEH$FW{h_a8F5P0&PLoi!_6h<-oEeL|r&v z|6?7XaUZg5nktvrW6!DLdeg!g11w?^w4K~OqnTvhY3g`by^$zNi-&=XJfgen3992@oziugBcP-U@l!Bw)%Bj@{OEe4!l96Xb5aG!BbHus8c=B7WIlf z?8KU?2F2)rk=6rny_6*8G7lyvXkr()O-A%eBua>>0@&0j>f~Cj#hTGL6{7cYGD$9R zE62ANi2X2z3YN&sXOrPJ%Y=l_lR{meE^bB;8dttt=MJlwX{ymYlVDzT!AIHo0^1k! z#iRVB3dR1$610si<<6;ep7cOL1CaET6HK{!q{ZMY*#Um863J9pK}v-fMWUBacB4!~ zaOvoU6!ITmg{j+_3qZl0Y|^Tz+CsJj#s_r6Ic&?7EJk|)+qcR!0OSH57sT^Wy^v>< zM;CafYP4-&pa`dAh&IQ9(=kfz-yWY(CGA_Tw#Q>acY5nUdk5lea{vp zVgls|$zf>+dIneNCh41uadfWswzS@!T4$549@d%O^;r~YJ=q^gR*_KA-oIg3e?rm` zi4109O|F^RIU8CM0k8ete_8fTEbADS68%8YoeNe85S>zmzNbC2CocoCw z@ab(Nlq!S{l`n}Ty25Mc9$@ScZ+OTPucoO3djnxWV4|ILMK9^#F|*Wj0{a8q&|Z3# zc@vus>V&TD!1YroYcwu{aFZWz`Io=tpq&+#RQgzvg< zG(E7qjmYJ4rUlQT5T-AJku?=&Eyuhx;2#$uyro>7Yo-1adN7m`wDo64$OqW#OK!cL zmPFRd>$56JN7}8?Rh>ydeZw=BxK0&2o@=VLXzCJ?+djq+(9`{qMaYW$@mSe^@0TFk z!o|FgK;hw`R-%ktVyi!$Y?J8S$~wj)Wj1Ql>2E6KA#K%+M?CVQegX{YH5%l zY<7aKF(xV1^E`%(86_LsQ+XabeAz1X`Tk5Lv4H~T?gL90@^jWG@0d*8pKmn`MvzHu zd^a-1TjWB{9c)>Nv(q!p}{!?{56qcq@-u++ym$YT!?*i@ z;`ifbYp#RcT(%e|vo?~4`FZCwyA57)QfE9*FB`P_gaTP{tGh8OdpJ2&buMpjkW?yz ziFhhl4Kn?rK*^mGoRMXX^?_g~>8h+_fCvc(yV~_v)Zq-^M>xS?j*?(Yf?}kcUPo#x zpd#Zewpxb&s*%RZxd#*$rGJ^zTNz_q;w`Kh7MtA0lSq>ZzSGI%IaPN0(Dty;OjyNM z3~w8F$F;(-zEaY1zi*rWZYhG@383KM_&mx_ zRkVORCUj*4t=i(!N?=PDl4g`37|Y%S99vQ&K_%T4MNf`YOK^u8PRM(1WgdbL!iZby z@N|7(7Nui%lH4|0^1*1BJ>>_F{8o-YbXV_8vcm_}`vtd?eTq{6!DO5S^?Hs|2&zSy z=*m|uo&lZ z7N{EasW+DM&5L8Wi>aGq5w5L`}aq26c5fz3(q=YnmaP3gDiN`vn!o4T>5X!!+A*>dln8$-R zV8(Ui%DOtZQvT17&55mlAZ>h;jXPD)+gQ`BC(v9rOjAvt@ zv{d2~2`mw{%q0Q2OPZSxt|aA7bdd0~oF8O=P|v~bG8^leh9GC*Te&@Mx0}f-eh~ba z^Ihgk%dGcG{H!OiLH_CWd~5l1?hB-q*GC&O*3N6Uz>ugCNK&tg$WR>{!qU@KqEqsz zZE$8jmk)aG>BFhFGv!Yi;KE65hblzWHX-PbMj)N()wVHEXCVM80TFSC%pf`Wq-gFO z9&0j)B8o5(F$8gsID~|fy+Cm4%7+l$#UVJ=u|Ly?V5(74u9ZvjSU>D20s1ZBHX)&w zlze2^c_c;b!n?LAyb8WkI75}0tLTxz$~xj771=;9LC`XQQ9Y-(_vgKcm-Rx@8oKXl+bt(uWVTkZGSG`aot! zHf^xJ9z&4g1# zrC9D<1cU)Bb^e+KEL;*odK`NuA%Vj1Z}BRf2N* zS2=OLVg<}nD2x)n*&R!4!?f(Y%wuXS=Tcd;-9h^hpMrfl?wi|3cv(v(#1;ba&G|wC z2&a9Mu_Al9os6wx;K65Y@O9%>H=!kyD3!X1z1_lzT7Mo$!**s|h90n{!Eqo8!V&uM zg1$Q|+48&pw&ZHXuJPKe8_*6^C~B;GRU^f?VkF_fwmS`ADp?04krEo1pDR+tS3Ix) zEB|!U~hhRQV)n3xk_gIK;JWM*n4}GE*ja+Oj;{Tnzw1c{+BH~2*HMpXkT*CD*}48 z;bl3ns=9f4<&_z-1?uJ4glD1h;x^mgEZ6wAg5mMt<9_!wDqFfcofilQN2(gl`C;+E z;W}@Eu`A`)88hEuF9AFlVRTUB)BN@N&LtkhclIVqO6O>M&Ni*LOVh1@ku5 z9{a^=M3xGrw0yaa0y%a=#}DI1)n@%kxI=Jcm;PsC%@Z2dds0jHnv`WQ(GI z3cpv3jL&t(Ui2J%u>2n0y^$f`pX8!W@(NoSO$MFH%kLTn+Q7D*Rwr6XjNx?9wI|(j zLX=m`8E6dGOicQu6QTy@I|kB^oGO!fz(yeAHXIm_f$Mu}_Egz373&sF0z$YBIgo2~ z`Cbfj=wQBrX5<=)i%N!nSS8wJPYju-9}`jrxCwx3{B3`Zke?v%7`dVD{_lP$eLMhw zscb`=CdH0o9aVHiTWf}l#Nd!n9xgHlvS)t&>$ify&-ok& z2sM4Tr15MYRXGlS$7z0pyPl#rXHg#4KtFmw2E4o5Ni*mW=;SGe&K{~I@2d)&UI&Mr19<3zkCoH z5ddh&5<#-hP07g=!e}gfcY;Gg zt$!!bMuy$HDJ)qV{`8>5(w*W>@jTwbj%GBGrxUROBnf*{sVoix#=UFAtU|t`NFH(r zz&ZPe*_nCKTH^9ekoUShp4;j26krL(Y6J#2iaNleq7sNK6P&%RFC1}Zn7Ex2rwQ*; z$K6C@acoEgIC{3R&Y*uWbK@{6g|x8{UOjm#`dU=qx>t>pAxn@qepYwk(OqYcWjR+J z#Q*{&X9&6O`dVYON&%CuMl$)Tn77(>${T3|@`hq^^tKxmh-h&6?g-!liDDRvQ0sLk zP;G;KoTw7(${UJIH!@G(8>5<9Q0kEh=@|K89^PF!MH#u;#7xoS3CgXMRu?CuQ46!i z^B1+s4CW^d7x#4+)<@{6g0rrE?w+e%aKyVuLgHEhOti!rMRtitQx75VtXoxq`=3q9 zRUj~8JFU}J@BHoQ%X?v~@uJ?~_}y*FV~IJVz!>m1Ux@@&zSAg`&)}vet>0aF8iP%( z6sA(#>}oRF>fT0>#A42fOzTEnF=QQB>~ic?5YWD#OWd~}vt7Ca**?3u>7gQ*cd<;P zsG_(%Rok|sFIbv`CleXzTs(R!F45&PgG`JWl_N&5)jREXGUVDmJlgW_Gkd5%OyslV%_Z7Jq+MO#cGa<|uW0GC{40 zpA;>Z(th+N5IlX-%7E}b8P0JWzUV%}Ya|L~4${3hzLXv(L&ajO-r^#Hn$;{(>I`}a z6hx(D;jJGAl~i0!Dxxzf%45P`yzr23W7E~}7I4Um_%yGXOAIA8B$H=eo?sE6apM8G%5B%0=mAq zUgB!7-$M8U_7g&9e7SDfJ(x6%OxlZi!myna@Ccr)2^UELu3ie-a`uIzO^~BFd~U6e z^-8sjHaEzo&0m|<5PHpQTzh280xX^w0C!>U6M;2E8fq0}1%?l1QB6j!bqk%~V4>&! zoF2)Im{cOkRKMGWM5ivY`6|o6*1?Qh?1ydiDqmws{is!u?%G-5biuZ{4d9R9vipSc z0$;cky&{Tl5(#3LkCzQc&+pMtckJaX_rW}(x^ok5tD$j&{;EvRsqa65Iag4&zRO+X zf1Tx!$`W}ZhS*MviH_g_Rihxd~ zN8s8Ai#P}&=}YX350-|%Bl`>GD-5m-HzXHHOS4}t+O!X8lBI`~n3x?N*v?ghA`yLE zYjsU_0*EkyPz}=>i+7KZ2YFnZ1xcUyx3R$VP($r0j|3&g^1_*2dNWTz{PVpW1h9(; zz9xWHBoA|e6v1f5-S?O(^9|V~Bpgcr3f6$ARIZR4M4ONhROJTv@Uyg9ux}W|SU)S{ z;;xT{=?{v7i_8)YLtV*XOyQA=OBMok)-Aye8bTgz81r6-6C4zyQN^c|r0%`dhm}F-qDQ!S_BXmDi> zCK_hDJgJ(K`mUEk!U$|`(#pl=ROzg%GnfcD_8iC=VpIx;4`$93&s7+}!|x!|)kagb zF%gbD+<Q--wSZ4>E>r&cS z{k^#B$OaQI9G?m}jf7#(pev`FM9A*ea{(xG%TCQ2lgZoEUh>}2T^Z=S9;#A0Lj@9? zj>r)wTf2xJB3RYm^(TO>>Z8?3LuRA$bhm04a?^x40-~KT_AVD3hUtTB5x~1}Uy5;! z8~D!Kim$U4h@lRyQ8H&2oyMeP54!&9JqqB+p~`D3=@B88#0Z)~rzorX8)q=?&_>&`59#(2FMtQ_eb?+^=7Y~WfokYj*i=}v~qNe66 z+Zk9iewuS1y5$?dI2H>vSk^I6+GEqskHe5BcB^X!yOia7#R@SJh1W%szz->7d(Ea}Mrv{n6dR*h$%qqb`0J7Fc<`R<|Ufpj!(!tjV- zL_q4Z1a9xC&z3A)a=Ad(>okvG%uefcHxT8*4!EhrO&?1WXBu(X1 ztDj2jQ^Kc-K-vV!suJ!bfMkt-`(LF_Di$#4*Ld8u4r z2(%*xE?@M+m^94=9i0@(DrymCjW#^0yYUdT=LA=w0*pc43|kueO0G>|-|!PeU{;_H zIjMUi`v>PAHXoi(5lBm=m`&+{=aH-4p zA>(X6e=tUEHln5_-AaNS#QH>j?tI-O9hw2?M9<81N=Fv16&oRC#%WfbA1xt-JLrnu zYB!eYrq|8)x{3BRtVb1YaQ&$XgVS$F`7_&0F6J7R=H1GVD*%(J^+X+j4>w|KS%5hz zBtM~o=IXInjwxLe1_Yap0P97Kw~a{;2l%j87k~2+pMv;Fh6&8Hj(BU{*S86S4W*R{Z`)L4hv-O@0Y0n@Tgwclax>sfvl={{K?Tby z*Wj)E2~#9LqPItenSVlA;E{eR5=j?iqTWC6H8sK&`X98wRJ2C*u2;2PD^yVwPdZf6|T+yE_&cdg*20c zI}QK{!rn8>K&@DQADS$maavLyV$Xl&5@s$XHl#7xAL+#_0NHMdPpxNm(l@_l!L>DL zv>@*=@9&4|ki&lxqCHumqY3VzG-}UVuP%B6&C}x&-tGub18R_R$~@a>69(~Nctl@J z?p4=m=&|7Vz#Z#KaNWtE1O$b#0Q27tz11r~`93y8PNg2r0#I~OI4k|` z3(53zM&g;+ha*bVMMqf>?p5l|94fwcciF?)KRPWXVw6;x8PQbx*z8%R11FkShw^tL z)(2yz#d9k=;TW62c}`1|#`eRU`QDu%DwpldzlzX|SaIG%TxK6D-$MtL3NHTSp(WEl zxM!IR#j61Y1OPP(3&nK{`S7gU>m)9Q5R1&7EW8RY$G`|=<0n?=WTa1O!x z_p>SJWKbNJ0`3W*UG8T+t=ST(uH%@K$daM0qkrj674E$C@2(5I^v~~=ma9!M$L4tEo;A@2b=oX~anK?Fr&mOk_4C)iaj z*5hQBadxUnP3&OPlAcPWRS1$to*D4d)8jr!(8cAIiU>2iq!CqcdjeS-Uz)cEu z3oN8Rh?i>7IQ7xWjh<)5>Z+N+HD7S8Y1UlqJA_86X*gY0>&u!2RXNXNVZygr;?L3V zleJbY!q*H8%3Na>&m3pquh48iUt|RFW08jN!Pasp+sUvSfd8!H9dWh z^9OfZvUQO~L5G~e-a~a#D#r-W!vfwHUJlmT>NqS)*XmI5+7>oQe!h!e&SgGeIEoVI z*7)Wh?ZEAIM_@zZFWK+7@AdTF_L#(;u-GLY#CIGs%p*M58_#e+Op5W72BIxC->mMb znl6X@R*4%BWPt-Ko-9Ow<`-eHDzCvmjTiH(ZUV9i4KWs>YQu5#U+@cPBFWMy<)$Gi zzZm-GpIkR=T4<~BCl#<&f&XpppO|_MsH3d{Vn9Cel-2AO90Nk6plVy>L>_V>my{Er zMc>7|14Oi9YTJO7zI`&jKv1fEO<_wq{*p5Tn9gFsKU}&Vnc*-UsELjzB&M5ITi!3} zIe{ZVN5$3#zcpdRh>F4bGqK1N+3qIKp@87g_sa32Z+SW7&C}M)NW0zvH>m&#x+c!n zxCg0G%0xeoWxnc4#Iu4U!9@0{FJs$?xbIucW5`TPuILl1UyjR=z(0E0u94yOi^Dex zgAB?&^p_*!A^=ZcsSw1Y-f+lXnIL|a(Gcz$lp5yHH36(iIUJ-3COgM;6*rp6Nf6Z1 z%+2>;sf+8!m*P0V#h$V33O@^C2L>s>aiHu&(I*rBeQ+ALEXxS6+8H1PY zX|HXt9kYZLN}*T&j?=7!G5T^N2p(Gax&d-gsSjsEX|_V<6`YuCL8h@XkVzHAKYd zI=%H!v}_=XI|`*!-&&^pw7u;eOFlGR-+ueEG!w;yBXqh!aUOa5OuYhGy92aWqGoG9 z0iwEMuuGLiqkoJ8L7-AVW^Nw(K^@td9oCfbBp3Z?D%GfMaKI@u!AwfM=BHL6wrOc`M%g!qAx;8u2fThOsgjsMW zu^Yx8`V1qm2)|}#Fu&BT!Sd3ra6Q_*Rv5I7ZCvX@GS=woXN4b_mJKn?IgQxquMWUT z<+ta`n5uV)<0u)mz=ovg8<_2^E`j#jGdY&_dX+*O0KO?Bw2}5?^h&UYzOmBkHv&5! zo!`?Z*VX>!q_L1WA>nhDf=ItnU7V9wu`a#Q8WhLn`P}tI4&Y*ao|>GRWzMGXYui8# z#Y9~nOA55RH~Jl-dX4qWuJV2D*GQbu;&%LsdF7|@lZ-EK$s8zf+pron2Lqqg1`%-l z+QYs&f~3{ zf!BxZ$4)W<$5paRnn9fiW~@YK+Jl(c*u{ zxdGxl4=#{coE%*@8h14%6lT;u6@~qVv182QkBq*)HXZEcE9GN6$BOiFiSq#Dcv$YW z?{o1=pO`1{a_E&A=qGh{la0OZK{E<7|6byHrE&w2$9vMRqr$S0=^uPT^BL$)$3+4P zG9_SgKw2`J<+^18uIJx1X;}t$;j=K@lbXYRZD*E`S+->6&opmfy0~py_FU?F&-=^} zl-x-~q|AwBA)8;>9wG{ja>G}mIe8U8z}-G~UREWCp^xY&6H&=rQOJ1`n8Mv>+N zKTZdfG*U!R$72f*te=?IL@6yf4vAb`*qi?2J4-Nur-CY8<4E3iojj$jsA&_i_f)<% z-G3R4jyd+^!o?8@R9ghu4!bT}&;D3Lf6*{@>~-TIhMVp%fC^rC z*&NRRL(h?hjPAK?mhYInGKT_3zX)f_G7Ovj3OMP3}IQr-iM?o zs}l8PFf7F#X8PS)@vCS$ZLVVf3rv%4=Mn;NXvC{z#mupIj^+_ZG$y^6Ffim(a(8Kx zf-9^doF*~9*1utPb+ih&ON;>F3^t~006Z`H02ql$5_GOFbh?&J@V|@{Sim@kRGZ~< z6ElwxjRq8yS4}J9Oak@=?i!wHRhDJ`4XnspL*H8;b>gxlfA?QDNZl4?R;W+N&u#fu zvhe;f240E#JZv8$;M7r-@n6cYFr%X71viV^lJ>&lmkW4q~l!|}( zb;F#hS-Zbgo9l}nB7z8rV#yiWWdki|mj-(4s>E8j8?K?yr)+v7dAG|;0XN<&nh_3r zvr5yZCABmLg!GmuNPYRbL8#inI-CdsCR=6n&XuG}fzGrvQ&KfbS-xutNw^T;jh6}T zj(7B>jSlsDf@T{t{2Vpi`(W{2<=2=b1TT2%s*n$+dJe3iiEuV)uO+sRIrT-k_3^F{s_s`$&Id1v(^|`TSp%=*ME6Kf z02`1@V2Sc`g5NG-R)5cfo5E8iKiKJW5Oj~%gme%)GP1u|U<~z=_k4h&1Z(?CM9$(Edqbi1jyMRYPh$d zL*tV(lSRs(NDfbRTZk4s#OD>scs!4!kW|jMB8XYQJ^giYLnBw}1FoClUrWl@Vwuo2 zif0h3Cg2RMwwmdS;;r-5V71p^Qj7~V8A}Eqlzq~}bL9McVt~2+EPZERC8-kRR(mAe z7Tcqba5AyXsUX9A{;W&ei>Y1P_n^5iP755T}Y zWKFMzy)mrHWf?FvhVR)^68F&s5TdsrZMGp>lwT3*2KWP(WDV7>b8=)!h-AQ4_wI1?QV4vmDhE*q!?56zA&3Q*b+ zTi5T)H6Odj4DwBUVj-Mp@UNjOn>b8hr)et}i?f;|j>OjhH)*v_CBEN5;l} zy05KZP$Q#KI5Uw_mUKiOfy@OvFgDq-hveRDwr2usdi5mGu^^aJffAEQS#Bh$a@<|n z@mVLbq=-k`mP)ha>f|{ox&@iB6Qyu?ELV3Wmgpw?!FUYn4+MwsjirLj!+y|W27!pG-y)?E#n^ok#YU+n0AXN!md%L z-A2sZa!q>7r!r&3DR{`Vz51euwBn-ZAH{E(6YqWBu8J{c+@YQ(_t4^nL#BzB5Ow1) z2%Hg~Y&8UWH)ah7GNwsCu%vD%dDdEmm-k{uW*^N8i>Llo-O|D9wyM09OU@fSahKsaM- zTin>DxSqwHb9+9_#nKZ10fo&sDbm*aAn73I1#^Z9z&|l5ja$^OJZ;T$v1nhh3WnOG zdKEK*q0?MtpL;MBEEE0z-?ac95IBF2uLaL_lGhM4t|Pvw#mMj>oKmA7!lF!=kyVn{ zc7c--&9m(iNkkWhZNRI%`f1&NerZ$vid$K%$(IdU&W>DAu-;x;>g^u}*a6PI26h5m zFb>!Tk*8&lJW(N&^Bo9?TzEpi^vc`n$!}S}o#CQjMRA`n?l-3GexH|jUXlkmQ+M*R z&*HOoDbyMjmJaCJ`*lRhPeL^i+Mea;^ygQ0o}iavY4b@r+!Qs9*tGSA)S_-0nSZ5s z8HUKj*OM&-a=?ap>$Z#p%ZpE3fOs8%BC(F)2tim?G{oCOdmwt0CHk$G50b_~toV0@^WFlFaK4 zcDy(8>@UkeV9LjfBLh~I3T#~AVjs}_Z{}Ty5%jx)Ln#Sh4zVt2plp!_zfHi^&1_#t zKV@&jfLm$P+N%CB^$B%?1iQA3DLIf5!D3fB03_ekM(q9M{WzomvEpjBDTGd303bEe zZA@}J7b3wDk9SsakTX_ohNp%RZP2uJ_zX@fAD-zv*;TTGmd;m^xS{khA1nqy&}9$c z8W2c6>7lT#?QMiGnHqvVQHenkh|A`jgR`s^1w1D5i78JV+z>jnj>ZG|n7O}QX%1pU zZU+uGy=rV*x7Pk^$`-01GIH0=td!-`U$xOvoewTDaW2u68LNv-p*uTN1u%D)ZZPgM zJ0yuEbzx$v!_tResh0B+O{Wp zMc4?uY9vrqB71Y(RwYP zwY?ZfT~fw@zBd@8sadk=DT(X9(Z%@OdI;Dk3jn5z6KhfQn3@0c&lEG@$>~&u-{JXv zDZ$p6IjP3~=0?Btdnj|ro;krf&(Q|=IoFUl_5~?A*C!&9YJ5%D7uvy6HwR@3wFmuk?mOEM0%ejiTiNTv@ercu0iM);oPrnH@V&D;S*9e|Z;HE2^xp2W%Ik`X_Er3aaxCNGM0ws(?4k(idGL0U{XuOw_1od5lhK3T81oHRrbN!wjy z2>g0S^2oDmiy>ZWxG^eOVi`6`Xhm|RVd`_IFI~kJA@B!GPxk-?gAti12PQMxQ<@5}7Y=wM zi9ZM;E#s>+aV;k)*N05$CeYOYV$V2}ch=6Je8;xFC>8f3fT;oj%+{II+-IRg`X8-3(sHi)reN;`g{Hw&CV9 zw!-(O(g9kG$Oyo1?SajD6%ZsWJ;^4x-lSfe=2>O0$cu%20MQwN%zyfhdZGXsPftw= zLnUx#&?6LI&nD#3j5^Jb!gbu0J4;#CEX8%QHQsr}u1#&hz>P59PWANfnRDffX! z{un24_Eksw)yeZ*_X+!V%mDDujUUWydF>{FW7gG!S&sV!V))kOLYPvCFJ)29hGkif zv-kE=|3KN>Z|ndQjqAP8pKkYb?xOGJG8=a?tH5@j$um99SM3^RPbT3FGF_k&Vt24D z8)_jX9W4RwboVXeXicNUG~U*J0Izvb(i$Q)fyn~bjXFa@mH<>oJlA&(rV4Kv+hurx zspXqT70~@89Nl~wL>*Of8I~`#^N`AGP5U4?0}iu5lm^;-A3$=pl{=6^hd*e~<3GvL z#N1n7Cm3UZD2@rAAzGj>qUGI#_Ap)3`REHucnl1R4;V;u4N<10wy!NOnoB(vMhw?9H_j1Yu%kdg*4mk@NhU0;vW9ic#orPG0Mloi>g(|2Pc zl%x|LSKR$A9e7q;n;tN1WBY`c5R<=%7`X&rk|)EWVZ$n1m^3*+{AGu+u1>Cznl$YU zF=&G=x!3{Mv25{#ce(Yxp0udf!T01l%D7~f38Xv|S9gy}EM+Ji3uE^S3@WnNFR9O< z!GL}bs6xfql3US?oNwPA*dmnaN-y1g6s&+^JS7YA0wXrNh5tW_{K6rK+ty!sre-&E z(k)$Kh%uP>i#+r7g`Rk8k=iGYlKI8n@3;pEZ^;5r>hHwR^@9c5c{h^m^>%4c{TRSk zL-@1|aBK+Lnhi_n`6K%nhx-6cz<=E1Rncg&ka(QA?KXVSvSiItgL!_qX`O(h9cC1ER+MDF)F#Z zgC)6%!A&pZQMw-v@#Af^2}-l10wA7%%>z38V^w&`j^>~NI5l1TX=jKHZn6c!{$SDUXBt**Qup{(BSJd(F}k4_;CCP1C&L{ z8~ZU1&86FOlSx>%LsM3A0PHvjAY3U@sQH$64JVqYv~#6deEWFTGzs6<^ zqz%C>M`F3h+L~Bf36%`Y0$--9QQ$Nbb0DehG3$Sg2>q)G{>YK)k28gCN}eGwPQx2}?3mnR zG_m01nGoU`qrpN3r0R>fG20&x$glkVkuU3ww5hx#O)S@;wX~Zk{B1Qs<4xvV%{E(judq{5h>wR4Jnt70~w<6@YAz`JA}lUj3s--aZ>G zZJ`3ZU^&OxiO&pN*URqq)e}weap?kGES_1k>~14tl5qKDZL!uFNK+Moe9?o?XggkL zDjFPYXGqGp`J13@^`Rt-zwUl-rwcS z4SNP`zf%V-Hfq$FL8MW}o8uF+nc)8N(t-f`P81Y%SA@naK)A88@b;lJ?dN#U+awY0n%E>)Fln#j$pMt$TJc~Ked^V!SiwlT6n51XOEVt zSH;-UtQVke{3sT?MXlG`c6$3}JRdlSpIga!=t+pTrAd$mbk~f;5f~As@!!Tu5C=*SNC==geM6?B6&EiJhc^Tq zKkT|S>|As@-HYQ=(%vYf28J|xwEa_OH{+bFNr||?pPf!QaS{P=`eIRz$MPI>(z=#v z)}y@}!V2#gY20u;co%j)f3WC@n$&hy*zD^sUIHu@+fT~gaMJG87Gd(bsxy`g{Tl(W za&qXw!aMN{CGbR?IgZ-=)rbJsiR=YeCT|9LKe!c!jiMLUG+Z#+E`&brd!=XOQ^@hU zn#4vsvud?;zNRUejC3ke2p7@M#3IFdk~ET;T$Z8>!d$DoM4zM@z)Ql_I&uFz^Q|qK zqF%X>5nL?G?B)3$3`{fkhb5V~4cq?GO;7$<`mgNeFC}GHHTBCmo8IQC4K!zQ#t2}&Bu~RK{r5{o+I-Y@S(gSRPR}Lu*+|7+z|SC=F?p9>;@qI0 zaEKm}$b>EzL4H8F@R8t(rP9d$SXXfLy$>#Swe_{A35qSKc*;$P2N_b8e)S+xBxd^8 zaD^saq~jBtK0}}8ykd@UR_*^rXPat(v&Blrt9~XETd~YwejrXN8JQP;R9<=GJ_+S}K= z@!jH`0r>yBEa&t4pE%y{V~((T(wPzGXv=H4I3*41%dN7uc+4xW>RuRCSf_;S7IZ!A@Y9YH=0g! zWpXSNo>4&kBcy77pRb5X@pKX)4T>6TmE+!y5q=B^5eiZv0JC3YChJuwBHA<`liacV zMFg!*qT;J(rh0>9=laZTY6?;sKRSGsH|wj+R;;&b=nUex{QTW6qWzJ+=9?q6YfW3| z0~PMtAK?#U{3!~%tXzd92``vG9n*LvnTAZ zt#vp*UD&UxELpwCKI1v-U%$xNnhs_U|A)jM$F2^&C(w6x|EpR3lOlpf-$}+KpX}^8 zhcmXB>fU$JcZlk<{w?hpDB>J4WnheX5Gx(y0k$KFJs_P2nfU~H`dELIe?Au8KhH#* zTi-(Y>NL+E4FAbNTjoaxf)DYJ0&7}p9ncpfws7k|Ie+tIC-g*@1-y_7 z0@2-_!HrRo6?3^mbla8x`pl~#iDW}O4%)rmMv5~iKwX$OucfCCnjD73DT{%7@~VJu zl(qIhQ=>si>kYajzYs(t>Vi%Bw+6BJ8>^Sd!a5}88Q`QA9JjlzF4V2E^wZE261BB$ zwNp6^yD;B%aBw_vDg1D(&5+n;sqg{~By<&u3FhPS{|2%w8KER!FG11tqIF87yV6Z= zqh1dGI^*%i9oyXq_kbh-Q?xNU4z-PyE9m`P(6t-7wQPe3jup?`QM3f{fq{?DR3<#~ zG2~}@Z8$BxhkZ{}s++6@hWrh~B_1IV0qvx@5Jrz#%Xr4H?E>fp@}GfLB^f<)B;U9A z5f0~?Aw?t(+ybzq&>_`}B%zmzd8;={2@8PQbhS?KyZxrLh7vl(CqIq;c|*HLttA&S zIf6%zx}_2CAH9+h7i;+|n)FIEam%)Lc_K76C|L63{<$+wB3e7V!}?pI7itp}E74A& ztuFx9HcjKsQkOhL)1J7Wc9PPxEpEl_A>)l|=`~T=?h7xMuD-Pbx}01=csFS9O8Q-6 zSy%^6!>M9w%17~3RPqW7ItG4fR|CkDhXi+`F`Ni9i}7;hx}H}BU0je?0l`-$%$fi6 z@rZ#kq;$;|j;td>gc^|IJ&oGbdAstgRkinfD0k?1zPgghcu+E$G}HASm6bWDlMVNX zlFPlVK;8%8BKk*l7WFLeo%w6`d=fX)OU6ndLfmz!FoV8dI?afGJS4Ej04f@^uXr-H zQy4(k!?!FJ2D-t*Dw$?M{s9H}jJV&MAI!UDw>)b_;93+Q3=Wl)S$q}GOd-qX3zyDx zGktXmC()E-WB^l7Ad>%(gu%j21ckzsCkDHuBTXSNxnc{z3j?GM6c}$+UH{Wo@#rEo zK8))rqX3t?(iPc9@eT4A;pf;TO03dj7h@-(rwJ+ygt~ zR-Z4zjBk$Cq|W_qr8m9s_&rLdvq>8dP~_2!`>bTH%4-qQ9F1@{dj;M+z}8x{^KHc$ zQdx_-^jLSp&5Y>s4njKlSu*GRJG*UWjs+sow+DqIlk#l1_klO?B!x=UmeibC;w5c? zFF#g*ha-F|-$ZV)!vgiyg3X^CU9_8#V=>a{h#&F>WU$JFL|B4s8)oXXU3YIkfkm<6 zK;xQtdlS-Ltj0JSL+VeLdvm$%@TcQ4mh%(Tn>P$@(rjCTwD4_fVOpAzgu13yU(P)x z=i|KmFx0;=GHKkrrx76OpjYI9SpR>h?W)_0oLhydXLc}$qLYsaW2d)FL_=L3e+I{ddyoU3e ztYt9yN=DZeUpu`o2SY-d)PhwIk`VDKG@-AL|DH`ue)8k4`-8#SfZ~(NI(TaT(_yI2 zH{48>_|ddhZbP7k!L+Xticu=X06Mr?=mvZ@{+ql6=6!&N`<>6$fB>ozXl(OZ_|jrq znT#`CrBFB8eOHDd# zcoWcD7gahUB@vJVXd(o+a38vBUs!EPg(cFxf*TPrF)N$9FR_`obTjD~4q(MI9S1;E z3m5Bf+Ht-IUTT)=oL8|l3e$Y*p{(gCfP@3DMfZS&puKS_E3mILs<$o11@eV)t$u<* z{}2A%2;{$ip<#eARf&;EM6uBmciX2bELRgR1Vt#OJ}XFY-hWh(40qEbe#k4@k@)fF zu7aJ(A72KvUPQ5Cn`xOoLSum|1@~OuSu_|oCWz9V;ePK|HQf(u`r&=Ah#bhYxQ90z z-uyMUO%tO(WI{|xRQ3}inhH4F=yePZiH?d8bIMluqo<%%^gquuoLk!Hkp`w?>6BKI z(Fe?4lG1NC=u*<^Kc2LZd?yloq&3K1vvSoESV)az{X`kxuxLz(a$J&2J5u$f~=_xv`#M60EH8vPA1X!Cx4RU0;I zpec7m$PuW)<6b<1?h(q-W zTT!XlP7Ikk1^Un5!-54{Z9{ZSOq!GIWaI{q=DTMvrkwYh?EMpxXM)$QUD6pZ4Bu-U z-v8XLG8J*Qu>(C#F9-U_MM>=>=Z)=6;gQi>+^banX}ej3f5*pmVewuyhzot9mXmFm zb@#YkW9Pgs5+SF36}Dvf1h@^cuo8H#JIo6EAZCBFv^IXLL_3CH%as9YJJTxNw5D#5 z1E>B$u3jQDz|DJ6hR$M=H9|+XlI~x)I7)%5-Nm5@O^6JtBHSQ^m}y#Yjuy9%6{yp7 za$z_Oqss;}ry!&@r(QG7mUe~aoo88ExjZ1FuJj;(#M9!0F*bJQ4yEo&<}R})TUNV1__p*$#FCRR#PdN*o(Slob_K3 z=K8pxvN|<7mmP3-@hhz%B z2-Qy`K#i_l#NUgp=Y+EBSrrREF~MI457}LV=8!VJj`Eyq$gg}jjIwvVPH1e!k({+u zUXU&JHSBakPvwD@6)=(!PEKo(2LET_xM+{%I}ZbC_1w8Q@>ByG|5seYB>tR7&@SQg zv*U3GvoyhECCv_sApm^Wx%?IFUmbow>sCx%K-sbrl6HM~4UU#sfA~LyE@E8{w&{c+ zt_2BuV|@zlA;9YLG~du8JJk6pgR8c&t$$6spI3l5?{Wy<#O@!-&nHV9!vx_WAy$YcWj>+_j*kA>aJrz=Fl z71m>}fNeor_uJ)oG2=OI8K<4Sy;Bi$2qH5yB>-6-xiu_-_L0&Y(T#>)1@>X*nLRZ< zW|3eNNO)tJe^!XZsR_o?p0UHw-+xv`(dk)cf6+?!FgFCSAm>^oJTNAt3V_i$cuG!z zR?G)!(^WmInE&PTD3J^rfg#}a+CKJa{F{B=aPjym%GV8tSxX+XI-ES` zT>r|wjh1EHLW&T-o-4HLONS!82>e+l&vJTP6 z<6oMT*|!vGY}+w$pvYlKD)v|bmcpV(LGaBbvuwO#JTRtd7N7vBE;bx0(taZX7@|yT z@F8say~hdP@VDIkoCjq0>iE?PZi_U5ez)6>IY{Qc02u!FJ8iC+nT^2~o8{_-x^{o_ zb(aqG*jG;ff{j9r(TOHH`wQ&xPotFGDgGpr4Y}#evAxC^vZx0vdZrX#lZk&EUf2F* zT{bn2`66?l*a0Bsc`6t&*b@cwg;yQ-&JI@b8gqKTDg=jLB^5yLh-h4Ia<&{42R5|mc~!GbmB`NBqRq<8q82@np}1pIHLe%Y(6O*nId3@|z_OR%mPfJ^#g zAMYoMS`tCXo0ggNN=sQFg2bSKevI)gZu*aU_c-h#ucBLWsW;d9jiv(KYe-`h+hkVW zk1&n2vqFD~)xLSb5O=%7+xp6-di@7vu9^o?oIe_zHewad}j6?h+V@nxSE!}jWCU1#3!mWSUGOPrX z&^JlvhBGT{!f9V+EfEm+hwx3R5g1?W`Cm) z?@8HIO~4mBqwV5%th z=9?GwQ5HGEH>?A0^X1FFiWk+YYQ9zlU}Ab5EE!;2SrqlFPRb`_Yi7eXKiAKF=tz$! z+UG{%xPV@^glo{l)oeCmR5ZHnWM>Vw6%+*!3uN`~-wNz|Bl0d>(`FZR%FHv>r6vGlxHDA_$lYne-F zm;CJyN6t;im9_H4bhnN*-ihU7X8ae2h!<@FZ}`mTJ1P=PvcZK0HyLJxi%Dnn@b+kN z(IOk%9iW;vtHjHxih=ud{pmuni~y7&yu~>|u+M_wq`B8e^cTuCRT_{xE)~ z31M!DHXV(;{`JKCM!4v)D!c!>7GU|jxbU7;-FsJ%2zGdd3y*=mvq4%v$gE+Tvajl0 zz92DTBtYY5p^aa>+^okaRPDWhxArJ+C73l}(1R+us4O_`V^@Ef@LIVq;^eI%s&k;C z4$Z3flUZ*pvY<*|f9%w+IJc>4NLwutNjpX9ziCDH#rObqDI5_(Dj^)%wCYOAxIwFK zWTfrophdt~+cUiS@F&IwN%&6tN?i~@@t|MoYp$ZA4rdS9QB%J?gr)4qN0gt*+6#m` z1eHRXWPLU^v#F*QYS5B+WTiTnWhuW0-IQD&F{7J@>CCG9;%g>`qo?Gtp4oL-U?aDn z%!liN6?RABW&Wi?lPa50sgTBjdsPU|K>7?MzN;5maZAk6bvtq%hj@C>|LQ_GG1)iO zR8mK|r(%f%4|%|w_`PQ`RI1;TTydt#9$AUJ7f&v}P6IP`iW);$v+xN1%N~HCr%z1r z_Q7EkLeMhKfb9w?3cjG_yyVThE+`KQUr3gCtMOi#oeOrbprTC;X*D>nvIXGIp0kcb z|M@1|{WR@;Zs6wy7Pr|4Astey!) ztMDl8?clwn5k0RX1w+X2h#DkjCy&1Oo17~26Wyd?fFPw$g7=b89%agl9!;p?D=VQN z|C6F!{lQk*k|`Ur8tXOLQuZDu)<9~m5Csybvcai3L7%E~7;cf+CQEk7x4zMO2{$zJ z@NM=?l=iwh=N6V04E7ICiKW8@>_sn63rpYEbL%KPW=OP!%aRc+RyjVNH)%%7_>KN4nzkk@pIkDYarh z*oGk6}mSk#PGt$n?-XGXA_iB7YxO6(-`dq# z?a6v$I<+u1S z$yO5)vYR0=MrrrEA8&7e1YdB4$T#T))dX~w)+wPE>kB_3kriRvQr^;X&j@sJzB%?! z=!qhY`)D_UP^3;yeCv5H#{QrY!7Jjx+V0Gw*06aW!@ z+gI6bpdi{VtaPSHO8b$gtL*bN0H^;%@19~XS#g|Mj@AunwjKGA$_Edvtj(Q6DIm#P zK>o~cpvOja#|z+PGXMG09gI@>8H5@LHhDMqVfV*^TWKz-T#LjrU^}y?|E0~IWeKE+ zT`U6knDNNy5#S&G*R(4<;QG50M?_j#a2O$qIkL+BY-j@3#q5T9$ z*}W|2IqD38w_bm=p4G}O!laOBJN?yCu4z}rtB3VvRwQk3mvNC{;#J>kdYM`ayG?Aw zh${tyOFOuhDMMj(#4{RmUO!`7B{bCMzs#lTKW-viWPA?{Ku(uGo~o z+8a)06h@xRs#7&7UzpW(E>azeal3S0AXvYA^fB_ljsV!c6W|+x}Keu{%DKzAbqEAbX5sZ^t zo3MoKHb)~yYiQ|!8?u$HS0n4yfRY*F5Z%k}3|Ki1xZM4sR*9(`?7`dle%aLsy7h$h zW-A)L4 z05{*ldNE$LMaK(1HVCYA8;C09heHy(*iCNHa;{XcaH zZ7P6@;#YYLzDCPva<%FFAlSJ5;HWIqiJ--xj2taTN$BF!kw$TJ2wountl7s)(*xu6 z(RO3nVB~U$lcqGK&|_*S*Y1riU*TlX^g`aS>Q4SI>GnK2{X#gcokMcK%8ImAWDAIHE+0$7Rz+<%^#m!M*rl8CrSN+%J_62Tr={m| zFlvbx@ZyZj1C-(B!G$&?6N&7wFN*pA$y zN(ay>i8jDoVo=QnQxBuG`%0b22J-I=%8}pl3HA$|0VF=zbmp<)VX#xRuxg7?9ptax zTi{>lW6%w*x;m`C_|1kTMRrtI$m?8`6q87@c}%7p%37_6h?(V=NG7sK46t*zEo#!z z#*5l6scC z5TrRQVW4%qTKZ|T<2PFs?4kg}57>?ChRhd~g%o^!YkC9u^2VV@^| zcKr9&mclyZDBM>j#t}iz@U5vw$u-KHAuS!_HAwe{q@qk$Y=sRUtukkXr z@dijb9CpKIKT(zR0!2(O?x_D9*!T{9lQ64QsvhdmIBqUoyyUQixb{v`-!JP&_*h`) zc@lweDafy{?#Z*3#LBz$&?5f|7f_R}sZA>a8?TL*X!8f-EB{{DdP5{v(CNNa=oEIy-`nF6iU-j8M;mJJVU`sEN8R&JM8?jZK* z^xs-)4PG*qb)fDsDi$^=y~+LE456Csy>saurbO#QrTgaxF zYFH$T^LG>lZClxZY`Z%D+Sg^-HyeM&tf2Ki?Zi!qv`nT}?qQic_2i<4hw|n*Wpk@O zW|rhcs$_GK7q+ZKrb;W+Hq2q}-%%yGvS#J5tyi>khbBqMJW%-ms z1O{q#z59JgVKXFM$IZd8&_6~uzKmnXB12=t^Dzfr!)p zfyt@Ve>9GlybPMLhF00_L@RkjIFkG*iCbCkpCA(dFmEKeB8kfmovREk+$mUnO{vb~ zr~jyldNPueIs)l>i><*a+}IA31_~OIj6!SdrBv(_W3Yrue&ka9pr3I=Ei2z?7(xA|l@}iGhuSQH zkS!?`fAmL#;<&-;c1QA{Gu#0JyC?GSfN6_MB=xpuMghJF{9ZCym{B9n1=K18L- zQT&ZlhYHjfU7Zsxb?z9!sLVeb%UQ86Vpdw+4hzHI{(58lPns~0cuLNK#sfG*Y&Neu z$^NitMqpzqH><8TGa6p@0zy5t>{MKs(1M@AkRb8A* zDbXz+WfZZA&S}g_MmzNMDIQ08o z^=y|4(Qz00koLubeHR#m(miR%4!JdhU-XQpC2?1L`XO03sii>K_~?hy;4$!dBf~Yc z263N5PA0EEw}?I+_wvCi7;r(#gVnlFO?FF!9bu}`(v6NoUaZRX9^pSS6RgQ!?DvbxAF%nS=iqeWi%l2up00HAKjlc?b=5 zKQ8cl?{H#26oS6bfdT8~6p#JU=FG>92pKoK9BoJW0UcVJi#}IhDMbLPba(w5Ovy-Z17KB6Q}M}{*nXTgn@5%U^*dHHO%-iD zAv2BcYb;;a+(_~8kg?7WL19GEy@(Sz8DmiwQk-l2FJGPkM@#VL%u_OKX4s!YE3#D%GDtE3Hid@h=Y0bt4H--IPPhIuR)X$av@w z^9BOTM?Qa;&tp1<`f|hz(obOu0v`vY^|EV2wIP)ld>iI+Gl*b5hI6PCit=Z#A^aY} zuem)b#~DCVu4-V3DU3)DB$pB3NV-5SbrODgrDoz^=WYlpmij7#_qq$gSWO~#JyO=4 zk?2RJm~;)|*3x-;(G@yi%?@UDCU9rbM_M(Q=JIB>)kC4&XJzX423m^Kl@YQxS(VWU zsQD}y4vxA*7qddjo*>Z*piB{nE`L`k>?<)WXwPRh)!c)}Uj>mq=MP3D7IjAj%rzqZ zpA#$MW|o@C#vI{1l|w32LC_MO_BSSdtc!J&`iK6MOFsw-$mt=0hDZmkZtc;9&sQ`J8 zRR(SyXI6TG0=Y+-V+5)F6)>r4Di@OVvaP|n6f@}I7o{TeS(=5nk0hPu&$*0ee@W~1 zOI+_A7IHm`;qb%?Qo}gxjooi&8~}TDM>-?rZDbAc+Ij%JPy+8zfP2g9+t;IiL}g(S zvmA(do$?5iH!Z_=7kF3CYdC|1=0abi8{;be1zZybKQt@LKWR~cC*ArPq>5u3q_3|v z^{^NZFlN0jXE59 zkpWBIbD^Q<@rq*P;TP<3j^?c0rhG}OS^)m zjXxpoYk~jzO{1MtO3v8C4li(SMtsDQa7 zjH))SefI4SLCB42m_VJAA54d9+L1Vh z(RGHK`t`dD)<-{}j*8Lr)Dw{f+|b7!*gDCX&*SXX~@_gDT=6V-J?4Qf)KI5FaDn&0W z3fm6fj45f7X=kXk8(wXLBV)}K$6Do>J#82kQP+}*#(EW>`fyrCH-ET445#DN4RA!7 zzqO~*THVjbpvY0`uzblP^QNrv0+NVjS5*^u;0)Ir!nFl-_Ubz*HB61pnxaGUhn{Bd zt(l&)f2gh(|FhxL3uzO{kyPQatS7s+>44eg;&xfF7w13kKu^1jIJlEB2y$kBnJK%dDc) z6`;;j1}GQ@uiPT+nMe`x)ukGJmevr~@z)B4nFp~O-3I4L zO=p_%J=~n=q0yfz;~2rOBWY%MCH{4|CW)~;hExx^UPnXHM;{#S~_<<}6S<_r>rxWe}4wdcc=>8-!( zGM5^o%f1}wvo5Tx%XlpbFfZ3^=y6d<+IWu1QRZ9Uvd}vuq}N_L0MjMnn2TiUv1JBn z2<&Ul^Vdo~Q9xYj32)RT3mZe$_Yq!wB4uzva2$EJcD2OFhX+Cc$)o%nuQuxAtp%2A z9GBF1A6+AmB#|nv_7E{UgttSFK$+eiYdgg~NPXec=<1YX)>F?%X(M~a5t0&Q9w$++ zDA;<+Uut8VVMr4fS}uR@WLHT2q`SMRlBHJX{w1Aqv3DeKEd<0!?ikskEHD{M=0%b^ zDm7E9_s9S@O7uhLX0}AV-W*9vX{DwQHP&j6oCkUBp9PJQm)wwP4x7U%q>1n1H1@%g zE6$9PgKUBR+aFfehSCvvAa{vZ`)F`E>cnL5W0ZOaCZGm@@wpScbi00p&05wTXf>xJ zxJPvu6Ej+nd1(8MxBqkdv(tS^z0i@Fl!gvh`RQ7JHDbUUfh%e#RJ2iw&J++&O@WgV z0GoNnXSoj$y^4L=b!}+V(Yo1$G`dg-Et3-dXicEKwCKFhy6I_k0D;+B)hl$;T1*=z zgFnN^oFk9TexuJ9^ELE!^t}W9&{2gt*=ZtI^Di6*yJrhg7-;m!77jIyX^<$8z>z`& zJXw+V&ST{Y^(q{oAfmlp!9&fHF0uwpzYl$h^T6>~PQF`%A|2g>3ZAK@xFvy$J0M%?rA1|WF z%)30SuW)`oNc$2CV{5&NeNm*^862>oWywfX$~b1Op;GjH5T)VxVBA_az2@ni8BKye z(4r{?5{J`?>_Yoe1%)z~J6XvsVQ{D9u8I85UPBhyIA-~MPk&NY-7l#-yaBlz!qj`% z6w#=4nO)E;QFU=KxBy4fZ(7v`5EQ$&Ldh=Cw;B{v(f|CS8fqYGR!uNJheNr&VHMw^ zUf}g;y3Ci1Rzoqsc~BR4<2em)n;RzbHgZBxHWW+D^zfQ_u;e9pAXlklhjKy#UQFfM zGQoQrLEx*_7+jj#qqU-tI@MR~!jwR)~yJYzF&<`fe)V2M4Et|I_g+1tG zICr#eNWMUxexK0!dD4EQ+%s4$@INF_v_EMS3sW!14c${hd2zK-U4lo=+x*D=)S!xm zL7b-wzEZgQpbl%s$WxnIR+|cZ0#26kDXSl-Kta+8;K%CcQH@_gZGi=N=ugaBi4lZX zSJ<-f#0tl~Lta$%3z~C~WW{vS&k{GvwMHQ@UO?7)L-67E_00=w%?S-YUfE)*NF4t! z;V9O$;9vI6qKP=Yz8^k|;%~ye^Qnx3Ed#kdZ^6(q%~@5}D6byqurn2IW=Z?@E;?NC>z&h#Ouv%dC)sbQyp_0}0S5r3qs6_{=l%t|hINH_AHf=EzV z*)2`{bSKRWVFrVtnDNT92CV1Ye1hZBHo2`YXy1o)t=}6P!a`DP_l|e7m0#|r<3(qp zF6?OQH9p|z`7+EBQqE_JUQr_l316p;u0(OOSX!I#!XSN}xEdHylLnW|K7)o)&4ZJNK zTevLk8!#d1CP=3e5OeQ^6H+t&E~u-r&LhdHS}$LQJb!c^mnqZ14s9H z8HVvH@BaKttV15Q#;wj^GP>+$0x?-Vg-(=KJ9=*jPVcAF-R+MWwHJB0clP`9TM;nK zUQoYU+15O!EXGAkKTVKTl5NX=#fk&O-#`&!v(0v839q9l0?%Sw+W;q}G2*`p5nsSE zfB+0n=Lox>R-}A!>IaG&^?$Cvvgrz;lo=mr4hb?G0^jn%Zq_!XBoXzg@k1-)jv)qE zg~3!wo*Nm*pSn{NAa2-%R7ms=KR56;PjO{^@Bcl=_u6U zu@DohE2+Eu(n}JSHvPX9{VKA)pMhXy#C~vx`sKml^nTU&skc}Gk;s|tWm#=0GX%`; z1IEm01D-)v>mzNz>VQ$OSPto}laOR^vD*N&x{192b~NJ#-#Bs3U|zTaG7eZE)kc=6 zdlF+T%}n;94wys@!F=(xn|FhqvftFA-+}1k$TfVsji)>$>gMAM;*&`hHk^9TnW!4L?##hKJzy zlS)PbynHhuh8?LmFW0+wHtv1RE=p+p?&T_S#$qH?%^L!o`-<`fQeVGX0QHt~U0iJl zFu2F_Wr5yf6@N=6uJ62I0shICiq%{@Diiu2`TsP29Ao{vf&2LA4X>CSNV#m|f+bbX zqTWdcY&6-GC^&TXxeL%h^fd<0O*o=FpXyVt|FzW8lnq%StQoEg(nom8_a+SSJ5Z#;n8B49H&~ zcnjhx0tX7LF<>&tl?3!-cN;Dsy<)gi3AB$fD%{H^dK2jsTsHQ24uNpT3^ef}7;Y&} zehPyS-f&A@>z8jcFG`4KX7iRzfCYRy3DU25zMJtkj;lUT7nK3x&PqEQnaLG=3KW2% zQQT~etMSOxY=+v9Ra_U`IjZbmwe;>xkw-oF`OO8Gr5s1hu(p%d ztzA*4d%zA~P2LCJ#Cd9l3YlBF;pJ%*_w2W^A(zK1_iTw|R0luaDg%WGzn3X)aN1LL zs=Y9Z_Qkj16;U>1D!)K1Q~Ae|y*7ooi6wlt(y>q;x0SvFk!}ab#V0ZAG)7K+Vbwmf zD;OC#bC!D=y>V{7V%YRR_5>GM9JHv1`@+Q}I3F9xWw*6)&n$ctrgfmoC(7OGU!B-1f6|u>I>Ge43|vyLTE52Bm$0w;Hi@6fGTIriNZFLk zgL!Q>n8Cgr;Bz^T16B!P@Bq2|NS`N4lCv6+WA;*W*l_?IeT8~Xy_;7XT1f7i}K)zDzo6lsea(-fmu5BqjWtr5ap}2_+c~R(q&TZa9wD$l-yY~xJd4$T$>vQVg$Lo)z7xGgsiTF>Ekji9gK57M=<7|>y5F?+KCZ*$ zJm02D0((&7jltTehQ3S*6HH)UDpz~$%|PT^>2>SSKq_?`y4jm@3Pd4C8dR2%+xw?G z?~dDhU8p}^BQj(%8fpU~_?)i|>%@_Hhf=vfpZgGgf?W5qN=FbS!B+T06=!ecyaGBH z5!2uSNcOxYZkorJZynaa2nxSt$yMZHv&aAfUs*c}V0XJh9p=vM{`!#rG7)(bjGpZ;Q zHfypW>j>5Q5Bh)S$Bn+ScUfTRR9p|TdmXCpUNlAT5)o0!R5cCTF8r^PV&o-oAg7re z$QJg+G+@AH`^?_r9$0!9_DH4!Zk^_xdO-Z5g_U;C%aW0gIu|G&-8X22X1Rd?L45!B ze~=sZZL&EFmLtzXDR}=KjM`OY5raT$#;v0%`Ezqf<`rP#lGPMw#{}#*GxIufqm#O1~X&qqZK(C0BRc!EN1zm%k&-v24&8PnRhM;|ev( zNt+YL$kjA5h|+zi;3WQ|I{V=~y0(~4pd>w_}QjZ!UOpleEZZX1OyO_K9 zCr{InH5BvP3V2za&Hq{?W~$V5gi8(Kzf*|(bYhVpW1=bP-opy+d?692aYPps!LTe} zW%RJPUX|i&6=t>UViFtIe4lQ;9Sx?m20O_hEdXqCTK^344PM;;B3HW1?baGEXz|G4 z6ttf&;0dp(+RMeZLI=i!k4(V=#_|!3okq^F+ad| zOfTQPTbJ;?@4ptXm7*^!u9(Teg8zE!1uFgVP$hRCQ>xEm;f=0wbgsA-+^#t^N;X&` z^@8=@o~RmMQemtelbLj#-k&nuS(65d2~Tmi>R$h8f?;B7A`3sSv7_{l*gt82$QLsX zDTK==4X_-Z|Kwb!B`j0FJ`n7J+hFGDA7%Xjoh;)%aipp(1OY3M^pt^d{IzrhCjEdt zj95kY>aCG9AoRmWrrsK@i5It2_3W=O=jlY;@Z&x}u*kf*(@+zmUHY2TC}L;rht^zn zRj3}D8;-et*-i|B{jZrJl8j>chZa?G`wMC4dND)#0HQd`hwF12Q?ni;q z0kZ5#!B;iHw3td%yOwjuI?V}v%QG(9yq{(7o~bjTFz~YD0TD3HNtMc55Kv!7MBA@w zK58^GThU@*+}A(5V=wK@$s?e2;P`UmaWEMUZYD{NQ#dk{IJ=xo=5&*?9VlW!n8=$J zHJ@b!E4%e7wCls*?d0)%GZyg;&9v*Shh6(&+U#vhT%BBKt-a&s2MNKHq!h0+r7J8{ zHxM7B{3Oe3JDjZ+!{;^I;vx67H?epn4>#NUh!GZ)NO$4-B4!u)Fq?SsEi+3yZXtnR z9>lyQ-FcW}7h`IRBQE>pMHxW>NP_hwkM_cVd1zcRenn?=uTRde~yF0qi)h_+3qWsq*Gb#uEGEpzAEJ zuY}9la*zl$tdUqvM|2!K4u!BGyfIJk%Yn+U$PSg2|2QUQe%is>T^KwC%%~)A8OHup z5}An|>2zSBWoOh_j~LY)Q}D`N;&$BJ@s6)-{8%Qr2DEx?s&Sk%G*nUIH?YUAVzT;n zZ0DyaJZ8SmSdX0Ca0m7C^I9(XuUoL5n4L8$L_V^U9brf@H$qHEl?rM+v!Z4~_QgOo zmujPziprJ=#c9mBqchF7ToLLn&Y1c}+O{>1DU@(IVlR&>L%k@P8>atOcGYtX!NiK; zPpDNx>(v&~Mk+@{bL+(J4m3R{`u2^|ccCbDNlnJYDvqttnHwE(st%XkN}K`Qmh*ML z%>YZ!JLlY-MM+V>l$88Xco8DZDo96URl>#~I{#I$mC})3?ug`qAYU8OPZzS?xt7b` zSz7)D}38;8uTuae!M$cbEE zTb#rUvcoLR&eiUCf36Pw%=<9O)vG$FG<5h09 z-j^TRzEa5>B%@wZqw0066KadIi&Hq%XIj>nsNG>$_M}8b5K5HnPbP+JGJw1;47CF! z2dL`N({RWF)qFp@o8wtR@TF`qm*c4Yb+rf9Ao-H-1&3%(OE`)Xz>yei4$HnL0=t6D z{H02k7TLHfnUY2>H6$i1^6T4ya_owETAzR!F!m^(Bvs^+Y61g6m?>G)MIVfcPvqP9 znJILcac?;J^Z*K>!abM&{r~(2|L4E~P94V_F)`8>p`@bL(zCv~facww~8O*Roq zC=+-adtRt{W0Ei{mp}B95~I9ZKe4m9QE8vMVW@obkX4Sl=KpINn^$(liODl~m*OqS zP3H`1FOPj^pSTx+jfzazeQil`!5s=5Wvrlqr9g>O5K?LntGmMR`TVNy$HvWdq<-@( zV`jIs8N8Gb3r9?E=BO*6_BepP7R|mZlYtJKWsuLEok{UX%6XQ&Et-n9^{-*+yB^?d z3-U4Dsb98$@3?e@Kucp?Q(ZX#w#}{lR!T4L>|Tl$X{O{qe?+p0n-?Brf}o^e7Y-Oc zNhvv0qJzleFoxByQTO>&)(-CyN+46UYM+;-fMq!?@C+tywEL;o5*=^K$sS7OW<+PP zEi=k>ca(Us^Yc0yUIAn62oSEIl3<)7s!{XEYCVOelIyqP0%T?Dfa zgq^q>1S)#!tnjk>dg|C?v6aWb+OcZU2!s-~4v)?hmmb+oh>u+KJ|eMq-42p#CPfAl zS@`wUtvoB$RyXC6Vb)g;??n#GNfH!2Y1dfM+u7xiX-*~M1D)3%#j%n&o|`!V(Wu|` zgjOs!EnqtvS6D)o{3KNkQa38@<-&$G)bm2&czzvC8f>o> zkS!5=@$#0jM?CG_*fN?DEi*HQNrMDPUY&Swc{Cp(jWSkIwX!0q56dTFn^j*H_F5Vj zX;>KnQ$ zL<5QmdvYz8JjUQ z1IsxxXk4%LZX_R*SmIm7dBkrlgJ3#RT{fr|Suz;ZMLP;+_-@2rA#F1ManrGty>aFK zGERyP6GAWkIP0z|s?6CrW8|TJ1lH`F5HUv*gZlK8?a!)wz5MWp?cE@|lJ!yQumlKr zQu=w-8Xu`$S-jF!5-?(=BM~{-bN6uuHy_T8NW4i7DQ3ziur1PixMT-N7q@enNT}^B1H?Z658@-HT(Qs+U9_Sh+WT}$QWDg=ctab=dO=#V1KKEjmx9p5B}c6Q z3(D9Jq-6~N000E$!2j=`iS@qo;Erjh+dS|baP}5lBZFvtx`dXbJgqgRpZ6kTr9U%& z9PX3Jb(sG3p|5jZXI%_c+k0Ff2m`ALqm=YnC&uxlXPRo^X?31C{A`k>)*}!3DlLCN zyiHjD{Mm3=uGVGai78H>^_{5nGhnaHJ;_V%@7ztvi9;-qSaXlr8hAeVJq{6<$6zqP zrO-^B{BDHqRXF0Q2*20T3MG}GkdzCdjAhKnc{X?g{EcM|t^KfKpCsDL<|TJ(Faka; z{V{NJ2^~03MbE|SMSJOVz@)|Vm>t-FQu$#s;goQMu$MH~CZ%pOSIz1gsd`X9!|hwE zye2i8g~S^F@}Yk3a{P{WfjfCV0^d7%T&MekI}865{t*To8FJOCc0$FCruwB>rNJJS zcJD(dp_Q*PI0X$?AniPQTk%{WG}II0^mi@|jf|1hF)Vo?nx?4IKU0U1x12qJ(FrZ&@2^cOvcSPY3l$z4Z6{=jaWG?x< z?5;J$d4q`cNun_PV|Xj|QYN_e(jcXlHHq3z6T|>7VPyRo)}+ZVnZN4j0^<~woeNym zjWH#_T`)(21#J-2(cjE{SG0&Y`+lg`dr8}m5qZy1H9@8bB-^GbHiA0R)?5O(qLhIV z9ELE0O3Crv%Q$!iDu>QCv27+Co$qy4RrC+0HYBtA(hCCP)4u10Qkdm=`JG6`9laq> z$>SApj)5=`7k$NvQnDak{g*JoDx{@lV~A2MK3?0xQ?Lpxq&0RwL_Pgnm7xm(dMig^ zP%gX^Ka~BQ>!K7TqE|L$o1B&M9uzZUDr)@xDjmb;G-vQV?|^<84R@3F^C^s*p|Sk2 z$Sj?IBw5?%9z15#SnKnFdJv9*ZY_mnNHD{+epq?o&(ZVsIbq2sEPNM^fUN0=buKSq zWq{`pfaTb$jyq(J{r^Qr>MUlHA7AnWULJ=h>lPCKTEo!QP@7)py&eS1%KUuZgrsm} zE%C7xD2Vj{!iS0d*t+VBwmN0&NYs|d9C2a(N2;Hxt;iFTd&w=_Dwx19+O>heB|Ew_ z?ZoX+PWhxef5DiL;JAH8YhN&i1Cehn8&~6c22(ceb6zhmNZ3nv&-}IzDo=XrAt8WS z+pV%A7AUew$cwd){SlMna@`E1(#e8#ms{X6`<{80s-717SO4u7{Bd3myUw1k`-q@K zafcmD_0hRK%LoSYfF4DCT|F+1iEe0DiP+nt<$*pz>y(>!ihG0wtQ^|i9uF(_40eEG zKMr&M0Ie`kEJD}-04Lm9FaEzYrFyJv^**#yYpNNqEhm;RxG;QG9B)qt6?~iBA|Nja z#4Av&f{ytDn{Dhj4#z=r_vuzCQ;}O^BI1Fv@C{e6Tb++u_r-Rvv&2W#>Sx1;idlFF zM+wKX=mPw%(C3{o5e!5aHwBFbQ}GZSwOM%IxSWkK3DMguATw1#Az$;k`7)sz~#4tUa6y+3zAk<`Tek>s}=7^ zva0(NxDu`~f$Z6{%h4T#xMs*yCM4{mouX&J-G^ zl?v6@^C;Pt{0%P%Jh;Q~5;n~G;ZphSNUg2CYR?OdUM+c1)&|I6wXu|-X+@?p(m%2q zR0Nbh2x3X5QB>Zq`sER3s?Dkt@d$devAn@jhnfj32+iTu80AiY-!Yv}X))>dae$+7 z*JR%eG~Gk6<+moDnhE{w>lD9OQpS?N0PZFQln^RM-bnA=gIz9#-f+UZn*)b=BF$A_ z!s4nUl;N)U0ZRH&jf|l?0Iv}MSC4Y$b(Cx@@mV&~km!>Qw+k{7PsqH0ohk2*zUhFw zY<{db#IAL!bGs`#bgn)k4A0tQ`Bk<*w_FnHw8q7GfcKIFXiau=VAx z0|Qri&UxOGZuEzV_}3{(gqS4e*|x!coJ5GFfXVcsd=1aP&i@-D*UFY;BJSWX4FFb|{=vCk1sW4SugdTMlfCTUJLpP!-kbmc5%Vot4hG9Vi3*EgV;T5< zX?n>x-5I}vsn7Frxv72`%m;ScRnPpVFFl z<7siop~0=&Ez^1HPtQX#JQsD;@~RH( z!)wDsDG!YSz~(QFUm*4E6)g=U3LyWF1Nrtb2s+oDaXRXBJ#vwc;6|`*cU+Guy26Ob{ z)Ju+M#~xV8@Q$wZ+Q9#`*tp}~2-eQLAS&_v_qzxIBwImLK5PI0002olV+(fuKmpK= zHP|ZJCD&fw%ddJmNcisL4dXs;Xd23;>VMtW<3pPmx!S)Yb?7JBX;;-9qZR8_FwGEE ztO%hT)8=LlUEj+Q2ZoCLWRllJUTT7VYRnd?@tC@wK7M{3vpBjI@U z+T{Q|cwN`yXE81+w0lTdNYm^&4V}74e5Eo-40@*~u(a3ZZ%w~ oV|6fC9c@z-6lf~zgWm%kLq<)6NFV?J00000000000000009C8iq5uE@ literal 0 HcmV?d00001 diff --git a/arm-cr/dpp_launchxl2-tms57012/README.md b/arm-cr/dpp_launchxl2-tms57012/README.md index 757e8aa..a755329 100644 --- a/arm-cr/dpp_launchxl2-tms57012/README.md +++ b/arm-cr/dpp_launchxl2-tms57012/README.md @@ -5,7 +5,7 @@ This file is best viewed in a **markdown viewer**, such as the one built into Gi This example implements the [Dining Philosophers Problem (DPP) application](https://www.state-machine.com/qpc/tut_dpp.html) on the LAUNCHXL2-TMS57012 board (ARM Cortex-R4F). The example blinks the LED on the LAUNCHXL2-TMS57012 board at 1Hz (0.5 seconds on, 0.5 seconds off).

-
+
LAUNCHXL2-TMS57012 board

diff --git a/arm-cr/dpp_launchxl2-tms57012/launchxl2-tms57012.png b/arm-cr/dpp_launchxl2-tms57012/launchxl2-tms57012.png deleted file mode 100644 index 04766ae75bfb3eed3b8f778aebfed384af2f23a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136290 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 diff --git a/arm-cr/dpp_launchxl2-tms57012/launchxl2-tms57012.webp b/arm-cr/dpp_launchxl2-tms57012/launchxl2-tms57012.webp new file mode 100644 index 0000000000000000000000000000000000000000..72df6cd59f83d0484cca1515a186a9d43ce7ec43 GIT binary patch literal 45394 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 literal 0 HcmV?d00001 diff --git a/embos/arm-cm/dpp_nucleo-h743zi/README.md b/embos/arm-cm/dpp_nucleo-h743zi/README.md new file mode 100644 index 0000000..272e95e --- /dev/null +++ b/embos/arm-cm/dpp_nucleo-h743zi/README.md @@ -0,0 +1,112 @@ +> **NOTE** +This file is best viewed in a **markdown viewer**, such as the one built into GitHub. Markdown viewers are also available as plug-ins to popular Internet browsers. + +# DPP on NUCLEO-H743ZI +This example demonstrates QP port to the SEGGER embOS RTOS on the STM32 NUCLEO-H743ZI board (ARM Cortex-M7). + +

+ +

+ +The example uses the [Dining Philosophers Problem (DPP) application](https://www.state-machine.com/qpc/tut_dpp.html) + +

+
+STM32 NUCLEO-H743ZI +

+ +## Features Demonstrated +- QP port to SEGGER embOS RTOS + + with GNU-ARM toolchain + + with IAR-ARM toolchain +- multiple cooperating active objects +- immutable (const) events +- mutable (dynamic) events +- time events +- direct event posting +- publish-subscribe event delivery + + +## Build Configurations +- Debug +- Release +- Spy - software tracing with the built-in virtual COM port + +# Code Organization +``` +examples\embos\dpp_nucleo-h743zi +| +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| \---iar // IAR EWARM +| dpp-qk.eww // IAR EW-ARM workspace +``` + +# Building the example + +### GNU/ARM +- open terminal window +- change to the desired directory (either `examples\embos\dpp_nucleo-h743zi\qk\gnu`, `examples\embos\dpp_nucleo-h743zi\qv\gnu`, or `examples\embos\dpp_nucleo-h743zi\qxk\gnu`) +- to build the default Debug configuration, type: + +``` +make +``` + +> **NOTE** +The `make` utility for Windows is provided in the QTools collection for Windows. + +- to build the Release configuration, type: + +``` +make CONF=rel +``` + +- to build the Spy configuration, type: + +``` +make CONF=spy +``` + + +### IAR EWARM +- Open the provided IAR EWARM workspace (either `dpp-qk.eww`, `dpp-qv.eww`, or `dpp-qxk.eww`) +in IAR EWARM IDE. Build/Debug/Download to the board from the IDE. +- Change the build configuration in the "Project Configuration" drop-down menu. + + +# Uploading the Binary to the Board +The STM32 NUCLEO boards enumerate as a USB drive when connected to the host computer. The boards then can be programmed by **copying** the binary to that USB drive. This can be useful for the command-line GNU/ARM build. For example, to program the binary produced for the Debug configuration, you can type: + +``` +copy dbg\dpp-qk.bin E: +``` +NOTE: The above command assumes that the NUCLEO board enumerated as drive E:. Of course you need to adjust the command for your specific drive letter. + +Alternatively, if you use IDEs, such as KEIL-MDK or IAR EWARM, you can program the board from the IDE (e.g., by starting a debug session). + + +# Tracing with QP/Spy +When the board is flashed with the Spy build configuration, it produces the QP/Spy software tracing output to the built-in virtual COM port of the TivaC LauchPad board. The trace is binary rather than ASCII, and therefore requires a special host-based application called QSPY. + +> **NOTE** QSPY host application is available in the QTools collection. + +To launch the QSPY host application: +- open terminal window +- type: + +``` +qspy -c COM5 +``` + +where "COM5" is an example virtual COM port enumerated by the board. You need to check the specific COM port number on your host computer using the Device Manager application, Ports (COM and LPT) section. + + +The following screen shot shows a typical output from QSPY: + +

+
+Typical QSPY output produced by the Spy build configuration +

+ diff --git a/embos/arm-cm/dpp_nucleo-h743zi/gnu/Makefile b/embos/arm-cm/dpp_nucleo-h743zi/gnu/Makefile index 142ff1e..8d75a81 100644 --- a/embos/arm-cm/dpp_nucleo-h743zi/gnu/Makefile +++ b/embos/arm-cm/dpp_nucleo-h743zi/gnu/Makefile @@ -75,7 +75,7 @@ VPATH = \ $(QPCPP)/src/qs \ $(QP_PORT_DIR) \ $(QPCPP)/3rd_party/STM32CubeH7/nucleo-h743zi/gnu \ - $(QPCPP)/3rd_party/STM32CubeH7/Drivers/BSP\STM32H7xx_Nucleo_144 \ + $(QPCPP)/3rd_party/STM32CubeH7/Drivers/BSP/STM32H7xx_Nucleo_144 \ $(QPCPP)/3rd_party/STM32CubeH7/Drivers/STM32H7xx_HAL_Driver/Src \ $(QPCPP)/3rd_party/STM32CubeH7/Drivers/CMSIS/Device/ST/STM32H7xx/Source/Templates diff --git a/embos/arm-cm/dpp_nucleo-h743zi/logo_embos.webp b/embos/arm-cm/dpp_nucleo-h743zi/logo_embos.webp new file mode 100644 index 0000000000000000000000000000000000000000..45fc72ce14ba3f44a3cbbaa10e46de365fa7a102 GIT binary patch literal 7576 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

48s!6PLv3#1J$zTBSi{a{Ql)}O! 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 literal 0 HcmV?d00001 diff --git a/embos/arm-cm/dpp_nucleo-h743zi/stm32-nucleo-h743zi.webp b/embos/arm-cm/dpp_nucleo-h743zi/stm32-nucleo-h743zi.webp new file mode 100644 index 0000000000000000000000000000000000000000..594e7f717c5919e4f3caaeb78ff724dd4f86aaf8 GIT binary patch literal 31144 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 p;Ys$ycJcrK00000+-v{<0000000000000000000000000005oGp3VRO literal 0 HcmV?d00001 diff --git a/freertos/arm-cm/dpp_ek-tm4c123gxl/README.md b/freertos/arm-cm/dpp_ek-tm4c123gxl/README.md deleted file mode 100644 index 7346acd..0000000 --- a/freertos/arm-cm/dpp_ek-tm4c123gxl/README.md +++ /dev/null @@ -1,5 +0,0 @@ -![EK-TM4C123GXL](../../../../doxygen/images/bd_EK-TM4C123GXL.jpg) - -Documentation for this example is available in the QP/C Manual at: - -- https://www.state-machine.com/qpcpp/freertos_dpp_ek-tm4c123gxl.html diff --git a/freertos/arm-cm/dpp_nucleo-h743zi/README.md b/freertos/arm-cm/dpp_nucleo-h743zi/README.md new file mode 100644 index 0000000..9a9fdd3 --- /dev/null +++ b/freertos/arm-cm/dpp_nucleo-h743zi/README.md @@ -0,0 +1,121 @@ +> **NOTE** +This file is best viewed in a **markdown viewer**, such as the one built into GitHub. Markdown viewers are also available as plug-ins to popular Internet browsers. + +# DPP on NUCLEO-H743ZI +This example demonstrates QP port to the FreeRTOS on the STM32 NUCLEO-H743ZI board (ARM Cortex-M7). + +

+ +

+ +The example uses the [Dining Philosophers Problem (DPP) application](https://www.state-machine.com/qpc/tut_dpp.html) + +

+
+STM32 NUCLEO-H743ZI +

+ +## Features Demonstrated +- QP port to FreeRTOS + + with GNU-ARM toolchain + + with Keil-MDK toolchain + + with IAR-ARM toolchain +- multiple cooperating active objects +- immutable (const) events +- mutable (dynamic) events +- time events +- direct event posting +- publish-subscribe event delivery + + +## Build Configurations +- Debug +- Release +- Spy - software tracing with the built-in virtual COM port + +# Code Organization +``` +examples\freertos\dpp_nucleo-h743zi +| +| +---armcland // Keil-MDK toolchain +| | \---targetConfigs +| | dpp.uvprojx // Keil uVision project +| +---gnu // GNU-ARM toolchain +| | \---targetConfigs +| | Makefile // Makefile for GNU-ARM +| \---iar // IAR EWARM +| dpp-qk.eww // IAR EW-ARM workspace +``` + +# Building the example + +### GNU/ARM +- open terminal window +- change to the desired directory (either `examples\freertos\dpp_nucleo-h743zi\qk\gnu`, `examples\freertos\dpp_nucleo-h743zi\qv\gnu`, or `examples\freertos\dpp_nucleo-h743zi\qxk\gnu`) +- to build the default Debug configuration, type: + +``` +make +``` + +> **NOTE** +The `make` utility for Windows is provided in the QTools collection for Windows. + +- to build the Release configuration, type: + +``` +make CONF=rel +``` + +- to build the Spy configuration, type: + +``` +make CONF=spy +``` + +### ARM/KEIL MDK +- Open the provided KEIL uVision project (either `dpp-qk.uvprojx`, `dpp-qv.uvprojx`, or `dpp-qxk.uvprojx`) +in Keil uVision IDE. Build/Debug/Download to the board from the IDE. +- Change the build configuration in the "Project Target" drop-down menu. + + +### IAR EWARM +- Open the provided IAR EWARM workspace (either `dpp-qk.eww`, `dpp-qv.eww`, or `dpp-qxk.eww`) +in IAR EWARM IDE. Build/Debug/Download to the board from the IDE. +- Change the build configuration in the "Project Configuration" drop-down menu. + + +# Uploading the Binary to the Board +The STM32 NUCLEO boards enumerate as a USB drive when connected to the host computer. The boards then can be programmed by **copying** the binary to that USB drive. This can be useful for the command-line GNU/ARM build. For example, to program the binary produced for the Debug configuration, you can type: + +``` +copy dbg\dpp-qk.bin E: +``` +NOTE: The above command assumes that the NUCLEO board enumerated as drive E:. Of course you need to adjust the command for your specific drive letter. + +Alternatively, if you use IDEs, such as KEIL-MDK or IAR EWARM, you can program the board from the IDE (e.g., by starting a debug session). + + +# Tracing with QP/Spy +When the board is flashed with the Spy build configuration, it produces the QP/Spy software tracing output to the built-in virtual COM port of the TivaC LauchPad board. The trace is binary rather than ASCII, and therefore requires a special host-based application called QSPY. + +> **NOTE** QSPY host application is available in the QTools collection. + +To launch the QSPY host application: +- open terminal window +- type: + +``` +qspy -c COM5 +``` + +where "COM5" is an example virtual COM port enumerated by the board. You need to check the specific COM port number on your host computer using the Device Manager application, Ports (COM and LPT) section. + + +The following screen shot shows a typical output from QSPY: + +

+
+Typical QSPY output produced by the Spy build configuration +

+ diff --git a/freertos/arm-cm/dpp_nucleo-h743zi/gnu/Makefile b/freertos/arm-cm/dpp_nucleo-h743zi/gnu/Makefile index 05e8358..8481ce4 100644 --- a/freertos/arm-cm/dpp_nucleo-h743zi/gnu/Makefile +++ b/freertos/arm-cm/dpp_nucleo-h743zi/gnu/Makefile @@ -79,7 +79,7 @@ VPATH = \ $(FREERTOS) \ $(FREERTOS)/portable/GCC/ARM_CM7/r0p1 \ $(QPCPP)/3rd_party/STM32CubeH7/nucleo-h743zi/gnu \ - $(QPCPP)/3rd_party/STM32CubeH7/Drivers/BSP\STM32H7xx_Nucleo_144 \ + $(QPCPP)/3rd_party/STM32CubeH7/Drivers/BSP/STM32H7xx_Nucleo_144 \ $(QPCPP)/3rd_party/STM32CubeH7/Drivers/STM32H7xx_HAL_Driver/Src \ $(QPCPP)/3rd_party/STM32CubeH7/Drivers/CMSIS/Device/ST/STM32H7xx/Source/Templates diff --git a/freertos/arm-cm/dpp_nucleo-h743zi/logo_freertos.webp b/freertos/arm-cm/dpp_nucleo-h743zi/logo_freertos.webp new file mode 100644 index 0000000000000000000000000000000000000000..4652862609b6ae5d516663486b2902ab906aa120 GIT binary patch literal 2928 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 aSQZR`%DkuFT!Z}}00000000000001zL!_$! literal 0 HcmV?d00001 diff --git a/freertos/arm-cm/dpp_nucleo-h743zi/stm32-nucleo-h743zi.webp b/freertos/arm-cm/dpp_nucleo-h743zi/stm32-nucleo-h743zi.webp new file mode 100644 index 0000000000000000000000000000000000000000..594e7f717c5919e4f3caaeb78ff724dd4f86aaf8 GIT binary patch literal 31144 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 p;Ys$ycJcrK00000+-v{<0000000000000000000000000005oGp3VRO literal 0 HcmV?d00001 diff --git a/lwip/arm-cm/lwip_ek-lm3s6965/README.txt b/lwip/arm-cm/lwip_ek-lm3s6965/README.md similarity index 84% rename from lwip/arm-cm/lwip_ek-lm3s6965/README.txt rename to lwip/arm-cm/lwip_ek-lm3s6965/README.md index 10b4728..3fdcc22 100644 --- a/lwip/arm-cm/lwip_ek-lm3s6965/README.txt +++ b/lwip/arm-cm/lwip_ek-lm3s6965/README.md @@ -4,6 +4,11 @@ This example application demonstrates the lightweight TCP/IP stack called lwIP (version 1.4.1) running on top of the QP state machine framework, which are both briefly described below. +

+
+EK-LM3S6965 board +

+ The example provides an HTTP server with simple Server Side Include (SSI) and Common Gateway Interface (CGI) facility capability, so that dynamic web pages can be served and the pages can send data or commands to the target. Internal @@ -14,40 +19,32 @@ The example also demonstrates UDP. A UDP test application for a Windows or Linux hosts is provided (qudp). -Building the QP-lwIP Example ----------------------------- +# Building the QP-lwIP Example The sub-directories "arm", "gnu", and "iar" contain ready-to-use projects Makefile for the GNU-ARM, and the IAR EWARM workspace, respectively. Please run the make utility on the Makefile, or open the IAR workspace in IAR EWARM IDE. -*** -NOTE: The build process supports three build configurations: Debug, Release, +> NOTE: The build process supports three build configurations: Debug, Release, and Spy. Please refer to the Makefile or the IAR project to select the desired build configuration. -*** -*** -NOTE: This example pushes the limits of the free evaluation versions of the + +> NOTE: This example pushes the limits of the free evaluation versions of the development tools. The example will barely fit in the 64KB codesize limit of the IAR EWARM KickStart (with the highest levels of optimization for size), but unfortunately the Spy configuration will no longer link due to exceeding the code size limit. Unfortunately also, the example won't compile with the free evaluation MDK-ARM uVision, because it exceeds the 32KB limit of this toolset. -*** -*** -NOTE: -The QP-lwIP example code assume that you are using the EK-LM3S6965 board +> NOTE: The QP-lwIP example code assume that you are using the EK-LM3S6965 board Revision C or higher (please check the back of your board). At board Revision C Luminary Micro changed the graphical OLED display from OSRAM to RITEK. The provided RITEK driver won't work for the boards with the OSRAM display. -*** -Downloading the Code to the EK-LM3S6965 Board ---------------------------------------------- +# Downloading the Code to the EK-LM3S6965 Board The "gnu" sub-folder contains the flash.bat file to download the binary image to the board. This batch file requires installation of the free LMFlash utility from Texas Instruments. @@ -56,8 +53,7 @@ The IAR project in the "iar" sub-folder allows you to download and debug the code on the board from the EWARM IDE. -Running the QP-lwIP Example ---------------------------- +# Running the QP-lwIP Example Connect the EK-LM3S6965 board to the wired Ethernet and power it up by plugging in the USB cable. Immediately after the power-up, you should see the startup screen on the OLED-display. The status of the Dining Philosophers @@ -68,19 +64,20 @@ so it assumes the presence of a DHCP server, such as a typical Ethernet router. The IP address acquired from the DHCP will be displayed at the top of the screen. You should type this IP address at your browser, for example: +``` http://192.168.1.77 +``` This should open an example website served by the EK-LM3S6965 board. This website contains a few menu item for testing SSI, CGI, and UDP. Please refer to the instructions on the website to test these features. -NOTE: By modifying the lwipopts.h header file, the application can also be +NOTE: By modifying the `lwipopts.h` header file, the application can also be configured to obtain the IP address via AUTOIP (as described in RFC 3927), or to use a static IP address. -QS Software Tracing Instrumentation ------------------------------------ +# QS Software Tracing Instrumentation This example provides the "Spy" build configuration, which outputs the QS (Quantum Spy) software tracing data through UART0 of the EK-LM3S6965 board, which is connected to the virtual COM port of the mbed USB connection. @@ -96,8 +93,7 @@ The actual COM port number might be different on your Windows machine. Please check the Device Manager to find the COM port number. -About QP-lwIP Integration -========================= +# About QP-lwIP Integration The QP-lwIP integration has been carefully designed for hard real-time control-type applications, in which the TCP/IP stack is used to monitor and configure the device as well as to provide remote user interface (e.g., by @@ -118,60 +114,55 @@ for more information. The Application Note in PDF is provided in the QP-lwIP example code. -Customizing the Website ------------------------ +# Customizing the Website The sub-directory "website" contains the website that you want to embed in your microcontroller to be served by your lwIP Web-Server. You need to put the files and directories of your website in there. To be useful in the microcontroller, the content of the "webstie" directory -needs to be converted to the "fsdata.h" header file. The provided batch +needs to be converted to the `fsdata.h` header file. The provided batch file "website.bat" re-generates the website after you change any file in it. The batch file calls internally the qfsgen.exe utility, which is described below. -qfsgen Utility to Generate Websites ------------------------------------ +## qfsgen Utility to Generate Websites Quantum Leaps provides a cross-platform, command-line utility, called "qfsgen", which converts all the files in a given folder (your website) into a C header file that contains a bunch of constant byte arrays representing -your files and directories. This generated file (fsdata.h) is subsequently +your files and directories. This generated file (`fsdata.h`) is subsequently included in the fs.c ROM-Based File System implementation. The "qfsgen" utility (both compiled executable and source code) is -provided in the Qtools collection, available for download from: +provided in the QTools collection, available for download from: -https://sourceforge.net/projects/qpc/files/Qtools +https://github.com/QuantumLeaps/qtools -*** -NOTE: The qfsgen utility is a simple executable (versions are available +> NOTE: The qfsgen utility is a simple executable (versions are available for Windows and Linux), which does not require any interpreters to run (such as Python, etc.) -*** You use the qfsgen utility from command-prompt. First, change current directory to examples\lwip\arm-cm\lwip_ek-lm3s6965 and from there execute: +``` qfsgen website -h +``` This will recursively generate the file-system corresponding to the directory website with HTTP headers (-h option). -Utilities to Test UDP ---------------------- +## Utilities to Test UDP Quantum Leaps provides a utility "qudp" to send and receive UDP packets for testing. The "qudp" utility (both compiled executable and source code) -is provided in the Qtools collection, available for download from: - -https://sourceforge.net/projects/qpc/files/Qtools +is provided in the QTools collection, available for download from: +https://github.com/QuantumLeaps/qtools -About QP Active Object Frameworks -================================= +# About QP Active Object Frameworks QP is a family of very lightweight, open source, active-object (actor) frameworks for embedded microcontrollers. QP enables developing well- structured embedded applications as a set of concurrently executing @@ -201,11 +192,10 @@ national defense, and many more. QP is licensed under the GPL version 3 open source license as well as under commercial closed-source licenses, which are expressly designed for users, who wish to retain the proprietary character of their code. More information about -QP can be found at the QP homepage at http://www.state-machine.com. +QP can be found at the QP homepage at https://www.state-machine.com. -About lwIP TCP/IP Stack -======================= +# About lwIP TCP/IP Stack lwIP is an open source implementation of the TCP/IP protocol suite that was originally written by Adam Dunkels of the Swedish Institute of Computer Science (SICS) but now is being actively developed by a team of developers @@ -226,7 +216,6 @@ qpc\3rd_party\lwip directory. Please refer to this directory for more information about licensing lwIP and the source. -Contact information -=================== -Web: www.state-machine.com -Email: info@state-machine.com +# Contact information +- Web: www.state-machine.com +- Email: info@state-machine.com diff --git a/lwip/arm-cm/lwip_ek-lm3s6965/ek-lm3s6965.webp b/lwip/arm-cm/lwip_ek-lm3s6965/ek-lm3s6965.webp new file mode 100644 index 0000000000000000000000000000000000000000..ff9c35e0ca9d6ad553bc1b324b7cd220394d4083 GIT binary patch literal 40428 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. +// This code has been generated by QM 6.2.2 . // DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. // +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // SPDX-License-Identifier: GPL-3.0-or-later // // This generated code is open source software: you can redistribute it under @@ -18,18 +22,18 @@ // more details. // // NOTE: -// Alternatively, this generated code may be distributed under the terms -// of Quantum Leaps commercial licenses, which expressly supersede the GNU -// General Public License and are specifically designed for licensees -// interested in retaining the proprietary status of their code. +// Please contact Quantum Leaps for commercial licensing options, which +// expressly supersede the GNU General Public License and are specifically +// designed for licensees interested in retaining the proprietary status +// of the generated code. // // Contact information: // // // -//$endhead${.::qhsmtst.cpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -#include "qpcpp.hpp" -#include "qhsmtst.hpp" +//$endhead${.::cut_qhsm.cpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +#include "qpcpp.hpp" // QP/C++ framework +#include "cut_qhsm.hpp" // Code Under Test (CUT) namespace { Q_DEFINE_THIS_FILE @@ -57,9 +61,20 @@ class QHsmTst : public QP::QHsm { Q_STATE_DECL(s); Q_STATE_DECL(s1); Q_STATE_DECL(s11); + Q_STATE_DECL(s111); + Q_STATE_DECL(s112); + Q_STATE_DECL(s12); Q_STATE_DECL(s2); Q_STATE_DECL(s21); Q_STATE_DECL(s211); + Q_STATE_DECL(s212); + Q_STATE_DECL(s22); + Q_STATE_DECL(t); + +protected: + QP::QStateHandler hist_s; + QP::QStateHandler hist_s1; + QP::QStateHandler hist_s2; }; // class QHsmTst //$enddecl${SMs::QHsmTst} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -70,11 +85,10 @@ QP::QAsm * const the_sm = &l_hsmtst; // the opaque pointer //$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv // Check for the minimum required QP version -#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) +#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U)) #error qpcpp version 7.3.0 or higher required #endif //$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - //$define${SMs::QHsmTst} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv //${SMs::QHsmTst} ............................................................ @@ -82,7 +96,6 @@ QP::QAsm * const the_sm = &l_hsmtst; // the opaque pointer //${SMs::QHsmTst::SM} ........................................................ Q_STATE_DEF(QHsmTst, initial) { //${SMs::QHsmTst::SM::initial} - Q_UNUSED_PAR(e); m_foo = 0U; BSP_display("top-INIT;"); @@ -95,15 +108,23 @@ Q_STATE_DEF(QHsmTst, initial) { QS_SIG_DICTIONARY(G_SIG, nullptr); QS_SIG_DICTIONARY(H_SIG, nullptr); QS_SIG_DICTIONARY(I_SIG, nullptr); - QS_SIG_DICTIONARY(TERMINATE_SIG, nullptr); - QS_SIG_DICTIONARY(IGNORE_SIG, nullptr); + // state history attributes + hist_s = &s1; + hist_s1 = &s111; + hist_s2 = &s211; QS_FUN_DICTIONARY(&QHsmTst::s); QS_FUN_DICTIONARY(&QHsmTst::s1); QS_FUN_DICTIONARY(&QHsmTst::s11); + QS_FUN_DICTIONARY(&QHsmTst::s111); + QS_FUN_DICTIONARY(&QHsmTst::s112); + QS_FUN_DICTIONARY(&QHsmTst::s12); QS_FUN_DICTIONARY(&QHsmTst::s2); QS_FUN_DICTIONARY(&QHsmTst::s21); QS_FUN_DICTIONARY(&QHsmTst::s211); + QS_FUN_DICTIONARY(&QHsmTst::s212); + QS_FUN_DICTIONARY(&QHsmTst::s22); + QS_FUN_DICTIONARY(&QHsmTst::t); return tran(&s2); } @@ -121,26 +142,15 @@ Q_STATE_DEF(QHsmTst, s) { //${SMs::QHsmTst::SM::s} case Q_EXIT_SIG: { BSP_display("s-EXIT;"); + // save shallow history + hist_s = childState(&s); status_ = Q_RET_HANDLED; break; } //${SMs::QHsmTst::SM::s::initial} case Q_INIT_SIG: { BSP_display("s-INIT;"); - status_ = tran(&s11); - break; - } - //${SMs::QHsmTst::SM::s::I} - case I_SIG: { - //${SMs::QHsmTst::SM::s::I::[m_foo]} - if (m_foo) { - m_foo = 0U; - BSP_display("s-I;"); - status_ = Q_RET_HANDLED; - } - else { - status_ = Q_RET_UNHANDLED; - } + status_ = tran(&s1); break; } //${SMs::QHsmTst::SM::s::E} @@ -149,12 +159,18 @@ Q_STATE_DEF(QHsmTst, s) { status_ = tran(&s11); break; } - //${SMs::QHsmTst::SM::s::TERMINATE} - case TERMINATE_SIG: { - BSP_terminate(0); + //${SMs::QHsmTst::SM::s::I} + case I_SIG: { + BSP_display("s-I;"); status_ = Q_RET_HANDLED; break; } + //${SMs::QHsmTst::SM::s::C} + case C_SIG: { + BSP_display("s-C;"); + status_ = tran(&t); + break; + } default: { status_ = super(&top); break; @@ -176,56 +192,40 @@ Q_STATE_DEF(QHsmTst, s1) { //${SMs::QHsmTst::SM::s::s1} case Q_EXIT_SIG: { BSP_display("s1-EXIT;"); + // save deep history + hist_s1 = state(); status_ = Q_RET_HANDLED; break; } //${SMs::QHsmTst::SM::s::s1::initial} case Q_INIT_SIG: { BSP_display("s1-INIT;"); - status_ = tran(&s11); + status_ = tran(&s111); break; } - //${SMs::QHsmTst::SM::s::s1::I} - case I_SIG: { - BSP_display("s1-I;"); - status_ = Q_RET_HANDLED; - break; - } - //${SMs::QHsmTst::SM::s::s1::D} - case D_SIG: { - //${SMs::QHsmTst::SM::s::s1::D::[!m_foo]} - if (!m_foo) { - m_foo = true; - BSP_display("s1-D;"); - status_ = tran(&s); - } - else { - status_ = Q_RET_UNHANDLED; - } - break; - } - //${SMs::QHsmTst::SM::s::s1::A} - case A_SIG: { - BSP_display("s1-A;"); - status_ = tran(&s1); - break; - } - //${SMs::QHsmTst::SM::s::s1::B} - case B_SIG: { - BSP_display("s1-B;"); - status_ = tran(&s11); + //${SMs::QHsmTst::SM::s::s1::E} + case E_SIG: { + BSP_display("s1-E;"); + status_ = tran(&s12); break; } //${SMs::QHsmTst::SM::s::s1::F} case F_SIG: { BSP_display("s1-F;"); - status_ = tran(&s211); + status_ = tran(&s21); break; } - //${SMs::QHsmTst::SM::s::s1::C} - case C_SIG: { - BSP_display("s1-C;"); - status_ = tran(&s2); + //${SMs::QHsmTst::SM::s::s1::I} + case I_SIG: { + //${SMs::QHsmTst::SM::s::s1::I::[m_foo]} + if (m_foo) { + m_foo = 0U; + BSP_display("s1-I;"); + status_ = Q_RET_HANDLED; + } + else { + status_ = Q_RET_UNHANDLED; + } break; } default: { @@ -252,17 +252,29 @@ Q_STATE_DEF(QHsmTst, s11) { status_ = Q_RET_HANDLED; break; } - //${SMs::QHsmTst::SM::s::s1::s11::H} - case H_SIG: { - BSP_display("s11-H;"); - status_ = tran(&s); + //${SMs::QHsmTst::SM::s::s1::s11::initial} + case Q_INIT_SIG: { + BSP_display("s11-INIT;"); + status_ = tran(&s111); + break; + } + //${SMs::QHsmTst::SM::s::s1::s11::A} + case A_SIG: { + BSP_display("s11-A;"); + status_ = tran(&s11); + break; + } + //${SMs::QHsmTst::SM::s::s1::s11::B} + case B_SIG: { + BSP_display("s11-B;"); + status_ = tran(&s111); break; } //${SMs::QHsmTst::SM::s::s1::s11::D} case D_SIG: { - //${SMs::QHsmTst::SM::s::s1::s11::D::[m_foo]} - if (m_foo) { - m_foo = false; + //${SMs::QHsmTst::SM::s::s1::s11::D::[!m_foo]} + if (!m_foo) { + m_foo = 1U; BSP_display("s11-D;"); status_ = tran(&s1); } @@ -273,8 +285,92 @@ Q_STATE_DEF(QHsmTst, s11) { } //${SMs::QHsmTst::SM::s::s1::s11::G} case G_SIG: { - BSP_display("s11-G;"); - status_ = tran(&s211); + BSP_display("s11-G->H*-s2;"); + status_ = tran_hist(hist_s2); + break; + } + default: { + status_ = super(&s1); + break; + } + } + return status_; +} + +//${SMs::QHsmTst::SM::s::s1::s11::s111} ...................................... +Q_STATE_DEF(QHsmTst, s111) { + QP::QState status_; + switch (e->sig) { + //${SMs::QHsmTst::SM::s::s1::s11::s111} + case Q_ENTRY_SIG: { + BSP_display("s111-ENTRY;"); + status_ = Q_RET_HANDLED; + break; + } + //${SMs::QHsmTst::SM::s::s1::s11::s111} + case Q_EXIT_SIG: { + BSP_display("s111-EXIT;"); + status_ = Q_RET_HANDLED; + break; + } + //${SMs::QHsmTst::SM::s::s1::s11::s111::C} + case C_SIG: { + BSP_display("s111-C;"); + status_ = tran(&s112); + break; + } + default: { + status_ = super(&s11); + break; + } + } + return status_; +} + +//${SMs::QHsmTst::SM::s::s1::s11::s112} ...................................... +Q_STATE_DEF(QHsmTst, s112) { + QP::QState status_; + switch (e->sig) { + //${SMs::QHsmTst::SM::s::s1::s11::s112} + case Q_ENTRY_SIG: { + BSP_display("s112-ENTRY;"); + status_ = Q_RET_HANDLED; + break; + } + //${SMs::QHsmTst::SM::s::s1::s11::s112} + case Q_EXIT_SIG: { + BSP_display("s112-EXIT;"); + status_ = Q_RET_HANDLED; + break; + } + //${SMs::QHsmTst::SM::s::s1::s11::s112::H} + case H_SIG: { + BSP_display("s112-H;"); + status_ = tran(&s); + break; + } + default: { + status_ = super(&s11); + break; + } + } + return status_; +} + +//${SMs::QHsmTst::SM::s::s1::s12} ............................................ +Q_STATE_DEF(QHsmTst, s12) { + QP::QState status_; + switch (e->sig) { + //${SMs::QHsmTst::SM::s::s1::s12} + case Q_ENTRY_SIG: { + BSP_display("s12-ENTRY;"); + status_ = Q_RET_HANDLED; + break; + } + //${SMs::QHsmTst::SM::s::s1::s12} + case Q_EXIT_SIG: { + BSP_display("s12-EXIT;"); + status_ = Q_RET_HANDLED; break; } default: { @@ -298,6 +394,8 @@ Q_STATE_DEF(QHsmTst, s2) { //${SMs::QHsmTst::SM::s::s2} case Q_EXIT_SIG: { BSP_display("s2-EXIT;"); + // save deep history + hist_s2 = state(); status_ = Q_RET_HANDLED; break; } @@ -307,17 +405,10 @@ Q_STATE_DEF(QHsmTst, s2) { status_ = tran(&s211); break; } - //${SMs::QHsmTst::SM::s::s2::I} - case I_SIG: { - //${SMs::QHsmTst::SM::s::s2::I::[!m_foo]} - if (!m_foo) { - m_foo = true; - BSP_display("s2-I;"); - status_ = Q_RET_HANDLED; - } - else { - status_ = Q_RET_UNHANDLED; - } + //${SMs::QHsmTst::SM::s::s2::E} + case E_SIG: { + BSP_display("s2-E;"); + status_ = tran(&s22); break; } //${SMs::QHsmTst::SM::s::s2::F} @@ -326,10 +417,17 @@ Q_STATE_DEF(QHsmTst, s2) { status_ = tran(&s11); break; } - //${SMs::QHsmTst::SM::s::s2::C} - case C_SIG: { - BSP_display("s2-C;"); - status_ = tran(&s1); + //${SMs::QHsmTst::SM::s::s2::I} + case I_SIG: { + //${SMs::QHsmTst::SM::s::s2::I::[m_foo]} + if (m_foo) { + m_foo = 0U; + BSP_display("s2-I;"); + status_ = Q_RET_HANDLED; + } + else { + status_ = Q_RET_UNHANDLED; + } break; } default: { @@ -362,12 +460,6 @@ Q_STATE_DEF(QHsmTst, s21) { status_ = tran(&s211); break; } - //${SMs::QHsmTst::SM::s::s2::s21::G} - case G_SIG: { - BSP_display("s21-G;"); - status_ = tran(&s1); - break; - } //${SMs::QHsmTst::SM::s::s2::s21::A} case A_SIG: { BSP_display("s21-A;"); @@ -380,6 +472,25 @@ Q_STATE_DEF(QHsmTst, s21) { status_ = tran(&s211); break; } + //${SMs::QHsmTst::SM::s::s2::s21::D} + case D_SIG: { + //${SMs::QHsmTst::SM::s::s2::s21::D::[!m_foo]} + if (!m_foo) { + m_foo = 1U; + BSP_display("s21-D;"); + status_ = tran(&s2); + } + else { + status_ = Q_RET_UNHANDLED; + } + break; + } + //${SMs::QHsmTst::SM::s::s2::s21::G} + case G_SIG: { + BSP_display("s21-G->H*-s1;"); + status_ = tran_hist(hist_s1); + break; + } default: { status_ = super(&s2); break; @@ -404,20 +515,98 @@ Q_STATE_DEF(QHsmTst, s211) { status_ = Q_RET_HANDLED; break; } - //${SMs::QHsmTst::SM::s::s2::s21::s211::H} + //${SMs::QHsmTst::SM::s::s2::s21::s211::C} + case C_SIG: { + BSP_display("s211-C;"); + status_ = tran(&s212); + break; + } + default: { + status_ = super(&s21); + break; + } + } + return status_; +} + +//${SMs::QHsmTst::SM::s::s2::s21::s212} ...................................... +Q_STATE_DEF(QHsmTst, s212) { + QP::QState status_; + switch (e->sig) { + //${SMs::QHsmTst::SM::s::s2::s21::s212} + case Q_ENTRY_SIG: { + BSP_display("s212-ENTRY;"); + status_ = Q_RET_HANDLED; + break; + } + //${SMs::QHsmTst::SM::s::s2::s21::s212} + case Q_EXIT_SIG: { + BSP_display("s212-EXIT;"); + status_ = Q_RET_HANDLED; + break; + } + //${SMs::QHsmTst::SM::s::s2::s21::s212::H} case H_SIG: { - BSP_display("s211-H;"); + BSP_display("s212-H;"); status_ = tran(&s); break; } - //${SMs::QHsmTst::SM::s::s2::s21::s211::D} - case D_SIG: { - BSP_display("s211-D;"); - status_ = tran(&s21); + default: { + status_ = super(&s21); + break; + } + } + return status_; +} + +//${SMs::QHsmTst::SM::s::s2::s22} ............................................ +Q_STATE_DEF(QHsmTst, s22) { + QP::QState status_; + switch (e->sig) { + //${SMs::QHsmTst::SM::s::s2::s22} + case Q_ENTRY_SIG: { + BSP_display("s22-ENTRY;"); + status_ = Q_RET_HANDLED; + break; + } + //${SMs::QHsmTst::SM::s::s2::s22} + case Q_EXIT_SIG: { + BSP_display("s22-EXIT;"); + status_ = Q_RET_HANDLED; break; } default: { - status_ = super(&s21); + status_ = super(&s2); + break; + } + } + return status_; +} + +//${SMs::QHsmTst::SM::t} ..................................................... +Q_STATE_DEF(QHsmTst, t) { + QP::QState status_; + switch (e->sig) { + //${SMs::QHsmTst::SM::t} + case Q_ENTRY_SIG: { + BSP_display("t-ENTRY;"); + status_ = Q_RET_HANDLED; + break; + } + //${SMs::QHsmTst::SM::t} + case Q_EXIT_SIG: { + BSP_display("t-EXIT;"); + status_ = Q_RET_HANDLED; + break; + } + //${SMs::QHsmTst::SM::t::C} + case C_SIG: { + BSP_display("t-C->H-s;"); + status_ = tran_hist(hist_s); + break; + } + default: { + status_ = super(&top); break; } } @@ -438,6 +627,15 @@ bool QHsmTst_isIn(std::uint32_t const state_num) { case 11: stat = me->isIn(Q_STATE_CAST(&QHsmTst::s11)); break; + case 111: + stat = me->isIn(Q_STATE_CAST(&QHsmTst::s111)); + break; + case 112: + stat = me->isIn(Q_STATE_CAST(&QHsmTst::s112)); + break; + case 12: + stat = me->isIn(Q_STATE_CAST(&QHsmTst::s12)); + break; case 2: stat = me->isIn(Q_STATE_CAST(&QHsmTst::s2)); break; @@ -447,6 +645,12 @@ bool QHsmTst_isIn(std::uint32_t const state_num) { case 211: stat = me->isIn(Q_STATE_CAST(&QHsmTst::s211)); break; + case 212: + stat = me->isIn(Q_STATE_CAST(&QHsmTst::s212)); + break; + case 22: + stat = me->isIn(Q_STATE_CAST(&QHsmTst::s22)); + break; default: Q_ERROR(); } diff --git a/qutest/qhsmtst/src/qhsmtst.hpp b/qutest/qhsm/src/cut_qhsm.hpp similarity index 61% rename from qutest/qhsmtst/src/qhsmtst.hpp rename to qutest/qhsm/src/cut_qhsm.hpp index 4413d40..c137a69 100644 --- a/qutest/qhsmtst/src/qhsmtst.hpp +++ b/qutest/qhsm/src/cut_qhsm.hpp @@ -1,11 +1,15 @@ -//$file${.::qhsmtst.hpp} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +//$file${.::cut_qhsm.hpp} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv // -// Model: qhsmtst.qm -// File: ${.::qhsmtst.hpp} +// Model: qhsm.qm +// File: ${.::cut_qhsm.hpp} // -// This code has been generated by QM 5.3.0 . +// This code has been generated by QM 6.2.2 . // DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. // +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // SPDX-License-Identifier: GPL-3.0-or-later // // This generated code is open source software: you can redistribute it under @@ -18,18 +22,18 @@ // more details. // // NOTE: -// Alternatively, this generated code may be distributed under the terms -// of Quantum Leaps commercial licenses, which expressly supersede the GNU -// General Public License and are specifically designed for licensees -// interested in retaining the proprietary status of their code. +// Please contact Quantum Leaps for commercial licensing options, which +// expressly supersede the GNU General Public License and are specifically +// designed for licensees interested in retaining the proprietary status +// of the generated code. // // Contact information: // // // -//$endhead${.::qhsmtst.hpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -#ifndef QHSMTST_HPP_ -#define QHSMTST_HPP_ +//$endhead${.::cut_qhsm.hpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +#ifndef CUT_QHSM_HPP_ +#define CUT_QHSM_HPP_ namespace APP { @@ -43,8 +47,6 @@ enum QHsmTstSignals { G_SIG, H_SIG, I_SIG, - TERMINATE_SIG, - IGNORE_SIG, MAX_SIG }; @@ -58,4 +60,4 @@ void BSP_terminate(int16_t const result); } // namespace APP -#endif // QHSMTST_HPP_ +#endif // CUT_QHSM_HPP_ diff --git a/qutest/qhsm/src/qhsm.qm b/qutest/qhsm/src/qhsm.qm new file mode 100644 index 0000000..da5da6f --- /dev/null +++ b/qutest/qhsm/src/qhsm.qm @@ -0,0 +1,484 @@ + + + QHsmTst is a contrived state machine from Chapter 2 of the PSiCC2 book for testing all possible transition topologies with up to 4-levels of state nesting. + + + + + + + Test active object + + + + + + + : QHsm(&initial) + + + + + + m_foo = 0U; +BSP_display("top-INIT;"); + +QS_SIG_DICTIONARY(A_SIG, nullptr); +QS_SIG_DICTIONARY(B_SIG, nullptr); +QS_SIG_DICTIONARY(C_SIG, nullptr); +QS_SIG_DICTIONARY(D_SIG, nullptr); +QS_SIG_DICTIONARY(E_SIG, nullptr); +QS_SIG_DICTIONARY(F_SIG, nullptr); +QS_SIG_DICTIONARY(G_SIG, nullptr); +QS_SIG_DICTIONARY(H_SIG, nullptr); +QS_SIG_DICTIONARY(I_SIG, nullptr); + + + + + + + BSP_display("s-ENTRY;"); + BSP_display("s-EXIT;"); + + + BSP_display("s-INIT;"); + + + + + + + + + + + BSP_display("s-E;"); + + + + + + + BSP_display("s-I;"); + + + + + + + BSP_display("s-C;"); + + + + + + + BSP_display("s1-ENTRY;"); + BSP_display("s1-EXIT;"); + + + BSP_display("s1-INIT;"); + + + + + + + + + + + BSP_display("s1-E;"); + + + + + + + BSP_display("s1-F;"); + + + + + + + + + m_foo + m_foo = 0U; +BSP_display("s1-I;"); + + + + + + + + + + + BSP_display("s11-ENTRY;"); + BSP_display("s11-EXIT;"); + + + BSP_display("s11-INIT;"); + + + + + + + BSP_display("s11-A;"); + + + + + + + BSP_display("s11-B;"); + + + + + + + + + !m_foo + m_foo = 1U; +BSP_display("s11-D;"); + + + + + + + + + + + BSP_display("s11-G->H*-s2;"); + + + + + + + BSP_display("s111-ENTRY;"); + BSP_display("s111-EXIT;"); + + + BSP_display("s111-C;"); + + + + + + + + + + + + BSP_display("s112-ENTRY;"); + BSP_display("s112-EXIT;"); + + + BSP_display("s112-H;"); + + + + + + + + + + + + + + + + + BSP_display("s12-ENTRY;"); + BSP_display("s12-EXIT;"); + + + + + + + + + + + + + BSP_display("s2-ENTRY;"); + BSP_display("s2-EXIT;"); + + + BSP_display("s2-INIT;"); + + + + + + + + + + + BSP_display("s2-E;"); + + + + + + + BSP_display("s2-F;"); + + + + + + + + + m_foo + m_foo = 0U; +BSP_display("s2-I;"); + + + + + + + + + + + BSP_display("s21-ENTRY;"); + BSP_display("s21-EXIT;"); + + + BSP_display("s21-INIT;"); + + + + + + + BSP_display("s21-A;"); + + + + + + + BSP_display("s21-B;"); + + + + + + + + + !m_foo + m_foo = 1U; +BSP_display("s21-D;"); + + + + + + + + + + + BSP_display("s21-G->H*-s1;"); + + + + + + + BSP_display("s211-ENTRY;"); + BSP_display("s211-EXIT;"); + + + BSP_display("s211-C;"); + + + + + + + + + + + + BSP_display("s212-ENTRY;"); + BSP_display("s212-EXIT;"); + + + BSP_display("s212-H;"); + + + + + + + + + + + + + + + + + BSP_display("s22-ENTRY;"); + BSP_display("s22-EXIT;"); + + + + + + + + + + + + + + + + + + BSP_display("t-ENTRY;"); + BSP_display("t-EXIT;"); + + + BSP_display("t-C->H-s;"); + + + + + + + + + + + + + + + + + + #ifndef CUT_QHSM_HPP_ +#define CUT_QHSM_HPP_ + +namespace APP { + +enum QHsmTstSignals { + A_SIG = QP::Q_USER_SIG, + B_SIG, + C_SIG, + D_SIG, + E_SIG, + F_SIG, + G_SIG, + H_SIG, + I_SIG, + MAX_SIG +}; + +extern QP::QAsm * const the_sm; // opaque pointer to the test SM + +bool QHsmTst_isIn(std::uint32_t const state_num); + +// BSP functions to display a message and exit +void BSP_display(char const *msg); +void BSP_terminate(int16_t const result); + +} // namespace APP + +#endif // CUT_QHSM_HPP_ + + + + #include "qpcpp.hpp" // QP/C++ framework +#include "cut_qhsm.hpp" // Code Under Test (CUT) + +namespace { +Q_DEFINE_THIS_FILE +} + +namespace APP { + +$declare ${SMs::QHsmTst} + +static QHsmTst l_hsmtst; // the only instance of the QHsmTst class + +// global-scope definitions ----------------------------------------- +QP::QAsm * const the_sm = &l_hsmtst; // the opaque pointer + +$define ${SMs::QHsmTst} + +bool QHsmTst_isIn(std::uint32_t const state_num) { + QP::QHsm * const me = &l_hsmtst; + bool stat = false; + switch (state_num) { + case 0: + stat = me->isIn(Q_STATE_CAST(&QHsmTst::s)); + break; + case 1: + stat = me->isIn(Q_STATE_CAST(&QHsmTst::s1)); + break; + case 11: + stat = me->isIn(Q_STATE_CAST(&QHsmTst::s11)); + break; + case 111: + stat = me->isIn(Q_STATE_CAST(&QHsmTst::s111)); + break; + case 112: + stat = me->isIn(Q_STATE_CAST(&QHsmTst::s112)); + break; + case 12: + stat = me->isIn(Q_STATE_CAST(&QHsmTst::s12)); + break; + case 2: + stat = me->isIn(Q_STATE_CAST(&QHsmTst::s2)); + break; + case 21: + stat = me->isIn(Q_STATE_CAST(&QHsmTst::s21)); + break; + case 211: + stat = me->isIn(Q_STATE_CAST(&QHsmTst::s211)); + break; + case 212: + stat = me->isIn(Q_STATE_CAST(&QHsmTst::s212)); + break; + case 22: + stat = me->isIn(Q_STATE_CAST(&QHsmTst::s22)); + break; + default: + Q_ERROR(); + } + return stat; +} + +} // namespace APP + + + diff --git a/qutest/qhsmtst/test/Makefile b/qutest/qhsm/test/Makefile similarity index 96% rename from qutest/qhsmtst/test/Makefile rename to qutest/qhsm/test/Makefile index 8232004..bb51143 100644 --- a/qutest/qhsmtst/test/Makefile +++ b/qutest/qhsm/test/Makefile @@ -1,7 +1,7 @@ ############################################################################## # Product: Makefile for QUTEST-QP/C++ for Windows and POSIX *HOSTS* -# Last Updated for Version: 7.2.0 -# Date of the Last Update: 2022-12-21 +# Last Updated for Version: 7.4.0 +# Date of the Last Update: 2024-09-02 # # Q u a n t u m L e a P s # ------------------------ @@ -82,7 +82,7 @@ C_SRCS := # C++ source files... CPP_SRCS := \ - qhsmtst.cpp \ + cut_qhsm.cpp \ test_qhsm.cpp LIB_DIRS := @@ -122,6 +122,7 @@ LIBS += -lws2_32 else QP_PORT_DIR := $(QPCPP)/ports/posix-qutest +#QP_PORT_DIR := $(QPCPP)/ports/posix LIBS += -lpthread endif @@ -218,8 +219,14 @@ $(TARGET_EXE) : $(C_OBJS_EXT) $(CPP_OBJS_EXT) $(CPP) $(CPPFLAGS) $(QPCPP)/src/qs/qstamp.cpp -o $(BIN_DIR)/qstamp.o $(LINK) $(LINKFLAGS) $(LIB_DIRS) -o $@ $^ $(BIN_DIR)/qstamp.o $(LIBS) +ifdef GCOV run : $(TARGET_EXE) + -$(RM) $(BIN_DIR)/*.gcda $(QUTEST) -e$(TARGET_EXE) -q$(QSPY) -l$(LOG) -o$(OPT) -- $(TESTS) +else +run : $(TARGET_EXE) + $(QUTEST) -e$(TARGET_EXE) -q$(QSPY) -l$(LOG) -o$(OPT) -- $(TESTS) +endif $(BIN_DIR)/%.d : %.cpp $(CPP) -MM -MT $(@:.d=.o) $(CPPFLAGS) $< > $@ diff --git a/qutest/qhsm/test/gcov_qhsm.bat b/qutest/qhsm/test/gcov_qhsm.bat new file mode 100644 index 0000000..b08704e --- /dev/null +++ b/qutest/qhsm/test/gcov_qhsm.bat @@ -0,0 +1 @@ +gcov -f -o build qep_hsm.o diff --git a/qutest/qhsmtst/test/make_nucleo-l053r8 b/qutest/qhsm/test/make_nucleo-l053r8 similarity index 99% rename from qutest/qhsmtst/test/make_nucleo-l053r8 rename to qutest/qhsm/test/make_nucleo-l053r8 index b7765fb..6eb5e6d 100644 --- a/qutest/qhsmtst/test/make_nucleo-l053r8 +++ b/qutest/qhsm/test/make_nucleo-l053r8 @@ -1,7 +1,7 @@ ############################################################################## # Product: Makefile for QP/C on NUCLEO-L053R8 board, QUTEST, GNU-ARM -# Last Updated for Version: 7.3.1 -# Date of the Last Update: 2023-11-13 +# Last Updated for Version: 7.4.0 +# Date of the Last Update: 2024-09-04 # # Q u a n t u m L e a P s # ------------------------ @@ -103,7 +103,7 @@ C_SRCS := \ # C++ source files CPP_SRCS := \ - qhsmtst.cpp \ + cut_qhsm.cpp \ test_qhsm.cpp OUTPUT := $(PROJECT) diff --git a/qutest/qhsmtst/test/make_tm4c123 b/qutest/qhsm/test/make_tm4c123 similarity index 99% rename from qutest/qhsmtst/test/make_tm4c123 rename to qutest/qhsm/test/make_tm4c123 index 1b63189..aa940a6 100644 --- a/qutest/qhsmtst/test/make_tm4c123 +++ b/qutest/qhsm/test/make_tm4c123 @@ -1,7 +1,7 @@ ############################################################################## # Product: Makefile for QP/C++ on TM4C123, QUTEST, GNU-ARM -# Last Updated for Version: 7.2.0 -# Date of the Last Update: 2022-12-21 +# Last Updated for Version: 7.4.0 +# Date of the Last Update: 2024-09-04 # # Q u a n t u m L e a P s # ------------------------ @@ -103,7 +103,7 @@ C_SRCS := \ # C++ source files CPP_SRCS := \ - qhsmtst.cpp \ + cut_qhsm.cpp \ test_qhsm.cpp OUTPUT := $(PROJECT) diff --git a/qutest/qhsm/test/qep_hsm.cpp.gcov b/qutest/qhsm/test/qep_hsm.cpp.gcov new file mode 100644 index 0000000..77c00a6 --- /dev/null +++ b/qutest/qhsm/test/qep_hsm.cpp.gcov @@ -0,0 +1,677 @@ + -: 0:Source:../../../../src/qf/qep_hsm.cpp + -: 0:Graph:build/qep_hsm.gcno + -: 0:Data:build/qep_hsm.gcda + -: 0:Runs:3 + -: 1://$file${src::qf::qep_hsm.cpp} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 2:// + -: 3:// Model: qpcpp.qm + -: 4:// File: ${src::qf::qep_hsm.cpp} + -: 5:// + -: 6:// This code has been generated by QM 6.1.1 . + -: 7:// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. + -: 8:// + -: 9:// This code is covered by the following QP license: + -: 10:// License # : LicenseRef-QL-dual + -: 11:// Issued to : Any user of the QP/C++ real-time embedded framework + -: 12:// Framework(s) : qpcpp + -: 13:// Support ends : 2024-12-31 + -: 14:// License scope: + -: 15:// + -: 16:// Copyright (C) 2005 Quantum Leaps, LLC . + -: 17:// + -: 18:// Q u a n t u m L e a P s + -: 19:// ------------------------ + -: 20:// Modern Embedded Software + -: 21:// + -: 22:// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial + -: 23:// + -: 24:// This software is dual-licensed under the terms of the open source GNU + -: 25:// General Public License version 3 (or any later version), or alternatively, + -: 26:// under the terms of one of the closed source Quantum Leaps commercial + -: 27:// licenses. + -: 28:// + -: 29:// The terms of the open source GNU General Public License version 3 + -: 30:// can be found at: + -: 31:// + -: 32:// The terms of the closed source Quantum Leaps commercial licenses + -: 33:// can be found at: + -: 34:// + -: 35:// Redistributions in source code must retain this top-level comment block. + -: 36:// Plagiarizing this software to sidestep the license obligations is illegal. + -: 37:// + -: 38:// Contact information: + -: 39:// + -: 40:// + -: 41:// + -: 42://$endhead${src::qf::qep_hsm.cpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 43:#define QP_IMPL // this is QP implementation + -: 44:#include "qp_port.hpp" // QP port + -: 45:#include "qp_pkg.hpp" // QP package-scope interface + -: 46:#include "qsafe.h" // QP Functional Safety (FuSa) Subsystem + -: 47:#ifdef Q_SPY // QS software tracing enabled? + -: 48: #include "qs_port.hpp" // QS port + -: 49: #include "qs_pkg.hpp" // QS facilities for pre-defined trace records + -: 50:#else + -: 51: #include "qs_dummy.hpp" // disable the QS software tracing + -: 52:#endif // Q_SPY + -: 53: + -: 54://============================================================================ + -: 55://! @cond INTERNAL + -: 56: + -: 57:// unnamed namespace for local definitions with internal linkage + -: 58:namespace { + -: 59:Q_DEFINE_THIS_MODULE("qep_hsm") + -: 60: + -: 61:// immutable events corresponding to the reserved signals. + -: 62:static QP::QEvt const l_reservedEvt_[4] { + -: 63: QP::QEvt(static_cast(QP::QHsm::Q_EMPTY_SIG)), + -: 64: QP::QEvt(static_cast(QP::QHsm::Q_ENTRY_SIG)), + -: 65: QP::QEvt(static_cast(QP::QHsm::Q_EXIT_SIG)), + -: 66: QP::QEvt(static_cast(QP::QHsm::Q_INIT_SIG)) + -: 67:}; + -: 68: + -: 69:} // unnamed namespace + -: 70: + -: 71:// helper macro to handle reserved event in an QHsm + -: 72:#define QHSM_RESERVED_EVT_(state_, sig_) \ + -: 73: ((*(state_))(this, &l_reservedEvt_[(sig_)])) + -: 74: + -: 75:// helper macro to trace state entry + -: 76:#define QS_STATE_ENTRY_(state_, qsId_) \ + -: 77: QS_CRIT_ENTRY(); \ + -: 78: QS_MEM_SYS(); \ + -: 79: QS_BEGIN_PRE_(QS_QEP_STATE_ENTRY, (qsId_)) \ + -: 80: QS_OBJ_PRE_(this); \ + -: 81: QS_FUN_PRE_(state_); \ + -: 82: QS_END_PRE_() \ + -: 83: QS_MEM_APP(); \ + -: 84: QS_CRIT_EXIT() + -: 85: + -: 86:// helper macro to trace state exit + -: 87:#define QS_STATE_EXIT_(state_, qsId_) \ + -: 88: QS_CRIT_ENTRY(); \ + -: 89: QS_MEM_SYS(); \ + -: 90: QS_BEGIN_PRE_(QS_QEP_STATE_EXIT, (qsId_)) \ + -: 91: QS_OBJ_PRE_(this); \ + -: 92: QS_FUN_PRE_(state_); \ + -: 93: QS_END_PRE_() \ + -: 94: QS_MEM_APP(); \ + -: 95: QS_CRIT_EXIT() + -: 96: + -: 97://! @endcond + -: 98://============================================================================ + -: 99: + -: 100://$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 101:// Check for the minimum required QP version + -: 102:#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) + -: 103:#error qpcpp version 7.3.0 or higher required + -: 104:#endif + -: 105://$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 106: + -: 107://$define${QEP::versionStr[]} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 108:namespace QP { + -: 109: + -: 110:} // namespace QP + -: 111://$enddef${QEP::versionStr[]} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 112: + -: 113://$define${QEP::QHsm} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 114:namespace QP { + -: 115: + -: 116://${QEP::QHsm} ............................................................... + -: 117: + -: 118://${QEP::QHsm::QHsm} ......................................................... + 3: 119:QHsm::QHsm(QStateHandler const initial) noexcept + 3: 120:: QAsm() + -: 121:{ + 3: 122: m_state.fun = Q_STATE_CAST(&top); + 3: 123: m_temp.fun = initial; + 3: 124:} + -: 125: + -: 126://${QEP::QHsm::init} ......................................................... + 3: 127:void QHsm::init( + -: 128: void const * const e, + -: 129: std::uint_fast8_t const qsId) + -: 130:{ + -: 131: QF_CRIT_STAT + -: 132: + -: 133: #ifdef Q_SPY + 3: 134: QS_CRIT_ENTRY(); + 3: 135: QS_MEM_SYS(); + 3: 136: if ((QS::priv_.flags & 0x01U) == 0U) { + 3: 137: QS::priv_.flags |= 0x01U; + 3: 138: QS_MEM_APP(); + 3: 139: QS_CRIT_EXIT(); + 3: 140: QS_FUN_DICTIONARY(&QP::QHsm::top); + -: 141: } + -: 142: else { + #####: 143: QS_MEM_APP(); + #####: 144: QS_CRIT_EXIT(); + -: 145: } + -: 146: #else + -: 147: Q_UNUSED_PAR(qsId); + -: 148: #endif + -: 149: + 3: 150: QStateHandler t = m_state.fun; + -: 151: + 3: 152: QF_CRIT_ENTRY(); + 3*: 153: Q_REQUIRE_INCRIT(200, (m_temp.fun != nullptr) + -: 154: && (t == Q_STATE_CAST(&top))); + 3: 155: QF_CRIT_EXIT(); + -: 156: + -: 157: // execute the top-most initial tran. + 3: 158: QState r = (*m_temp.fun)(this, Q_EVT_CAST(QEvt)); + -: 159: + 3: 160: QF_CRIT_ENTRY(); + -: 161: // the top-most initial tran. must be taken + 3*: 162: Q_ASSERT_INCRIT(210, r == Q_RET_TRAN); + -: 163: + 3: 164: QS_MEM_SYS(); + 3: 165: QS_BEGIN_PRE_(QS_QEP_STATE_INIT, qsId) + 3: 166: QS_OBJ_PRE_(this); // this state machine object + 3: 167: QS_FUN_PRE_(t); // the source state + 3: 168: QS_FUN_PRE_(m_temp.fun); // the target of the initial tran. + 3: 169: QS_END_PRE_() + 3: 170: QS_MEM_APP(); + -: 171: + 3: 172: QF_CRIT_EXIT(); + -: 173: + -: 174: // drill down into the state hierarchy with initial transitions... + 3: 175: std::int_fast8_t limit = MAX_NEST_DEPTH_; // loop hard limit + 6: 176: do { + 6: 177: QStateHandler path[MAX_NEST_DEPTH_]; // tran entry path array + 6: 178: std::int_fast8_t ip = 0; // tran entry path index + -: 179: + 6: 180: path[0] = m_temp.fun; + 6: 181: static_cast(QHSM_RESERVED_EVT_(m_temp.fun, Q_EMPTY_SIG)); + 12: 182: while (m_temp.fun != t) { + 6: 183: ++ip; + 6: 184: path[ip] = m_temp.fun; + 6: 185: static_cast(QHSM_RESERVED_EVT_(m_temp.fun, Q_EMPTY_SIG)); + -: 186: } + 6: 187: QF_CRIT_ENTRY(); + -: 188: // The initial transition source state must be reached + -: 189: // Too many state nesting levels or "malformed" HSM. + 6*: 190: Q_ASSERT_INCRIT(220, m_temp.fun == t); + 6: 191: QF_CRIT_EXIT(); + -: 192: + 6: 193: m_temp.fun = path[0]; + -: 194: + -: 195: // retrace the entry path in reverse (desired) order... + 12: 196: do { + -: 197: // enter path[ip] + 12: 198: if (QHSM_RESERVED_EVT_(path[ip], Q_ENTRY_SIG) + -: 199: == Q_RET_HANDLED) + -: 200: { + 12: 201: QS_STATE_ENTRY_(path[ip], qsId); + -: 202: } + 12: 203: --ip; + 12: 204: } while (ip >= 0); + -: 205: + 6: 206: t = path[0]; // current state becomes the new source + -: 207: + 6: 208: r = QHSM_RESERVED_EVT_(t, Q_INIT_SIG); // execute initial tran. + -: 209: + -: 210: #ifdef Q_SPY + 6: 211: if (r == Q_RET_TRAN) { + 3: 212: QS_CRIT_ENTRY(); + 3: 213: QS_MEM_SYS(); + 3: 214: QS_BEGIN_PRE_(QS_QEP_STATE_INIT, qsId) + 3: 215: QS_OBJ_PRE_(this); // this state machine object + 3: 216: QS_FUN_PRE_(t); // the source state + 3: 217: QS_FUN_PRE_(m_temp.fun); // the target of the initial tran. + 3: 218: QS_END_PRE_() + 3: 219: QS_MEM_APP(); + 3: 220: QS_CRIT_EXIT(); + -: 221: } + -: 222: #endif // Q_SPY + -: 223: + 6: 224: --limit; + 6: 225: } while ((r == Q_RET_TRAN) && (limit > 0)); + -: 226: + 3: 227: QF_CRIT_ENTRY(); + -: 228: // Loop limit must not be reached. + -: 229: // Too many state nesting levels or likely "malformed" HSM + 3*: 230: Q_ENSURE_INCRIT(290, limit > 0); + -: 231: + 3: 232: QS_MEM_SYS(); + 3: 233: QS_BEGIN_PRE_(QS_QEP_INIT_TRAN, qsId) + 3: 234: QS_TIME_PRE_(); // time stamp + 3: 235: QS_OBJ_PRE_(this); // this state machine object + 3: 236: QS_FUN_PRE_(t); // the new active state + 3: 237: QS_END_PRE_() + 3: 238: QS_MEM_APP(); + -: 239: + 3: 240: QF_CRIT_EXIT(); + -: 241: + 3: 242: m_state.fun = t; // change the current active state + -: 243: #ifndef Q_UNSAFE + 3: 244: m_temp.uint = ~m_state.uint; + -: 245: #endif + 3: 246:} + -: 247: + -: 248://${QEP::QHsm::dispatch} ..................................................... + 18: 249:void QHsm::dispatch( + -: 250: QEvt const * const e, + -: 251: std::uint_fast8_t const qsId) + -: 252:{ + -: 253: #ifndef Q_SPY + -: 254: Q_UNUSED_PAR(qsId); + -: 255: #endif + -: 256: + 18: 257: QStateHandler s = m_state.fun; + 18: 258: QStateHandler t = s; + -: 259: QF_CRIT_STAT + -: 260: + 18: 261: QF_CRIT_ENTRY(); + 18*: 262: Q_REQUIRE_INCRIT(300, (s != Q_STATE_CAST(0)) + -: 263: && (m_state.uint == static_cast(~m_temp.uint))); + 18*: 264: Q_REQUIRE_INCRIT(302, QEvt::verify_(e)); + -: 265: + 18: 266: QS_MEM_SYS(); + 18: 267: QS_BEGIN_PRE_(QS_QEP_DISPATCH, qsId) + 18: 268: QS_TIME_PRE_(); // time stamp + 18: 269: QS_SIG_PRE_(e->sig); // the signal of the event + 18: 270: QS_OBJ_PRE_(this); // this state machine object + 18: 271: QS_FUN_PRE_(s); // the current state + 18: 272: QS_END_PRE_() + 18: 273: QS_MEM_APP(); + -: 274: + 18: 275: QF_CRIT_EXIT(); + -: 276: + -: 277: // process the event hierarchically... + 18: 278: QState r; + 18: 279: m_temp.fun = s; + 18: 280: std::int_fast8_t limit = MAX_NEST_DEPTH_; // loop hard limit + 43: 281: do { + 43: 282: s = m_temp.fun; + 43: 283: r = (*s)(this, e); // invoke state handler s + -: 284: + 43: 285: if (r == Q_RET_UNHANDLED) { // unhandled due to a guard? + -: 286: + 2: 287: QS_CRIT_ENTRY(); + 2: 288: QS_MEM_SYS(); + 2: 289: QS_BEGIN_PRE_(QS_QEP_UNHANDLED, qsId) + 2: 290: QS_SIG_PRE_(e->sig); // the signal of the event + 2: 291: QS_OBJ_PRE_(this); // this state machine object + 2: 292: QS_FUN_PRE_(s); // the current state + 2: 293: QS_END_PRE_() + 2: 294: QS_MEM_APP(); + 2: 295: QS_CRIT_EXIT(); + -: 296: + 2: 297: r = QHSM_RESERVED_EVT_(s, Q_EMPTY_SIG); // superstate of s + -: 298: } + -: 299: + 43: 300: --limit; + 43: 301: } while ((r == Q_RET_SUPER) && (limit > 0)); + -: 302: + 18: 303: QF_CRIT_ENTRY(); + 18*: 304: Q_ASSERT_INCRIT(310, limit > 0); + 18: 305: QF_CRIT_EXIT(); + -: 306: + 18: 307: if (r >= Q_RET_TRAN) { // regular tran. taken? + 14: 308: QStateHandler path[MAX_NEST_DEPTH_]; + -: 309: + 14: 310: path[0] = m_temp.fun; // tran. target + 14: 311: path[1] = t; // current state + 14: 312: path[2] = s; // tran. source + -: 313: + -: 314: // exit current state to tran. source s... + 14: 315: limit = MAX_NEST_DEPTH_; // loop hard limit + 26: 316: for (; (t != s) && (limit > 0); t = m_temp.fun) { + -: 317: // exit from t + 12: 318: if (QHSM_RESERVED_EVT_(t, Q_EXIT_SIG) == Q_RET_HANDLED) { + 12: 319: QS_STATE_EXIT_(t, qsId); + -: 320: // find superstate of t + 12: 321: static_cast(QHSM_RESERVED_EVT_(t, Q_EMPTY_SIG)); + -: 322: } + 12: 323: --limit; + -: 324: } + 14: 325: QF_CRIT_ENTRY(); + 14*: 326: Q_ASSERT_INCRIT(320, limit > 0); + 14: 327: QF_CRIT_EXIT(); + -: 328: + 14: 329: std::int_fast8_t ip = hsm_tran(path, qsId); // take the tran. + -: 330: + -: 331: #ifdef Q_SPY + 14: 332: if (r == Q_RET_TRAN_HIST) { + 3: 333: QS_CRIT_ENTRY(); + 3: 334: QS_MEM_SYS(); + 3: 335: QS_BEGIN_PRE_(QS_QEP_TRAN_HIST, qsId) + 3: 336: QS_OBJ_PRE_(this); // this state machine object + 3: 337: QS_FUN_PRE_(t); // the source of the transition + 3: 338: QS_FUN_PRE_(path[0]); // the target of the tran. to history + 3: 339: QS_END_PRE_() + 3: 340: QS_MEM_APP(); + 3: 341: QS_CRIT_EXIT(); + -: 342: } + -: 343: #endif // Q_SPY + -: 344: + -: 345: // execute state entry actions in the desired order... + 31: 346: for (; ip >= 0; --ip) { + -: 347: // enter path[ip] + 17: 348: if (QHSM_RESERVED_EVT_(path[ip], Q_ENTRY_SIG) + -: 349: == Q_RET_HANDLED) + -: 350: { + 17: 351: QS_STATE_ENTRY_(path[ip], qsId); + -: 352: } + -: 353: } + 14: 354: t = path[0]; // stick the target into register + 14: 355: m_temp.fun = t; // update the next state + -: 356: + -: 357: // drill into the target hierarchy... + 21: 358: while (QHSM_RESERVED_EVT_(t, Q_INIT_SIG) == Q_RET_TRAN) { + -: 359: + 7: 360: QS_CRIT_ENTRY(); + 7: 361: QS_MEM_SYS(); + 7: 362: QS_BEGIN_PRE_(QS_QEP_STATE_INIT, qsId) + 7: 363: QS_OBJ_PRE_(this); // this state machine object + 7: 364: QS_FUN_PRE_(t); // the source (pseudo)state + 7: 365: QS_FUN_PRE_(m_temp.fun); // the target of the tran. + 7: 366: QS_END_PRE_() + 7: 367: QS_MEM_APP(); + 7: 368: QS_CRIT_EXIT(); + -: 369: + 7: 370: ip = 0; + 7: 371: path[0] = m_temp.fun; + -: 372: + -: 373: // find superstate + 7: 374: static_cast(QHSM_RESERVED_EVT_(m_temp.fun, Q_EMPTY_SIG)); + -: 375: + 11: 376: while ((m_temp.fun != t) && (ip < (MAX_NEST_DEPTH_ - 1))) { + 4: 377: ++ip; + 4: 378: path[ip] = m_temp.fun; + -: 379: // find superstate + 4: 380: static_cast( + 4: 381: QHSM_RESERVED_EVT_(m_temp.fun, Q_EMPTY_SIG)); + -: 382: } + 7: 383: QF_CRIT_ENTRY(); + -: 384: // The initial transition source state must be reached. + -: 385: // Too many state nesting levels or "malformed" HSM. + 7*: 386: Q_ASSERT_INCRIT(330, m_temp.fun == t); + 7: 387: QF_CRIT_EXIT(); + -: 388: + 7: 389: m_temp.fun = path[0]; + -: 390: + -: 391: // retrace the entry path in reverse (correct) order... + 11: 392: do { + -: 393: // enter path[ip] + 11: 394: if (QHSM_RESERVED_EVT_(path[ip], Q_ENTRY_SIG) + -: 395: == Q_RET_HANDLED) + -: 396: { + 11: 397: QS_STATE_ENTRY_(path[ip], qsId); + -: 398: } + 11: 399: --ip; + 11: 400: } while (ip >= 0); + -: 401: + 7: 402: t = path[0]; // current state becomes the new source + -: 403: } + -: 404: + 14: 405: QS_CRIT_ENTRY(); + 14: 406: QS_MEM_SYS(); + 14: 407: QS_BEGIN_PRE_(QS_QEP_TRAN, qsId) + 14: 408: QS_TIME_PRE_(); // time stamp + 14: 409: QS_SIG_PRE_(e->sig); // the signal of the event + 14: 410: QS_OBJ_PRE_(this); // this state machine object + 14: 411: QS_FUN_PRE_(s); // the source of the tran. + 14: 412: QS_FUN_PRE_(t); // the new active state + 14: 413: QS_END_PRE_() + 14: 414: QS_MEM_APP(); + 14: 415: QS_CRIT_EXIT(); + -: 416: } + -: 417: + -: 418: #ifdef Q_SPY + 4: 419: else if (r == Q_RET_HANDLED) { + 2: 420: QS_CRIT_ENTRY(); + 2: 421: QS_MEM_SYS(); + 2: 422: QS_BEGIN_PRE_(QS_QEP_INTERN_TRAN, qsId) + 2: 423: QS_TIME_PRE_(); // time stamp + 2: 424: QS_SIG_PRE_(e->sig); // the signal of the event + 2: 425: QS_OBJ_PRE_(this); // this state machine object + 2: 426: QS_FUN_PRE_(s); // the source state + 2: 427: QS_END_PRE_() + 2: 428: QS_MEM_APP(); + 2: 429: QS_CRIT_EXIT(); + -: 430: } + -: 431: else { + 2: 432: QS_CRIT_ENTRY(); + 2: 433: QS_MEM_SYS(); + 2: 434: QS_BEGIN_PRE_(QS_QEP_IGNORED, qsId) + 2: 435: QS_TIME_PRE_(); // time stamp + 2: 436: QS_SIG_PRE_(e->sig); // the signal of the event + 2: 437: QS_OBJ_PRE_(this); // this state machine object + 2: 438: QS_FUN_PRE_(m_state.fun); // the current state + 2: 439: QS_END_PRE_() + 2: 440: QS_MEM_APP(); + 2: 441: QS_CRIT_EXIT(); + -: 442: } + -: 443: #endif // Q_SPY + -: 444: + 18: 445: m_state.fun = t; // change the current active state + -: 446: #ifndef Q_UNSAFE + 18: 447: m_temp.uint = ~m_state.uint; + -: 448: #endif + 18: 449:} + -: 450: + -: 451://${QEP::QHsm::isIn} ......................................................... + 5: 452:bool QHsm::isIn(QStateHandler const state) noexcept { + -: 453: QF_CRIT_STAT + 5: 454: QF_CRIT_ENTRY(); + 5*: 455: Q_REQUIRE_INCRIT(602, m_state.uint + -: 456: == static_cast(~m_temp.uint)); + 5: 457: QF_CRIT_EXIT(); + -: 458: + 5: 459: bool inState = false; // assume that this HSM is not in 'state' + -: 460: + -: 461: // scan the state hierarchy bottom-up + 5: 462: QStateHandler s = m_state.fun; + 5: 463: std::int_fast8_t limit = MAX_NEST_DEPTH_ + 1; // loop hard limit + 5: 464: QState r = Q_RET_SUPER; + 13: 465: for (; (r != Q_RET_IGNORED) && (limit > 0); --limit) { + 12: 466: if (s == state) { // do the states match? + -: 467: inState = true; // 'true' means that match found + -: 468: break; // break out of the for-loop + -: 469: } + -: 470: else { + 8: 471: r = QHSM_RESERVED_EVT_(s, Q_EMPTY_SIG); + 8: 472: s = m_temp.fun; + -: 473: } + -: 474: } + -: 475: + 5: 476: QF_CRIT_ENTRY(); + 5*: 477: Q_ENSURE_INCRIT(690, limit > 0); + 5: 478: QF_CRIT_EXIT(); + -: 479: + -: 480: #ifndef Q_UNSAFE + 5: 481: m_temp.uint = ~m_state.uint; + -: 482: #endif + -: 483: + 5: 484: return inState; // return the status + -: 485:} + -: 486: + -: 487://${QEP::QHsm::childState} ................................................... + 1: 488:QStateHandler QHsm::childState(QStateHandler const parent) noexcept { + 1: 489: QStateHandler child = m_state.fun; // start with the current state + 1: 490: bool isFound = false; // start with the child not found + -: 491: + -: 492: // establish stable state configuration + 1: 493: m_temp.fun = child; + 4: 494: QState r; + 4: 495: do { + -: 496: // is this the parent of the current child? + 4: 497: if (m_temp.fun == parent) { + -: 498: isFound = true; // child is found + -: 499: r = Q_RET_IGNORED; // break out of the loop + -: 500: } + -: 501: else { + 3: 502: child = m_temp.fun; + 3: 503: r = QHSM_RESERVED_EVT_(m_temp.fun, Q_EMPTY_SIG); + -: 504: } + 4: 505: } while (r != Q_RET_IGNORED); // QHsm::top() state not reached + -: 506: + -: 507: #ifndef Q_UNSAFE + 1: 508: m_temp.uint = ~m_state.uint; + -: 509: #endif + -: 510: + -: 511: QF_CRIT_STAT + 1: 512: QF_CRIT_ENTRY(); + 1*: 513: Q_ASSERT_INCRIT(890, isFound); + 1: 514: QF_CRIT_EXIT(); + -: 515: + 1: 516: return child; // return the child + -: 517:} + -: 518: + -: 519://${QEP::QHsm::hsm_tran} ..................................................... + 14: 520:std::int_fast8_t QHsm::hsm_tran( + -: 521: QStateHandler (&path)[MAX_NEST_DEPTH_], + -: 522: std::uint_fast8_t const qsId) + -: 523:{ + -: 524: #ifndef Q_SPY + -: 525: Q_UNUSED_PAR(qsId); + -: 526: #endif + -: 527: + 14: 528: std::int_fast8_t ip = -1; // tran. entry path index + 14: 529: QStateHandler t = path[0]; + 14: 530: QStateHandler const s = path[2]; + -: 531: QF_CRIT_STAT + -: 532: + -: 533: // (a) check source==target (tran. to self)... + 14: 534: if (s == t) { + -: 535: // exit source s + 1: 536: if (QHSM_RESERVED_EVT_(s, Q_EXIT_SIG) == Q_RET_HANDLED) { + 1: 537: QS_STATE_EXIT_(s, qsId); + -: 538: } + -: 539: ip = 0; // enter the target + -: 540: } + -: 541: else { + -: 542: // find superstate of target + 13: 543: static_cast(QHSM_RESERVED_EVT_(t, Q_EMPTY_SIG)); + -: 544: + 13: 545: t = m_temp.fun; + -: 546: + -: 547: // (b) check source==target->super... + 13: 548: if (s == t) { + -: 549: ip = 0; // enter the target + -: 550: } + -: 551: else { + -: 552: // find superstate of src + 11: 553: static_cast(QHSM_RESERVED_EVT_(s, Q_EMPTY_SIG)); + -: 554: + -: 555: // (c) check source->super==target->super... + 11: 556: if (m_temp.fun == t) { + -: 557: // exit source s + 4: 558: if (QHSM_RESERVED_EVT_(s, Q_EXIT_SIG) == Q_RET_HANDLED) { + 4: 559: QS_STATE_EXIT_(s, qsId); + -: 560: } + -: 561: ip = 0; // enter the target + -: 562: } + -: 563: else { + -: 564: // (d) check source->super==target... + 7: 565: if (m_temp.fun == path[0]) { + -: 566: // exit source s + 2: 567: if (QHSM_RESERVED_EVT_(s, Q_EXIT_SIG) == Q_RET_HANDLED) { + 2: 568: QS_STATE_EXIT_(s, qsId); + -: 569: } + -: 570: } + -: 571: else { + -: 572: // (e) check rest of source==target->super->super.. + -: 573: // and store the entry path along the way + 5: 574: std::int_fast8_t iq = 0; // indicate that LCA was found + 5: 575: ip = 1; // enter target and its superstate + 5: 576: path[1] = t; // save the superstate of target + 5: 577: t = m_temp.fun; // save source->super + -: 578: + -: 579: // find target->super->super... + 5: 580: QState r = QHSM_RESERVED_EVT_(path[1], Q_EMPTY_SIG); + 14: 581: while ((r == Q_RET_SUPER) + 14: 582: && (ip < (MAX_NEST_DEPTH_ - 1))) + -: 583: { + 9: 584: ++ip; + 9: 585: path[ip] = m_temp.fun; // store the entry path + 9: 586: if (m_temp.fun == s) { // is it the source? + -: 587: iq = 1; // indicate that the LCA found + -: 588: --ip; // do not enter the source + -: 589: r = Q_RET_HANDLED; // terminate the loop + -: 590: } + -: 591: else { // it is not the source, keep going up + 9: 592: r = QHSM_RESERVED_EVT_(m_temp.fun, Q_EMPTY_SIG); + -: 593: } + -: 594: } + 5: 595: QF_CRIT_ENTRY(); + -: 596: // Tran. source must be found within the nesting depth + -: 597: // Too many state nesting levels or "malformed" HSM. + 5*: 598: Q_ASSERT_INCRIT(510, r != Q_RET_SUPER); + 5: 599: QF_CRIT_EXIT(); + -: 600: + -: 601: // the LCA not found yet? + 5: 602: if (iq == 0) { + -: 603: // exit source s + 5: 604: if (QHSM_RESERVED_EVT_(s, Q_EXIT_SIG) + -: 605: == Q_RET_HANDLED) + -: 606: { + 5: 607: QS_STATE_EXIT_(s, qsId); + -: 608: } + -: 609: + -: 610: // (f) check the rest of source->super + -: 611: // == target->super->super... + 5: 612: iq = ip; + 5: 613: r = Q_RET_IGNORED; // indicate that the LCA NOT found + 15: 614: do { + 15: 615: if (t == path[iq]) { // is this the LCA? + 2: 616: r = Q_RET_HANDLED; // indicate the LCA found + 2: 617: ip = iq - 1; // do not enter the LCA + 2: 618: iq = -1; // cause termination of the loop + -: 619: } + -: 620: else { + 13: 621: --iq; // try lower superstate of target + -: 622: } + 15: 623: } while (iq >= 0); + -: 624: + -: 625: // the LCA not found yet? + 5: 626: if (r != Q_RET_HANDLED) { + -: 627: // (g) check each source->super->... + -: 628: // for each target->super... + -: 629: r = Q_RET_IGNORED; // keep looping + -: 630: std::int_fast8_t limit = MAX_NEST_DEPTH_; + 4: 631: do { + -: 632: // exit from t + 4: 633: if (QHSM_RESERVED_EVT_(t, Q_EXIT_SIG) + -: 634: == Q_RET_HANDLED) + -: 635: { + 4: 636: QS_STATE_EXIT_(t, qsId); + -: 637: // find superstate of t + 4: 638: static_cast( + 4: 639: QHSM_RESERVED_EVT_(t, Q_EMPTY_SIG)); + -: 640: } + 4: 641: t = m_temp.fun; // set to super of t + 4: 642: iq = ip; + 8: 643: do { + -: 644: // is this the LCA? + 8: 645: if (t == path[iq]) { + 3: 646: ip = iq - 1; // do not enter the LCA + 3: 647: iq = -1; // break out of inner loop + 3: 648: r = Q_RET_HANDLED; // break outer loop + -: 649: } + -: 650: else { + 5: 651: --iq; + -: 652: } + 8: 653: } while (iq >= 0); + -: 654: + 4: 655: --limit; + 4: 656: } while ((r != Q_RET_HANDLED) && (limit > 0)); + 3: 657: QF_CRIT_ENTRY(); + 3*: 658: Q_ASSERT_INCRIT(530, limit > 0); + 3: 659: QF_CRIT_EXIT(); + -: 660: } + -: 661: } + -: 662: } + -: 663: } + -: 664: } + -: 665: } + 14: 666: QF_CRIT_ENTRY(); + 14*: 667: Q_ENSURE_INCRIT(590, ip < MAX_NEST_DEPTH_); + 14: 668: QF_CRIT_EXIT(); + 14: 669: return ip; + -: 670:} + -: 671: + -: 672:} // namespace QP + -: 673://$enddef${QEP::QHsm} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/qutest/qhsm/test/qp.hpp.gcov b/qutest/qhsm/test/qp.hpp.gcov new file mode 100644 index 0000000..3a9266c --- /dev/null +++ b/qutest/qhsm/test/qp.hpp.gcov @@ -0,0 +1,1284 @@ + -: 0:Source:../../../../include/qp.hpp + -: 0:Graph:build/qep_hsm.gcno + -: 0:Data:build/qep_hsm.gcda + -: 0:Runs:3 + -: 1://$file${include::qp.hpp} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 2:// + -: 3:// Model: qpcpp.qm + -: 4:// File: ${include::qp.hpp} + -: 5:// + -: 6:// This code has been generated by QM 6.1.1 . + -: 7:// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. + -: 8:// + -: 9:// This code is covered by the following QP license: + -: 10:// License # : LicenseRef-QL-dual + -: 11:// Issued to : Any user of the QP/C++ real-time embedded framework + -: 12:// Framework(s) : qpcpp + -: 13:// Support ends : 2024-12-31 + -: 14:// License scope: + -: 15:// + -: 16:// Copyright (C) 2005 Quantum Leaps, LLC . + -: 17:// + -: 18:// Q u a n t u m L e a P s + -: 19:// ------------------------ + -: 20:// Modern Embedded Software + -: 21:// + -: 22:// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial + -: 23:// + -: 24:// This software is dual-licensed under the terms of the open source GNU + -: 25:// General Public License version 3 (or any later version), or alternatively, + -: 26:// under the terms of one of the closed source Quantum Leaps commercial + -: 27:// licenses. + -: 28:// + -: 29:// The terms of the open source GNU General Public License version 3 + -: 30:// can be found at: + -: 31:// + -: 32:// The terms of the closed source Quantum Leaps commercial licenses + -: 33:// can be found at: + -: 34:// + -: 35:// Redistributions in source code must retain this top-level comment block. + -: 36:// Plagiarizing this software to sidestep the license obligations is illegal. + -: 37:// + -: 38:// Contact information: + -: 39:// + -: 40:// + -: 41:// + -: 42://$endhead${include::qp.hpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 43:#ifndef QP_HPP_ + -: 44:#define QP_HPP_ + -: 45: + -: 46://============================================================================ + -: 47:#define QP_VERSION 734U + -: 48:#define QP_VERSION_STR "7.3.4" + -: 49: + -: 50://! Encrypted current QP release (7.3.4) and date (2024-03-21) + -: 51:#define QP_RELEASE 0x70C1EA11U + -: 52: + -: 53://============================================================================ + -: 54://! @cond INTERNAL + -: 55: + -: 56:#ifndef Q_SIGNAL_SIZE + -: 57:#define Q_SIGNAL_SIZE 2U + -: 58:#endif // ndef Q_SIGNAL_SIZE + -: 59: + -: 60:#ifndef QF_MAX_ACTIVE + -: 61:#define QF_MAX_ACTIVE 32U + -: 62:#endif + -: 63: + -: 64:#if (QF_MAX_ACTIVE > 64U) + -: 65:#error QF_MAX_ACTIVE exceeds the maximum of 64U; + -: 66:#endif + -: 67: + -: 68:#ifndef QF_MAX_TICK_RATE + -: 69:#define QF_MAX_TICK_RATE 1U + -: 70:#endif + -: 71: + -: 72:#if (QF_MAX_TICK_RATE > 15U) + -: 73:#error QF_MAX_TICK_RATE exceeds the maximum of 15U; + -: 74:#endif + -: 75: + -: 76:#ifndef QF_MAX_EPOOL + -: 77:#define QF_MAX_EPOOL 3U + -: 78:#endif + -: 79: + -: 80:#if (QF_MAX_EPOOL > 15U) + -: 81:#error QF_MAX_EPOOL exceeds the maximum of 15U; + -: 82:#endif + -: 83: + -: 84:#ifndef QF_TIMEEVT_CTR_SIZE + -: 85:#define QF_TIMEEVT_CTR_SIZE 4U + -: 86:#endif + -: 87: + -: 88:#if (QF_TIMEEVT_CTR_SIZE > 4U) + -: 89:#error QF_TIMEEVT_CTR_SIZE defined incorrectly, expected 1U, 2U, or 4U; + -: 90:#endif + -: 91: + -: 92:#ifndef QF_EVENT_SIZ_SIZE + -: 93:#define QF_EVENT_SIZ_SIZE 2U + -: 94:#endif + -: 95: + -: 96:#if (QF_EVENT_SIZ_SIZE > 4U) + -: 97:#error QF_EVENT_SIZ_SIZE defined incorrectly, expected 1U, 2U, or 4U; + -: 98:#endif + -: 99: + -: 100://! @endcond + -: 101://============================================================================ + -: 102://$declare${glob-types} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 103: + -: 104://${glob-types::int_t} ....................................................... + -: 105:using int_t = int; + -: 106: + -: 107://${glob-types::enum_t} ...................................................... + -: 108:using enum_t = int; + -: 109: + -: 110://${glob-types::float32_t} ................................................... + -: 111:using float32_t = float; + -: 112: + -: 113://${glob-types::float64_t} ................................................... + -: 114:using float64_t = double; + -: 115://$enddecl${glob-types} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 116: + -: 117://$declare${QEP} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 118:namespace QP { + -: 119: + -: 120://${QEP::versionStr[]} ....................................................... + -: 121:constexpr char const versionStr[] {QP_VERSION_STR}; + -: 122: + -: 123://${QEP::QSignal} ............................................................ + -: 124:#if (Q_SIGNAL_SIZE == 1U) + -: 125:using QSignal = std::uint8_t; + -: 126:#endif // (Q_SIGNAL_SIZE == 1U) + -: 127: + -: 128://${QEP::QSignal} ............................................................ + -: 129:#if (Q_SIGNAL_SIZE == 2U) + -: 130:using QSignal = std::uint16_t; + -: 131:#endif // (Q_SIGNAL_SIZE == 2U) + -: 132: + -: 133://${QEP::QSignal} ............................................................ + -: 134:#if (Q_SIGNAL_SIZE == 4U) + -: 135:using QSignal = std::uint32_t; + -: 136:#endif // (Q_SIGNAL_SIZE == 4U) + -: 137: + -: 138://${QEP::QEvt} ............................................................... + -: 139:class QEvt { + -: 140:public: + -: 141: QSignal sig; + -: 142: std::uint8_t volatile refCtr_; + -: 143: std::uint8_t evtTag_; + -: 144: + -: 145:public: + -: 146: static constexpr std::uint8_t MARKER {0xE0U}; + -: 147: + -: 148:#ifdef QEVT_DYN_CTOR + -: 149: enum DynEvt: std::uint8_t { DYNAMIC }; + -: 150:#endif // def QEVT_DYN_CTOR + -: 151: + -: 152:public: + -: 153: + -: 154:#ifdef QEVT_DYN_CTOR + -: 155: QEvt * ctor(DynEvt const dummy) noexcept; + -: 156:#endif // def QEVT_DYN_CTOR + -: 157: explicit constexpr QEvt(QSignal const s) noexcept + -: 158: : sig(s), + -: 159: refCtr_(0U), + -: 160: evtTag_(MARKER) + -: 161: {} + -: 162: QEvt() = delete; + 18: 163: static bool verify_(QEvt const * const e) noexcept { + 18: 164: return (e != nullptr) + 18: 165: && ((e->evtTag_ & 0xF0U) == MARKER); + -: 166: } + -: 167: std::uint_fast8_t getPoolNum_() const noexcept { + -: 168: return static_cast(evtTag_) & 0x0FU; + -: 169: } + -: 170:}; // class QEvt + -: 171: + -: 172://${QEP::QState} ............................................................. + -: 173:using QState = std::uint_fast8_t; + -: 174: + -: 175://${QEP::QStateHandler} ...................................................... + -: 176:using QStateHandler = QState (*)(void * const me, QEvt const * const e); + -: 177: + -: 178://${QEP::QActionHandler} ..................................................... + -: 179:using QActionHandler = QState (*)(void * const me); + -: 180: + -: 181://${QEP::QXThread} ........................................................... + -: 182:// forward declaration + -: 183:class QXThread; + -: 184: + -: 185://${QEP::QXThreadHandler} .................................................... + -: 186:using QXThreadHandler = void (*)(QXThread * const me); + -: 187: + -: 188://${QEP::QMState} ............................................................ + -: 189:struct QMState { + -: 190: QMState const * superstate; + -: 191: QStateHandler const stateHandler; + -: 192: QActionHandler const entryAction; + -: 193: QActionHandler const exitAction; + -: 194: QActionHandler const initAction; + -: 195:}; + -: 196: + -: 197://${QEP::QMTranActTable} ..................................................... + -: 198:struct QMTranActTable { + -: 199: QMState const * target; + -: 200: QActionHandler const act[1]; + -: 201:}; + -: 202: + -: 203://${QEP::QAsmAttr} ........................................................... + -: 204:union QAsmAttr { + -: 205: QStateHandler fun; + -: 206: QActionHandler act; + -: 207: QXThreadHandler thr; + -: 208: QMState const *obj; + -: 209: QMTranActTable const *tatbl; + -: 210:#ifndef Q_UNSAFE + -: 211: std::uintptr_t uint; + -: 212:#endif + 3: 213: constexpr QAsmAttr() : fun(nullptr) {} + -: 214:}; + -: 215: + -: 216://${QEP::Q_USER_SIG} ......................................................... + -: 217:constexpr enum_t Q_USER_SIG {4}; + -: 218: + -: 219://${QEP::QAsm} ............................................................... + -: 220:class QAsm { + -: 221:protected: + -: 222: QAsmAttr m_state; + -: 223: QAsmAttr m_temp; + -: 224: + -: 225:public: + -: 226: + -: 227: //! All possible return values from state-handlers + -: 228: //! @note + -: 229: //! The order is important for algorithmic correctness. + -: 230: enum QStateRet : QState { + -: 231: // unhandled and need to "bubble up" + -: 232: Q_RET_SUPER, //!< event passed to superstate to handle + -: 233: Q_RET_SUPER_SUB, //!< event passed to submachine superstate + -: 234: Q_RET_UNHANDLED, //!< event unhandled due to a guard + -: 235: + -: 236: // handled and do not need to "bubble up" + -: 237: Q_RET_HANDLED, //!< event handled (internal transition) + -: 238: Q_RET_IGNORED, //!< event silently ignored (bubbled up to top) + -: 239: + -: 240: // entry/exit + -: 241: Q_RET_ENTRY, //!< state entry action executed + -: 242: Q_RET_EXIT, //!< state exit action executed + -: 243: + -: 244: // no side effects + -: 245: Q_RET_NULL, //!< return value without any effect + -: 246: + -: 247: // transitions need to execute transition-action table in QP::QMsm + -: 248: Q_RET_TRAN, //!< regular transition + -: 249: Q_RET_TRAN_INIT, //!< initial transition in a state or submachine + -: 250: Q_RET_TRAN_EP, //!< entry-point transition into a submachine + -: 251: + -: 252: // transitions that additionally clobber QHsm.m_state + -: 253: Q_RET_TRAN_HIST, //!< transition to history of a given state + -: 254: Q_RET_TRAN_XP //!< exit-point transition out of a submachine + -: 255: }; + -: 256: + -: 257: //! Reserved signals by the QP-framework. + -: 258: enum ReservedSig : QSignal { + -: 259: Q_EMPTY_SIG, //!< signal to execute the default case + -: 260: Q_ENTRY_SIG, //!< signal for entry actions + -: 261: Q_EXIT_SIG, //!< signal for exit actions + -: 262: Q_INIT_SIG //!< signal for nested initial transitions + -: 263: }; + -: 264: + -: 265:protected: + 3: 266: explicit QAsm() noexcept + 3: 267: : m_state(), + 3: 268: m_temp () + -: 269: {} + -: 270: + -: 271:public: + -: 272: + -: 273:#ifdef Q_XTOR + -: 274: virtual ~QAsm() noexcept { + -: 275: // empty + -: 276: } + -: 277:#endif // def Q_XTOR + -: 278: virtual void init( + -: 279: void const * const e, + -: 280: std::uint_fast8_t const qsId) = 0; + -: 281: virtual void init(std::uint_fast8_t const qsId) { + -: 282: this->init(nullptr, qsId); + -: 283: } + -: 284: virtual void dispatch( + -: 285: QEvt const * const e, + -: 286: std::uint_fast8_t const qsId) = 0; + -: 287: virtual bool isIn(QStateHandler const state) noexcept { + -: 288: static_cast(state); + -: 289: return false; + -: 290: } + -: 291: QStateHandler state() const noexcept { + -: 292: return m_state.fun; + -: 293: } + -: 294: QMState const * stateObj() const noexcept { + -: 295: return m_state.obj; + -: 296: } + -: 297: + -: 298:#ifdef Q_SPY + -: 299: virtual QStateHandler getStateHandler() noexcept { + -: 300: return m_state.fun; + -: 301: } + -: 302:#endif // def Q_SPY + #####: 303: static QState top( + -: 304: void * const me, + -: 305: QEvt const * const e) noexcept + -: 306: { + #####: 307: static_cast(me); + #####: 308: static_cast(e); + #####: 309: return Q_RET_IGNORED; // the top state ignores all events + -: 310: } + -: 311: + -: 312:protected: + -: 313: QState tran(QStateHandler const target) noexcept { + -: 314: m_temp.fun = target; + -: 315: return Q_RET_TRAN; + -: 316: } + -: 317: QState tran_hist(QStateHandler const hist) noexcept { + -: 318: m_temp.fun = hist; + -: 319: return Q_RET_TRAN_HIST; + -: 320: } + -: 321: QState super(QStateHandler const superstate) noexcept { + -: 322: m_temp.fun = superstate; + -: 323: return Q_RET_SUPER; + -: 324: } + -: 325: QState qm_tran(void const * const tatbl) noexcept { + -: 326: m_temp.tatbl = static_cast(tatbl); + -: 327: return Q_RET_TRAN; + -: 328: } + -: 329: QState qm_tran_init(void const * const tatbl) noexcept { + -: 330: m_temp.tatbl = static_cast(tatbl); + -: 331: return Q_RET_TRAN_INIT; + -: 332: } + -: 333: QState qm_tran_hist( + -: 334: QMState const * const hist, + -: 335: void const * const tatbl) noexcept + -: 336: { + -: 337: m_state.obj = hist; + -: 338: m_temp.tatbl = static_cast(tatbl); + -: 339: return Q_RET_TRAN_HIST; + -: 340: } + -: 341: QState qm_tran_ep(void const * const tatbl) noexcept { + -: 342: m_temp.tatbl = static_cast(tatbl); + -: 343: return Q_RET_TRAN_EP; + -: 344: } + -: 345: QState qm_tran_xp( + -: 346: QActionHandler const xp, + -: 347: void const * const tatbl) noexcept + -: 348: { + -: 349: m_state.act = xp; + -: 350: m_temp.tatbl = static_cast(tatbl); + -: 351: return Q_RET_TRAN_XP; + -: 352: } + -: 353: + -: 354:#ifdef Q_SPY + -: 355: QState qm_entry(QMState const * const s) noexcept { + -: 356: m_temp.obj = s; + -: 357: return Q_RET_ENTRY; + -: 358: } + -: 359:#endif // def Q_SPY + -: 360: + -: 361:#ifndef Q_SPY + -: 362: QState qm_entry(QMState const * const s) noexcept { + -: 363: static_cast(s); // unused parameter + -: 364: return Q_RET_ENTRY; + -: 365: } + -: 366:#endif // ndef Q_SPY + -: 367: + -: 368:#ifdef Q_SPY + -: 369: QState qm_exit(QMState const * const s) noexcept { + -: 370: m_temp.obj = s; + -: 371: return Q_RET_EXIT; + -: 372: } + -: 373:#endif // def Q_SPY + -: 374: + -: 375:#ifndef Q_SPY + -: 376: QState qm_exit(QMState const * const s) noexcept { + -: 377: static_cast(s); // unused parameter + -: 378: return Q_RET_EXIT; + -: 379: } + -: 380:#endif // ndef Q_SPY + -: 381: QState qm_sm_exit(QMState const * const s) noexcept { + -: 382: m_temp.obj = s; + -: 383: return Q_RET_EXIT; + -: 384: } + -: 385: QState qm_super_sub(QMState const * const s) noexcept { + -: 386: m_temp.obj = s; + -: 387: return Q_RET_SUPER_SUB; + -: 388: } + -: 389:}; // class QAsm + -: 390: + -: 391://${QEP::QHsm} ............................................................... + -: 392:class QHsm : public QP::QAsm { + -: 393:public: + -: 394: static constexpr std::int_fast8_t MAX_NEST_DEPTH_{6}; + -: 395: + -: 396:protected: + -: 397: explicit QHsm(QStateHandler const initial) noexcept; + -: 398: + -: 399:public: + -: 400: void init( + -: 401: void const * const e, + -: 402: std::uint_fast8_t const qsId) override; + #####: 403: void init(std::uint_fast8_t const qsId) override { + #####: 404: this->init(nullptr, qsId); + #####: 405: } + -: 406: void dispatch( + -: 407: QEvt const * const e, + -: 408: std::uint_fast8_t const qsId) override; + -: 409: bool isIn(QStateHandler const state) noexcept override; + -: 410: QStateHandler childState(QStateHandler const parent) noexcept; + -: 411: + -: 412:#ifdef Q_SPY + #####: 413: QStateHandler getStateHandler() noexcept override { + #####: 414: return m_state.fun; + -: 415: } + -: 416:#endif // def Q_SPY + -: 417: + -: 418:private: + -: 419: std::int_fast8_t hsm_tran( + -: 420: QStateHandler (&path)[MAX_NEST_DEPTH_], + -: 421: std::uint_fast8_t const qsId); + -: 422:}; // class QHsm + -: 423: + -: 424://${QEP::QMsm} ............................................................... + -: 425:class QMsm : public QP::QAsm { + -: 426:protected: + -: 427: explicit QMsm(QStateHandler const initial) noexcept; + -: 428: + -: 429:public: + -: 430: void init( + -: 431: void const * const e, + -: 432: std::uint_fast8_t const qsId) override; + -: 433: void init(std::uint_fast8_t const qsId) override { + -: 434: this->init(nullptr, qsId); + -: 435: } + -: 436: void dispatch( + -: 437: QEvt const * const e, + -: 438: std::uint_fast8_t const qsId) override; + -: 439: + -: 440:#ifdef Q_SPY + -: 441: QStateHandler getStateHandler() noexcept override { + -: 442: return m_state.obj->stateHandler; + -: 443: } + -: 444:#endif // def Q_SPY + -: 445: bool isIn(QStateHandler const state) noexcept override; + -: 446: + -: 447: //! @deprecated instead use: QMsm::isIn() + -: 448: bool isInState(QMState const * const stateObj) const noexcept; + -: 449: QMState const * childStateObj(QMState const * const parent) const noexcept; + -: 450: + -: 451:private: + -: 452: QState execTatbl_( + -: 453: QMTranActTable const * const tatbl, + -: 454: std::uint_fast8_t const qsId); + -: 455: void exitToTranSource_( + -: 456: QMState const * const cs, + -: 457: QMState const * const ts, + -: 458: std::uint_fast8_t const qsId); + -: 459: QState enterHistory_( + -: 460: QMState const * const hist, + -: 461: std::uint_fast8_t const qsId); + -: 462: + -: 463:public: + -: 464: QMState const * topQMState() const noexcept; + -: 465:}; // class QMsm + -: 466: + -: 467:} // namespace QP + -: 468://$enddecl${QEP} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 469: + -: 470://$declare${QEP-macros} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 471: + -: 472://${QEP-macros::Q_STATE_DECL} ................................................ + -: 473:#define Q_STATE_DECL(state_) \ + -: 474: QP::QState state_ ## _h(QP::QEvt const * const e); \ + -: 475: static QP::QState state_(void * const me, QP::QEvt const * const e) + -: 476: + -: 477://${QEP-macros::Q_STATE_DEF} ................................................. + -: 478:#define Q_STATE_DEF(subclass_, state_) \ + -: 479: QP::QState subclass_::state_(void * const me, QP::QEvt const * const e) { \ + -: 480: return static_cast(me)->state_ ## _h(e); } \ + -: 481: QP::QState subclass_::state_ ## _h(QP::QEvt const * const e) + -: 482: + -: 483://${QEP-macros::Q_HANDLED} ................................................... + -: 484:#define Q_HANDLED() (Q_RET_HANDLED) + -: 485: + -: 486://${QEP-macros::Q_UNHANDLED} ................................................. + -: 487:#define Q_UNHANDLED() (Q_RET_UNHANDLED) + -: 488: + -: 489://${QEP-macros::Q_EVT_CAST} .................................................. + -: 490:#define Q_EVT_CAST(subclass_) (static_cast(e)) + -: 491: + -: 492://${QEP-macros::Q_STATE_CAST} ................................................ + -: 493:#define Q_STATE_CAST(handler_) \ + -: 494: (reinterpret_cast(handler_)) + -: 495: + -: 496://${QEP-macros::QM_STATE_DECL} ............................................... + -: 497:#define QM_STATE_DECL(state_) \ + -: 498: QP::QState state_ ## _h(QP::QEvt const * const e); \ + -: 499: static QP::QState state_(void * const me, QP::QEvt const * const e); \ + -: 500: static QP::QMState const state_ ## _s + -: 501: + -: 502://${QEP-macros::QM_SM_STATE_DECL} ............................................ + -: 503:#define QM_SM_STATE_DECL(subm_, state_) \ + -: 504: QP::QState state_ ## _h(QP::QEvt const * const e);\ + -: 505: static QP::QState state_(void * const me, QP::QEvt const * const e); \ + -: 506: static SM_ ## subm_ const state_ ## _s + -: 507: + -: 508://${QEP-macros::QM_ACTION_DECL} .............................................. + -: 509:#define QM_ACTION_DECL(action_) \ + -: 510: QP::QState action_ ## _h(); \ + -: 511: static QP::QState action_(void * const me) + -: 512: + -: 513://${QEP-macros::QM_STATE_DEF} ................................................ + -: 514:#define QM_STATE_DEF(subclass_, state_) \ + -: 515: QP::QState subclass_::state_(void * const me, QP::QEvt const * const e) {\ + -: 516: return static_cast(me)->state_ ## _h(e); } \ + -: 517: QP::QState subclass_::state_ ## _h(QP::QEvt const * const e) + -: 518: + -: 519://${QEP-macros::QM_ACTION_DEF} ............................................... + -: 520:#define QM_ACTION_DEF(subclass_, action_) \ + -: 521: QP::QState subclass_::action_(void * const me) { \ + -: 522: return static_cast(me)->action_ ## _h(); } \ + -: 523: QP::QState subclass_::action_ ## _h() + -: 524: + -: 525://${QEP-macros::QM_HANDLED} .................................................. + -: 526:#define QM_HANDLED() (Q_RET_HANDLED) + -: 527: + -: 528://${QEP-macros::QM_UNHANDLED} ................................................ + -: 529:#define QM_UNHANDLED() (Q_RET_HANDLED) + -: 530: + -: 531://${QEP-macros::QM_SUPER} .................................................... + -: 532:#define QM_SUPER() (Q_RET_SUPER) + -: 533: + -: 534://${QEP-macros::QM_STATE_NULL} ............................................... + -: 535:#define QM_STATE_NULL (nullptr) + -: 536: + -: 537://${QEP-macros::Q_ACTION_NULL} ............................................... + -: 538:#define Q_ACTION_NULL (nullptr) + -: 539: + -: 540://${QEP-macros::Q_UNUSED_PAR} ................................................ + -: 541:#define Q_UNUSED_PAR(par_) (static_cast(par_)) + -: 542: + -: 543://${QEP-macros::Q_DIM} ....................................................... + -: 544:#define Q_DIM(array_) (sizeof(array_) / sizeof((array_)[0U])) + -: 545: + -: 546://${QEP-macros::Q_UINT2PTR_CAST} ............................................. + -: 547:#define Q_UINT2PTR_CAST(type_, uint_) (reinterpret_cast(uint_)) + -: 548: + -: 549://${QEP-macros::INIT} ........................................................ + -: 550:#ifdef Q_SPY + -: 551:#define INIT(qsId_) init((qsId_)) + -: 552:#endif // def Q_SPY + -: 553: + -: 554://${QEP-macros::INIT} ........................................................ + -: 555:#ifndef Q_SPY + -: 556:#define INIT(dummy) init(0U) + -: 557:#endif // ndef Q_SPY + -: 558: + -: 559://${QEP-macros::DISPATCH} .................................................... + -: 560:#ifdef Q_SPY + -: 561:#define DISPATCH(e_, qsId_) dispatch((e_), (qsId_)) + -: 562:#endif // def Q_SPY + -: 563: + -: 564://${QEP-macros::DISPATCH} .................................................... + -: 565:#ifndef Q_SPY + -: 566:#define DISPATCH(e_, dummy) dispatch((e_), 0U) + -: 567:#endif // ndef Q_SPY + -: 568://$enddecl${QEP-macros} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 569: + -: 570://$declare${QF::types} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 571:namespace QP { + -: 572: + -: 573://${QF::types::QPrioSpec} .................................................... + -: 574:using QPrioSpec = std::uint16_t; + -: 575: + -: 576://${QF::types::QTimeEvtCtr} .................................................. + -: 577:#if (QF_TIMEEVT_CTR_SIZE == 1U) + -: 578:using QTimeEvtCtr = std::uint8_t; + -: 579:#endif // (QF_TIMEEVT_CTR_SIZE == 1U) + -: 580: + -: 581://${QF::types::QTimeEvtCtr} .................................................. + -: 582:#if (QF_TIMEEVT_CTR_SIZE == 2U) + -: 583:using QTimeEvtCtr = std::uint16_t; + -: 584:#endif // (QF_TIMEEVT_CTR_SIZE == 2U) + -: 585: + -: 586://${QF::types::QTimeEvtCtr} .................................................. + -: 587:#if (QF_TIMEEVT_CTR_SIZE == 4U) + -: 588:using QTimeEvtCtr = std::uint32_t; + -: 589:#endif // (QF_TIMEEVT_CTR_SIZE == 4U) + -: 590: + -: 591://${QF::types::QPSetBits} .................................................... + -: 592:#if (QF_MAX_ACTIVE <= 8U) + -: 593:using QPSetBits = std::uint8_t; + -: 594:#endif // (QF_MAX_ACTIVE <= 8U) + -: 595: + -: 596://${QF::types::QPSetBits} .................................................... + -: 597:#if (8U < QF_MAX_ACTIVE) && (QF_MAX_ACTIVE <= 16U) + -: 598:using QPSetBits = std::uint16_t; + -: 599:#endif // (8U < QF_MAX_ACTIVE) && (QF_MAX_ACTIVE <= 16U) + -: 600: + -: 601://${QF::types::QPSetBits} .................................................... + -: 602:#if (16 < QF_MAX_ACTIVE) + -: 603:using QPSetBits = std::uint32_t; + -: 604:#endif // (16 < QF_MAX_ACTIVE) + -: 605: + -: 606://${QF::types::QF_LOG2} ...................................................... + -: 607:#ifndef QF_LOG2 + -: 608:std::uint_fast8_t QF_LOG2(QP::QPSetBits x) noexcept; + -: 609:#endif // ndef QF_LOG2 + -: 610: + -: 611://${QF::types::QPSet} ........................................................ + -: 612:class QPSet { + -: 613:private: + -: 614: QPSetBits m_bits[((QF_MAX_ACTIVE + (8U*sizeof(QPSetBits))) - 1U)/(8U*sizeof(QPSetBits))]; + -: 615: + -: 616:public: + -: 617: void setEmpty() noexcept { + -: 618: m_bits[0] = 0U; + -: 619: #if (QF_MAX_ACTIVE > 32) + -: 620: m_bits[1] = 0U; + -: 621: #endif + -: 622: } + -: 623: bool isEmpty() const noexcept { + -: 624: #if (QF_MAX_ACTIVE <= 32U) + -: 625: return (m_bits[0] == 0U); + -: 626: #else + -: 627: return (m_bits[0] == 0U) ? (m_bits[1] == 0U) : false; + -: 628: #endif + -: 629: } + -: 630: bool notEmpty() const noexcept { + -: 631: #if (QF_MAX_ACTIVE <= 32U) + -: 632: return (m_bits[0] != 0U); + -: 633: #else + -: 634: return (m_bits[0] != 0U) ? true : (m_bits[1] != 0U); + -: 635: #endif + -: 636: } + -: 637: bool hasElement(std::uint_fast8_t const n) const noexcept { + -: 638: #if (QF_MAX_ACTIVE <= 32U) + -: 639: return (m_bits[0] & (static_cast(1U) << (n - 1U))) != 0U; + -: 640: #else + -: 641: return (n <= 32U) + -: 642: ? ((m_bits[0] & (static_cast(1U) << (n - 1U))) != 0U) + -: 643: : ((m_bits[1] & (static_cast(1U) << (n - 33U))) != 0U); + -: 644: #endif + -: 645: } + -: 646: void insert(std::uint_fast8_t const n) noexcept { + -: 647: #if (QF_MAX_ACTIVE <= 32U) + -: 648: m_bits[0] = (m_bits[0] | (static_cast(1U) << (n - 1U))); + -: 649: #else + -: 650: if (n <= 32U) { + -: 651: m_bits[0] = (m_bits[0] | (static_cast(1U) << (n - 1U))); + -: 652: } + -: 653: else { + -: 654: m_bits[1] = (m_bits[1] | (static_cast(1U) << (n - 33U))); + -: 655: } + -: 656: #endif + -: 657: } + -: 658: void remove(std::uint_fast8_t const n) noexcept { + -: 659: #if (QF_MAX_ACTIVE <= 32U) + -: 660: m_bits[0] = (m_bits[0] & static_cast(~(1U << (n - 1U)))); + -: 661: #else + -: 662: if (n <= 32U) { + -: 663: (m_bits[0] = (m_bits[0] & ~(static_cast(1U) << (n - 1U)))); + -: 664: } + -: 665: else { + -: 666: (m_bits[1] = (m_bits[1] & ~(static_cast(1U) << (n - 33U)))); + -: 667: } + -: 668: #endif + -: 669: } + -: 670: std::uint_fast8_t findMax() const noexcept { + -: 671: #if (QF_MAX_ACTIVE <= 32U) + -: 672: return QF_LOG2(m_bits[0]); + -: 673: #else + -: 674: return (m_bits[1] != 0U) + -: 675: ? (QF_LOG2(m_bits[1]) + 32U) + -: 676: : (QF_LOG2(m_bits[0])); + -: 677: #endif + -: 678: } + -: 679: + -: 680:#ifndef Q_UNSAFE + -: 681: void update_(QPSet * const dis) const noexcept { + -: 682: dis->m_bits[0] = ~m_bits[0]; + -: 683: #if (QF_MAX_ACTIVE > 32U) + -: 684: dis->m_bits[1] = ~m_bits[1]; + -: 685: #endif + -: 686: } + -: 687:#endif // ndef Q_UNSAFE + -: 688: + -: 689:#ifndef Q_UNSAFE + -: 690: bool verify_(QPSet const * const dis) const noexcept { + -: 691: #if (QF_MAX_ACTIVE <= 32U) + -: 692: return m_bits[0] == static_cast(~dis->m_bits[0]); + -: 693: #else + -: 694: return (m_bits[0] == static_cast(~dis->m_bits[0])) + -: 695: && (m_bits[1] == static_cast(~dis->m_bits[1])); + -: 696: #endif + -: 697: } + -: 698:#endif // ndef Q_UNSAFE + -: 699:}; // class QPSet + -: 700: + -: 701://${QF::types::QSubscrList} .................................................. + -: 702:class QSubscrList { + -: 703:private: + -: 704: QPSet m_set; + -: 705: + -: 706:#ifndef Q_UNSAFE + -: 707: QPSet m_set_dis; + -: 708:#endif // ndef Q_UNSAFE + -: 709: + -: 710: // friends... + -: 711: friend class QActive; + -: 712:}; // class QSubscrList + -: 713: + -: 714://${QF::types::QEQueue} ...................................................... + -: 715:class QEQueue; + -: 716: + -: 717:} // namespace QP + -: 718://$enddecl${QF::types} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 719: + -: 720://$declare${QF::QActive} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 721:namespace QP { + -: 722: + -: 723://${QF::QActive} ............................................................. + -: 724:class QActive : public QP::QAsm { + -: 725:protected: + -: 726: std::uint8_t m_prio; + -: 727: std::uint8_t m_pthre; + -: 728: + -: 729:#ifdef QACTIVE_THREAD_TYPE + -: 730: QACTIVE_THREAD_TYPE m_thread; + -: 731:#endif // def QACTIVE_THREAD_TYPE + -: 732: + -: 733:#ifdef QACTIVE_OS_OBJ_TYPE + -: 734: QACTIVE_OS_OBJ_TYPE m_osObject; + -: 735:#endif // def QACTIVE_OS_OBJ_TYPE + -: 736: + -: 737:#ifdef QACTIVE_EQUEUE_TYPE + -: 738: QACTIVE_EQUEUE_TYPE m_eQueue; + -: 739:#endif // def QACTIVE_EQUEUE_TYPE + -: 740: + -: 741:public: + -: 742: + -: 743:#ifndef Q_UNSAFE + -: 744: std::uint8_t m_prio_dis; + -: 745:#endif // ndef Q_UNSAFE + -: 746: + -: 747:#ifndef Q_UNSAFE + -: 748: std::uint8_t m_pthre_dis; + -: 749:#endif // ndef Q_UNSAFE + -: 750: static QActive * registry_[QF_MAX_ACTIVE + 1U]; + -: 751: static QSubscrList * subscrList_; + -: 752: static enum_t maxPubSignal_; + -: 753: + -: 754: // friends... + -: 755: friend class QTimeEvt; + -: 756: friend class QTicker; + -: 757: friend class QXThread; + -: 758: friend class QXMutex; + -: 759: friend class QXSemaphore; + -: 760: friend class QActiveDummy; + -: 761: friend class GuiQActive; + -: 762: friend class GuiQMActive; + -: 763: friend void schedLock(); + -: 764: + -: 765:protected: + -: 766: explicit QActive(QStateHandler const initial) noexcept + -: 767: : QAsm(), + -: 768: m_prio(0U), + -: 769: m_pthre(0U) + -: 770: { + -: 771: m_state.fun = Q_STATE_CAST(&top); + -: 772: m_temp.fun = initial; + -: 773: + -: 774: #ifndef Q_UNSAFE + -: 775: m_prio_dis = static_cast(~m_prio); + -: 776: m_pthre_dis = static_cast(~m_pthre); + -: 777: #endif + -: 778: } + -: 779: + -: 780:public: + -: 781: void init( + -: 782: void const * const e, + -: 783: std::uint_fast8_t const qsId) override + -: 784: { + -: 785: reinterpret_cast(this)->QHsm::init(e, qsId); + -: 786: } + -: 787: void init(std::uint_fast8_t const qsId) override { + -: 788: this->init(nullptr, qsId); + -: 789: } + -: 790: void dispatch( + -: 791: QEvt const * const e, + -: 792: std::uint_fast8_t const qsId) override + -: 793: { + -: 794: reinterpret_cast(this)->QHsm::dispatch(e, qsId); + -: 795: } + -: 796: bool isIn(QStateHandler const state) noexcept override { + -: 797: return reinterpret_cast(this)->QHsm::isIn(state); + -: 798: } + -: 799: QStateHandler childState(QStateHandler const parent) noexcept { + -: 800: return reinterpret_cast(this)->QHsm::childState(parent); + -: 801: } + -: 802: void setAttr( + -: 803: std::uint32_t attr1, + -: 804: void const * attr2 = nullptr); + -: 805: void start( + -: 806: QPrioSpec const prioSpec, + -: 807: QEvt const * * const qSto, + -: 808: std::uint_fast16_t const qLen, + -: 809: void * const stkSto, + -: 810: std::uint_fast16_t const stkSize, + -: 811: void const * const par); + -: 812: void start( + -: 813: QPrioSpec const prioSpec, + -: 814: QEvt const * * const qSto, + -: 815: std::uint_fast16_t const qLen, + -: 816: void * const stkSto, + -: 817: std::uint_fast16_t const stkSize) + -: 818: { + -: 819: this->start(prioSpec, qSto, qLen, stkSto, stkSize, nullptr); + -: 820: } + -: 821: + -: 822:#ifdef QACTIVE_CAN_STOP + -: 823: void stop(); + -: 824:#endif // def QACTIVE_CAN_STOP + -: 825: void register_() noexcept; + -: 826: void unregister_() noexcept; + -: 827: bool post_( + -: 828: QEvt const * const e, + -: 829: std::uint_fast16_t const margin, + -: 830: void const * const sender) noexcept; + -: 831: void postLIFO(QEvt const * const e) noexcept; + -: 832: QEvt const * get_() noexcept; + -: 833: static std::uint_fast16_t getQueueMin(std::uint_fast8_t const prio) noexcept; + -: 834: static void psInit( + -: 835: QSubscrList * const subscrSto, + -: 836: enum_t const maxSignal) noexcept; + -: 837: static void publish_( + -: 838: QEvt const * const e, + -: 839: void const * const sender, + -: 840: std::uint_fast8_t const qsId) noexcept; + -: 841: void subscribe(enum_t const sig) const noexcept; + -: 842: void unsubscribe(enum_t const sig) const noexcept; + -: 843: void unsubscribeAll() const noexcept; + -: 844: bool defer( + -: 845: QEQueue * const eq, + -: 846: QEvt const * const e) const noexcept; + -: 847: bool recall(QEQueue * const eq) noexcept; + -: 848: std::uint_fast16_t flushDeferred( + -: 849: QEQueue * const eq, + -: 850: std::uint_fast16_t const num = 0xFFFFU) const noexcept; + -: 851: std::uint_fast8_t getPrio() const noexcept { + -: 852: return static_cast(m_prio); + -: 853: } + -: 854: void setPrio(QPrioSpec const prio) noexcept { + -: 855: m_prio = static_cast(prio & 0xFFU); + -: 856: m_pthre = static_cast(prio >> 8U); + -: 857: } + -: 858: std::uint_fast8_t getPThre() const noexcept { + -: 859: return static_cast(m_pthre); + -: 860: } + -: 861: + -: 862:#ifdef QACTIVE_EQUEUE_TYPE + -: 863: QACTIVE_EQUEUE_TYPE const & getEQueue() const noexcept { + -: 864: return m_eQueue; + -: 865: } + -: 866:#endif // def QACTIVE_EQUEUE_TYPE + -: 867: + -: 868:#ifdef QACTIVE_OS_OBJ_TYPE + -: 869: QACTIVE_OS_OBJ_TYPE const & getOsObject() const noexcept { + -: 870: return m_osObject; + -: 871: } + -: 872:#endif // def QACTIVE_OS_OBJ_TYPE + -: 873: + -: 874:#ifdef QACTIVE_THREAD_TYPE + -: 875: QACTIVE_THREAD_TYPE const & getThread() const noexcept { + -: 876: return m_thread; + -: 877: } + -: 878:#endif // def QACTIVE_THREAD_TYPE + -: 879: + -: 880:#ifdef QACTIVE_THREAD_TYPE + -: 881: void setThread(QACTIVE_THREAD_TYPE const & thr) { + -: 882: m_thread = thr; + -: 883: } + -: 884:#endif // def QACTIVE_THREAD_TYPE + -: 885: static void evtLoop_(QActive * act); + -: 886: + -: 887:#ifdef QF_ISR_API + -: 888: virtual bool postFromISR( + -: 889: QEvt const * const e, + -: 890: std::uint_fast16_t const margin, + -: 891: void * par, + -: 892: void const * const sender) noexcept; + -: 893:#endif // def QF_ISR_API + -: 894: + -: 895:#ifdef QF_ISR_API + -: 896: static void publishFromISR( + -: 897: QEvt const * e, + -: 898: void * par, + -: 899: void const * sender) noexcept; + -: 900:#endif // def QF_ISR_API + -: 901:}; // class QActive + -: 902: + -: 903:} // namespace QP + -: 904://$enddecl${QF::QActive} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 905: + -: 906://$declare${QF::QMActive} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 907:namespace QP { + -: 908: + -: 909://${QF::QMActive} ............................................................ + -: 910:class QMActive : public QP::QActive { + -: 911:protected: + -: 912: QMActive(QStateHandler const initial) noexcept; + -: 913: + -: 914:public: + -: 915: void init( + -: 916: void const * const e, + -: 917: std::uint_fast8_t const qsId) override + -: 918: { + -: 919: reinterpret_cast(this)->QMsm::init(e, qsId); + -: 920: } + -: 921: void init(std::uint_fast8_t const qsId) override { + -: 922: this->init(nullptr, qsId); + -: 923: } + -: 924: void dispatch( + -: 925: QEvt const * const e, + -: 926: std::uint_fast8_t const qsId) override + -: 927: { + -: 928: reinterpret_cast(this)->QMsm::dispatch(e, qsId); + -: 929: } + -: 930: bool isIn(QStateHandler const state) noexcept override { + -: 931: return reinterpret_cast(this)->QMsm::isIn(state); + -: 932: } + -: 933: + -: 934:#ifdef Q_SPY + -: 935: QStateHandler getStateHandler() noexcept override { + -: 936: return reinterpret_cast(this)->QMsm::getStateHandler(); + -: 937: } + -: 938:#endif // def Q_SPY + -: 939: bool isInState(QMState const * const st) const noexcept { + -: 940: return reinterpret_cast(this)->QMsm::isInState(st); + -: 941: } + -: 942: QMState const * childStateObj(QMState const * const parent) const noexcept { + -: 943: return reinterpret_cast(this) + -: 944: ->QMsm::childStateObj(parent); + -: 945: } + -: 946:}; // class QMActive + -: 947: + -: 948:} // namespace QP + -: 949://$enddecl${QF::QMActive} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 950: + -: 951://$declare${QF::QTimeEvt} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 952:namespace QP { + -: 953: + -: 954://${QF::QTimeEvt} ............................................................ + -: 955:class QTimeEvt : public QP::QEvt { + -: 956:private: + -: 957: QTimeEvt * volatile m_next; + -: 958: void * m_act; + -: 959: QTimeEvtCtr volatile m_ctr; + -: 960: QTimeEvtCtr m_interval; + -: 961: + -: 962:public: + -: 963: static QTimeEvt timeEvtHead_[QF_MAX_TICK_RATE]; + -: 964: + -: 965:private: + -: 966: friend class QXThread; + -: 967: + -: 968:public: + -: 969: QTimeEvt( + -: 970: QActive * const act, + -: 971: QSignal const sig, + -: 972: std::uint_fast8_t const tickRate = 0U) noexcept; + -: 973: + -: 974:#ifdef Q_XTOR + -: 975: ~QTimeEvt(); + -: 976:#endif // def Q_XTOR + -: 977: void armX( + -: 978: QTimeEvtCtr const nTicks, + -: 979: QTimeEvtCtr const interval = 0U) noexcept; + -: 980: bool disarm() noexcept; + -: 981: bool rearm(QTimeEvtCtr const nTicks) noexcept; + -: 982: bool wasDisarmed() noexcept; + -: 983: void const * getAct() const noexcept { + -: 984: return m_act; + -: 985: } + -: 986: QTimeEvtCtr getCtr() const noexcept { + -: 987: return m_ctr; + -: 988: } + -: 989: QTimeEvtCtr getInterval() const noexcept { + -: 990: return m_interval; + -: 991: } + -: 992: static void tick( + -: 993: std::uint_fast8_t const tickRate, + -: 994: void const * const sender) noexcept; + -: 995: + -: 996:#ifdef Q_UTEST + -: 997: static void tick1_( + -: 998: std::uint_fast8_t const tickRate, + -: 999: void const * const sender); + -: 1000:#endif // def Q_UTEST + -: 1001: + -: 1002:#ifdef QF_ISR_API + -: 1003: static void tickFromISR( + -: 1004: std::uint_fast8_t const tickRate, + -: 1005: void * par, + -: 1006: void const * sender) noexcept; + -: 1007:#endif // def QF_ISR_API + -: 1008: static bool noActive(std::uint_fast8_t const tickRate) noexcept; + -: 1009: QActive * toActive() noexcept { + -: 1010: return static_cast(m_act); + -: 1011: } + -: 1012: QTimeEvt * toTimeEvt() noexcept { + -: 1013: return static_cast(m_act); + -: 1014: } + -: 1015: + -: 1016:private: + -: 1017: QTimeEvt() noexcept; + -: 1018: QTimeEvt(QTimeEvt const & other) = delete; + -: 1019: QTimeEvt & operator=(QTimeEvt const & other) = delete; + -: 1020:}; // class QTimeEvt + -: 1021: + -: 1022:} // namespace QP + -: 1023://$enddecl${QF::QTimeEvt} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 1024: + -: 1025://$declare${QF::QTicker} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 1026:namespace QP { + -: 1027: + -: 1028://${QF::QTicker} ............................................................. + -: 1029:class QTicker : public QP::QActive { + -: 1030:public: + -: 1031: explicit QTicker(std::uint_fast8_t const tickRate) noexcept; + -: 1032: void init( + -: 1033: void const * const e, + -: 1034: std::uint_fast8_t const qsId) override; + -: 1035: void init(std::uint_fast8_t const qsId) override { + -: 1036: this->init(nullptr, qsId); + -: 1037: } + -: 1038: void dispatch( + -: 1039: QEvt const * const e, + -: 1040: std::uint_fast8_t const qsId) override; + -: 1041: void trig_(void const * const sender) noexcept; + -: 1042:}; // class QTicker + -: 1043: + -: 1044:} // namespace QP + -: 1045://$enddecl${QF::QTicker} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 1046: + -: 1047://$declare${QF::QF-base} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 1048:namespace QP { + -: 1049:namespace QF { + -: 1050: + -: 1051://${QF::QF-base::init} ....................................................... + -: 1052:void init(); + -: 1053: + -: 1054://${QF::QF-base::stop} ....................................................... + -: 1055:void stop(); + -: 1056: + -: 1057://${QF::QF-base::run} ........................................................ + -: 1058:int_t run(); + -: 1059: + -: 1060://${QF::QF-base::onStartup} .................................................. + -: 1061:void onStartup(); + -: 1062: + -: 1063://${QF::QF-base::onCleanup} .................................................. + -: 1064:void onCleanup(); + -: 1065: + -: 1066://${QF::QF-base::psInit} ..................................................... + -: 1067://! @deprecated + -: 1068:inline void psInit( + -: 1069: QSubscrList * const subscrSto, + -: 1070: enum_t const maxSignal) noexcept + -: 1071:{ + -: 1072: QActive::psInit(subscrSto, maxSignal); + -: 1073:} + -: 1074: + -: 1075://${QF::QF-base::publish_} ................................................... + -: 1076://! @deprecated + -: 1077:inline void publish_( + -: 1078: QEvt const * const e, + -: 1079: void const * const sender, + -: 1080: std::uint_fast8_t const qsId) noexcept + -: 1081:{ + -: 1082: QActive::publish_(e, sender, qsId); + -: 1083:} + -: 1084: + -: 1085://${QF::QF-base::tick} ....................................................... + -: 1086://! @deprecated + -: 1087:inline void tick( + -: 1088: std::uint_fast8_t const tickRate, + -: 1089: void const * const sender) noexcept + -: 1090:{ + -: 1091: QTimeEvt::tick(tickRate, sender); + -: 1092:} + -: 1093: + -: 1094://${QF::QF-base::getQueueMin} ................................................ + -: 1095://! @deprecated + -: 1096:inline std::uint_fast16_t getQueueMin(std::uint_fast8_t const prio) noexcept { + -: 1097: return QActive::getQueueMin(prio); + -: 1098:} + -: 1099: + -: 1100://${QF::QF-base::NO_MARGIN} .................................................. + -: 1101:constexpr std::uint_fast16_t NO_MARGIN {0xFFFFU}; + -: 1102: + -: 1103:} // namespace QF + -: 1104:} // namespace QP + -: 1105://$enddecl${QF::QF-base} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 1106: + -: 1107://$declare${QF::QF-dyn} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 1108:namespace QP { + -: 1109:namespace QF { + -: 1110: + -: 1111://${QF::QF-dyn::poolInit} .................................................... + -: 1112:void poolInit( + -: 1113: void * const poolSto, + -: 1114: std::uint_fast32_t const poolSize, + -: 1115: std::uint_fast16_t const evtSize) noexcept; + -: 1116: + -: 1117://${QF::QF-dyn::poolGetMaxBlockSize} ......................................... + -: 1118:std::uint_fast16_t poolGetMaxBlockSize() noexcept; + -: 1119: + -: 1120://${QF::QF-dyn::getPoolMin} .................................................. + -: 1121:std::uint_fast16_t getPoolMin(std::uint_fast8_t const poolNum) noexcept; + -: 1122: + -: 1123://${QF::QF-dyn::newX_} ....................................................... + -: 1124:QEvt * newX_( + -: 1125: std::uint_fast16_t const evtSize, + -: 1126: std::uint_fast16_t const margin, + -: 1127: enum_t const sig) noexcept; + -: 1128: + -: 1129://${QF::QF-dyn::gc} .......................................................... + -: 1130:void gc(QEvt const * const e) noexcept; + -: 1131: + -: 1132://${QF::QF-dyn::newRef_} ..................................................... + -: 1133:QEvt const * newRef_( + -: 1134: QEvt const * const e, + -: 1135: QEvt const * const evtRef) noexcept; + -: 1136: + -: 1137://${QF::QF-dyn::deleteRef_} .................................................. + -: 1138:void deleteRef_(QEvt const * const evtRef) noexcept; + -: 1139: + -: 1140://${QF::QF-dyn::newXfromISR_} ................................................ + -: 1141:#ifdef QF_ISR_API + -: 1142:QEvt * newXfromISR_( + -: 1143: std::uint_fast16_t const evtSize, + -: 1144: std::uint_fast16_t const margin, + -: 1145: enum_t const sig) noexcept; + -: 1146:#endif // def QF_ISR_API + -: 1147: + -: 1148://${QF::QF-dyn::gcFromISR} ................................................... + -: 1149:#ifdef QF_ISR_API + -: 1150:void gcFromISR(QEvt const * e) noexcept; + -: 1151:#endif // def QF_ISR_API + -: 1152: + -: 1153:} // namespace QF + -: 1154:} // namespace QP + -: 1155://$enddecl${QF::QF-dyn} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 1156: + -: 1157:extern "C" { + -: 1158://$declare${QF-extern-C} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 1159: + -: 1160://${QF-extern-C::QF_onContextSw} ............................................. + -: 1161:#ifdef QF_ON_CONTEXT_SW + -: 1162:void QF_onContextSw( + -: 1163: QP::QActive * prev, + -: 1164: QP::QActive * next); + -: 1165:#endif // def QF_ON_CONTEXT_SW + -: 1166://$enddecl${QF-extern-C} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 1167:} // extern "C" + -: 1168: + -: 1169://$declare${QF-macros} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 1170: + -: 1171://${QF-macros::Q_PRIO} ....................................................... + -: 1172:#define Q_PRIO(prio_, pthre_) \ + -: 1173: (static_cast((prio_) | (pthre_) << 8U)) + -: 1174: + -: 1175://${QF-macros::Q_NEW} ........................................................ + -: 1176:#ifndef QEVT_DYN_CTOR + -: 1177:#define Q_NEW(evtT_, sig_) (static_cast( \ + -: 1178: QP::QF::newX_(sizeof(evtT_), QP::QF::NO_MARGIN, (sig_)))) + -: 1179:#endif // ndef QEVT_DYN_CTOR + -: 1180: + -: 1181://${QF-macros::Q_NEW} ........................................................ + -: 1182:#ifdef QEVT_DYN_CTOR + -: 1183:#define Q_NEW(evtT_, sig_, ...) ( static_cast( \ + -: 1184: QP::QF::newX_(sizeof(evtT_), QP::QF::NO_MARGIN, (sig_)))->ctor(__VA_ARGS__)) + -: 1185:#endif // def QEVT_DYN_CTOR + -: 1186: + -: 1187://${QF-macros::Q_NEW_X} ...................................................... + -: 1188:#ifndef QEVT_DYN_CTOR + -: 1189:#define Q_NEW_X(evtT_, margin_, sig_) (static_cast( \ + -: 1190: QP::QF::newX_(sizeof(evtT_), (margin_), (sig_)))) + -: 1191:#endif // ndef QEVT_DYN_CTOR + -: 1192: + -: 1193://${QF-macros::Q_NEW_X} ...................................................... + -: 1194:#ifdef QEVT_DYN_CTOR + -: 1195:#define Q_NEW_X(evtT_, margin_, sig_, ...) ( static_cast( \ + -: 1196: QP::QF::newX_(sizeof(evtT_), (margin_), (sig_)))->ctor(__VA_ARGS__)) + -: 1197:#endif // def QEVT_DYN_CTOR + -: 1198: + -: 1199://${QF-macros::Q_NEW_REF} .................................................... + -: 1200:#define Q_NEW_REF(evtRef_, evtT_) \ + -: 1201: ((evtRef_) = static_cast(QP::QF::newRef_(e, (evtRef_)))) + -: 1202: + -: 1203://${QF-macros::Q_DELETE_REF} ................................................. + -: 1204:#define Q_DELETE_REF(evtRef_) do { \ + -: 1205: QP::QF::deleteRef_((evtRef_)); \ + -: 1206: (evtRef_) = 0U; \ + -: 1207:} while (false) + -: 1208: + -: 1209://${QF-macros::PUBLISH} ...................................................... + -: 1210:#ifdef Q_SPY + -: 1211:#define PUBLISH(e_, sender_) \ + -: 1212: publish_((e_), (sender_), (sender_)->getPrio()) + -: 1213:#endif // def Q_SPY + -: 1214: + -: 1215://${QF-macros::PUBLISH} ...................................................... + -: 1216:#ifndef Q_SPY + -: 1217:#define PUBLISH(e_, dummy) publish_((e_), nullptr, 0U) + -: 1218:#endif // ndef Q_SPY + -: 1219: + -: 1220://${QF-macros::POST} ......................................................... + -: 1221:#ifdef Q_SPY + -: 1222:#define POST(e_, sender_) post_((e_), QP::QF::NO_MARGIN, (sender_)) + -: 1223:#endif // def Q_SPY + -: 1224: + -: 1225://${QF-macros::POST} ......................................................... + -: 1226:#ifndef Q_SPY + -: 1227:#define POST(e_, dummy) post_((e_), QP::QF::NO_MARGIN, nullptr) + -: 1228:#endif // ndef Q_SPY + -: 1229: + -: 1230://${QF-macros::POST_X} ....................................................... + -: 1231:#ifdef Q_SPY + -: 1232:#define POST_X(e_, margin_, sender_) \ + -: 1233: post_((e_), (margin_), (sender_)) + -: 1234:#endif // def Q_SPY + -: 1235: + -: 1236://${QF-macros::POST_X} ....................................................... + -: 1237:#ifndef Q_SPY + -: 1238:#define POST_X(e_, margin_, dummy) post_((e_), (margin_), nullptr) + -: 1239:#endif // ndef Q_SPY + -: 1240: + -: 1241://${QF-macros::TICK_X} ....................................................... + -: 1242:#ifdef Q_SPY + -: 1243:#define TICK_X(tickRate_, sender_) tick((tickRate_), (sender_)) + -: 1244:#endif // def Q_SPY + -: 1245: + -: 1246://${QF-macros::TICK_X} ....................................................... + -: 1247:#ifndef Q_SPY + -: 1248:#define TICK_X(tickRate_, dummy) tick((tickRate_), nullptr) + -: 1249:#endif // ndef Q_SPY + -: 1250: + -: 1251://${QF-macros::TICK} ......................................................... + -: 1252:#define TICK(sender_) TICK_X(0U, (sender_)) + -: 1253: + -: 1254://${QF-macros::TRIG} ......................................................... + -: 1255:#ifdef Q_SPY + -: 1256:#define TRIG(sender_) trig_((sender_)) + -: 1257:#endif // def Q_SPY + -: 1258: + -: 1259://${QF-macros::TRIG} ......................................................... + -: 1260:#ifndef Q_SPY + -: 1261:#define TRIG(sender_) trig_(nullptr) + -: 1262:#endif // ndef Q_SPY + -: 1263: + -: 1264://${QF-macros::QF_CRIT_EXIT_NOP} ............................................. + -: 1265:#ifndef QF_CRIT_EXIT_NOP + -: 1266:#define QF_CRIT_EXIT_NOP() (static_cast(0)) + -: 1267:#endif // ndef QF_CRIT_EXIT_NOP + -: 1268: + -: 1269://${QF-macros::QF_MEM_SYS} ................................................... + -: 1270:#ifndef QF_MEM_SYS + -: 1271:#define QF_MEM_SYS() (static_cast(0)) + -: 1272:#endif // ndef QF_MEM_SYS + -: 1273: + -: 1274://${QF-macros::QF_MEM_APP} ................................................... + -: 1275:#ifndef QF_MEM_APP + -: 1276:#define QF_MEM_APP() (static_cast(0)) + -: 1277:#endif // ndef QF_MEM_APP + -: 1278://$enddecl${QF-macros} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 1279: + -: 1280:#endif // QP_HPP_ diff --git a/qutest/qhsmtst/test/test_qhsm-funct.py b/qutest/qhsm/test/test_qhsm-funct.py similarity index 61% rename from qutest/qhsmtst/test/test_qhsm-funct.py rename to qutest/qhsm/test/test_qhsm-funct.py index 263fd41..74b04e6 100644 --- a/qutest/qhsmtst/test/test_qhsm-funct.py +++ b/qutest/qhsm/test/test_qhsm-funct.py @@ -8,7 +8,8 @@ def on_reset(): current_obj(OBJ_SM, "the_sm") # tests... -test("QHsmTst_init") +#========================================================== +test("QHsmTst::init") init() expect("@timestamp BSP_DISPLAY top-INIT;") expect("@timestamp BSP_DISPLAY s-ENTRY;") @@ -18,17 +19,29 @@ def on_reset(): expect("@timestamp BSP_DISPLAY s211-ENTRY;") expect("@timestamp Trg-Done QS_RX_EVENT") +#---------------------------------------------------------- test("QHsmTst isIn", NORESET) +command(0) # get state handler +expect("@timestamp CMD QHsmTst::s211") +expect("@timestamp Trg-Done QS_RX_COMMAND") + command(1, 1) # is in state s1 -expect("@timestamp CMD 0 1"); # NOT in s1 +expect("@timestamp CMD 0 1") # NO +expect("@timestamp Trg-Done QS_RX_COMMAND") + +command(1, 2) # is in state s2 +expect("@timestamp CMD 1 2") # YES expect("@timestamp Trg-Done QS_RX_COMMAND") + command(1, 21) # is in state s21 -expect("@timestamp CMD 1 21"); # YES, in s21 +expect("@timestamp CMD 1 21") # YES expect("@timestamp Trg-Done QS_RX_COMMAND") + command(1, 211) # is in state s211 -expect("@timestamp CMD 1 211"); # YES, in s211 +expect("@timestamp CMD 1 211") # YES expect("@timestamp Trg-Done QS_RX_COMMAND") +#---------------------------------------------------------- test("QHsmTst dispatch", NORESET) dispatch("A_SIG") expect("@timestamp BSP_DISPLAY s21-A;") @@ -45,156 +58,146 @@ def on_reset(): expect("@timestamp BSP_DISPLAY s211-ENTRY;") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("D_SIG") -expect("@timestamp BSP_DISPLAY s211-D;") +dispatch("C_SIG") +expect("@timestamp BSP_DISPLAY s211-C;") expect("@timestamp BSP_DISPLAY s211-EXIT;") -expect("@timestamp BSP_DISPLAY s21-INIT;") -expect("@timestamp BSP_DISPLAY s211-ENTRY;") +expect("@timestamp BSP_DISPLAY s212-ENTRY;") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("E_SIG") -expect("@timestamp BSP_DISPLAY s-E;") -expect("@timestamp BSP_DISPLAY s211-EXIT;") +dispatch("D_SIG") +expect("@timestamp BSP_DISPLAY s21-D;") +expect("@timestamp BSP_DISPLAY s212-EXIT;") expect("@timestamp BSP_DISPLAY s21-EXIT;") -expect("@timestamp BSP_DISPLAY s2-EXIT;") -expect("@timestamp BSP_DISPLAY s1-ENTRY;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("I_SIG") -expect("@timestamp BSP_DISPLAY s1-I;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("F_SIG") -expect("@timestamp BSP_DISPLAY s1-F;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s1-EXIT;") -expect("@timestamp BSP_DISPLAY s2-ENTRY;") +expect("@timestamp BSP_DISPLAY s2-INIT;") expect("@timestamp BSP_DISPLAY s21-ENTRY;") expect("@timestamp BSP_DISPLAY s211-ENTRY;") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("I_SIG") -expect("@timestamp BSP_DISPLAY s2-I;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("I_SIG") -expect("@timestamp BSP_DISPLAY s-I;") +dispatch("E_SIG") +expect("@timestamp BSP_DISPLAY s2-E;") +expect("@timestamp BSP_DISPLAY s211-EXIT;") +expect("@timestamp BSP_DISPLAY s21-EXIT;") +expect("@timestamp BSP_DISPLAY s22-ENTRY;") expect("@timestamp Trg-Done QS_RX_EVENT") dispatch("F_SIG") expect("@timestamp BSP_DISPLAY s2-F;") -expect("@timestamp BSP_DISPLAY s211-EXIT;") -expect("@timestamp BSP_DISPLAY s21-EXIT;") +expect("@timestamp BSP_DISPLAY s22-EXIT;") expect("@timestamp BSP_DISPLAY s2-EXIT;") expect("@timestamp BSP_DISPLAY s1-ENTRY;") expect("@timestamp BSP_DISPLAY s11-ENTRY;") +expect("@timestamp BSP_DISPLAY s11-INIT;") +expect("@timestamp BSP_DISPLAY s111-ENTRY;") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("A_SIG") -expect("@timestamp BSP_DISPLAY s1-A;") +dispatch("C_SIG") +expect("@timestamp BSP_DISPLAY s111-C;") +expect("@timestamp BSP_DISPLAY s111-EXIT;") +expect("@timestamp BSP_DISPLAY s112-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("H_SIG") +expect("@timestamp BSP_DISPLAY s112-H;") +expect("@timestamp BSP_DISPLAY s112-EXIT;") expect("@timestamp BSP_DISPLAY s11-EXIT;") expect("@timestamp BSP_DISPLAY s1-EXIT;") +expect("@timestamp BSP_DISPLAY s-INIT;") expect("@timestamp BSP_DISPLAY s1-ENTRY;") expect("@timestamp BSP_DISPLAY s1-INIT;") expect("@timestamp BSP_DISPLAY s11-ENTRY;") +expect("@timestamp BSP_DISPLAY s111-ENTRY;") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("B_SIG") -expect("@timestamp BSP_DISPLAY s1-B;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") +#========================================================== +test("QHsmTst guards") +init() +expect("@timestamp BSP_DISPLAY top-INIT;") +expect("@timestamp BSP_DISPLAY s-ENTRY;") +expect("@timestamp BSP_DISPLAY s2-ENTRY;") +expect("@timestamp BSP_DISPLAY s2-INIT;") +expect("@timestamp BSP_DISPLAY s21-ENTRY;") +expect("@timestamp BSP_DISPLAY s211-ENTRY;") expect("@timestamp Trg-Done QS_RX_EVENT") dispatch("D_SIG") -expect("@timestamp BSP_DISPLAY s1-D;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s1-EXIT;") -expect("@timestamp BSP_DISPLAY s-INIT;") -expect("@timestamp BSP_DISPLAY s1-ENTRY;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") +expect("@timestamp BSP_DISPLAY s21-D;") +expect("@timestamp BSP_DISPLAY s211-EXIT;") +expect("@timestamp BSP_DISPLAY s21-EXIT;") +expect("@timestamp BSP_DISPLAY s2-INIT;") +expect("@timestamp BSP_DISPLAY s21-ENTRY;") +expect("@timestamp BSP_DISPLAY s211-ENTRY;") expect("@timestamp Trg-Done QS_RX_EVENT") dispatch("D_SIG") -expect("@timestamp BSP_DISPLAY s11-D;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s1-INIT;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("E_SIG") -expect("@timestamp BSP_DISPLAY s-E;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s1-EXIT;") -expect("@timestamp BSP_DISPLAY s1-ENTRY;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") +dispatch("I_SIG") +expect("@timestamp BSP_DISPLAY s2-I;") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("G_SIG") -expect("@timestamp BSP_DISPLAY s11-G;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s1-EXIT;") +dispatch("I_SIG") +expect("@timestamp BSP_DISPLAY s-I;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +#========================================================== +test("QHsmTst history") +init() +expect("@timestamp BSP_DISPLAY top-INIT;") +expect("@timestamp BSP_DISPLAY s-ENTRY;") expect("@timestamp BSP_DISPLAY s2-ENTRY;") +expect("@timestamp BSP_DISPLAY s2-INIT;") expect("@timestamp BSP_DISPLAY s21-ENTRY;") expect("@timestamp BSP_DISPLAY s211-ENTRY;") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("H_SIG") -expect("@timestamp BSP_DISPLAY s211-H;") +dispatch("G_SIG") +expect("@timestamp BSP_DISPLAY s21-G->H*-s1;") expect("@timestamp BSP_DISPLAY s211-EXIT;") expect("@timestamp BSP_DISPLAY s21-EXIT;") expect("@timestamp BSP_DISPLAY s2-EXIT;") -expect("@timestamp BSP_DISPLAY s-INIT;") expect("@timestamp BSP_DISPLAY s1-ENTRY;") expect("@timestamp BSP_DISPLAY s11-ENTRY;") +expect("@timestamp BSP_DISPLAY s111-ENTRY;") expect("@timestamp Trg-Done QS_RX_EVENT") +command(1, 111) # is in state s111 +expect("@timestamp CMD 1 111") +expect("@timestamp Trg-Done QS_RX_COMMAND") -dispatch("H_SIG") -expect("@timestamp BSP_DISPLAY s11-H;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s1-EXIT;") -expect("@timestamp BSP_DISPLAY s-INIT;") -expect("@timestamp BSP_DISPLAY s1-ENTRY;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") +dispatch("C_SIG") +expect("@timestamp BSP_DISPLAY s111-C;") +expect("@timestamp BSP_DISPLAY s111-EXIT;") +expect("@timestamp BSP_DISPLAY s112-ENTRY;") expect("@timestamp Trg-Done QS_RX_EVENT") dispatch("C_SIG") -expect("@timestamp BSP_DISPLAY s1-C;") +expect("@timestamp BSP_DISPLAY s-C;") +expect("@timestamp BSP_DISPLAY s112-EXIT;") expect("@timestamp BSP_DISPLAY s11-EXIT;") expect("@timestamp BSP_DISPLAY s1-EXIT;") -expect("@timestamp BSP_DISPLAY s2-ENTRY;") -expect("@timestamp BSP_DISPLAY s2-INIT;") -expect("@timestamp BSP_DISPLAY s21-ENTRY;") -expect("@timestamp BSP_DISPLAY s211-ENTRY;") +expect("@timestamp BSP_DISPLAY s-EXIT;") +expect("@timestamp BSP_DISPLAY t-ENTRY;") expect("@timestamp Trg-Done QS_RX_EVENT") +command(1, 0) # is in state s +expect("@timestamp CMD 0 0") # NO +expect("@timestamp Trg-Done QS_RX_COMMAND") -dispatch("G_SIG") -expect("@timestamp BSP_DISPLAY s21-G;") -expect("@timestamp BSP_DISPLAY s211-EXIT;") -expect("@timestamp BSP_DISPLAY s21-EXIT;") -expect("@timestamp BSP_DISPLAY s2-EXIT;") +dispatch("C_SIG") +expect("@timestamp BSP_DISPLAY t-C->H-s;") +expect("@timestamp BSP_DISPLAY t-EXIT;") +expect("@timestamp BSP_DISPLAY s-ENTRY;") expect("@timestamp BSP_DISPLAY s1-ENTRY;") expect("@timestamp BSP_DISPLAY s1-INIT;") expect("@timestamp BSP_DISPLAY s11-ENTRY;") +expect("@timestamp BSP_DISPLAY s111-ENTRY;") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("C_SIG") -expect("@timestamp BSP_DISPLAY s1-C;") +dispatch("G_SIG") +expect("@timestamp BSP_DISPLAY s11-G->H*-s2;") +expect("@timestamp BSP_DISPLAY s111-EXIT;") expect("@timestamp BSP_DISPLAY s11-EXIT;") expect("@timestamp BSP_DISPLAY s1-EXIT;") expect("@timestamp BSP_DISPLAY s2-ENTRY;") -expect("@timestamp BSP_DISPLAY s2-INIT;") expect("@timestamp BSP_DISPLAY s21-ENTRY;") expect("@timestamp BSP_DISPLAY s211-ENTRY;") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("C_SIG") -expect("@timestamp BSP_DISPLAY s2-C;") -expect("@timestamp BSP_DISPLAY s211-EXIT;") -expect("@timestamp BSP_DISPLAY s21-EXIT;") -expect("@timestamp BSP_DISPLAY s2-EXIT;") -expect("@timestamp BSP_DISPLAY s1-ENTRY;") -expect("@timestamp BSP_DISPLAY s1-INIT;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - diff --git a/qutest/qhsmtst/test/test_qhsm-struct.py b/qutest/qhsm/test/test_qhsm-struct.py similarity index 64% rename from qutest/qhsmtst/test/test_qhsm-struct.py rename to qutest/qhsm/test/test_qhsm-struct.py index 0d1aad9..e6e02f0 100644 --- a/qutest/qhsmtst/test/test_qhsm-struct.py +++ b/qutest/qhsm/test/test_qhsm-struct.py @@ -4,10 +4,11 @@ # preamble... def on_reset(): expect_run() - glb_filter(GRP_SM) + glb_filter(GRP_SM, GRP_U1) current_obj(OBJ_SM, "the_sm") # tests... +#========================================================== test("QHsmTst init") init() expect("===RTC===> St-Init Obj=the_sm,State=QP::QHsm::top->QHsmTst::s2") @@ -19,6 +20,29 @@ def on_reset(): expect("@timestamp Init===> Obj=the_sm,State=QHsmTst::s211") expect("@timestamp Trg-Done QS_RX_EVENT") +#---------------------------------------------------------- +test("QHsmTst isIn", NORESET) +command(0) # get state handler +expect("@timestamp CMD QHsmTst::s211") +expect("@timestamp Trg-Done QS_RX_COMMAND") + +command(1, 1) # is in state s1 +expect("@timestamp CMD 0 1") # NO +expect("@timestamp Trg-Done QS_RX_COMMAND") + +command(1, 2) # is in state s2 +expect("@timestamp CMD 1 2") # YES +expect("@timestamp Trg-Done QS_RX_COMMAND") + +command(1, 21) # is in state s21 +expect("@timestamp CMD 1 21") # YES +expect("@timestamp Trg-Done QS_RX_COMMAND") + +command(1, 211) # is in state s211 +expect("@timestamp CMD 1 211") # YES +expect("@timestamp Trg-Done QS_RX_COMMAND") + +#---------------------------------------------------------- test("QHsmTst dispatch", NORESET) dispatch("A_SIG") expect("@timestamp Disp===> Obj=the_sm,Sig=A_SIG,State=QHsmTst::s211") @@ -37,145 +61,116 @@ def on_reset(): expect("@timestamp ===>Tran Obj=the_sm,Sig=B_SIG,State=QHsmTst::s21->QHsmTst::s211") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("D_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=D_SIG,State=QHsmTst::s211") +dispatch("C_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=C_SIG,State=QHsmTst::s211") expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s211") -expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s21->QHsmTst::s211") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s211") -expect("@timestamp ===>Tran Obj=the_sm,Sig=D_SIG,State=QHsmTst::s211->QHsmTst::s211") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s212") +expect("@timestamp ===>Tran Obj=the_sm,Sig=C_SIG,State=QHsmTst::s211->QHsmTst::s212") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("E_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=E_SIG,State=QHsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s211") +dispatch("D_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=D_SIG,State=QHsmTst::s212") +expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s212") expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s21") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s2") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=E_SIG,State=QHsmTst::s->QHsmTst::s11") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("I_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=I_SIG,State=QHsmTst::s11") -expect("@timestamp =>Intern Obj=the_sm,Sig=I_SIG,State=QHsmTst::s1") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("F_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=F_SIG,State=QHsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s2") +expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s2->QHsmTst::s211") expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s21") expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s211") -expect("@timestamp ===>Tran Obj=the_sm,Sig=F_SIG,State=QHsmTst::s1->QHsmTst::s211") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("I_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=I_SIG,State=QHsmTst::s211") -expect("@timestamp =>Intern Obj=the_sm,Sig=I_SIG,State=QHsmTst::s2") +expect("@timestamp ===>Tran Obj=the_sm,Sig=D_SIG,State=QHsmTst::s21->QHsmTst::s211") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("I_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=I_SIG,State=QHsmTst::s211") -expect("===RTC===> St-Unhnd Obj=the_sm,Sig=I_SIG,State=QHsmTst::s2") -expect("@timestamp =>Intern Obj=the_sm,Sig=I_SIG,State=QHsmTst::s") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("F_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=F_SIG,State=QHsmTst::s211") +dispatch("E_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=E_SIG,State=QHsmTst::s211") expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s211") expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s21") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s2") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=F_SIG,State=QHsmTst::s2->QHsmTst::s11") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s22") +expect("@timestamp ===>Tran Obj=the_sm,Sig=E_SIG,State=QHsmTst::s2->QHsmTst::s22") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("A_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=A_SIG,State=QHsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s1") +dispatch("F_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=F_SIG,State=QHsmTst::s22") +expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s22") +expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s2") expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s1") -expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s1->QHsmTst::s11") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=A_SIG,State=QHsmTst::s1->QHsmTst::s11") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("B_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=B_SIG,State=QHsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s11") expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=B_SIG,State=QHsmTst::s1->QHsmTst::s11") +expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s11->QHsmTst::s111") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s111") +expect("@timestamp ===>Tran Obj=the_sm,Sig=F_SIG,State=QHsmTst::s2->QHsmTst::s111") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("D_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=D_SIG,State=QHsmTst::s11") -expect("===RTC===> St-Unhnd Obj=the_sm,Sig=D_SIG,State=QHsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s1") -expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s->QHsmTst::s11") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=D_SIG,State=QHsmTst::s1->QHsmTst::s11") +dispatch("H_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=H_SIG,State=QHsmTst::s111") +expect("@timestamp =>Ignore Obj=the_sm,Sig=H_SIG,State=QHsmTst::s111") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("D_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=D_SIG,State=QHsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s11") -expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s1->QHsmTst::s11") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=D_SIG,State=QHsmTst::s11->QHsmTst::s11") +dispatch("C_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=C_SIG,State=QHsmTst::s111") +expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s111") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s112") +expect("@timestamp ===>Tran Obj=the_sm,Sig=C_SIG,State=QHsmTst::s111->QHsmTst::s112") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("E_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=E_SIG,State=QHsmTst::s11") +dispatch("H_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=H_SIG,State=QHsmTst::s112") +expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s112") expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s11") expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s1") +expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s->QHsmTst::s1") expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s1") +expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s1->QHsmTst::s111") expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=E_SIG,State=QHsmTst::s->QHsmTst::s11") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s111") +expect("@timestamp ===>Tran Obj=the_sm,Sig=H_SIG,State=QHsmTst::s112->QHsmTst::s111") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("G_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=G_SIG,State=QHsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s1") +#========================================================== +test("QHsmTst guards") +init() +expect("===RTC===> St-Init Obj=the_sm,State=QP::QHsm::top->QHsmTst::s2") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s") expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s2") +expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s2->QHsmTst::s211") expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s21") expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s211") -expect("@timestamp ===>Tran Obj=the_sm,Sig=G_SIG,State=QHsmTst::s11->QHsmTst::s211") +expect("@timestamp Init===> Obj=the_sm,State=QHsmTst::s211") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("H_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=H_SIG,State=QHsmTst::s211") +dispatch("D_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=D_SIG,State=QHsmTst::s211") expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s211") expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s21") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s2") -expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s->QHsmTst::s11") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=H_SIG,State=QHsmTst::s211->QHsmTst::s11") +expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s2->QHsmTst::s211") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s21") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s211") +expect("@timestamp ===>Tran Obj=the_sm,Sig=D_SIG,State=QHsmTst::s21->QHsmTst::s211") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("H_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=H_SIG,State=QHsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s1") -expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s->QHsmTst::s11") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=H_SIG,State=QHsmTst::s11->QHsmTst::s11") +dispatch("D_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=D_SIG,State=QHsmTst::s211") +expect("===RTC===> St-Unhnd Obj=the_sm,Sig=D_SIG,State=QHsmTst::s21") +expect("@timestamp =>Ignore Obj=the_sm,Sig=D_SIG,State=QHsmTst::s211") expect("@timestamp Trg-Done QS_RX_EVENT") -dispatch("C_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=C_SIG,State=QHsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s1") +dispatch("I_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=I_SIG,State=QHsmTst::s211") +expect("@timestamp =>Intern Obj=the_sm,Sig=I_SIG,State=QHsmTst::s2") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("I_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=I_SIG,State=QHsmTst::s211") +expect("===RTC===> St-Unhnd Obj=the_sm,Sig=I_SIG,State=QHsmTst::s2") +expect("@timestamp =>Intern Obj=the_sm,Sig=I_SIG,State=QHsmTst::s") +expect("@timestamp Trg-Done QS_RX_EVENT") + +#========================================================== +test("QHsmTst history") +init() +expect("===RTC===> St-Init Obj=the_sm,State=QP::QHsm::top->QHsmTst::s2") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s") expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s2") expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s2->QHsmTst::s211") expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s21") expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s211") -expect("@timestamp ===>Tran Obj=the_sm,Sig=C_SIG,State=QHsmTst::s1->QHsmTst::s211") +expect("@timestamp Init===> Obj=the_sm,State=QHsmTst::s211") expect("@timestamp Trg-Done QS_RX_EVENT") dispatch("G_SIG") @@ -183,31 +178,53 @@ def on_reset(): expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s211") expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s21") expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s2") +expect("===RTC===> St-Hist Obj=the_sm,State=QHsmTst::s21->QHsmTst::s111") expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s1") -expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s1->QHsmTst::s11") expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=G_SIG,State=QHsmTst::s21->QHsmTst::s11") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s111") +expect("@timestamp ===>Tran Obj=the_sm,Sig=G_SIG,State=QHsmTst::s21->QHsmTst::s111") expect("@timestamp Trg-Done QS_RX_EVENT") +command(1, 111) # is in state s111 +expect("@timestamp CMD 1 111") +expect("@timestamp Trg-Done QS_RX_COMMAND") dispatch("C_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=C_SIG,State=QHsmTst::s11") +expect("@timestamp Disp===> Obj=the_sm,Sig=C_SIG,State=QHsmTst::s111") +expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s111") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s112") +expect("@timestamp ===>Tran Obj=the_sm,Sig=C_SIG,State=QHsmTst::s111->QHsmTst::s112") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("C_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=C_SIG,State=QHsmTst::s112") +expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s112") expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s11") expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s2") -expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s2->QHsmTst::s211") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s21") -expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s211") -expect("@timestamp ===>Tran Obj=the_sm,Sig=C_SIG,State=QHsmTst::s1->QHsmTst::s211") +expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::t") +expect("@timestamp ===>Tran Obj=the_sm,Sig=C_SIG,State=QHsmTst::s->QHsmTst::t") expect("@timestamp Trg-Done QS_RX_EVENT") dispatch("C_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=C_SIG,State=QHsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s21") -expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s2") +expect("@timestamp Disp===> Obj=the_sm,Sig=C_SIG,State=QHsmTst::t") +expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::t") +expect("===RTC===> St-Hist Obj=the_sm,State=QHsmTst::t->QHsmTst::s1") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s") expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s1") -expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s1->QHsmTst::s11") +expect("===RTC===> St-Init Obj=the_sm,State=QHsmTst::s1->QHsmTst::s111") expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=C_SIG,State=QHsmTst::s2->QHsmTst::s11") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s111") +expect("@timestamp ===>Tran Obj=the_sm,Sig=C_SIG,State=QHsmTst::t->QHsmTst::s111") expect("@timestamp Trg-Done QS_RX_EVENT") +dispatch("G_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=G_SIG,State=QHsmTst::s111") +expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s111") +expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s11") +expect("===RTC===> St-Exit Obj=the_sm,State=QHsmTst::s1") +expect("===RTC===> St-Hist Obj=the_sm,State=QHsmTst::s11->QHsmTst::s211") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s2") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s21") +expect("===RTC===> St-Entry Obj=the_sm,State=QHsmTst::s211") +expect("@timestamp ===>Tran Obj=the_sm,Sig=G_SIG,State=QHsmTst::s11->QHsmTst::s211") +expect("@timestamp Trg-Done QS_RX_EVENT") diff --git a/qutest/qhsmtst/test/test_qhsm.cpp b/qutest/qhsm/test/test_qhsm.cpp similarity index 94% rename from qutest/qhsmtst/test/test_qhsm.cpp rename to qutest/qhsm/test/test_qhsm.cpp index fb54431..854285d 100644 --- a/qutest/qhsmtst/test/test_qhsm.cpp +++ b/qutest/qhsm/test/test_qhsm.cpp @@ -1,7 +1,7 @@ //============================================================================ // Purpose: Fixture for QUTEST -// Last Updated for Version: 7.3.1 -// Date of the Last Update: 2023-12-11 +// Last Updated for Version: 7.4.0 +// Date of the Last Update: 2024-09-04 // // Q u a n t u m L e a P s // ------------------------ @@ -32,7 +32,7 @@ // //============================================================================ #include "qpcpp.hpp" -#include "qhsmtst.hpp" +#include "cut_qhsm.hpp" Q_DEFINE_THIS_FILE @@ -40,8 +40,10 @@ Q_DEFINE_THIS_FILE namespace APP { enum { - BSP_DISPLAY = QP::QS_USER, - CMD, + BSP_DISPLAY = QP::QS_USER0, +}; +enum { + CMD = QP::QS_USER1, }; void BSP_display(char const *msg) { @@ -76,7 +78,9 @@ void QS::onCommand(std::uint8_t cmdId, std::uint32_t param1, //PRINTF_S(" Command id=%d param=%d\n", (int)cmdId, (int)param); switch (cmdId) { case 0U: { + QP::QStateHandler state = APP::the_sm->getStateHandler(); QS_BEGIN_ID(APP::CMD, 0U) // app-specific record + QS_FUN(state); QS_END() break; } diff --git a/qutest/qhsmtst/src/qhsmtst.qm b/qutest/qhsmtst/src/qhsmtst.qm deleted file mode 100644 index a7e89dc..0000000 --- a/qutest/qhsmtst/src/qhsmtst.qm +++ /dev/null @@ -1,387 +0,0 @@ - - - QHsmTst is a contrived state machine from Chapter 2 of the PSiCC2 book for testing all possible transition topologies with up to 4-levels of state nesting. - - - - - - - Test active object - - - - - - - : QHsm(&initial) - - - - - - Q_UNUSED_PAR(e); -m_foo = 0U; -BSP_display("top-INIT;"); - -QS_SIG_DICTIONARY(A_SIG, nullptr); -QS_SIG_DICTIONARY(B_SIG, nullptr); -QS_SIG_DICTIONARY(C_SIG, nullptr); -QS_SIG_DICTIONARY(D_SIG, nullptr); -QS_SIG_DICTIONARY(E_SIG, nullptr); -QS_SIG_DICTIONARY(F_SIG, nullptr); -QS_SIG_DICTIONARY(G_SIG, nullptr); -QS_SIG_DICTIONARY(H_SIG, nullptr); -QS_SIG_DICTIONARY(I_SIG, nullptr); -QS_SIG_DICTIONARY(TERMINATE_SIG, nullptr); -QS_SIG_DICTIONARY(IGNORE_SIG, nullptr); - - - - - - - BSP_display("s-ENTRY;"); - BSP_display("s-EXIT;"); - - - BSP_display("s-INIT;"); - - - - - - - - - m_foo - m_foo = 0U; -BSP_display("s-I;"); - - - - - - - - - - - BSP_display("s-E;"); - - - - - - - BSP_terminate(0); - - - - - - - BSP_display("s1-ENTRY;"); - BSP_display("s1-EXIT;"); - - - BSP_display("s1-INIT;"); - - - - - - - BSP_display("s1-I;"); - - - - - - - - - !m_foo - m_foo = true; -BSP_display("s1-D;"); - - - - - - - - - - - BSP_display("s1-A;"); - - - - - - - BSP_display("s1-B;"); - - - - - - - BSP_display("s1-F;"); - - - - - - - BSP_display("s1-C;"); - - - - - - - BSP_display("s11-ENTRY;"); - BSP_display("s11-EXIT;"); - - - BSP_display("s11-H;"); - - - - - - - - - m_foo - m_foo = false; -BSP_display("s11-D;"); - - - - - - - - - - - BSP_display("s11-G;"); - - - - - - - - - - - - - - - - - BSP_display("s2-ENTRY;"); - BSP_display("s2-EXIT;"); - - - BSP_display("s2-INIT;"); - - - - - - - - - !m_foo - m_foo = true; -BSP_display("s2-I;"); - - - - - - - - - - - BSP_display("s2-F;"); - - - - - - - BSP_display("s2-C;"); - - - - - - - BSP_display("s21-ENTRY;"); - BSP_display("s21-EXIT;"); - - - BSP_display("s21-INIT;"); - - - - - - - BSP_display("s21-G;"); - - - - - - - BSP_display("s21-A;"); - - - - - - - BSP_display("s21-B;"); - - - - - - - BSP_display("s211-ENTRY;"); - BSP_display("s211-EXIT;"); - - - BSP_display("s211-H;"); - - - - - - - BSP_display("s211-D;"); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #ifndef QHSMTST_HPP_ -#define QHSMTST_HPP_ - -namespace APP { - -enum QHsmTstSignals { - A_SIG = QP::Q_USER_SIG, - B_SIG, - C_SIG, - D_SIG, - E_SIG, - F_SIG, - G_SIG, - H_SIG, - I_SIG, - TERMINATE_SIG, - IGNORE_SIG, - MAX_SIG -}; - -extern QP::QAsm * const the_sm; // opaque pointer to the test SM - -bool QHsmTst_isIn(std::uint32_t const state_num); - -// BSP functions to display a message and exit -void BSP_display(char const *msg); -void BSP_terminate(int16_t const result); - -} // namespace APP - -#endif // QHSMTST_HPP_ - - - - #include "qpcpp.hpp" -#include "qhsmtst.hpp" - -namespace { -Q_DEFINE_THIS_FILE -} - -namespace APP { - -$declare ${SMs::QHsmTst} - -static QHsmTst l_hsmtst; // the only instance of the QHsmTst class - -// global-scope definitions ----------------------------------------- -QP::QAsm * const the_sm = &l_hsmtst; // the opaque pointer - -$define ${SMs::QHsmTst} - -bool QHsmTst_isIn(std::uint32_t const state_num) { - QP::QHsm * const me = &l_hsmtst; - bool stat = false; - switch (state_num) { - case 0: - stat = me->isIn(Q_STATE_CAST(&QHsmTst::s)); - break; - case 1: - stat = me->isIn(Q_STATE_CAST(&QHsmTst::s1)); - break; - case 11: - stat = me->isIn(Q_STATE_CAST(&QHsmTst::s11)); - break; - case 2: - stat = me->isIn(Q_STATE_CAST(&QHsmTst::s2)); - break; - case 21: - stat = me->isIn(Q_STATE_CAST(&QHsmTst::s21)); - break; - case 211: - stat = me->isIn(Q_STATE_CAST(&QHsmTst::s211)); - break; - default: - Q_ERROR(); - } - return stat; -} - -} // namespace APP - - - diff --git a/qutest/qmsm/src/cut_qmsm.cpp b/qutest/qmsm/src/cut_qmsm.cpp new file mode 100644 index 0000000..63986ba --- /dev/null +++ b/qutest/qmsm/src/cut_qmsm.cpp @@ -0,0 +1,849 @@ +//$file${.::cut_qmsm.cpp} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +// +// Model: qmsm.qm +// File: ${.::cut_qmsm.cpp} +// +// This code has been generated by QM 6.2.2 . +// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// +// SPDX-License-Identifier: GPL-3.0-or-later +// +// This generated code is open source software: you can redistribute it under +// the terms of the GNU General Public License as published by the Free +// Software Foundation. +// +// This code is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +// more details. +// +// NOTE: +// Please contact Quantum Leaps for commercial licensing options, which +// expressly supersede the GNU General Public License and are specifically +// designed for licensees interested in retaining the proprietary status +// of the generated code. +// +// Contact information: +// +// +// +//$endhead${.::cut_qmsm.cpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +#include "qpcpp.hpp" +#include "cut_qmsm.hpp" + +namespace { +Q_DEFINE_THIS_FILE +} + +namespace APP { + +//$declare${SMs::QMsmTst} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + +//${SMs::QMsmTst} ............................................................ +class QMsmTst : public QP::QMsm { +private: + bool m_foo; + +public: + friend bool QMsmTst_isIn(std::uint32_t const state_num); + +public: + QMsmTst() + : QMsm(&initial) + {} + +protected: + // exit points for submachine ${SMs::QMsmTst::SM::sub} + struct SM_sub { + QP::QMState super; + QP::QActionHandler const xpH; // exit-point segment + QP::QActionHandler const xpG; // exit-point segment + } const *sub_sub; + + QM_STATE_DECL( initial); + QM_STATE_DECL( s); + QM_ACTION_DECL(s_e); + QM_ACTION_DECL(s_x); + QM_ACTION_DECL(s_i); + QM_SM_STATE_DECL(sub, s1); + QM_ACTION_DECL(s1_e); + QM_ACTION_DECL(s1_xpH); + QM_ACTION_DECL(s1_xpG); + QM_SM_STATE_DECL(sub, s2); + QM_ACTION_DECL(s2_e); + QM_ACTION_DECL(s2_xpH); + QM_ACTION_DECL(s2_xpG); + QM_STATE_DECL( t); + QM_ACTION_DECL(t_e); + QM_ACTION_DECL(t_x); + + // submachine ${SMs::QMsmTst::SM::sub} + QM_STATE_DECL( sub); + QM_ACTION_DECL(sub_e); + QM_ACTION_DECL(sub_x); + QM_ACTION_DECL(sub_i); + QM_ACTION_DECL(sub_ep1_ep); + QM_STATE_DECL( sub_sub1); + QM_ACTION_DECL(sub_sub1_e); + QM_ACTION_DECL(sub_sub1_x); + QM_ACTION_DECL(sub_sub1_i); + QM_STATE_DECL( sub_sub11); + QM_ACTION_DECL(sub_sub11_e); + QM_ACTION_DECL(sub_sub11_x); + QM_STATE_DECL( sub_sub12); + QM_ACTION_DECL(sub_sub12_e); + QM_ACTION_DECL(sub_sub12_x); + QM_STATE_DECL( sub_sub2); + QM_ACTION_DECL(sub_sub2_e); + QM_ACTION_DECL(sub_sub2_x); + +protected: + QP::QMState const *hist_s; + QP::QMState const *hist_s1; + QP::QMState const *hist_s2; +}; // class QMsmTst +//$enddecl${SMs::QMsmTst} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +static QMsmTst l_msmtst; // the only instance of the QMsmTst class + +// global-scope definitions ----------------------------------------- +QP::QAsm * const the_sm = &l_msmtst; // the opaque pointer + +//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +// Check for the minimum required QP version +#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U)) +#error qpcpp version 7.3.0 or higher required +#endif +//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//$define${SMs::QMsmTst} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + +//${SMs::QMsmTst} ............................................................ + +//${SMs::QMsmTst::SM} ........................................................ +QM_STATE_DEF(QMsmTst, initial) { + //${SMs::QMsmTst::SM::initial} + Q_UNUSED_PAR(e); + m_foo = 0U; + BSP_display("top-INIT;"); + + QS_SIG_DICTIONARY(A_SIG, nullptr); + QS_SIG_DICTIONARY(B_SIG, nullptr); + QS_SIG_DICTIONARY(C_SIG, nullptr); + QS_SIG_DICTIONARY(D_SIG, nullptr); + QS_SIG_DICTIONARY(E_SIG, nullptr); + QS_SIG_DICTIONARY(F_SIG, nullptr); + QS_SIG_DICTIONARY(G_SIG, nullptr); + QS_SIG_DICTIONARY(H_SIG, nullptr); + QS_SIG_DICTIONARY(I_SIG, nullptr); + // state history attributes + hist_s = &s1_s.super; + hist_s1 = &sub_sub11_s; + hist_s2 = &sub_sub11_s; + + QS_FUN_DICTIONARY(&QMsmTst::s); + QS_FUN_DICTIONARY(&QMsmTst::s1); + QS_FUN_DICTIONARY(&QMsmTst::s2); + QS_FUN_DICTIONARY(&QMsmTst::t); + QS_FUN_DICTIONARY(&QMsmTst::sub_sub1); + QS_FUN_DICTIONARY(&QMsmTst::sub_sub11); + QS_FUN_DICTIONARY(&QMsmTst::sub_sub12); + QS_FUN_DICTIONARY(&QMsmTst::sub_sub2); + QS_FUN_DICTIONARY(&QMsmTst::sub); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[4]; + } const tatbl_ = { // tran-action table + &sub_s, // target submachine + { + &s_e, // entry + &s2_e, // entry + &sub_i, // initial tran. + Q_ACTION_NULL // zero terminator + } + }; + return qm_tran_init(&tatbl_); +} + +//${SMs::QMsmTst::SM::s} ..................................................... +QP::QMState const QMsmTst::s_s = { + QM_STATE_NULL, // superstate (top) + &QMsmTst::s, + &QMsmTst::s_e, + &QMsmTst::s_x, + &QMsmTst::s_i +}; +//${SMs::QMsmTst::SM::s} +QM_ACTION_DEF(QMsmTst, s_e) { + BSP_display("s-ENTRY;"); + return qm_entry(&s_s); +} +//${SMs::QMsmTst::SM::s} +QM_ACTION_DEF(QMsmTst, s_x) { + BSP_display("s-EXIT;"); + // save shallow history + hist_s = childStateObj(&s_s); + return qm_exit(&s_s); +} +//${SMs::QMsmTst::SM::s::initial} +QM_ACTION_DEF(QMsmTst, s_i) { + //${SMs::QMsmTst::SM::s::initial} + BSP_display("s-INIT;"); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[3]; + } const tatbl_ = { // tran-action table + &sub_s, // target submachine + { + &s1_e, // entry + &sub_i, // initial tran. + Q_ACTION_NULL // zero terminator + } + }; + return qm_tran_init(&tatbl_); +} +//${SMs::QMsmTst::SM::s} +QM_STATE_DEF(QMsmTst, s) { + QP::QState status_; + switch (e->sig) { + //${SMs::QMsmTst::SM::s::E} + case E_SIG: { + BSP_display("s-E;"); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[3]; + } const tatbl_ = { // tran-action table + &sub_s, // target submachine + { + &s1_e, // entry + &sub_ep1_ep, // EP + Q_ACTION_NULL // zero terminator + } + }; + status_ = qm_tran_ep(&tatbl_); + break; + } + //${SMs::QMsmTst::SM::s::I} + case I_SIG: { + BSP_display("s-I;"); + status_ = Q_RET_HANDLED; + break; + } + //${SMs::QMsmTst::SM::s::C} + case C_SIG: { + BSP_display("s-C;"); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[3]; + } const tatbl_ = { // tran-action table + &t_s, // target state + { + &s_x, // exit + &t_e, // entry + Q_ACTION_NULL // zero terminator + } + }; + status_ = qm_tran(&tatbl_); + break; + } + default: { + status_ = Q_RET_SUPER; + break; + } + } + return status_; +} + +//${SMs::QMsmTst::SM::s::s1} ................................................. +QMsmTst::SM_sub const QMsmTst::s1_s = { + { + &QMsmTst::s_s, // superstate + &QMsmTst::s1, + &QMsmTst::s1_e, + Q_ACTION_NULL, // no exit action + &QMsmTst::sub_i // reuse from submachine + }, + &QMsmTst::s1_xpH, + &QMsmTst::s1_xpG +}; +//${SMs::QMsmTst::SM::s::s1} +QM_ACTION_DEF(QMsmTst, s1_e) { + sub_sub = &QMsmTst::s1_s; // attach submachine + return sub_e(this); // enter submachine +} +//${SMs::QMsmTst::SM::s::s1} +QM_ACTION_DEF(QMsmTst, s1_xpG) { + + static struct { + QP::QMState const *target; + QP::QActionHandler act[3]; + } const tatbl_ = { // tran-action table + &sub_s, // target submachine + { + &sub_x, // submachine exit + &s2_e, // entry + Q_ACTION_NULL // zero terminator + } + }; + return qm_tran_hist(hist_s2, &tatbl_); +} +//${SMs::QMsmTst::SM::s::s1} +QM_ACTION_DEF(QMsmTst, s1_xpH) { + + static struct { + QP::QMState const *target; + QP::QActionHandler act[3]; + } const tatbl_ = { // tran-action table + &s_s, // target state + { + &sub_x, // submachine exit + &s_i, // initial tran. + Q_ACTION_NULL // zero terminator + } + }; + return qm_tran(&tatbl_); +} +//${SMs::QMsmTst::SM::s::s1} +QM_STATE_DEF(QMsmTst, s1) { + QP::QState status_; + switch (e->sig) { + //${SMs::QMsmTst::SM::s::s1::F} + case F_SIG: { + BSP_display("s1-F;"); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[3]; + } const tatbl_ = { // tran-action table + &sub_s, // target submachine + { + &s2_e, // entry + &sub_ep1_ep, // EP + Q_ACTION_NULL // zero terminator + } + }; + status_ = qm_tran_ep(&tatbl_); + break; + } + default: { + status_ = Q_RET_SUPER; + break; + } + } + return status_; +} + +//${SMs::QMsmTst::SM::s::s2} ................................................. +QMsmTst::SM_sub const QMsmTst::s2_s = { + { + &QMsmTst::s_s, // superstate + &QMsmTst::s2, + &QMsmTst::s2_e, + Q_ACTION_NULL, // no exit action + &QMsmTst::sub_i // reuse from submachine + }, + &QMsmTst::s2_xpH, + &QMsmTst::s2_xpG +}; +//${SMs::QMsmTst::SM::s::s2} +QM_ACTION_DEF(QMsmTst, s2_e) { + sub_sub = &QMsmTst::s2_s; // attach submachine + return sub_e(this); // enter submachine +} +//${SMs::QMsmTst::SM::s::s2} +QM_ACTION_DEF(QMsmTst, s2_xpH) { + + static struct { + QP::QMState const *target; + QP::QActionHandler act[3]; + } const tatbl_ = { // tran-action table + &s_s, // target state + { + &sub_x, // submachine exit + &s_i, // initial tran. + Q_ACTION_NULL // zero terminator + } + }; + return qm_tran(&tatbl_); +} +//${SMs::QMsmTst::SM::s::s2} +QM_ACTION_DEF(QMsmTst, s2_xpG) { + + static struct { + QP::QMState const *target; + QP::QActionHandler act[3]; + } const tatbl_ = { // tran-action table + &sub_s, // target submachine + { + &sub_x, // submachine exit + &s1_e, // entry + Q_ACTION_NULL // zero terminator + } + }; + return qm_tran_hist(hist_s1, &tatbl_); +} +//${SMs::QMsmTst::SM::s::s2} +QM_STATE_DEF(QMsmTst, s2) { + QP::QState status_; + switch (e->sig) { + //${SMs::QMsmTst::SM::s::s2::F} + case F_SIG: { + BSP_display("s2-F;"); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[3]; + } const tatbl_ = { // tran-action table + &sub_s, // target submachine + { + &s1_e, // entry + &sub_ep1_ep, // EP + Q_ACTION_NULL // zero terminator + } + }; + status_ = qm_tran_ep(&tatbl_); + break; + } + default: { + status_ = Q_RET_SUPER; + break; + } + } + return status_; +} + +//${SMs::QMsmTst::SM::t} ..................................................... +QP::QMState const QMsmTst::t_s = { + QM_STATE_NULL, // superstate (top) + &QMsmTst::t, + &QMsmTst::t_e, + &QMsmTst::t_x, + Q_ACTION_NULL // no initial tran. +}; +//${SMs::QMsmTst::SM::t} +QM_ACTION_DEF(QMsmTst, t_e) { + BSP_display("t-ENTRY;"); + return qm_entry(&t_s); +} +//${SMs::QMsmTst::SM::t} +QM_ACTION_DEF(QMsmTst, t_x) { + BSP_display("t-EXIT;"); + return qm_exit(&t_s); +} +//${SMs::QMsmTst::SM::t} +QM_STATE_DEF(QMsmTst, t) { + QP::QState status_; + switch (e->sig) { + //${SMs::QMsmTst::SM::t::C} + case C_SIG: { + BSP_display("t-C->H-s;"); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[3]; + } const tatbl_ = { // tran-action table + &s_s, // target state + { + &t_x, // exit + &s_e, // entry + Q_ACTION_NULL // zero terminator + } + }; + status_ = qm_tran_hist(hist_s, &tatbl_); + break; + } + default: { + status_ = Q_RET_SUPER; + break; + } + } + return status_; +} + +//${SMs::QMsmTst::SM::sub} ................................................... +//${SMs::QMsmTst::SM::sub} +QP::QMState const QMsmTst::sub_s = { + QM_STATE_NULL, // superstate unused + &QMsmTst::sub, + &QMsmTst::sub_e, + &QMsmTst::sub_x, + &QMsmTst::sub_i +}; +//${SMs::QMsmTst::SM::sub} +QM_ACTION_DEF(QMsmTst, sub_e) { + BSP_display("sub-ENTRY;"); + return qm_entry(&sub_s); +} +//${SMs::QMsmTst::SM::sub} +QM_ACTION_DEF(QMsmTst, sub_x) { + BSP_display("sub-EXIT;"); + return qm_sm_exit(&sub_sub->super); +} +//${SMs::QMsmTst::SM::sub::initial} +QM_ACTION_DEF(QMsmTst, sub_i) { + //${SMs::QMsmTst::SM::sub::initial} + BSP_display("sub-INIT;"); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[3]; + } const tatbl_ = { // tran-action table + &sub_sub11_s, // target state + { + &sub_sub1_e, // entry + &sub_sub11_e, // entry + Q_ACTION_NULL // zero terminator + } + }; + return qm_tran_init(&tatbl_); +} +//${SMs::QMsmTst::SM::sub} +QM_STATE_DEF(QMsmTst, sub) { + QP::QState status_; + switch (e->sig) { + //${SMs::QMsmTst::SM::sub::E} + case E_SIG: { + BSP_display("sub-E;"); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[2]; + } const tatbl_ = { // tran-action table + &sub_sub2_s, // target state + { + &sub_sub2_e, // entry + Q_ACTION_NULL // zero terminator + } + }; + status_ = qm_tran(&tatbl_); + break; + } + //${SMs::QMsmTst::SM::sub::I} + case I_SIG: { + //${SMs::QMsmTst::SM::sub::I::[m_foo]} + if (m_foo) { + m_foo = 0U; + BSP_display("sub-I;"); + status_ = Q_RET_HANDLED; + } + else { + status_ = qm_super_sub(&sub_sub->super); + } + break; + } + default: { + status_ = qm_super_sub(&sub_sub->super); + break; + } + } + return status_; +} +//${SMs::QMsmTst::SM::sub::EP-ep1} +QM_ACTION_DEF(QMsmTst, sub_ep1_ep) { + BSP_display("sub-ep1;"); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[3]; + } const tatbl_ = { // tran-action table + &sub_sub1_s, // target state + { + &sub_sub1_e, // entry + &sub_sub1_i, // initial tran. + Q_ACTION_NULL // zero terminator + } + }; + return qm_tran_ep(&tatbl_); +} + +//${SMs::QMsmTst::SM::sub::sub1} ............................................. +QP::QMState const QMsmTst::sub_sub1_s = { + &QMsmTst::sub_s, // superstate + &QMsmTst::sub_sub1, + &QMsmTst::sub_sub1_e, + &QMsmTst::sub_sub1_x, + &QMsmTst::sub_sub1_i +}; +//${SMs::QMsmTst::SM::sub::sub1} +QM_ACTION_DEF(QMsmTst, sub_sub1_e) { + BSP_display("sub1-ENTRY;"); + return qm_entry(&sub_sub1_s); +} +//${SMs::QMsmTst::SM::sub::sub1} +QM_ACTION_DEF(QMsmTst, sub_sub1_x) { + BSP_display("sub1-EXIT;"); + return qm_exit(&sub_sub1_s); +} +//${SMs::QMsmTst::SM::sub::sub1::initial} +QM_ACTION_DEF(QMsmTst, sub_sub1_i) { + //${SMs::QMsmTst::SM::sub::sub1::initial} + BSP_display("sub1-INIT;"); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[2]; + } const tatbl_ = { // tran-action table + &sub_sub11_s, // target state + { + &sub_sub11_e, // entry + Q_ACTION_NULL // zero terminator + } + }; + return qm_tran_init(&tatbl_); +} +//${SMs::QMsmTst::SM::sub::sub1} +QM_STATE_DEF(QMsmTst, sub_sub1) { + QP::QState status_; + switch (e->sig) { + //${SMs::QMsmTst::SM::sub::sub1::A} + case A_SIG: { + BSP_display("sub1-A;"); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[4]; + } const tatbl_ = { // tran-action table + &sub_sub1_s, // target state + { + &sub_sub1_x, // exit + &sub_sub1_e, // entry + &sub_sub1_i, // initial tran. + Q_ACTION_NULL // zero terminator + } + }; + status_ = qm_tran(&tatbl_); + break; + } + //${SMs::QMsmTst::SM::sub::sub1::B} + case B_SIG: { + BSP_display("sub1-B;"); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[2]; + } const tatbl_ = { // tran-action table + &sub_sub11_s, // target state + { + &sub_sub11_e, // entry + Q_ACTION_NULL // zero terminator + } + }; + status_ = qm_tran(&tatbl_); + break; + } + //${SMs::QMsmTst::SM::sub::sub1::D} + case D_SIG: { + //${SMs::QMsmTst::SM::sub::sub1::D::[!m_foo]} + if (!m_foo) { + m_foo = 1U; + BSP_display("sub1-D;"); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[3]; + } const tatbl_ = { // tran-action table + &sub_s, // target submachine + { + &sub_sub1_x, // exit + &sub_i, // initial tran. + Q_ACTION_NULL // zero terminator + } + }; + status_ = qm_tran(&tatbl_); + } + else { + status_ = Q_RET_UNHANDLED; + } + break; + } + //${SMs::QMsmTst::SM::sub::sub1::G} + case G_SIG: { + BSP_display("sub1-G->xpG;"); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[2]; + } const tatbl_ = { // tran-action table + &sub_s, // target submachine + { + &sub_sub1_x, // exit + Q_ACTION_NULL // zero terminator + } + }; + status_ = qm_tran_xp(sub_sub->xpG, &tatbl_); + break; + } + default: { + status_ = Q_RET_SUPER; + break; + } + } + return status_; +} + +//${SMs::QMsmTst::SM::sub::sub1::sub11} ...................................... +QP::QMState const QMsmTst::sub_sub11_s = { + &QMsmTst::sub_sub1_s, // superstate + &QMsmTst::sub_sub11, + &QMsmTst::sub_sub11_e, + &QMsmTst::sub_sub11_x, + Q_ACTION_NULL // no initial tran. +}; +//${SMs::QMsmTst::SM::sub::sub1::sub11} +QM_ACTION_DEF(QMsmTst, sub_sub11_e) { + BSP_display("sub11-ENTRY;"); + return qm_entry(&sub_sub11_s); +} +//${SMs::QMsmTst::SM::sub::sub1::sub11} +QM_ACTION_DEF(QMsmTst, sub_sub11_x) { + BSP_display("sub11-EXIT;"); + return qm_exit(&sub_sub11_s); +} +//${SMs::QMsmTst::SM::sub::sub1::sub11} +QM_STATE_DEF(QMsmTst, sub_sub11) { + QP::QState status_; + switch (e->sig) { + //${SMs::QMsmTst::SM::sub::sub1::sub11::C} + case C_SIG: { + BSP_display("sub11-C;"); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[3]; + } const tatbl_ = { // tran-action table + &sub_sub12_s, // target state + { + &sub_sub11_x, // exit + &sub_sub12_e, // entry + Q_ACTION_NULL // zero terminator + } + }; + status_ = qm_tran(&tatbl_); + break; + } + default: { + status_ = Q_RET_SUPER; + break; + } + } + return status_; +} + +//${SMs::QMsmTst::SM::sub::sub1::sub12} ...................................... +QP::QMState const QMsmTst::sub_sub12_s = { + &QMsmTst::sub_sub1_s, // superstate + &QMsmTst::sub_sub12, + &QMsmTst::sub_sub12_e, + &QMsmTst::sub_sub12_x, + Q_ACTION_NULL // no initial tran. +}; +//${SMs::QMsmTst::SM::sub::sub1::sub12} +QM_ACTION_DEF(QMsmTst, sub_sub12_e) { + BSP_display("sub12-ENTRY;"); + return qm_entry(&sub_sub12_s); +} +//${SMs::QMsmTst::SM::sub::sub1::sub12} +QM_ACTION_DEF(QMsmTst, sub_sub12_x) { + BSP_display("sub12-EXIT;"); + return qm_exit(&sub_sub12_s); +} +//${SMs::QMsmTst::SM::sub::sub1::sub12} +QM_STATE_DEF(QMsmTst, sub_sub12) { + QP::QState status_; + switch (e->sig) { + //${SMs::QMsmTst::SM::sub::sub1::sub12::H} + case H_SIG: { + BSP_display("sub12-H->xpH;"); + + static struct { + QP::QMState const *target; + QP::QActionHandler act[3]; + } const tatbl_ = { // tran-action table + &sub_s, // target submachine + { + &sub_sub12_x, // exit + &sub_sub1_x, // exit + Q_ACTION_NULL // zero terminator + } + }; + status_ = qm_tran_xp(sub_sub->xpH, &tatbl_); + break; + } + default: { + status_ = Q_RET_SUPER; + break; + } + } + return status_; +} + +//${SMs::QMsmTst::SM::sub::sub2} ............................................. +QP::QMState const QMsmTst::sub_sub2_s = { + &QMsmTst::sub_s, // superstate + &QMsmTst::sub_sub2, + &QMsmTst::sub_sub2_e, + &QMsmTst::sub_sub2_x, + Q_ACTION_NULL // no initial tran. +}; +//${SMs::QMsmTst::SM::sub::sub2} +QM_ACTION_DEF(QMsmTst, sub_sub2_e) { + BSP_display("sub2-ENTRY;"); + return qm_entry(&sub_sub2_s); +} +//${SMs::QMsmTst::SM::sub::sub2} +QM_ACTION_DEF(QMsmTst, sub_sub2_x) { + BSP_display("sub2-EXIT;"); + return qm_exit(&sub_sub2_s); +} +//${SMs::QMsmTst::SM::sub::sub2} +QM_STATE_DEF(QMsmTst, sub_sub2) { + QP::QState status_; + switch (e->sig) { + default: { + status_ = Q_RET_SUPER; + break; + } + } + return status_; +} +//$enddef${SMs::QMsmTst} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +bool QMsmTst_isIn(std::uint32_t const state_num) { + QP::QMsm * const me = &l_msmtst; + bool stat = false; + switch (state_num) { + case 0: + stat = me->isIn(Q_STATE_CAST(&QMsmTst::s)); + break; + case 1: + stat = me->isIn(Q_STATE_CAST(&QMsmTst::s1)); + break; + case 2: + stat = me->isIn(Q_STATE_CAST(&QMsmTst::s2)); + break; + case 11: + stat = me->isIn(Q_STATE_CAST(&QMsmTst::sub_sub1)); + break; + case 111: + stat = me->isIn(Q_STATE_CAST(&QMsmTst::sub_sub11)); + break; + case 112: + stat = me->isIn(Q_STATE_CAST(&QMsmTst::sub_sub12)); + break; + case 12: + stat = me->isIn(Q_STATE_CAST(&QMsmTst::sub_sub2)); + break; + default: + Q_ERROR(); + } + return stat; +} + +} // namespace APP diff --git a/qutest/qmsmtst/src/qmsmtst.hpp b/qutest/qmsm/src/cut_qmsm.hpp similarity index 61% rename from qutest/qmsmtst/src/qmsmtst.hpp rename to qutest/qmsm/src/cut_qmsm.hpp index 2dccc60..6d21940 100644 --- a/qutest/qmsmtst/src/qmsmtst.hpp +++ b/qutest/qmsm/src/cut_qmsm.hpp @@ -1,11 +1,15 @@ -//$file${.::qmsmtst.hpp} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +//$file${.::cut_qmsm.hpp} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv // -// Model: qmsmtst.qm -// File: ${.::qmsmtst.hpp} +// Model: qmsm.qm +// File: ${.::cut_qmsm.hpp} // -// This code has been generated by QM 5.3.0 . +// This code has been generated by QM 6.2.2 . // DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. // +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // SPDX-License-Identifier: GPL-3.0-or-later // // This generated code is open source software: you can redistribute it under @@ -18,18 +22,18 @@ // more details. // // NOTE: -// Alternatively, this generated code may be distributed under the terms -// of Quantum Leaps commercial licenses, which expressly supersede the GNU -// General Public License and are specifically designed for licensees -// interested in retaining the proprietary status of their code. +// Please contact Quantum Leaps for commercial licensing options, which +// expressly supersede the GNU General Public License and are specifically +// designed for licensees interested in retaining the proprietary status +// of the generated code. // // Contact information: // // // -//$endhead${.::qmsmtst.hpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -#ifndef QMSMTST_HPP_ -#define QMSMTST_HPP_ +//$endhead${.::cut_qmsm.hpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +#ifndef CUT_QMSM_HPP_ +#define CUT_QMSM_HPP_ namespace APP { @@ -43,8 +47,6 @@ enum QMsmTstSignals { G_SIG, H_SIG, I_SIG, - TERMINATE_SIG, - IGNORE_SIG, MAX_SIG }; @@ -58,4 +60,4 @@ void BSP_terminate(int16_t const result); } // namespace APP -#endif // QMSMTST_HPP_ +#endif // CUT_QMSM_HPP_ diff --git a/qutest/qmsm/src/qmsm.qm b/qutest/qmsm/src/qmsm.qm new file mode 100644 index 0000000..9c90e24 --- /dev/null +++ b/qutest/qmsm/src/qmsm.qm @@ -0,0 +1,390 @@ + + + QMsmTst is a contrived state machine from Chapter 2 of the PSiCC2 book for testing all possible transition topologies with up to 4-levels of state nesting. + + + + + + + Test State Machine + + + + + + + : QMsm(&initial) + + + + + + Q_UNUSED_PAR(e); +m_foo = 0U; +BSP_display("top-INIT;"); + +QS_SIG_DICTIONARY(A_SIG, nullptr); +QS_SIG_DICTIONARY(B_SIG, nullptr); +QS_SIG_DICTIONARY(C_SIG, nullptr); +QS_SIG_DICTIONARY(D_SIG, nullptr); +QS_SIG_DICTIONARY(E_SIG, nullptr); +QS_SIG_DICTIONARY(F_SIG, nullptr); +QS_SIG_DICTIONARY(G_SIG, nullptr); +QS_SIG_DICTIONARY(H_SIG, nullptr); +QS_SIG_DICTIONARY(I_SIG, nullptr); + + + + + + + BSP_display("s-ENTRY;"); + BSP_display("s-EXIT;"); + + + BSP_display("s-INIT;"); + + + + + + + + + + + BSP_display("s-E;"); + + + + + + + BSP_display("s-I;"); + + + + + + + BSP_display("s-C;"); + + + + + + + + + + + + + + + + + + + + + BSP_display("s1-F;"); + + + + + + + + + + + + + + + + + + + + + + + BSP_display("s2-F;"); + + + + + + + + + + + + + + BSP_display("t-ENTRY;"); + BSP_display("t-EXIT;"); + + + BSP_display("t-C->H-s;"); + + + + + + + + + + + + BSP_display("sub-ENTRY;"); + BSP_display("sub-EXIT;"); + + + BSP_display("sub-ep1;"); + + + + + + + + + + + + + + + + + + + + BSP_display("sub-INIT;"); + + + + + + + + + + + BSP_display("sub-E;"); + + + + + + + + + m_foo + m_foo = 0U; +BSP_display("sub-I;"); + + + + + + + + + + + BSP_display("sub1-ENTRY;"); + BSP_display("sub1-EXIT;"); + + + BSP_display("sub1-INIT;"); + + + + + + + BSP_display("sub1-A;"); + + + + + + + BSP_display("sub1-B;"); + + + + + + + + + !m_foo + m_foo = 1U; +BSP_display("sub1-D;"); + + + + + + + + + + + BSP_display("sub1-G->xpG;"); + + + + + + + BSP_display("sub11-ENTRY;"); + BSP_display("sub11-EXIT;"); + + + BSP_display("sub11-C;"); + + + + + + + + + + + + BSP_display("sub12-ENTRY;"); + BSP_display("sub12-EXIT;"); + + + BSP_display("sub12-H->xpH;"); + + + + + + + + + + + + + + + + + BSP_display("sub2-ENTRY;"); + BSP_display("sub2-EXIT;"); + + + + + + + + + + + + + + + + + + + #ifndef CUT_QMSM_HPP_ +#define CUT_QMSM_HPP_ + +namespace APP { + +enum QMsmTstSignals { + A_SIG = QP::Q_USER_SIG, + B_SIG, + C_SIG, + D_SIG, + E_SIG, + F_SIG, + G_SIG, + H_SIG, + I_SIG, + MAX_SIG +}; + +extern QP::QAsm * const the_sm; // opaque pointer to the test SM + +bool QMsmTst_isIn(std::uint32_t const state_num); + +// BSP functions to display a message and exit +void BSP_display(char const *msg); +void BSP_terminate(int16_t const result); + +} // namespace APP + +#endif // CUT_QMSM_HPP_ + + + + #include "qpcpp.hpp" +#include "cut_qmsm.hpp" + +namespace { +Q_DEFINE_THIS_FILE +} + +namespace APP { + +$declare ${SMs::QMsmTst} + +static QMsmTst l_msmtst; // the only instance of the QMsmTst class + +// global-scope definitions ----------------------------------------- +QP::QAsm * const the_sm = &l_msmtst; // the opaque pointer + +$define ${SMs::QMsmTst} + +bool QMsmTst_isIn(std::uint32_t const state_num) { + QP::QMsm * const me = &l_msmtst; + bool stat = false; + switch (state_num) { + case 0: + stat = me->isIn(Q_STATE_CAST(&QMsmTst::s)); + break; + case 1: + stat = me->isIn(Q_STATE_CAST(&QMsmTst::s1)); + break; + case 2: + stat = me->isIn(Q_STATE_CAST(&QMsmTst::s2)); + break; + case 11: + stat = me->isIn(Q_STATE_CAST(&QMsmTst::sub_sub1)); + break; + case 111: + stat = me->isIn(Q_STATE_CAST(&QMsmTst::sub_sub11)); + break; + case 112: + stat = me->isIn(Q_STATE_CAST(&QMsmTst::sub_sub12)); + break; + case 12: + stat = me->isIn(Q_STATE_CAST(&QMsmTst::sub_sub2)); + break; + default: + Q_ERROR(); + } + return stat; +} + +} // namespace APP + + + diff --git a/qutest/qmsmtst/test/Makefile b/qutest/qmsm/test/Makefile similarity index 96% rename from qutest/qmsmtst/test/Makefile rename to qutest/qmsm/test/Makefile index 303bbd5..6d6b7fe 100644 --- a/qutest/qmsmtst/test/Makefile +++ b/qutest/qmsm/test/Makefile @@ -1,7 +1,7 @@ ############################################################################## # Product: Makefile for QUTEST-QP/C++ for Windows and POSIX *HOSTS* -# Last Updated for Version: 7.2.0 -# Date of the Last Update: 2022-12-21 +# Last Updated for Version: 7.4.0 +# Date of the Last Update: 2024-09-02 # # Q u a n t u m L e a P s # ------------------------ @@ -82,7 +82,7 @@ C_SRCS := # C++ source files... CPP_SRCS := \ - qmsmtst.cpp \ + cut_qmsm.cpp \ test_qmsm.cpp LIB_DIRS := @@ -122,6 +122,7 @@ LIBS += -lws2_32 else QP_PORT_DIR := $(QPCPP)/ports/posix-qutest +#QP_PORT_DIR := $(QPCPP)/ports/posix LIBS += -lpthread endif @@ -218,8 +219,14 @@ $(TARGET_EXE) : $(C_OBJS_EXT) $(CPP_OBJS_EXT) $(CPP) $(CPPFLAGS) $(QPCPP)/src/qs/qstamp.cpp -o $(BIN_DIR)/qstamp.o $(LINK) $(LINKFLAGS) $(LIB_DIRS) -o $@ $^ $(BIN_DIR)/qstamp.o $(LIBS) +ifdef GCOV run : $(TARGET_EXE) + -$(RM) $(BIN_DIR)/*.gcda $(QUTEST) -e$(TARGET_EXE) -q$(QSPY) -l$(LOG) -o$(OPT) -- $(TESTS) +else +run : $(TARGET_EXE) + $(QUTEST) -e$(TARGET_EXE) -q$(QSPY) -l$(LOG) -o$(OPT) -- $(TESTS) +endif $(BIN_DIR)/%.d : %.cpp $(CPP) -MM -MT $(@:.d=.o) $(CPPFLAGS) $< > $@ diff --git a/qutest/qmsm/test/gcov_qmsm.bat b/qutest/qmsm/test/gcov_qmsm.bat new file mode 100644 index 0000000..3c2ff74 --- /dev/null +++ b/qutest/qmsm/test/gcov_qmsm.bat @@ -0,0 +1 @@ +gcov -f -o build qep_msm.o diff --git a/qutest/qmsmtst/test/make_nucleo-l053r8 b/qutest/qmsm/test/make_nucleo-l053r8 similarity index 99% rename from qutest/qmsmtst/test/make_nucleo-l053r8 rename to qutest/qmsm/test/make_nucleo-l053r8 index 707acd7..d4740e7 100644 --- a/qutest/qmsmtst/test/make_nucleo-l053r8 +++ b/qutest/qmsm/test/make_nucleo-l053r8 @@ -1,7 +1,7 @@ ############################################################################## # Product: Makefile for QP/C on NUCLEO-L053R8 board, QUTEST, GNU-ARM -# Last Updated for Version: 7.3.1 -# Date of the Last Update: 2023-11-13 +# Last Updated for Version: 7.4.0 +# Date of the Last Update: 2024-09-04 # # Q u a n t u m L e a P s # ------------------------ @@ -103,7 +103,7 @@ C_SRCS := \ # C++ source files CPP_SRCS := \ - qmsmtst.cpp \ + cut_qmsm.cpp \ test_qmsm.cpp OUTPUT := $(PROJECT) diff --git a/qutest/qmsmtst/test/make_tm4c123 b/qutest/qmsm/test/make_tm4c123 similarity index 99% rename from qutest/qmsmtst/test/make_tm4c123 rename to qutest/qmsm/test/make_tm4c123 index 86f9793..c9d808d 100644 --- a/qutest/qmsmtst/test/make_tm4c123 +++ b/qutest/qmsm/test/make_tm4c123 @@ -1,7 +1,7 @@ ############################################################################## # Product: Makefile for QP/C++ on TM4C123, QUTEST, GNU-ARM -# Last Updated for Version: 7.2.0 -# Date of the Last Update: 2022-12-21 +# Last Updated for Version: 7.4.0 +# Date of the Last Update: 2024-09-04 # # Q u a n t u m L e a P s # ------------------------ @@ -103,7 +103,7 @@ C_SRCS := \ # C++ source files CPP_SRCS := \ - qmsmtst.cpp \ + cut_qmsm.cpp \ test_qmsm.cpp OUTPUT := $(PROJECT) diff --git a/qutest/qmsm/test/qep_msm.cpp.gcov b/qutest/qmsm/test/qep_msm.cpp.gcov new file mode 100644 index 0000000..a650cf7 --- /dev/null +++ b/qutest/qmsm/test/qep_msm.cpp.gcov @@ -0,0 +1,669 @@ + -: 0:Source:../../../../src/qf/qep_msm.cpp + -: 0:Graph:build/qep_msm.gcno + -: 0:Data:build/qep_msm.gcda + -: 0:Runs:6 + -: 1://$file${src::qf::qep_msm.cpp} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 2:// + -: 3:// Model: qpcpp.qm + -: 4:// File: ${src::qf::qep_msm.cpp} + -: 5:// + -: 6:// This code has been generated by QM 6.1.1 . + -: 7:// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. + -: 8:// + -: 9:// This code is covered by the following QP license: + -: 10:// License # : LicenseRef-QL-dual + -: 11:// Issued to : Any user of the QP/C++ real-time embedded framework + -: 12:// Framework(s) : qpcpp + -: 13:// Support ends : 2024-12-31 + -: 14:// License scope: + -: 15:// + -: 16:// Copyright (C) 2005 Quantum Leaps, LLC . + -: 17:// + -: 18:// Q u a n t u m L e a P s + -: 19:// ------------------------ + -: 20:// Modern Embedded Software + -: 21:// + -: 22:// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial + -: 23:// + -: 24:// This software is dual-licensed under the terms of the open source GNU + -: 25:// General Public License version 3 (or any later version), or alternatively, + -: 26:// under the terms of one of the closed source Quantum Leaps commercial + -: 27:// licenses. + -: 28:// + -: 29:// The terms of the open source GNU General Public License version 3 + -: 30:// can be found at: + -: 31:// + -: 32:// The terms of the closed source Quantum Leaps commercial licenses + -: 33:// can be found at: + -: 34:// + -: 35:// Redistributions in source code must retain this top-level comment block. + -: 36:// Plagiarizing this software to sidestep the license obligations is illegal. + -: 37:// + -: 38:// Contact information: + -: 39:// + -: 40:// + -: 41:// + -: 42://$endhead${src::qf::qep_msm.cpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 43:#define QP_IMPL // this is QP implementation + -: 44:#include "qp_port.hpp" // QP port + -: 45:#include "qp_pkg.hpp" // QP package-scope interface + -: 46:#include "qsafe.h" // QP Functional Safety (FuSa) Subsystem + -: 47:#ifdef Q_SPY // QS software tracing enabled? + -: 48: #include "qs_port.hpp" // QS port + -: 49: #include "qs_pkg.hpp" // QS facilities for pre-defined trace records + -: 50:#else + -: 51: #include "qs_dummy.hpp" // disable the QS software tracing + -: 52:#endif // Q_SPY + -: 53: + -: 54://============================================================================ + -: 55://! @cond INTERNAL + -: 56: + -: 57:// unnamed namespace for local definitions with internal linkage + -: 58:namespace { + -: 59: + -: 60:Q_DEFINE_THIS_MODULE("qep_msm") + -: 61: + -: 62:// maximum depth of state nesting in a QMsm (including the top level) + -: 63:static constexpr std::int_fast8_t MAX_NEST_DEPTH_ {6}; + -: 64: + -: 65:// maximum length of transition-action array + -: 66:static constexpr std::int_fast8_t MAX_TRAN_LENGTH_ {3*MAX_NEST_DEPTH_}; + -: 67: + -: 68:// maximum depth of entry levels in a MSM for tran. to history. + -: 69:static constexpr std::int_fast8_t MAX_ENTRY_DEPTH_ {4}; + -: 70: + -: 71:// top-state object for QMsm-style state machines + -: 72:QP::QMState const l_msm_top_s = { + -: 73: nullptr, + -: 74: nullptr, + -: 75: nullptr, + -: 76: nullptr, + -: 77: nullptr + -: 78:}; + -: 79: + -: 80:} // unnamed namespace + -: 81: + -: 82://! @endcond + -: 83://============================================================================ + -: 84: + -: 85://$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 86:// Check for the minimum required QP version + -: 87:#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) + -: 88:#error qpcpp version 7.3.0 or higher required + -: 89:#endif + -: 90://$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 91: + -: 92://$define${QEP::QMsm} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 93:namespace QP { + -: 94: + -: 95://${QEP::QMsm} ............................................................... + -: 96: + -: 97://${QEP::QMsm::QMsm} ......................................................... + 6: 98:QMsm::QMsm(QStateHandler const initial) noexcept + 6: 99: : QAsm() + -: 100:{ + 6: 101: m_state.obj = &l_msm_top_s; // the current state (top) + 6: 102: m_temp.fun = initial; // the initial tran. handler + 6: 103:} + -: 104: + -: 105://${QEP::QMsm::init} ......................................................... + 6: 106:void QMsm::init( + -: 107: void const * const e, + -: 108: std::uint_fast8_t const qsId) + -: 109:{ + -: 110: #ifndef Q_SPY + -: 111: Q_UNUSED_PAR(qsId); + -: 112: #endif + -: 113: + -: 114: QF_CRIT_STAT + 6: 115: QF_CRIT_ENTRY(); + 6*: 116: Q_REQUIRE_INCRIT(200, (m_temp.fun != nullptr) + -: 117: && (m_state.obj == &l_msm_top_s)); + 6: 118: QF_CRIT_EXIT(); + -: 119: + -: 120: // execute the top-most initial tran. + 6: 121: QState r = (*m_temp.fun)(this, Q_EVT_CAST(QEvt)); + -: 122: + 6: 123: QF_CRIT_ENTRY(); + -: 124: // the top-most initial tran. must be taken + 6*: 125: Q_ASSERT_INCRIT(210, r == Q_RET_TRAN_INIT); + -: 126: + 6: 127: QS_MEM_SYS(); + 6: 128: QS_BEGIN_PRE_(QS_QEP_STATE_INIT, qsId) + 3: 129: QS_OBJ_PRE_(this); // this state machine object + 3: 130: QS_FUN_PRE_(m_state.obj->stateHandler); // source state + 3: 131: QS_FUN_PRE_(m_temp.tatbl->target->stateHandler); // target state + 3: 132: QS_END_PRE_() + 6: 133: QS_MEM_APP(); + -: 134: + 6: 135: QF_CRIT_EXIT(); + -: 136: + -: 137: // set state to the last tran. target + 6: 138: m_state.obj = m_temp.tatbl->target; + -: 139: + -: 140: // drill down into the state hierarchy with initial transitions... + 6: 141: std::int_fast8_t limit = MAX_NEST_DEPTH_; // loop hard limit + 12: 142: do { + -: 143: // execute the tran. table + 12: 144: r = execTatbl_(m_temp.tatbl, qsId); + 12: 145: --limit; + 12: 146: } while ((r >= Q_RET_TRAN_INIT) && (limit > 0)); + -: 147: + 6: 148: QF_CRIT_ENTRY(); + 6*: 149: Q_ENSURE_INCRIT(290, limit > 0); + -: 150: + 6: 151: QS_MEM_SYS(); + 6: 152: QS_BEGIN_PRE_(QS_QEP_INIT_TRAN, qsId) + 3: 153: QS_TIME_PRE_(); // time stamp + 3: 154: QS_OBJ_PRE_(this); // this state machine object + 3: 155: QS_FUN_PRE_(m_state.obj->stateHandler); // the new current state + 3: 156: QS_END_PRE_() + 6: 157: QS_MEM_APP(); + -: 158: + 6: 159: QF_CRIT_EXIT(); + -: 160: + -: 161: #ifndef Q_UNSAFE + 6: 162: m_temp.uint = ~m_state.uint; + -: 163: #endif + 6: 164:} + -: 165: + -: 166://${QEP::QMsm::dispatch} ..................................................... + 35: 167:void QMsm::dispatch( + -: 168: QEvt const * const e, + -: 169: std::uint_fast8_t const qsId) + -: 170:{ + -: 171: #ifndef Q_SPY + -: 172: Q_UNUSED_PAR(qsId); + -: 173: #endif + -: 174: + 35: 175: QMState const *s = m_state.obj; // store the current state + 35: 176: QMState const *t = s; + -: 177: + -: 178: QF_CRIT_STAT + 35: 179: QF_CRIT_ENTRY(); + 35*: 180: Q_REQUIRE_INCRIT(300, (s != nullptr) + -: 181: && (m_state.uint == static_cast(~m_temp.uint))); + 35*: 182: Q_REQUIRE_INCRIT(302, QEvt::verify_(e)); + -: 183: + 35: 184: QS_MEM_SYS(); + 35: 185: QS_BEGIN_PRE_(QS_QEP_DISPATCH, qsId) + 18: 186: QS_TIME_PRE_(); // time stamp + 18: 187: QS_SIG_PRE_(e->sig); // the signal of the event + 18: 188: QS_OBJ_PRE_(this); // this state machine object + 18: 189: QS_FUN_PRE_(s->stateHandler); // the current state handler + 18: 190: QS_END_PRE_() + 35: 191: QS_MEM_APP(); + -: 192: + 35: 193: QF_CRIT_EXIT(); + -: 194: + -: 195: // scan the state hierarchy up to the top state... + 35: 196: QState r; + 35: 197: std::int_fast8_t limit = MAX_NEST_DEPTH_; // loop hard limit + 87: 198: do { + 87: 199: r = (*t->stateHandler)(this, e); // call state handler function + -: 200: + -: 201: // event handled? (the most frequent case) + 87: 202: if (r >= Q_RET_HANDLED) { + -: 203: break; // done scanning the state hierarchy + -: 204: } + -: 205: // event unhandled and passed to the superstate? + 55: 206: else if (r == Q_RET_SUPER) { + 44: 207: t = t->superstate; // advance to the superstate + -: 208: } + -: 209: // event unhandled and passed to a submachine superstate? + 11: 210: else if (r == Q_RET_SUPER_SUB) { + 9: 211: t = m_temp.obj; // current host state of the submachie + -: 212: } + -: 213: else { // event unhandled due to a guard? + 2: 214: QF_CRIT_ENTRY(); + -: 215: // event must be unhandled due to a guard evaluating to 'false' + 2*: 216: Q_ASSERT_INCRIT(310, r == Q_RET_UNHANDLED); + -: 217: + 2: 218: QS_MEM_SYS(); + 2: 219: QS_BEGIN_PRE_(QS_QEP_UNHANDLED, qsId) + 1: 220: QS_SIG_PRE_(e->sig); // the signal of the event + 1: 221: QS_OBJ_PRE_(this); // this state machine object + 1: 222: QS_FUN_PRE_(t->stateHandler); // the current state + 1: 223: QS_END_PRE_() + 2: 224: QS_MEM_APP(); + -: 225: + 2: 226: QF_CRIT_EXIT(); + -: 227: + 2: 228: t = t->superstate; // advance to the superstate + -: 229: } + 55: 230: --limit; + 55: 231: } while ((t != nullptr) && (limit > 0)); + 35: 232: QF_CRIT_ENTRY(); + 35*: 233: Q_ASSERT_INCRIT(310, limit > 0); + 35: 234: QF_CRIT_EXIT(); + -: 235: + 35: 236: if (r >= Q_RET_TRAN) { // any kind of tran. taken? + -: 237: #ifdef Q_SPY + 28: 238: QMState const * const ts = t; // tran. source for QS tracing + -: 239: + 28: 240: QF_CRIT_ENTRY(); + -: 241: // the tran. source state must not be nullptr + 28*: 242: Q_ASSERT_INCRIT(320, ts != nullptr); + 28: 243: QF_CRIT_EXIT(); + -: 244: #endif // Q_SPY + -: 245: + 28: 246: limit = MAX_NEST_DEPTH_; // loop hard limit + 50: 247: do { + -: 248: // save the tran-action table before it gets clobbered + 50: 249: QMTranActTable const * const tatbl = m_temp.tatbl; + 50: 250: QAsmAttr tmp; // temporary to save intermediate values + -: 251: + -: 252: // was TRAN, TRAN_INIT, or TRAN_EP taken? + 50: 253: if (r <= Q_RET_TRAN_EP) { + 38: 254: m_temp.obj = nullptr; // clear + 38: 255: exitToTranSource_(s, t, qsId); + 38: 256: r = execTatbl_(tatbl, qsId); + 38: 257: s = m_state.obj; + -: 258: } + -: 259: // was a tran. segment to history taken? + 12: 260: else if (r == Q_RET_TRAN_HIST) { + 6: 261: tmp.obj = m_state.obj; // save history + 6: 262: m_state.obj = s; // restore the original state + 6: 263: exitToTranSource_(s, t, qsId); + 6: 264: static_cast(execTatbl_(tatbl, qsId)); + 6: 265: r = enterHistory_(tmp.obj, qsId); + 6: 266: s = m_state.obj; + -: 267: } + -: 268: else { + 6: 269: QF_CRIT_ENTRY(); + -: 270: // must be tran. to exit point + 6*: 271: Q_ASSERT_INCRIT(340, r == Q_RET_TRAN_XP); + 6: 272: QF_CRIT_EXIT(); + -: 273: + 6: 274: tmp.act = m_state.act; // save XP action + 6: 275: m_state.obj = s; // restore the original state + 6: 276: r = (*tmp.act)(this); // execute the XP action + 6: 277: if (r == Q_RET_TRAN) { // XP -> TRAN ? + -: 278: #ifdef Q_SPY + 2: 279: tmp.tatbl = m_temp.tatbl; // save m_temp + -: 280: #endif // Q_SPY + 2: 281: exitToTranSource_(s, t, qsId); + -: 282: // take the tran-to-XP segment inside submachine + 2: 283: static_cast(execTatbl_(tatbl, qsId)); + 2: 284: s = m_state.obj; + -: 285: #ifdef Q_SPY + 2: 286: m_temp.tatbl = tmp.tatbl; // restore m_temp + -: 287: #endif // Q_SPY + -: 288: } + 4: 289: else if (r == Q_RET_TRAN_HIST) { // XP -> HIST ? + 4: 290: tmp.obj = m_state.obj; // save the history + 4: 291: m_state.obj = s; // restore the original state + -: 292: #ifdef Q_SPY + 4: 293: s = m_temp.obj; // save m_temp + -: 294: #endif // Q_SPY + 4: 295: exitToTranSource_(m_state.obj, t, qsId); + -: 296: // take the tran-to-XP segment inside submachine + 4: 297: static_cast(execTatbl_(tatbl, qsId)); + -: 298: #ifdef Q_SPY + 4: 299: m_temp.obj = s; // restore m_temp + -: 300: #endif // Q_SPY + 4: 301: s = m_state.obj; + 4: 302: m_state.obj = tmp.obj; // restore the history + -: 303: } + -: 304: else { + #####: 305: QF_CRIT_ENTRY(); + -: 306: // TRAN_XP must NOT be followed by any other tran type + #####: 307: Q_ASSERT_INCRIT(330, r < Q_RET_TRAN); + #####: 308: QF_CRIT_EXIT(); + -: 309: } + -: 310: } + -: 311: + 50: 312: t = s; // set target to the current state + 50: 313: --limit; + 50: 314: } while ((r >= Q_RET_TRAN) && (limit > 0)); + -: 315: + 28: 316: QF_CRIT_ENTRY(); + 28*: 317: Q_ASSERT_INCRIT(320, limit > 0); + -: 318: + 28: 319: QS_MEM_SYS(); + 28: 320: QS_BEGIN_PRE_(QS_QEP_TRAN, qsId) + 14: 321: QS_TIME_PRE_(); // time stamp + 14: 322: QS_SIG_PRE_(e->sig); // the signal of the event + 14: 323: QS_OBJ_PRE_(this); // this state machine object + 14: 324: QS_FUN_PRE_(ts->stateHandler); // the tran. source + 14: 325: QS_FUN_PRE_(s->stateHandler); // the new active state + 14: 326: QS_END_PRE_() + 28: 327: QS_MEM_APP(); + -: 328: + 28: 329: QF_CRIT_EXIT(); + -: 330: } + -: 331: + -: 332: #ifdef Q_SPY + -: 333: // was the event handled? + 7: 334: else if (r == Q_RET_HANDLED) { + 4: 335: QF_CRIT_ENTRY(); + -: 336: // internal tran. source can't be nullptr + 4*: 337: Q_ASSERT_INCRIT(340, t != nullptr); + -: 338: + 4: 339: QS_MEM_SYS(); + 4: 340: QS_BEGIN_PRE_(QS_QEP_INTERN_TRAN, qsId) + 2: 341: QS_TIME_PRE_(); // time stamp + 2: 342: QS_SIG_PRE_(e->sig); // the signal of the event + 2: 343: QS_OBJ_PRE_(this); // this state machine object + 2: 344: QS_FUN_PRE_(t->stateHandler); // the source state + 2: 345: QS_END_PRE_() + 4: 346: QS_MEM_APP(); + -: 347: + 4: 348: QF_CRIT_EXIT(); + -: 349: } + -: 350: // event bubbled to the 'top' state? + 3: 351: else if (t == nullptr) { + 3: 352: QS_CRIT_ENTRY(); + 3: 353: QS_MEM_SYS(); + 3: 354: QS_BEGIN_PRE_(QS_QEP_IGNORED, qsId) + 2: 355: QS_TIME_PRE_(); // time stamp + 2: 356: QS_SIG_PRE_(e->sig); // the signal of the event + 2: 357: QS_OBJ_PRE_(this); // this state machine object + 2: 358: QS_FUN_PRE_(s->stateHandler); // the current state + 2: 359: QS_END_PRE_() + 3: 360: QS_MEM_APP(); + 3: 361: QS_CRIT_EXIT(); + -: 362: } + -: 363: #endif // Q_SPY + -: 364: else { + -: 365: // empty + -: 366: } + -: 367: + -: 368: #ifndef Q_UNSAFE + 35: 369: m_temp.uint = ~m_state.uint; + -: 370: #endif + 35: 371:} + -: 372: + -: 373://${QEP::QMsm::isIn} ......................................................... + 8: 374:bool QMsm::isIn(QStateHandler const state) noexcept { + 8: 375: bool inState = false; // assume that this SM is not in 'state' + -: 376: + 8: 377: QMState const *s = m_state.obj; + 8: 378: std::int_fast8_t limit = MAX_NEST_DEPTH_; // loop hard limit + 17: 379: for (; (s != nullptr) && (limit > 0); --limit) { + 14: 380: if (s->stateHandler == state) { // match found? + -: 381: inState = true; + -: 382: break; + -: 383: } + -: 384: else { + 9: 385: s = s->superstate; // advance to the superstate + -: 386: } + -: 387: } + -: 388: + -: 389: QF_CRIT_STAT + 8: 390: QF_CRIT_ENTRY(); + 8*: 391: Q_ENSURE_INCRIT(490, limit > 0); + 8: 392: QF_CRIT_EXIT(); + -: 393: + 8: 394: return inState; + -: 395:} + -: 396: + -: 397://${QEP::QMsm::isInState} .................................................... + #####: 398:bool QMsm::isInState(QMState const * const stateObj) const noexcept { + #####: 399: bool inState = false; // assume that this SM is not in 'state' + -: 400: + #####: 401: QMState const *s = m_state.obj; + #####: 402: std::int_fast8_t limit = MAX_NEST_DEPTH_; // loop hard limit + #####: 403: for (; (s != nullptr) && (limit > 0); --limit) { + #####: 404: if (s == stateObj) { // match found? + -: 405: inState = true; + -: 406: break; + -: 407: } + -: 408: else { + #####: 409: s = s->superstate; // advance to the superstate + -: 410: } + -: 411: } + -: 412: + -: 413: QF_CRIT_STAT + #####: 414: QF_CRIT_ENTRY(); + #####: 415: Q_ENSURE_INCRIT(590, limit > 0); + #####: 416: QF_CRIT_EXIT(); + -: 417: + #####: 418: return inState; + -: 419:} + -: 420: + -: 421://${QEP::QMsm::childStateObj} ................................................ + 2: 422:QMState const * QMsm::childStateObj(QMState const * const parent) const noexcept { + 2: 423: QMState const *child = m_state.obj; + 2: 424: bool isFound = false; // start with the child not found + 2: 425: QMState const *s; + -: 426: + 2: 427: std::int_fast8_t limit = MAX_NEST_DEPTH_; // loop hard limit + 2: 428: for (s = m_state.obj; + 8: 429: (s != nullptr) && (limit > 0); + 6: 430: s = s->superstate) + -: 431: { + 6: 432: if (s == parent) { + -: 433: isFound = true; // child is found + -: 434: break; + -: 435: } + -: 436: else { + 6: 437: child = s; + -: 438: } + 6: 439: --limit; + -: 440: } + -: 441: QF_CRIT_STAT + 2: 442: QF_CRIT_ENTRY(); + 2*: 443: Q_ASSERT_INCRIT(610, limit > 0); + 2: 444: QF_CRIT_EXIT(); + -: 445: + 2: 446: if (!isFound) { // still not found? + 2: 447: limit = MAX_NEST_DEPTH_; // loop hard limit + 2: 448: for (s = m_temp.obj; + 4: 449: (s != nullptr) && (limit > 0); + 2: 450: s = s->superstate) + -: 451: { + 4: 452: if (s == parent) { + -: 453: isFound = true; // child is found + -: 454: break; + -: 455: } + -: 456: else { + 2: 457: child = s; + -: 458: } + 2: 459: --limit; + -: 460: } + -: 461: } + -: 462: + 2: 463: QF_CRIT_ENTRY(); + 2*: 464: Q_ENSURE_INCRIT(690, isFound && (limit > 0)); + 2: 465: QF_CRIT_EXIT(); + -: 466: + 2: 467: return child; // return the child + -: 468:} + -: 469: + -: 470://${QEP::QMsm::execTatbl_} ................................................... + 62: 471:QState QMsm::execTatbl_( + -: 472: QMTranActTable const * const tatbl, + -: 473: std::uint_fast8_t const qsId) + -: 474:{ + -: 475: #ifndef Q_SPY + -: 476: Q_UNUSED_PAR(qsId); + -: 477: #endif + -: 478: + -: 479: QF_CRIT_STAT + 62: 480: QF_CRIT_ENTRY(); + -: 481: // precondition: + -: 482: // - the tran-action table pointer must not be NULL + 62*: 483: Q_REQUIRE_INCRIT(700, tatbl != nullptr); + 62: 484: QF_CRIT_EXIT(); + -: 485: + 62: 486: QState r = Q_RET_NULL; + 62: 487: std::int_fast8_t limit = MAX_TRAN_LENGTH_; // loop hard limit + 62: 488: QActionHandler const *a = &tatbl->act[0]; + 182: 489: for (; (*a != nullptr) && (limit > 0); ++a) { + 120: 490: r = (*(*a))(this); // call the action through the 'a' pointer + -: 491: #ifdef Q_SPY + 120: 492: QS_CRIT_ENTRY(); + 120: 493: QS_MEM_SYS(); + 120: 494: if (r == Q_RET_ENTRY) { + 70: 495: QS_BEGIN_PRE_(QS_QEP_STATE_ENTRY, qsId) + 35: 496: QS_OBJ_PRE_(this); // this state machine object + 35: 497: QS_FUN_PRE_(m_temp.obj->stateHandler); // entered state + 35: 498: QS_END_PRE_() + -: 499: } + 50: 500: else if (r == Q_RET_EXIT) { + 30: 501: QS_BEGIN_PRE_(QS_QEP_STATE_EXIT, qsId) + 15: 502: QS_OBJ_PRE_(this); // this state machine object + 15: 503: QS_FUN_PRE_(m_temp.obj->stateHandler); // exited state + 15: 504: QS_END_PRE_() + -: 505: } + 20: 506: else if (r == Q_RET_TRAN_INIT) { + 18: 507: QS_BEGIN_PRE_(QS_QEP_STATE_INIT, qsId) + 9: 508: QS_OBJ_PRE_(this); // this state machine object + 9: 509: QS_FUN_PRE_(tatbl->target->stateHandler); // source + 9: 510: QS_FUN_PRE_(m_temp.tatbl->target->stateHandler); // target + 9: 511: QS_END_PRE_() + -: 512: } + 2: 513: else if (r == Q_RET_TRAN_EP) { + 2: 514: QS_BEGIN_PRE_(QS_QEP_TRAN_EP, qsId) + 1: 515: QS_OBJ_PRE_(this); // this state machine object + 1: 516: QS_FUN_PRE_(tatbl->target->stateHandler); // source + 1: 517: QS_FUN_PRE_(m_temp.tatbl->target->stateHandler); // target + 1: 518: QS_END_PRE_() + -: 519: } + #####: 520: else if (r == Q_RET_TRAN_XP) { + #####: 521: QS_BEGIN_PRE_(QS_QEP_TRAN_XP, qsId) + #####: 522: QS_OBJ_PRE_(this); // this state machine object + #####: 523: QS_FUN_PRE_(tatbl->target->stateHandler); // source + #####: 524: QS_FUN_PRE_(m_temp.tatbl->target->stateHandler); // target + #####: 525: QS_END_PRE_() + -: 526: } + -: 527: else { + -: 528: // empty + -: 529: } + 120: 530: QS_MEM_APP(); + 120: 531: QS_CRIT_EXIT(); + -: 532: #endif // Q_SPY + 120: 533: --limit; + -: 534: } + 62: 535: QF_CRIT_ENTRY(); + 62*: 536: Q_ENSURE_INCRIT(790, *a == nullptr); + 62: 537: QF_CRIT_EXIT(); + -: 538: + 62: 539: m_state.obj = (r >= Q_RET_TRAN) + 20: 540: ? m_temp.tatbl->target + -: 541: : tatbl->target; + 62: 542: return r; + -: 543:} + -: 544: + -: 545://${QEP::QMsm::exitToTranSource_} ............................................ + 50: 546:void QMsm::exitToTranSource_( + -: 547: QMState const * const cs, + -: 548: QMState const * const ts, + -: 549: std::uint_fast8_t const qsId) + -: 550:{ + -: 551: #ifndef Q_SPY + -: 552: Q_UNUSED_PAR(qsId); + -: 553: #endif + -: 554: + -: 555: QF_CRIT_STAT + -: 556: + -: 557: // exit states from the current state to the tran. source state + 50: 558: QMState const *s = cs; + 50: 559: std::int_fast8_t limit = MAX_NEST_DEPTH_; // loop hard limit + 78: 560: for (; (s != ts) && (limit > 0); --limit) { + -: 561: // exit action provided in state 's'? + 28: 562: if (s->exitAction != nullptr) { + -: 563: // execute the exit action + 26: 564: static_cast((*s->exitAction)(this)); + -: 565: + 26: 566: QS_CRIT_ENTRY(); + 26: 567: QS_MEM_SYS(); + 26: 568: QS_BEGIN_PRE_(QS_QEP_STATE_EXIT, qsId) + 13: 569: QS_OBJ_PRE_(this); // this state machine object + 13: 570: QS_FUN_PRE_(s->stateHandler); // the exited state handler + 13: 571: QS_END_PRE_() + 26: 572: QS_MEM_APP(); + 26: 573: QS_CRIT_EXIT(); + -: 574: } + -: 575: + 28: 576: s = s->superstate; // advance to the superstate + -: 577: + 28: 578: if (s == nullptr) { // reached the top of a submachine? + 4: 579: s = m_temp.obj; // the superstate from QM_SM_EXIT() + 4: 580: QF_CRIT_ENTRY(); + 4*: 581: Q_ASSERT_INCRIT(810, s != nullptr); // must be valid + 4: 582: QF_CRIT_EXIT(); + -: 583: } + -: 584: } + 50: 585: QF_CRIT_ENTRY(); + 50*: 586: Q_ENSURE_INCRIT(890, limit > 0); + 50: 587: QF_CRIT_EXIT(); + 50: 588:} + -: 589: + -: 590://${QEP::QMsm::enterHistory_} ................................................ + 6: 591:QState QMsm::enterHistory_( + -: 592: QMState const * const hist, + -: 593: std::uint_fast8_t const qsId) + -: 594:{ + -: 595: #ifndef Q_SPY + -: 596: Q_UNUSED_PAR(qsId); + -: 597: #endif + -: 598: + 6: 599: QMState const *s = hist; + 6: 600: QMState const *ts = m_state.obj; // tran. source + 6: 601: QMState const *epath[MAX_ENTRY_DEPTH_]; + -: 602: + -: 603: QF_CRIT_STAT + -: 604: + 6: 605: QS_CRIT_ENTRY(); + 6: 606: QS_MEM_SYS(); + 6: 607: QS_BEGIN_PRE_(QS_QEP_TRAN_HIST, qsId) + 3: 608: QS_OBJ_PRE_(this); // this state machine object + 3: 609: QS_FUN_PRE_(ts->stateHandler); // source state handler + 3: 610: QS_FUN_PRE_(hist->stateHandler); // target state handler + 3: 611: QS_END_PRE_() + 6: 612: QS_MEM_APP(); + 6: 613: QS_CRIT_EXIT(); + -: 614: + 6: 615: std::int_fast8_t i = 0; // tran. entry path index + 16: 616: while ((s != ts) && (i < MAX_ENTRY_DEPTH_)) { + 10: 617: if (s->entryAction != nullptr) { + 10: 618: epath[i] = s; + 10: 619: ++i; + -: 620: } + 10: 621: s = s->superstate; + 10: 622: if (s == nullptr) { + #####: 623: ts = s; // force exit from the for-loop + -: 624: } + -: 625: } + 6: 626: QF_CRIT_ENTRY(); + 6*: 627: Q_ASSERT_INCRIT(910, s == ts); + 6: 628: QF_CRIT_EXIT(); + -: 629: + -: 630: // retrace the entry path in reverse (desired) order... + 16: 631: while (i > 0) { + 10: 632: --i; + 10: 633: (*epath[i]->entryAction)(this); // run entry action in epath[i] + -: 634: + 10: 635: QS_CRIT_ENTRY(); + 10: 636: QS_MEM_SYS(); + 10: 637: QS_BEGIN_PRE_(QS_QEP_STATE_ENTRY, qsId) + 5: 638: QS_OBJ_PRE_(this); + 5: 639: QS_FUN_PRE_(epath[i]->stateHandler); // entered state handler + 5: 640: QS_END_PRE_() + 10: 641: QS_MEM_APP(); + 10: 642: QS_CRIT_EXIT(); + -: 643: } + -: 644: + 6: 645: m_state.obj = hist; // set current state to the tran. target + -: 646: + -: 647: // initial tran. present? + 6: 648: QState r; + 6: 649: if (hist->initAction != nullptr) { + 2: 650: r = (*hist->initAction)(this); // execute the tran. action + -: 651: } + -: 652: else { + -: 653: r = Q_RET_NULL; + -: 654: } + -: 655: + 6: 656: return r; + -: 657:} + -: 658: + -: 659://${QEP::QMsm::topQMState} ................................................... + #####: 660:QMState const * QMsm::topQMState() const noexcept { + #####: 661: return &l_msm_top_s; + -: 662:} + -: 663: + -: 664:} // namespace QP + -: 665://$enddef${QEP::QMsm} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/qutest/qmsm/test/qp.hpp.gcov b/qutest/qmsm/test/qp.hpp.gcov new file mode 100644 index 0000000..8924ce2 --- /dev/null +++ b/qutest/qmsm/test/qp.hpp.gcov @@ -0,0 +1,1284 @@ + -: 0:Source:../../../../include/qp.hpp + -: 0:Graph:build/qep_msm.gcno + -: 0:Data:build/qep_msm.gcda + -: 0:Runs:6 + -: 1://$file${include::qp.hpp} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 2:// + -: 3:// Model: qpcpp.qm + -: 4:// File: ${include::qp.hpp} + -: 5:// + -: 6:// This code has been generated by QM 6.1.1 . + -: 7:// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. + -: 8:// + -: 9:// This code is covered by the following QP license: + -: 10:// License # : LicenseRef-QL-dual + -: 11:// Issued to : Any user of the QP/C++ real-time embedded framework + -: 12:// Framework(s) : qpcpp + -: 13:// Support ends : 2024-12-31 + -: 14:// License scope: + -: 15:// + -: 16:// Copyright (C) 2005 Quantum Leaps, LLC . + -: 17:// + -: 18:// Q u a n t u m L e a P s + -: 19:// ------------------------ + -: 20:// Modern Embedded Software + -: 21:// + -: 22:// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial + -: 23:// + -: 24:// This software is dual-licensed under the terms of the open source GNU + -: 25:// General Public License version 3 (or any later version), or alternatively, + -: 26:// under the terms of one of the closed source Quantum Leaps commercial + -: 27:// licenses. + -: 28:// + -: 29:// The terms of the open source GNU General Public License version 3 + -: 30:// can be found at: + -: 31:// + -: 32:// The terms of the closed source Quantum Leaps commercial licenses + -: 33:// can be found at: + -: 34:// + -: 35:// Redistributions in source code must retain this top-level comment block. + -: 36:// Plagiarizing this software to sidestep the license obligations is illegal. + -: 37:// + -: 38:// Contact information: + -: 39:// + -: 40:// + -: 41:// + -: 42://$endhead${include::qp.hpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 43:#ifndef QP_HPP_ + -: 44:#define QP_HPP_ + -: 45: + -: 46://============================================================================ + -: 47:#define QP_VERSION 734U + -: 48:#define QP_VERSION_STR "7.3.4" + -: 49: + -: 50://! Encrypted current QP release (7.3.4) and date (2024-03-21) + -: 51:#define QP_RELEASE 0x70C1EA11U + -: 52: + -: 53://============================================================================ + -: 54://! @cond INTERNAL + -: 55: + -: 56:#ifndef Q_SIGNAL_SIZE + -: 57:#define Q_SIGNAL_SIZE 2U + -: 58:#endif // ndef Q_SIGNAL_SIZE + -: 59: + -: 60:#ifndef QF_MAX_ACTIVE + -: 61:#define QF_MAX_ACTIVE 32U + -: 62:#endif + -: 63: + -: 64:#if (QF_MAX_ACTIVE > 64U) + -: 65:#error QF_MAX_ACTIVE exceeds the maximum of 64U; + -: 66:#endif + -: 67: + -: 68:#ifndef QF_MAX_TICK_RATE + -: 69:#define QF_MAX_TICK_RATE 1U + -: 70:#endif + -: 71: + -: 72:#if (QF_MAX_TICK_RATE > 15U) + -: 73:#error QF_MAX_TICK_RATE exceeds the maximum of 15U; + -: 74:#endif + -: 75: + -: 76:#ifndef QF_MAX_EPOOL + -: 77:#define QF_MAX_EPOOL 3U + -: 78:#endif + -: 79: + -: 80:#if (QF_MAX_EPOOL > 15U) + -: 81:#error QF_MAX_EPOOL exceeds the maximum of 15U; + -: 82:#endif + -: 83: + -: 84:#ifndef QF_TIMEEVT_CTR_SIZE + -: 85:#define QF_TIMEEVT_CTR_SIZE 4U + -: 86:#endif + -: 87: + -: 88:#if (QF_TIMEEVT_CTR_SIZE > 4U) + -: 89:#error QF_TIMEEVT_CTR_SIZE defined incorrectly, expected 1U, 2U, or 4U; + -: 90:#endif + -: 91: + -: 92:#ifndef QF_EVENT_SIZ_SIZE + -: 93:#define QF_EVENT_SIZ_SIZE 2U + -: 94:#endif + -: 95: + -: 96:#if (QF_EVENT_SIZ_SIZE > 4U) + -: 97:#error QF_EVENT_SIZ_SIZE defined incorrectly, expected 1U, 2U, or 4U; + -: 98:#endif + -: 99: + -: 100://! @endcond + -: 101://============================================================================ + -: 102://$declare${glob-types} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 103: + -: 104://${glob-types::int_t} ....................................................... + -: 105:using int_t = int; + -: 106: + -: 107://${glob-types::enum_t} ...................................................... + -: 108:using enum_t = int; + -: 109: + -: 110://${glob-types::float32_t} ................................................... + -: 111:using float32_t = float; + -: 112: + -: 113://${glob-types::float64_t} ................................................... + -: 114:using float64_t = double; + -: 115://$enddecl${glob-types} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 116: + -: 117://$declare${QEP} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 118:namespace QP { + -: 119: + -: 120://${QEP::versionStr[]} ....................................................... + -: 121:constexpr char const versionStr[] {QP_VERSION_STR}; + -: 122: + -: 123://${QEP::QSignal} ............................................................ + -: 124:#if (Q_SIGNAL_SIZE == 1U) + -: 125:using QSignal = std::uint8_t; + -: 126:#endif // (Q_SIGNAL_SIZE == 1U) + -: 127: + -: 128://${QEP::QSignal} ............................................................ + -: 129:#if (Q_SIGNAL_SIZE == 2U) + -: 130:using QSignal = std::uint16_t; + -: 131:#endif // (Q_SIGNAL_SIZE == 2U) + -: 132: + -: 133://${QEP::QSignal} ............................................................ + -: 134:#if (Q_SIGNAL_SIZE == 4U) + -: 135:using QSignal = std::uint32_t; + -: 136:#endif // (Q_SIGNAL_SIZE == 4U) + -: 137: + -: 138://${QEP::QEvt} ............................................................... + -: 139:class QEvt { + -: 140:public: + -: 141: QSignal sig; + -: 142: std::uint8_t volatile refCtr_; + -: 143: std::uint8_t evtTag_; + -: 144: + -: 145:public: + -: 146: static constexpr std::uint8_t MARKER {0xE0U}; + -: 147: + -: 148:#ifdef QEVT_DYN_CTOR + -: 149: enum DynEvt: std::uint8_t { DYNAMIC }; + -: 150:#endif // def QEVT_DYN_CTOR + -: 151: + -: 152:public: + -: 153: + -: 154:#ifdef QEVT_DYN_CTOR + -: 155: QEvt * ctor(DynEvt const dummy) noexcept; + -: 156:#endif // def QEVT_DYN_CTOR + -: 157: explicit constexpr QEvt(QSignal const s) noexcept + -: 158: : sig(s), + -: 159: refCtr_(0U), + -: 160: evtTag_(MARKER) + -: 161: {} + -: 162: QEvt() = delete; + 35: 163: static bool verify_(QEvt const * const e) noexcept { + 35: 164: return (e != nullptr) + 35: 165: && ((e->evtTag_ & 0xF0U) == MARKER); + -: 166: } + -: 167: std::uint_fast8_t getPoolNum_() const noexcept { + -: 168: return static_cast(evtTag_) & 0x0FU; + -: 169: } + -: 170:}; // class QEvt + -: 171: + -: 172://${QEP::QState} ............................................................. + -: 173:using QState = std::uint_fast8_t; + -: 174: + -: 175://${QEP::QStateHandler} ...................................................... + -: 176:using QStateHandler = QState (*)(void * const me, QEvt const * const e); + -: 177: + -: 178://${QEP::QActionHandler} ..................................................... + -: 179:using QActionHandler = QState (*)(void * const me); + -: 180: + -: 181://${QEP::QXThread} ........................................................... + -: 182:// forward declaration + -: 183:class QXThread; + -: 184: + -: 185://${QEP::QXThreadHandler} .................................................... + -: 186:using QXThreadHandler = void (*)(QXThread * const me); + -: 187: + -: 188://${QEP::QMState} ............................................................ + -: 189:struct QMState { + -: 190: QMState const * superstate; + -: 191: QStateHandler const stateHandler; + -: 192: QActionHandler const entryAction; + -: 193: QActionHandler const exitAction; + -: 194: QActionHandler const initAction; + -: 195:}; + -: 196: + -: 197://${QEP::QMTranActTable} ..................................................... + -: 198:struct QMTranActTable { + -: 199: QMState const * target; + -: 200: QActionHandler const act[1]; + -: 201:}; + -: 202: + -: 203://${QEP::QAsmAttr} ........................................................... + -: 204:union QAsmAttr { + -: 205: QStateHandler fun; + -: 206: QActionHandler act; + -: 207: QXThreadHandler thr; + -: 208: QMState const *obj; + -: 209: QMTranActTable const *tatbl; + -: 210:#ifndef Q_UNSAFE + -: 211: std::uintptr_t uint; + -: 212:#endif + 6: 213: constexpr QAsmAttr() : fun(nullptr) {} + -: 214:}; + -: 215: + -: 216://${QEP::Q_USER_SIG} ......................................................... + -: 217:constexpr enum_t Q_USER_SIG {4}; + -: 218: + -: 219://${QEP::QAsm} ............................................................... + -: 220:class QAsm { + -: 221:protected: + -: 222: QAsmAttr m_state; + -: 223: QAsmAttr m_temp; + -: 224: + -: 225:public: + -: 226: + -: 227: //! All possible return values from state-handlers + -: 228: //! @note + -: 229: //! The order is important for algorithmic correctness. + -: 230: enum QStateRet : QState { + -: 231: // unhandled and need to "bubble up" + -: 232: Q_RET_SUPER, //!< event passed to superstate to handle + -: 233: Q_RET_SUPER_SUB, //!< event passed to submachine superstate + -: 234: Q_RET_UNHANDLED, //!< event unhandled due to a guard + -: 235: + -: 236: // handled and do not need to "bubble up" + -: 237: Q_RET_HANDLED, //!< event handled (internal transition) + -: 238: Q_RET_IGNORED, //!< event silently ignored (bubbled up to top) + -: 239: + -: 240: // entry/exit + -: 241: Q_RET_ENTRY, //!< state entry action executed + -: 242: Q_RET_EXIT, //!< state exit action executed + -: 243: + -: 244: // no side effects + -: 245: Q_RET_NULL, //!< return value without any effect + -: 246: + -: 247: // transitions need to execute transition-action table in QP::QMsm + -: 248: Q_RET_TRAN, //!< regular transition + -: 249: Q_RET_TRAN_INIT, //!< initial transition in a state or submachine + -: 250: Q_RET_TRAN_EP, //!< entry-point transition into a submachine + -: 251: + -: 252: // transitions that additionally clobber QHsm.m_state + -: 253: Q_RET_TRAN_HIST, //!< transition to history of a given state + -: 254: Q_RET_TRAN_XP //!< exit-point transition out of a submachine + -: 255: }; + -: 256: + -: 257: //! Reserved signals by the QP-framework. + -: 258: enum ReservedSig : QSignal { + -: 259: Q_EMPTY_SIG, //!< signal to execute the default case + -: 260: Q_ENTRY_SIG, //!< signal for entry actions + -: 261: Q_EXIT_SIG, //!< signal for exit actions + -: 262: Q_INIT_SIG //!< signal for nested initial transitions + -: 263: }; + -: 264: + -: 265:protected: + 6: 266: explicit QAsm() noexcept + 6: 267: : m_state(), + 6: 268: m_temp () + -: 269: {} + -: 270: + -: 271:public: + -: 272: + -: 273:#ifdef Q_XTOR + -: 274: virtual ~QAsm() noexcept { + -: 275: // empty + -: 276: } + -: 277:#endif // def Q_XTOR + -: 278: virtual void init( + -: 279: void const * const e, + -: 280: std::uint_fast8_t const qsId) = 0; + -: 281: virtual void init(std::uint_fast8_t const qsId) { + -: 282: this->init(nullptr, qsId); + -: 283: } + -: 284: virtual void dispatch( + -: 285: QEvt const * const e, + -: 286: std::uint_fast8_t const qsId) = 0; + -: 287: virtual bool isIn(QStateHandler const state) noexcept { + -: 288: static_cast(state); + -: 289: return false; + -: 290: } + -: 291: QStateHandler state() const noexcept { + -: 292: return m_state.fun; + -: 293: } + -: 294: QMState const * stateObj() const noexcept { + -: 295: return m_state.obj; + -: 296: } + -: 297: + -: 298:#ifdef Q_SPY + -: 299: virtual QStateHandler getStateHandler() noexcept { + -: 300: return m_state.fun; + -: 301: } + -: 302:#endif // def Q_SPY + -: 303: static QState top( + -: 304: void * const me, + -: 305: QEvt const * const e) noexcept + -: 306: { + -: 307: static_cast(me); + -: 308: static_cast(e); + -: 309: return Q_RET_IGNORED; // the top state ignores all events + -: 310: } + -: 311: + -: 312:protected: + -: 313: QState tran(QStateHandler const target) noexcept { + -: 314: m_temp.fun = target; + -: 315: return Q_RET_TRAN; + -: 316: } + -: 317: QState tran_hist(QStateHandler const hist) noexcept { + -: 318: m_temp.fun = hist; + -: 319: return Q_RET_TRAN_HIST; + -: 320: } + -: 321: QState super(QStateHandler const superstate) noexcept { + -: 322: m_temp.fun = superstate; + -: 323: return Q_RET_SUPER; + -: 324: } + -: 325: QState qm_tran(void const * const tatbl) noexcept { + -: 326: m_temp.tatbl = static_cast(tatbl); + -: 327: return Q_RET_TRAN; + -: 328: } + -: 329: QState qm_tran_init(void const * const tatbl) noexcept { + -: 330: m_temp.tatbl = static_cast(tatbl); + -: 331: return Q_RET_TRAN_INIT; + -: 332: } + -: 333: QState qm_tran_hist( + -: 334: QMState const * const hist, + -: 335: void const * const tatbl) noexcept + -: 336: { + -: 337: m_state.obj = hist; + -: 338: m_temp.tatbl = static_cast(tatbl); + -: 339: return Q_RET_TRAN_HIST; + -: 340: } + -: 341: QState qm_tran_ep(void const * const tatbl) noexcept { + -: 342: m_temp.tatbl = static_cast(tatbl); + -: 343: return Q_RET_TRAN_EP; + -: 344: } + -: 345: QState qm_tran_xp( + -: 346: QActionHandler const xp, + -: 347: void const * const tatbl) noexcept + -: 348: { + -: 349: m_state.act = xp; + -: 350: m_temp.tatbl = static_cast(tatbl); + -: 351: return Q_RET_TRAN_XP; + -: 352: } + -: 353: + -: 354:#ifdef Q_SPY + -: 355: QState qm_entry(QMState const * const s) noexcept { + -: 356: m_temp.obj = s; + -: 357: return Q_RET_ENTRY; + -: 358: } + -: 359:#endif // def Q_SPY + -: 360: + -: 361:#ifndef Q_SPY + -: 362: QState qm_entry(QMState const * const s) noexcept { + -: 363: static_cast(s); // unused parameter + -: 364: return Q_RET_ENTRY; + -: 365: } + -: 366:#endif // ndef Q_SPY + -: 367: + -: 368:#ifdef Q_SPY + -: 369: QState qm_exit(QMState const * const s) noexcept { + -: 370: m_temp.obj = s; + -: 371: return Q_RET_EXIT; + -: 372: } + -: 373:#endif // def Q_SPY + -: 374: + -: 375:#ifndef Q_SPY + -: 376: QState qm_exit(QMState const * const s) noexcept { + -: 377: static_cast(s); // unused parameter + -: 378: return Q_RET_EXIT; + -: 379: } + -: 380:#endif // ndef Q_SPY + -: 381: QState qm_sm_exit(QMState const * const s) noexcept { + -: 382: m_temp.obj = s; + -: 383: return Q_RET_EXIT; + -: 384: } + -: 385: QState qm_super_sub(QMState const * const s) noexcept { + -: 386: m_temp.obj = s; + -: 387: return Q_RET_SUPER_SUB; + -: 388: } + -: 389:}; // class QAsm + -: 390: + -: 391://${QEP::QHsm} ............................................................... + -: 392:class QHsm : public QP::QAsm { + -: 393:public: + -: 394: static constexpr std::int_fast8_t MAX_NEST_DEPTH_{6}; + -: 395: + -: 396:protected: + -: 397: explicit QHsm(QStateHandler const initial) noexcept; + -: 398: + -: 399:public: + -: 400: void init( + -: 401: void const * const e, + -: 402: std::uint_fast8_t const qsId) override; + -: 403: void init(std::uint_fast8_t const qsId) override { + -: 404: this->init(nullptr, qsId); + -: 405: } + -: 406: void dispatch( + -: 407: QEvt const * const e, + -: 408: std::uint_fast8_t const qsId) override; + -: 409: bool isIn(QStateHandler const state) noexcept override; + -: 410: QStateHandler childState(QStateHandler const parent) noexcept; + -: 411: + -: 412:#ifdef Q_SPY + -: 413: QStateHandler getStateHandler() noexcept override { + -: 414: return m_state.fun; + -: 415: } + -: 416:#endif // def Q_SPY + -: 417: + -: 418:private: + -: 419: std::int_fast8_t hsm_tran( + -: 420: QStateHandler (&path)[MAX_NEST_DEPTH_], + -: 421: std::uint_fast8_t const qsId); + -: 422:}; // class QHsm + -: 423: + -: 424://${QEP::QMsm} ............................................................... + -: 425:class QMsm : public QP::QAsm { + -: 426:protected: + -: 427: explicit QMsm(QStateHandler const initial) noexcept; + -: 428: + -: 429:public: + -: 430: void init( + -: 431: void const * const e, + -: 432: std::uint_fast8_t const qsId) override; + #####: 433: void init(std::uint_fast8_t const qsId) override { + #####: 434: this->init(nullptr, qsId); + #####: 435: } + -: 436: void dispatch( + -: 437: QEvt const * const e, + -: 438: std::uint_fast8_t const qsId) override; + -: 439: + -: 440:#ifdef Q_SPY + #####: 441: QStateHandler getStateHandler() noexcept override { + #####: 442: return m_state.obj->stateHandler; + -: 443: } + -: 444:#endif // def Q_SPY + -: 445: bool isIn(QStateHandler const state) noexcept override; + -: 446: + -: 447: //! @deprecated instead use: QMsm::isIn() + -: 448: bool isInState(QMState const * const stateObj) const noexcept; + -: 449: QMState const * childStateObj(QMState const * const parent) const noexcept; + -: 450: + -: 451:private: + -: 452: QState execTatbl_( + -: 453: QMTranActTable const * const tatbl, + -: 454: std::uint_fast8_t const qsId); + -: 455: void exitToTranSource_( + -: 456: QMState const * const cs, + -: 457: QMState const * const ts, + -: 458: std::uint_fast8_t const qsId); + -: 459: QState enterHistory_( + -: 460: QMState const * const hist, + -: 461: std::uint_fast8_t const qsId); + -: 462: + -: 463:public: + -: 464: QMState const * topQMState() const noexcept; + -: 465:}; // class QMsm + -: 466: + -: 467:} // namespace QP + -: 468://$enddecl${QEP} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 469: + -: 470://$declare${QEP-macros} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 471: + -: 472://${QEP-macros::Q_STATE_DECL} ................................................ + -: 473:#define Q_STATE_DECL(state_) \ + -: 474: QP::QState state_ ## _h(QP::QEvt const * const e); \ + -: 475: static QP::QState state_(void * const me, QP::QEvt const * const e) + -: 476: + -: 477://${QEP-macros::Q_STATE_DEF} ................................................. + -: 478:#define Q_STATE_DEF(subclass_, state_) \ + -: 479: QP::QState subclass_::state_(void * const me, QP::QEvt const * const e) { \ + -: 480: return static_cast(me)->state_ ## _h(e); } \ + -: 481: QP::QState subclass_::state_ ## _h(QP::QEvt const * const e) + -: 482: + -: 483://${QEP-macros::Q_HANDLED} ................................................... + -: 484:#define Q_HANDLED() (Q_RET_HANDLED) + -: 485: + -: 486://${QEP-macros::Q_UNHANDLED} ................................................. + -: 487:#define Q_UNHANDLED() (Q_RET_UNHANDLED) + -: 488: + -: 489://${QEP-macros::Q_EVT_CAST} .................................................. + -: 490:#define Q_EVT_CAST(subclass_) (static_cast(e)) + -: 491: + -: 492://${QEP-macros::Q_STATE_CAST} ................................................ + -: 493:#define Q_STATE_CAST(handler_) \ + -: 494: (reinterpret_cast(handler_)) + -: 495: + -: 496://${QEP-macros::QM_STATE_DECL} ............................................... + -: 497:#define QM_STATE_DECL(state_) \ + -: 498: QP::QState state_ ## _h(QP::QEvt const * const e); \ + -: 499: static QP::QState state_(void * const me, QP::QEvt const * const e); \ + -: 500: static QP::QMState const state_ ## _s + -: 501: + -: 502://${QEP-macros::QM_SM_STATE_DECL} ............................................ + -: 503:#define QM_SM_STATE_DECL(subm_, state_) \ + -: 504: QP::QState state_ ## _h(QP::QEvt const * const e);\ + -: 505: static QP::QState state_(void * const me, QP::QEvt const * const e); \ + -: 506: static SM_ ## subm_ const state_ ## _s + -: 507: + -: 508://${QEP-macros::QM_ACTION_DECL} .............................................. + -: 509:#define QM_ACTION_DECL(action_) \ + -: 510: QP::QState action_ ## _h(); \ + -: 511: static QP::QState action_(void * const me) + -: 512: + -: 513://${QEP-macros::QM_STATE_DEF} ................................................ + -: 514:#define QM_STATE_DEF(subclass_, state_) \ + -: 515: QP::QState subclass_::state_(void * const me, QP::QEvt const * const e) {\ + -: 516: return static_cast(me)->state_ ## _h(e); } \ + -: 517: QP::QState subclass_::state_ ## _h(QP::QEvt const * const e) + -: 518: + -: 519://${QEP-macros::QM_ACTION_DEF} ............................................... + -: 520:#define QM_ACTION_DEF(subclass_, action_) \ + -: 521: QP::QState subclass_::action_(void * const me) { \ + -: 522: return static_cast(me)->action_ ## _h(); } \ + -: 523: QP::QState subclass_::action_ ## _h() + -: 524: + -: 525://${QEP-macros::QM_HANDLED} .................................................. + -: 526:#define QM_HANDLED() (Q_RET_HANDLED) + -: 527: + -: 528://${QEP-macros::QM_UNHANDLED} ................................................ + -: 529:#define QM_UNHANDLED() (Q_RET_HANDLED) + -: 530: + -: 531://${QEP-macros::QM_SUPER} .................................................... + -: 532:#define QM_SUPER() (Q_RET_SUPER) + -: 533: + -: 534://${QEP-macros::QM_STATE_NULL} ............................................... + -: 535:#define QM_STATE_NULL (nullptr) + -: 536: + -: 537://${QEP-macros::Q_ACTION_NULL} ............................................... + -: 538:#define Q_ACTION_NULL (nullptr) + -: 539: + -: 540://${QEP-macros::Q_UNUSED_PAR} ................................................ + -: 541:#define Q_UNUSED_PAR(par_) (static_cast(par_)) + -: 542: + -: 543://${QEP-macros::Q_DIM} ....................................................... + -: 544:#define Q_DIM(array_) (sizeof(array_) / sizeof((array_)[0U])) + -: 545: + -: 546://${QEP-macros::Q_UINT2PTR_CAST} ............................................. + -: 547:#define Q_UINT2PTR_CAST(type_, uint_) (reinterpret_cast(uint_)) + -: 548: + -: 549://${QEP-macros::INIT} ........................................................ + -: 550:#ifdef Q_SPY + -: 551:#define INIT(qsId_) init((qsId_)) + -: 552:#endif // def Q_SPY + -: 553: + -: 554://${QEP-macros::INIT} ........................................................ + -: 555:#ifndef Q_SPY + -: 556:#define INIT(dummy) init(0U) + -: 557:#endif // ndef Q_SPY + -: 558: + -: 559://${QEP-macros::DISPATCH} .................................................... + -: 560:#ifdef Q_SPY + -: 561:#define DISPATCH(e_, qsId_) dispatch((e_), (qsId_)) + -: 562:#endif // def Q_SPY + -: 563: + -: 564://${QEP-macros::DISPATCH} .................................................... + -: 565:#ifndef Q_SPY + -: 566:#define DISPATCH(e_, dummy) dispatch((e_), 0U) + -: 567:#endif // ndef Q_SPY + -: 568://$enddecl${QEP-macros} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 569: + -: 570://$declare${QF::types} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 571:namespace QP { + -: 572: + -: 573://${QF::types::QPrioSpec} .................................................... + -: 574:using QPrioSpec = std::uint16_t; + -: 575: + -: 576://${QF::types::QTimeEvtCtr} .................................................. + -: 577:#if (QF_TIMEEVT_CTR_SIZE == 1U) + -: 578:using QTimeEvtCtr = std::uint8_t; + -: 579:#endif // (QF_TIMEEVT_CTR_SIZE == 1U) + -: 580: + -: 581://${QF::types::QTimeEvtCtr} .................................................. + -: 582:#if (QF_TIMEEVT_CTR_SIZE == 2U) + -: 583:using QTimeEvtCtr = std::uint16_t; + -: 584:#endif // (QF_TIMEEVT_CTR_SIZE == 2U) + -: 585: + -: 586://${QF::types::QTimeEvtCtr} .................................................. + -: 587:#if (QF_TIMEEVT_CTR_SIZE == 4U) + -: 588:using QTimeEvtCtr = std::uint32_t; + -: 589:#endif // (QF_TIMEEVT_CTR_SIZE == 4U) + -: 590: + -: 591://${QF::types::QPSetBits} .................................................... + -: 592:#if (QF_MAX_ACTIVE <= 8U) + -: 593:using QPSetBits = std::uint8_t; + -: 594:#endif // (QF_MAX_ACTIVE <= 8U) + -: 595: + -: 596://${QF::types::QPSetBits} .................................................... + -: 597:#if (8U < QF_MAX_ACTIVE) && (QF_MAX_ACTIVE <= 16U) + -: 598:using QPSetBits = std::uint16_t; + -: 599:#endif // (8U < QF_MAX_ACTIVE) && (QF_MAX_ACTIVE <= 16U) + -: 600: + -: 601://${QF::types::QPSetBits} .................................................... + -: 602:#if (16 < QF_MAX_ACTIVE) + -: 603:using QPSetBits = std::uint32_t; + -: 604:#endif // (16 < QF_MAX_ACTIVE) + -: 605: + -: 606://${QF::types::QF_LOG2} ...................................................... + -: 607:#ifndef QF_LOG2 + -: 608:std::uint_fast8_t QF_LOG2(QP::QPSetBits x) noexcept; + -: 609:#endif // ndef QF_LOG2 + -: 610: + -: 611://${QF::types::QPSet} ........................................................ + -: 612:class QPSet { + -: 613:private: + -: 614: QPSetBits m_bits[((QF_MAX_ACTIVE + (8U*sizeof(QPSetBits))) - 1U)/(8U*sizeof(QPSetBits))]; + -: 615: + -: 616:public: + -: 617: void setEmpty() noexcept { + -: 618: m_bits[0] = 0U; + -: 619: #if (QF_MAX_ACTIVE > 32) + -: 620: m_bits[1] = 0U; + -: 621: #endif + -: 622: } + -: 623: bool isEmpty() const noexcept { + -: 624: #if (QF_MAX_ACTIVE <= 32U) + -: 625: return (m_bits[0] == 0U); + -: 626: #else + -: 627: return (m_bits[0] == 0U) ? (m_bits[1] == 0U) : false; + -: 628: #endif + -: 629: } + -: 630: bool notEmpty() const noexcept { + -: 631: #if (QF_MAX_ACTIVE <= 32U) + -: 632: return (m_bits[0] != 0U); + -: 633: #else + -: 634: return (m_bits[0] != 0U) ? true : (m_bits[1] != 0U); + -: 635: #endif + -: 636: } + -: 637: bool hasElement(std::uint_fast8_t const n) const noexcept { + -: 638: #if (QF_MAX_ACTIVE <= 32U) + -: 639: return (m_bits[0] & (static_cast(1U) << (n - 1U))) != 0U; + -: 640: #else + -: 641: return (n <= 32U) + -: 642: ? ((m_bits[0] & (static_cast(1U) << (n - 1U))) != 0U) + -: 643: : ((m_bits[1] & (static_cast(1U) << (n - 33U))) != 0U); + -: 644: #endif + -: 645: } + -: 646: void insert(std::uint_fast8_t const n) noexcept { + -: 647: #if (QF_MAX_ACTIVE <= 32U) + -: 648: m_bits[0] = (m_bits[0] | (static_cast(1U) << (n - 1U))); + -: 649: #else + -: 650: if (n <= 32U) { + -: 651: m_bits[0] = (m_bits[0] | (static_cast(1U) << (n - 1U))); + -: 652: } + -: 653: else { + -: 654: m_bits[1] = (m_bits[1] | (static_cast(1U) << (n - 33U))); + -: 655: } + -: 656: #endif + -: 657: } + -: 658: void remove(std::uint_fast8_t const n) noexcept { + -: 659: #if (QF_MAX_ACTIVE <= 32U) + -: 660: m_bits[0] = (m_bits[0] & static_cast(~(1U << (n - 1U)))); + -: 661: #else + -: 662: if (n <= 32U) { + -: 663: (m_bits[0] = (m_bits[0] & ~(static_cast(1U) << (n - 1U)))); + -: 664: } + -: 665: else { + -: 666: (m_bits[1] = (m_bits[1] & ~(static_cast(1U) << (n - 33U)))); + -: 667: } + -: 668: #endif + -: 669: } + -: 670: std::uint_fast8_t findMax() const noexcept { + -: 671: #if (QF_MAX_ACTIVE <= 32U) + -: 672: return QF_LOG2(m_bits[0]); + -: 673: #else + -: 674: return (m_bits[1] != 0U) + -: 675: ? (QF_LOG2(m_bits[1]) + 32U) + -: 676: : (QF_LOG2(m_bits[0])); + -: 677: #endif + -: 678: } + -: 679: + -: 680:#ifndef Q_UNSAFE + -: 681: void update_(QPSet * const dis) const noexcept { + -: 682: dis->m_bits[0] = ~m_bits[0]; + -: 683: #if (QF_MAX_ACTIVE > 32U) + -: 684: dis->m_bits[1] = ~m_bits[1]; + -: 685: #endif + -: 686: } + -: 687:#endif // ndef Q_UNSAFE + -: 688: + -: 689:#ifndef Q_UNSAFE + -: 690: bool verify_(QPSet const * const dis) const noexcept { + -: 691: #if (QF_MAX_ACTIVE <= 32U) + -: 692: return m_bits[0] == static_cast(~dis->m_bits[0]); + -: 693: #else + -: 694: return (m_bits[0] == static_cast(~dis->m_bits[0])) + -: 695: && (m_bits[1] == static_cast(~dis->m_bits[1])); + -: 696: #endif + -: 697: } + -: 698:#endif // ndef Q_UNSAFE + -: 699:}; // class QPSet + -: 700: + -: 701://${QF::types::QSubscrList} .................................................. + -: 702:class QSubscrList { + -: 703:private: + -: 704: QPSet m_set; + -: 705: + -: 706:#ifndef Q_UNSAFE + -: 707: QPSet m_set_dis; + -: 708:#endif // ndef Q_UNSAFE + -: 709: + -: 710: // friends... + -: 711: friend class QActive; + -: 712:}; // class QSubscrList + -: 713: + -: 714://${QF::types::QEQueue} ...................................................... + -: 715:class QEQueue; + -: 716: + -: 717:} // namespace QP + -: 718://$enddecl${QF::types} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 719: + -: 720://$declare${QF::QActive} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 721:namespace QP { + -: 722: + -: 723://${QF::QActive} ............................................................. + -: 724:class QActive : public QP::QAsm { + -: 725:protected: + -: 726: std::uint8_t m_prio; + -: 727: std::uint8_t m_pthre; + -: 728: + -: 729:#ifdef QACTIVE_THREAD_TYPE + -: 730: QACTIVE_THREAD_TYPE m_thread; + -: 731:#endif // def QACTIVE_THREAD_TYPE + -: 732: + -: 733:#ifdef QACTIVE_OS_OBJ_TYPE + -: 734: QACTIVE_OS_OBJ_TYPE m_osObject; + -: 735:#endif // def QACTIVE_OS_OBJ_TYPE + -: 736: + -: 737:#ifdef QACTIVE_EQUEUE_TYPE + -: 738: QACTIVE_EQUEUE_TYPE m_eQueue; + -: 739:#endif // def QACTIVE_EQUEUE_TYPE + -: 740: + -: 741:public: + -: 742: + -: 743:#ifndef Q_UNSAFE + -: 744: std::uint8_t m_prio_dis; + -: 745:#endif // ndef Q_UNSAFE + -: 746: + -: 747:#ifndef Q_UNSAFE + -: 748: std::uint8_t m_pthre_dis; + -: 749:#endif // ndef Q_UNSAFE + -: 750: static QActive * registry_[QF_MAX_ACTIVE + 1U]; + -: 751: static QSubscrList * subscrList_; + -: 752: static enum_t maxPubSignal_; + -: 753: + -: 754: // friends... + -: 755: friend class QTimeEvt; + -: 756: friend class QTicker; + -: 757: friend class QXThread; + -: 758: friend class QXMutex; + -: 759: friend class QXSemaphore; + -: 760: friend class QActiveDummy; + -: 761: friend class GuiQActive; + -: 762: friend class GuiQMActive; + -: 763: friend void schedLock(); + -: 764: + -: 765:protected: + -: 766: explicit QActive(QStateHandler const initial) noexcept + -: 767: : QAsm(), + -: 768: m_prio(0U), + -: 769: m_pthre(0U) + -: 770: { + -: 771: m_state.fun = Q_STATE_CAST(&top); + -: 772: m_temp.fun = initial; + -: 773: + -: 774: #ifndef Q_UNSAFE + -: 775: m_prio_dis = static_cast(~m_prio); + -: 776: m_pthre_dis = static_cast(~m_pthre); + -: 777: #endif + -: 778: } + -: 779: + -: 780:public: + -: 781: void init( + -: 782: void const * const e, + -: 783: std::uint_fast8_t const qsId) override + -: 784: { + -: 785: reinterpret_cast(this)->QHsm::init(e, qsId); + -: 786: } + -: 787: void init(std::uint_fast8_t const qsId) override { + -: 788: this->init(nullptr, qsId); + -: 789: } + -: 790: void dispatch( + -: 791: QEvt const * const e, + -: 792: std::uint_fast8_t const qsId) override + -: 793: { + -: 794: reinterpret_cast(this)->QHsm::dispatch(e, qsId); + -: 795: } + -: 796: bool isIn(QStateHandler const state) noexcept override { + -: 797: return reinterpret_cast(this)->QHsm::isIn(state); + -: 798: } + -: 799: QStateHandler childState(QStateHandler const parent) noexcept { + -: 800: return reinterpret_cast(this)->QHsm::childState(parent); + -: 801: } + -: 802: void setAttr( + -: 803: std::uint32_t attr1, + -: 804: void const * attr2 = nullptr); + -: 805: void start( + -: 806: QPrioSpec const prioSpec, + -: 807: QEvt const * * const qSto, + -: 808: std::uint_fast16_t const qLen, + -: 809: void * const stkSto, + -: 810: std::uint_fast16_t const stkSize, + -: 811: void const * const par); + -: 812: void start( + -: 813: QPrioSpec const prioSpec, + -: 814: QEvt const * * const qSto, + -: 815: std::uint_fast16_t const qLen, + -: 816: void * const stkSto, + -: 817: std::uint_fast16_t const stkSize) + -: 818: { + -: 819: this->start(prioSpec, qSto, qLen, stkSto, stkSize, nullptr); + -: 820: } + -: 821: + -: 822:#ifdef QACTIVE_CAN_STOP + -: 823: void stop(); + -: 824:#endif // def QACTIVE_CAN_STOP + -: 825: void register_() noexcept; + -: 826: void unregister_() noexcept; + -: 827: bool post_( + -: 828: QEvt const * const e, + -: 829: std::uint_fast16_t const margin, + -: 830: void const * const sender) noexcept; + -: 831: void postLIFO(QEvt const * const e) noexcept; + -: 832: QEvt const * get_() noexcept; + -: 833: static std::uint_fast16_t getQueueMin(std::uint_fast8_t const prio) noexcept; + -: 834: static void psInit( + -: 835: QSubscrList * const subscrSto, + -: 836: enum_t const maxSignal) noexcept; + -: 837: static void publish_( + -: 838: QEvt const * const e, + -: 839: void const * const sender, + -: 840: std::uint_fast8_t const qsId) noexcept; + -: 841: void subscribe(enum_t const sig) const noexcept; + -: 842: void unsubscribe(enum_t const sig) const noexcept; + -: 843: void unsubscribeAll() const noexcept; + -: 844: bool defer( + -: 845: QEQueue * const eq, + -: 846: QEvt const * const e) const noexcept; + -: 847: bool recall(QEQueue * const eq) noexcept; + -: 848: std::uint_fast16_t flushDeferred( + -: 849: QEQueue * const eq, + -: 850: std::uint_fast16_t const num = 0xFFFFU) const noexcept; + -: 851: std::uint_fast8_t getPrio() const noexcept { + -: 852: return static_cast(m_prio); + -: 853: } + -: 854: void setPrio(QPrioSpec const prio) noexcept { + -: 855: m_prio = static_cast(prio & 0xFFU); + -: 856: m_pthre = static_cast(prio >> 8U); + -: 857: } + -: 858: std::uint_fast8_t getPThre() const noexcept { + -: 859: return static_cast(m_pthre); + -: 860: } + -: 861: + -: 862:#ifdef QACTIVE_EQUEUE_TYPE + -: 863: QACTIVE_EQUEUE_TYPE const & getEQueue() const noexcept { + -: 864: return m_eQueue; + -: 865: } + -: 866:#endif // def QACTIVE_EQUEUE_TYPE + -: 867: + -: 868:#ifdef QACTIVE_OS_OBJ_TYPE + -: 869: QACTIVE_OS_OBJ_TYPE const & getOsObject() const noexcept { + -: 870: return m_osObject; + -: 871: } + -: 872:#endif // def QACTIVE_OS_OBJ_TYPE + -: 873: + -: 874:#ifdef QACTIVE_THREAD_TYPE + -: 875: QACTIVE_THREAD_TYPE const & getThread() const noexcept { + -: 876: return m_thread; + -: 877: } + -: 878:#endif // def QACTIVE_THREAD_TYPE + -: 879: + -: 880:#ifdef QACTIVE_THREAD_TYPE + -: 881: void setThread(QACTIVE_THREAD_TYPE const & thr) { + -: 882: m_thread = thr; + -: 883: } + -: 884:#endif // def QACTIVE_THREAD_TYPE + -: 885: static void evtLoop_(QActive * act); + -: 886: + -: 887:#ifdef QF_ISR_API + -: 888: virtual bool postFromISR( + -: 889: QEvt const * const e, + -: 890: std::uint_fast16_t const margin, + -: 891: void * par, + -: 892: void const * const sender) noexcept; + -: 893:#endif // def QF_ISR_API + -: 894: + -: 895:#ifdef QF_ISR_API + -: 896: static void publishFromISR( + -: 897: QEvt const * e, + -: 898: void * par, + -: 899: void const * sender) noexcept; + -: 900:#endif // def QF_ISR_API + -: 901:}; // class QActive + -: 902: + -: 903:} // namespace QP + -: 904://$enddecl${QF::QActive} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 905: + -: 906://$declare${QF::QMActive} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 907:namespace QP { + -: 908: + -: 909://${QF::QMActive} ............................................................ + -: 910:class QMActive : public QP::QActive { + -: 911:protected: + -: 912: QMActive(QStateHandler const initial) noexcept; + -: 913: + -: 914:public: + -: 915: void init( + -: 916: void const * const e, + -: 917: std::uint_fast8_t const qsId) override + -: 918: { + -: 919: reinterpret_cast(this)->QMsm::init(e, qsId); + -: 920: } + -: 921: void init(std::uint_fast8_t const qsId) override { + -: 922: this->init(nullptr, qsId); + -: 923: } + -: 924: void dispatch( + -: 925: QEvt const * const e, + -: 926: std::uint_fast8_t const qsId) override + -: 927: { + -: 928: reinterpret_cast(this)->QMsm::dispatch(e, qsId); + -: 929: } + -: 930: bool isIn(QStateHandler const state) noexcept override { + -: 931: return reinterpret_cast(this)->QMsm::isIn(state); + -: 932: } + -: 933: + -: 934:#ifdef Q_SPY + -: 935: QStateHandler getStateHandler() noexcept override { + -: 936: return reinterpret_cast(this)->QMsm::getStateHandler(); + -: 937: } + -: 938:#endif // def Q_SPY + -: 939: bool isInState(QMState const * const st) const noexcept { + -: 940: return reinterpret_cast(this)->QMsm::isInState(st); + -: 941: } + -: 942: QMState const * childStateObj(QMState const * const parent) const noexcept { + -: 943: return reinterpret_cast(this) + -: 944: ->QMsm::childStateObj(parent); + -: 945: } + -: 946:}; // class QMActive + -: 947: + -: 948:} // namespace QP + -: 949://$enddecl${QF::QMActive} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 950: + -: 951://$declare${QF::QTimeEvt} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 952:namespace QP { + -: 953: + -: 954://${QF::QTimeEvt} ............................................................ + -: 955:class QTimeEvt : public QP::QEvt { + -: 956:private: + -: 957: QTimeEvt * volatile m_next; + -: 958: void * m_act; + -: 959: QTimeEvtCtr volatile m_ctr; + -: 960: QTimeEvtCtr m_interval; + -: 961: + -: 962:public: + -: 963: static QTimeEvt timeEvtHead_[QF_MAX_TICK_RATE]; + -: 964: + -: 965:private: + -: 966: friend class QXThread; + -: 967: + -: 968:public: + -: 969: QTimeEvt( + -: 970: QActive * const act, + -: 971: QSignal const sig, + -: 972: std::uint_fast8_t const tickRate = 0U) noexcept; + -: 973: + -: 974:#ifdef Q_XTOR + -: 975: ~QTimeEvt(); + -: 976:#endif // def Q_XTOR + -: 977: void armX( + -: 978: QTimeEvtCtr const nTicks, + -: 979: QTimeEvtCtr const interval = 0U) noexcept; + -: 980: bool disarm() noexcept; + -: 981: bool rearm(QTimeEvtCtr const nTicks) noexcept; + -: 982: bool wasDisarmed() noexcept; + -: 983: void const * getAct() const noexcept { + -: 984: return m_act; + -: 985: } + -: 986: QTimeEvtCtr getCtr() const noexcept { + -: 987: return m_ctr; + -: 988: } + -: 989: QTimeEvtCtr getInterval() const noexcept { + -: 990: return m_interval; + -: 991: } + -: 992: static void tick( + -: 993: std::uint_fast8_t const tickRate, + -: 994: void const * const sender) noexcept; + -: 995: + -: 996:#ifdef Q_UTEST + -: 997: static void tick1_( + -: 998: std::uint_fast8_t const tickRate, + -: 999: void const * const sender); + -: 1000:#endif // def Q_UTEST + -: 1001: + -: 1002:#ifdef QF_ISR_API + -: 1003: static void tickFromISR( + -: 1004: std::uint_fast8_t const tickRate, + -: 1005: void * par, + -: 1006: void const * sender) noexcept; + -: 1007:#endif // def QF_ISR_API + -: 1008: static bool noActive(std::uint_fast8_t const tickRate) noexcept; + -: 1009: QActive * toActive() noexcept { + -: 1010: return static_cast(m_act); + -: 1011: } + -: 1012: QTimeEvt * toTimeEvt() noexcept { + -: 1013: return static_cast(m_act); + -: 1014: } + -: 1015: + -: 1016:private: + -: 1017: QTimeEvt() noexcept; + -: 1018: QTimeEvt(QTimeEvt const & other) = delete; + -: 1019: QTimeEvt & operator=(QTimeEvt const & other) = delete; + -: 1020:}; // class QTimeEvt + -: 1021: + -: 1022:} // namespace QP + -: 1023://$enddecl${QF::QTimeEvt} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 1024: + -: 1025://$declare${QF::QTicker} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 1026:namespace QP { + -: 1027: + -: 1028://${QF::QTicker} ............................................................. + -: 1029:class QTicker : public QP::QActive { + -: 1030:public: + -: 1031: explicit QTicker(std::uint_fast8_t const tickRate) noexcept; + -: 1032: void init( + -: 1033: void const * const e, + -: 1034: std::uint_fast8_t const qsId) override; + -: 1035: void init(std::uint_fast8_t const qsId) override { + -: 1036: this->init(nullptr, qsId); + -: 1037: } + -: 1038: void dispatch( + -: 1039: QEvt const * const e, + -: 1040: std::uint_fast8_t const qsId) override; + -: 1041: void trig_(void const * const sender) noexcept; + -: 1042:}; // class QTicker + -: 1043: + -: 1044:} // namespace QP + -: 1045://$enddecl${QF::QTicker} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 1046: + -: 1047://$declare${QF::QF-base} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 1048:namespace QP { + -: 1049:namespace QF { + -: 1050: + -: 1051://${QF::QF-base::init} ....................................................... + -: 1052:void init(); + -: 1053: + -: 1054://${QF::QF-base::stop} ....................................................... + -: 1055:void stop(); + -: 1056: + -: 1057://${QF::QF-base::run} ........................................................ + -: 1058:int_t run(); + -: 1059: + -: 1060://${QF::QF-base::onStartup} .................................................. + -: 1061:void onStartup(); + -: 1062: + -: 1063://${QF::QF-base::onCleanup} .................................................. + -: 1064:void onCleanup(); + -: 1065: + -: 1066://${QF::QF-base::psInit} ..................................................... + -: 1067://! @deprecated + -: 1068:inline void psInit( + -: 1069: QSubscrList * const subscrSto, + -: 1070: enum_t const maxSignal) noexcept + -: 1071:{ + -: 1072: QActive::psInit(subscrSto, maxSignal); + -: 1073:} + -: 1074: + -: 1075://${QF::QF-base::publish_} ................................................... + -: 1076://! @deprecated + -: 1077:inline void publish_( + -: 1078: QEvt const * const e, + -: 1079: void const * const sender, + -: 1080: std::uint_fast8_t const qsId) noexcept + -: 1081:{ + -: 1082: QActive::publish_(e, sender, qsId); + -: 1083:} + -: 1084: + -: 1085://${QF::QF-base::tick} ....................................................... + -: 1086://! @deprecated + -: 1087:inline void tick( + -: 1088: std::uint_fast8_t const tickRate, + -: 1089: void const * const sender) noexcept + -: 1090:{ + -: 1091: QTimeEvt::tick(tickRate, sender); + -: 1092:} + -: 1093: + -: 1094://${QF::QF-base::getQueueMin} ................................................ + -: 1095://! @deprecated + -: 1096:inline std::uint_fast16_t getQueueMin(std::uint_fast8_t const prio) noexcept { + -: 1097: return QActive::getQueueMin(prio); + -: 1098:} + -: 1099: + -: 1100://${QF::QF-base::NO_MARGIN} .................................................. + -: 1101:constexpr std::uint_fast16_t NO_MARGIN {0xFFFFU}; + -: 1102: + -: 1103:} // namespace QF + -: 1104:} // namespace QP + -: 1105://$enddecl${QF::QF-base} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 1106: + -: 1107://$declare${QF::QF-dyn} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 1108:namespace QP { + -: 1109:namespace QF { + -: 1110: + -: 1111://${QF::QF-dyn::poolInit} .................................................... + -: 1112:void poolInit( + -: 1113: void * const poolSto, + -: 1114: std::uint_fast32_t const poolSize, + -: 1115: std::uint_fast16_t const evtSize) noexcept; + -: 1116: + -: 1117://${QF::QF-dyn::poolGetMaxBlockSize} ......................................... + -: 1118:std::uint_fast16_t poolGetMaxBlockSize() noexcept; + -: 1119: + -: 1120://${QF::QF-dyn::getPoolMin} .................................................. + -: 1121:std::uint_fast16_t getPoolMin(std::uint_fast8_t const poolNum) noexcept; + -: 1122: + -: 1123://${QF::QF-dyn::newX_} ....................................................... + -: 1124:QEvt * newX_( + -: 1125: std::uint_fast16_t const evtSize, + -: 1126: std::uint_fast16_t const margin, + -: 1127: enum_t const sig) noexcept; + -: 1128: + -: 1129://${QF::QF-dyn::gc} .......................................................... + -: 1130:void gc(QEvt const * const e) noexcept; + -: 1131: + -: 1132://${QF::QF-dyn::newRef_} ..................................................... + -: 1133:QEvt const * newRef_( + -: 1134: QEvt const * const e, + -: 1135: QEvt const * const evtRef) noexcept; + -: 1136: + -: 1137://${QF::QF-dyn::deleteRef_} .................................................. + -: 1138:void deleteRef_(QEvt const * const evtRef) noexcept; + -: 1139: + -: 1140://${QF::QF-dyn::newXfromISR_} ................................................ + -: 1141:#ifdef QF_ISR_API + -: 1142:QEvt * newXfromISR_( + -: 1143: std::uint_fast16_t const evtSize, + -: 1144: std::uint_fast16_t const margin, + -: 1145: enum_t const sig) noexcept; + -: 1146:#endif // def QF_ISR_API + -: 1147: + -: 1148://${QF::QF-dyn::gcFromISR} ................................................... + -: 1149:#ifdef QF_ISR_API + -: 1150:void gcFromISR(QEvt const * e) noexcept; + -: 1151:#endif // def QF_ISR_API + -: 1152: + -: 1153:} // namespace QF + -: 1154:} // namespace QP + -: 1155://$enddecl${QF::QF-dyn} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 1156: + -: 1157:extern "C" { + -: 1158://$declare${QF-extern-C} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 1159: + -: 1160://${QF-extern-C::QF_onContextSw} ............................................. + -: 1161:#ifdef QF_ON_CONTEXT_SW + -: 1162:void QF_onContextSw( + -: 1163: QP::QActive * prev, + -: 1164: QP::QActive * next); + -: 1165:#endif // def QF_ON_CONTEXT_SW + -: 1166://$enddecl${QF-extern-C} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 1167:} // extern "C" + -: 1168: + -: 1169://$declare${QF-macros} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + -: 1170: + -: 1171://${QF-macros::Q_PRIO} ....................................................... + -: 1172:#define Q_PRIO(prio_, pthre_) \ + -: 1173: (static_cast((prio_) | (pthre_) << 8U)) + -: 1174: + -: 1175://${QF-macros::Q_NEW} ........................................................ + -: 1176:#ifndef QEVT_DYN_CTOR + -: 1177:#define Q_NEW(evtT_, sig_) (static_cast( \ + -: 1178: QP::QF::newX_(sizeof(evtT_), QP::QF::NO_MARGIN, (sig_)))) + -: 1179:#endif // ndef QEVT_DYN_CTOR + -: 1180: + -: 1181://${QF-macros::Q_NEW} ........................................................ + -: 1182:#ifdef QEVT_DYN_CTOR + -: 1183:#define Q_NEW(evtT_, sig_, ...) ( static_cast( \ + -: 1184: QP::QF::newX_(sizeof(evtT_), QP::QF::NO_MARGIN, (sig_)))->ctor(__VA_ARGS__)) + -: 1185:#endif // def QEVT_DYN_CTOR + -: 1186: + -: 1187://${QF-macros::Q_NEW_X} ...................................................... + -: 1188:#ifndef QEVT_DYN_CTOR + -: 1189:#define Q_NEW_X(evtT_, margin_, sig_) (static_cast( \ + -: 1190: QP::QF::newX_(sizeof(evtT_), (margin_), (sig_)))) + -: 1191:#endif // ndef QEVT_DYN_CTOR + -: 1192: + -: 1193://${QF-macros::Q_NEW_X} ...................................................... + -: 1194:#ifdef QEVT_DYN_CTOR + -: 1195:#define Q_NEW_X(evtT_, margin_, sig_, ...) ( static_cast( \ + -: 1196: QP::QF::newX_(sizeof(evtT_), (margin_), (sig_)))->ctor(__VA_ARGS__)) + -: 1197:#endif // def QEVT_DYN_CTOR + -: 1198: + -: 1199://${QF-macros::Q_NEW_REF} .................................................... + -: 1200:#define Q_NEW_REF(evtRef_, evtT_) \ + -: 1201: ((evtRef_) = static_cast(QP::QF::newRef_(e, (evtRef_)))) + -: 1202: + -: 1203://${QF-macros::Q_DELETE_REF} ................................................. + -: 1204:#define Q_DELETE_REF(evtRef_) do { \ + -: 1205: QP::QF::deleteRef_((evtRef_)); \ + -: 1206: (evtRef_) = 0U; \ + -: 1207:} while (false) + -: 1208: + -: 1209://${QF-macros::PUBLISH} ...................................................... + -: 1210:#ifdef Q_SPY + -: 1211:#define PUBLISH(e_, sender_) \ + -: 1212: publish_((e_), (sender_), (sender_)->getPrio()) + -: 1213:#endif // def Q_SPY + -: 1214: + -: 1215://${QF-macros::PUBLISH} ...................................................... + -: 1216:#ifndef Q_SPY + -: 1217:#define PUBLISH(e_, dummy) publish_((e_), nullptr, 0U) + -: 1218:#endif // ndef Q_SPY + -: 1219: + -: 1220://${QF-macros::POST} ......................................................... + -: 1221:#ifdef Q_SPY + -: 1222:#define POST(e_, sender_) post_((e_), QP::QF::NO_MARGIN, (sender_)) + -: 1223:#endif // def Q_SPY + -: 1224: + -: 1225://${QF-macros::POST} ......................................................... + -: 1226:#ifndef Q_SPY + -: 1227:#define POST(e_, dummy) post_((e_), QP::QF::NO_MARGIN, nullptr) + -: 1228:#endif // ndef Q_SPY + -: 1229: + -: 1230://${QF-macros::POST_X} ....................................................... + -: 1231:#ifdef Q_SPY + -: 1232:#define POST_X(e_, margin_, sender_) \ + -: 1233: post_((e_), (margin_), (sender_)) + -: 1234:#endif // def Q_SPY + -: 1235: + -: 1236://${QF-macros::POST_X} ....................................................... + -: 1237:#ifndef Q_SPY + -: 1238:#define POST_X(e_, margin_, dummy) post_((e_), (margin_), nullptr) + -: 1239:#endif // ndef Q_SPY + -: 1240: + -: 1241://${QF-macros::TICK_X} ....................................................... + -: 1242:#ifdef Q_SPY + -: 1243:#define TICK_X(tickRate_, sender_) tick((tickRate_), (sender_)) + -: 1244:#endif // def Q_SPY + -: 1245: + -: 1246://${QF-macros::TICK_X} ....................................................... + -: 1247:#ifndef Q_SPY + -: 1248:#define TICK_X(tickRate_, dummy) tick((tickRate_), nullptr) + -: 1249:#endif // ndef Q_SPY + -: 1250: + -: 1251://${QF-macros::TICK} ......................................................... + -: 1252:#define TICK(sender_) TICK_X(0U, (sender_)) + -: 1253: + -: 1254://${QF-macros::TRIG} ......................................................... + -: 1255:#ifdef Q_SPY + -: 1256:#define TRIG(sender_) trig_((sender_)) + -: 1257:#endif // def Q_SPY + -: 1258: + -: 1259://${QF-macros::TRIG} ......................................................... + -: 1260:#ifndef Q_SPY + -: 1261:#define TRIG(sender_) trig_(nullptr) + -: 1262:#endif // ndef Q_SPY + -: 1263: + -: 1264://${QF-macros::QF_CRIT_EXIT_NOP} ............................................. + -: 1265:#ifndef QF_CRIT_EXIT_NOP + -: 1266:#define QF_CRIT_EXIT_NOP() (static_cast(0)) + -: 1267:#endif // ndef QF_CRIT_EXIT_NOP + -: 1268: + -: 1269://${QF-macros::QF_MEM_SYS} ................................................... + -: 1270:#ifndef QF_MEM_SYS + -: 1271:#define QF_MEM_SYS() (static_cast(0)) + -: 1272:#endif // ndef QF_MEM_SYS + -: 1273: + -: 1274://${QF-macros::QF_MEM_APP} ................................................... + -: 1275:#ifndef QF_MEM_APP + -: 1276:#define QF_MEM_APP() (static_cast(0)) + -: 1277:#endif // ndef QF_MEM_APP + -: 1278://$enddecl${QF-macros} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + -: 1279: + -: 1280:#endif // QP_HPP_ diff --git a/qutest/qmsm/test/test_qmsm-funct.py b/qutest/qmsm/test/test_qmsm-funct.py new file mode 100644 index 0000000..c22417d --- /dev/null +++ b/qutest/qmsm/test/test_qmsm-funct.py @@ -0,0 +1,204 @@ +# test-script for QUTest unit testing harness +# see https://www.state-machine.com/qtools/qutest.html + +# preamble... +def on_reset(): + expect_run() + glb_filter(GRP_UA) + current_obj(OBJ_SM, "the_sm") + +# tests... +#========================================================== +test("QMsmTst::init") +init() +expect("@timestamp BSP_DISPLAY top-INIT;") +expect("@timestamp BSP_DISPLAY s-ENTRY;") +expect("@timestamp BSP_DISPLAY sub-ENTRY;") +expect("@timestamp BSP_DISPLAY sub-INIT;") +expect("@timestamp BSP_DISPLAY sub1-ENTRY;") +expect("@timestamp BSP_DISPLAY sub11-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +#---------------------------------------------------------- +test("QMsmTst isIn", NORESET) +command(0) # get state handler +expect("@timestamp CMD QMsmTst::sub_sub11") +expect("@timestamp Trg-Done QS_RX_COMMAND") + +command(1, 1) # is in state s1 +expect("@timestamp CMD 0 1") # NO +expect("@timestamp Trg-Done QS_RX_COMMAND") + +#command(1, 2) # is in state sub +#expect("@timestamp CMD 1 2") # YES +#expect("@timestamp Trg-Done QS_RX_COMMAND") + +command(1, 11) # is in state sub1 +expect("@timestamp CMD 1 11") # YES +expect("@timestamp Trg-Done QS_RX_COMMAND") + +command(1, 111) # is in state sub11 +expect("@timestamp CMD 1 111") # YES +expect("@timestamp Trg-Done QS_RX_COMMAND") + +#---------------------------------------------------------- +test("QMsmTst dispatch", NORESET) +dispatch("A_SIG") +expect("@timestamp BSP_DISPLAY sub1-A;") +expect("@timestamp BSP_DISPLAY sub11-EXIT;") +expect("@timestamp BSP_DISPLAY sub1-EXIT;") +expect("@timestamp BSP_DISPLAY sub1-ENTRY;") +expect("@timestamp BSP_DISPLAY sub1-INIT;") +expect("@timestamp BSP_DISPLAY sub11-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("B_SIG") +expect("@timestamp BSP_DISPLAY sub1-B;") +expect("@timestamp BSP_DISPLAY sub11-EXIT;") +expect("@timestamp BSP_DISPLAY sub11-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("C_SIG") +expect("@timestamp BSP_DISPLAY sub11-C;") +expect("@timestamp BSP_DISPLAY sub11-EXIT;") +expect("@timestamp BSP_DISPLAY sub12-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("D_SIG") +expect("@timestamp BSP_DISPLAY sub1-D;") +expect("@timestamp BSP_DISPLAY sub12-EXIT;") +expect("@timestamp BSP_DISPLAY sub1-EXIT;") +expect("@timestamp BSP_DISPLAY sub-INIT;") +expect("@timestamp BSP_DISPLAY sub1-ENTRY;") +expect("@timestamp BSP_DISPLAY sub11-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("E_SIG") +expect("@timestamp BSP_DISPLAY sub-E;") +expect("@timestamp BSP_DISPLAY sub11-EXIT;") +expect("@timestamp BSP_DISPLAY sub1-EXIT;") +expect("@timestamp BSP_DISPLAY sub2-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("F_SIG") +expect("@timestamp BSP_DISPLAY s2-F;") +expect("@timestamp BSP_DISPLAY sub2-EXIT;") +expect("@timestamp BSP_DISPLAY sub-EXIT;") +expect("@timestamp BSP_DISPLAY sub-ENTRY;") +expect("@timestamp BSP_DISPLAY sub-ep1;") +expect("@timestamp BSP_DISPLAY sub1-ENTRY;") +expect("@timestamp BSP_DISPLAY sub1-INIT;") +expect("@timestamp BSP_DISPLAY sub11-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("C_SIG") +expect("@timestamp BSP_DISPLAY sub11-C;") +expect("@timestamp BSP_DISPLAY sub11-EXIT;") +expect("@timestamp BSP_DISPLAY sub12-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("H_SIG") +expect("@timestamp BSP_DISPLAY sub12-H->xpH;") +expect("@timestamp BSP_DISPLAY sub12-EXIT;") +expect("@timestamp BSP_DISPLAY sub1-EXIT;") +expect("@timestamp BSP_DISPLAY sub-EXIT;") +expect("@timestamp BSP_DISPLAY s-INIT;") +expect("@timestamp BSP_DISPLAY sub-ENTRY;") +expect("@timestamp BSP_DISPLAY sub-INIT;") +expect("@timestamp BSP_DISPLAY sub1-ENTRY;") +expect("@timestamp BSP_DISPLAY sub11-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +#========================================================== +test("QMsmTst guards") +init() +expect("@timestamp BSP_DISPLAY top-INIT;") +expect("@timestamp BSP_DISPLAY s-ENTRY;") +expect("@timestamp BSP_DISPLAY sub-ENTRY;") +expect("@timestamp BSP_DISPLAY sub-INIT;") +expect("@timestamp BSP_DISPLAY sub1-ENTRY;") +expect("@timestamp BSP_DISPLAY sub11-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("D_SIG") +expect("@timestamp BSP_DISPLAY sub1-D;") +expect("@timestamp BSP_DISPLAY sub11-EXIT;") +expect("@timestamp BSP_DISPLAY sub1-EXIT;") +expect("@timestamp BSP_DISPLAY sub-INIT;") +expect("@timestamp BSP_DISPLAY sub1-ENTRY;") +expect("@timestamp BSP_DISPLAY sub11-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("D_SIG") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("I_SIG") +expect("@timestamp BSP_DISPLAY sub-I;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("I_SIG") +expect("@timestamp BSP_DISPLAY s-I;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +#========================================================== +test("QMsmTst history") +init() +expect("@timestamp BSP_DISPLAY top-INIT;") +expect("@timestamp BSP_DISPLAY s-ENTRY;") +expect("@timestamp BSP_DISPLAY sub-ENTRY;") +expect("@timestamp BSP_DISPLAY sub-INIT;") +expect("@timestamp BSP_DISPLAY sub1-ENTRY;") +expect("@timestamp BSP_DISPLAY sub11-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("G_SIG") +expect("@timestamp BSP_DISPLAY sub1-G->xpG;") +expect("@timestamp BSP_DISPLAY sub11-EXIT;") +expect("@timestamp BSP_DISPLAY sub1-EXIT;") +expect("@timestamp BSP_DISPLAY sub-EXIT;") +expect("@timestamp BSP_DISPLAY sub-ENTRY;") +expect("@timestamp BSP_DISPLAY sub1-ENTRY;") +expect("@timestamp BSP_DISPLAY sub11-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") +command(1, 111) # is in state s111 +expect("@timestamp CMD 1 111") +expect("@timestamp Trg-Done QS_RX_COMMAND") + +dispatch("C_SIG") +expect("@timestamp BSP_DISPLAY sub11-C;") +expect("@timestamp BSP_DISPLAY sub11-EXIT;") +expect("@timestamp BSP_DISPLAY sub12-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("C_SIG") +expect("@timestamp BSP_DISPLAY s-C;") +expect("@timestamp BSP_DISPLAY sub12-EXIT;") +expect("@timestamp BSP_DISPLAY sub1-EXIT;") +expect("@timestamp BSP_DISPLAY sub-EXIT;") +expect("@timestamp BSP_DISPLAY s-EXIT;") +expect("@timestamp BSP_DISPLAY t-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") +command(1, 0) # is in state s +expect("@timestamp CMD 0 0") # NO +expect("@timestamp Trg-Done QS_RX_COMMAND") + +dispatch("C_SIG") +expect("@timestamp BSP_DISPLAY t-C->H-s;") +expect("@timestamp BSP_DISPLAY t-EXIT;") +expect("@timestamp BSP_DISPLAY s-ENTRY;") +expect("@timestamp BSP_DISPLAY sub-ENTRY;") +expect("@timestamp BSP_DISPLAY sub-INIT;") +expect("@timestamp BSP_DISPLAY sub1-ENTRY;") +expect("@timestamp BSP_DISPLAY sub11-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("G_SIG") +expect("@timestamp BSP_DISPLAY sub1-G->xpG;") +expect("@timestamp BSP_DISPLAY sub11-EXIT;") +expect("@timestamp BSP_DISPLAY sub1-EXIT;") +expect("@timestamp BSP_DISPLAY sub-EXIT;") +expect("@timestamp BSP_DISPLAY sub-ENTRY;") +expect("@timestamp BSP_DISPLAY sub1-ENTRY;") +expect("@timestamp BSP_DISPLAY sub11-ENTRY;") +expect("@timestamp Trg-Done QS_RX_EVENT") + diff --git a/qutest/qmsm/test/test_qmsm-struct.py b/qutest/qmsm/test/test_qmsm-struct.py new file mode 100644 index 0000000..e8e08d1 --- /dev/null +++ b/qutest/qmsm/test/test_qmsm-struct.py @@ -0,0 +1,227 @@ +# test-script for QUTest unit testing harness +# see https://www.state-machine.com/qtools/qutest.html + +# preamble... +def on_reset(): + expect_run() + glb_filter(GRP_SM, GRP_U1) + current_obj(OBJ_SM, "the_sm") + +# tests... +#========================================================== +test("QMsmTst init") +init() +expect("===RTC===> St-Init Obj=the_sm,State=NULL->QMsmTst::sub") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub") +expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::sub->QMsmTst::sub_sub11") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub11") +expect("@timestamp Init===> Obj=the_sm,State=QMsmTst::sub_sub11") +expect("@timestamp Trg-Done QS_RX_EVENT") + +#---------------------------------------------------------- +test("QMsmTst isIn", NORESET) +command(0) # get state handler +expect("@timestamp CMD QMsmTst::sub_sub11") +expect("@timestamp Trg-Done QS_RX_COMMAND") + +command(1, 1) # is in state s1 +expect("@timestamp CMD 0 1") # NO +expect("@timestamp Trg-Done QS_RX_COMMAND") + +#command(1, 2) # is in state sub +#expect("@timestamp CMD 1 2") # YES +#expect("@timestamp Trg-Done QS_RX_COMMAND") + +command(1, 11) # is in state sub1 +expect("@timestamp CMD 1 11") # YES +expect("@timestamp Trg-Done QS_RX_COMMAND") + +command(1, 111) # is in state sub11 +expect("@timestamp CMD 1 111") # YES +expect("@timestamp Trg-Done QS_RX_COMMAND") + +#---------------------------------------------------------- +test("QMsmTst dispatch", NORESET) +dispatch("A_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=A_SIG,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::sub_sub1->QMsmTst::sub_sub11") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub11") +expect("@timestamp ===>Tran Obj=the_sm,Sig=A_SIG,State=QMsmTst::sub_sub1->QMsmTst::sub_sub11") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("B_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=B_SIG,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub11") +expect("@timestamp ===>Tran Obj=the_sm,Sig=B_SIG,State=QMsmTst::sub_sub1->QMsmTst::sub_sub11") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("C_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=C_SIG,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub12") +expect("@timestamp ===>Tran Obj=the_sm,Sig=C_SIG,State=QMsmTst::sub_sub11->QMsmTst::sub_sub12") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("D_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=D_SIG,State=QMsmTst::sub_sub12") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub12") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::sub->QMsmTst::sub_sub11") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub11") +expect("@timestamp ===>Tran Obj=the_sm,Sig=D_SIG,State=QMsmTst::sub_sub1->QMsmTst::sub_sub11") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("E_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=E_SIG,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub2") +expect("@timestamp ===>Tran Obj=the_sm,Sig=E_SIG,State=QMsmTst::sub->QMsmTst::sub_sub2") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("F_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=F_SIG,State=QMsmTst::sub_sub2") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub2") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub") +expect("===RTC===> St-EP Obj=the_sm,State=QMsmTst::sub->QMsmTst::sub_sub1") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::sub_sub1->QMsmTst::sub_sub11") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub11") +expect("@timestamp ===>Tran Obj=the_sm,Sig=F_SIG,State=QMsmTst::s2->QMsmTst::sub_sub11") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("H_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=H_SIG,State=QMsmTst::sub_sub11") +expect("@timestamp =>Ignore Obj=the_sm,Sig=H_SIG,State=QMsmTst::sub_sub11") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("C_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=C_SIG,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub12") +expect("@timestamp ===>Tran Obj=the_sm,Sig=C_SIG,State=QMsmTst::sub_sub11->QMsmTst::sub_sub12") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("H_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=H_SIG,State=QMsmTst::sub_sub12") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub12") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s1") +expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::s->QMsmTst::sub") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub") +expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::sub->QMsmTst::sub_sub11") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub11") +expect("@timestamp ===>Tran Obj=the_sm,Sig=H_SIG,State=QMsmTst::sub_sub12->QMsmTst::sub_sub11") +expect("@timestamp Trg-Done QS_RX_EVENT") + +#========================================================== +test("QMsmTst guards") +init() +expect("===RTC===> St-Init Obj=the_sm,State=NULL->QMsmTst::sub") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub") +expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::sub->QMsmTst::sub_sub11") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub11") +expect("@timestamp Init===> Obj=the_sm,State=QMsmTst::sub_sub11") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("D_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=D_SIG,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::sub->QMsmTst::sub_sub11") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub11") +expect("@timestamp ===>Tran Obj=the_sm,Sig=D_SIG,State=QMsmTst::sub_sub1->QMsmTst::sub_sub11") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("D_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=D_SIG,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Unhnd Obj=the_sm,Sig=D_SIG,State=QMsmTst::sub_sub1") +expect("@timestamp =>Ignore Obj=the_sm,Sig=D_SIG,State=QMsmTst::sub_sub11") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("I_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=I_SIG,State=QMsmTst::sub_sub11") +expect("@timestamp =>Intern Obj=the_sm,Sig=I_SIG,State=QMsmTst::sub") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("I_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=I_SIG,State=QMsmTst::sub_sub11") +#expect("===RTC===> St-Unhnd Obj=the_sm,Sig=I_SIG,State=QMsmTst::sub") +expect("@timestamp =>Intern Obj=the_sm,Sig=I_SIG,State=QMsmTst::s") +expect("@timestamp Trg-Done QS_RX_EVENT") + +#========================================================== +test("QMsmTst history") +init() +expect("===RTC===> St-Init Obj=the_sm,State=NULL->QMsmTst::sub") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub") +expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::sub->QMsmTst::sub_sub11") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub11") +expect("@timestamp Init===> Obj=the_sm,State=QMsmTst::sub_sub11") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("G_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=G_SIG,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s2") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub") +expect("===RTC===> St-Hist Obj=the_sm,State=QMsmTst::sub->QMsmTst::sub_sub11") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub11") +expect("@timestamp ===>Tran Obj=the_sm,Sig=G_SIG,State=QMsmTst::sub_sub1->QMsmTst::sub_sub11") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("C_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=C_SIG,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub12") +expect("@timestamp ===>Tran Obj=the_sm,Sig=C_SIG,State=QMsmTst::sub_sub11->QMsmTst::sub_sub12") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("C_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=C_SIG,State=QMsmTst::sub_sub12") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub12") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::t") +expect("@timestamp ===>Tran Obj=the_sm,Sig=C_SIG,State=QMsmTst::s->QMsmTst::t") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("C_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=C_SIG,State=QMsmTst::t") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::t") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s") +expect("===RTC===> St-Hist Obj=the_sm,State=QMsmTst::s->QMsmTst::s1") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s1") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub11") +expect("@timestamp ===>Tran Obj=the_sm,Sig=C_SIG,State=QMsmTst::t->QMsmTst::sub_sub11") +expect("@timestamp Trg-Done QS_RX_EVENT") + +dispatch("G_SIG") +expect("@timestamp Disp===> Obj=the_sm,Sig=G_SIG,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub11") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s1") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub") +expect("===RTC===> St-Hist Obj=the_sm,State=QMsmTst::sub->QMsmTst::sub_sub11") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub1") +expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::sub_sub11") +expect("@timestamp ===>Tran Obj=the_sm,Sig=G_SIG,State=QMsmTst::sub_sub1->QMsmTst::sub_sub11") +expect("@timestamp Trg-Done QS_RX_EVENT") diff --git a/qutest/qmsmtst/test/test_qmsm.cpp b/qutest/qmsm/test/test_qmsm.cpp similarity index 94% rename from qutest/qmsmtst/test/test_qmsm.cpp rename to qutest/qmsm/test/test_qmsm.cpp index ac34e69..3aaec16 100644 --- a/qutest/qmsmtst/test/test_qmsm.cpp +++ b/qutest/qmsm/test/test_qmsm.cpp @@ -1,7 +1,7 @@ //============================================================================ // Purpose: Fixture for QUTEST -// Last Updated for Version: 7.3.1 -// Date of the Last Update: 2023-12-11 +// Last Updated for Version: 7.4.0 +// Date of the Last Update: 2024-09-04 // // Q u a n t u m L e a P s // ------------------------ @@ -32,7 +32,7 @@ // //============================================================================ #include "qpcpp.hpp" -#include "qmsmtst.hpp" +#include "cut_qmsm.hpp" Q_DEFINE_THIS_FILE @@ -40,8 +40,10 @@ Q_DEFINE_THIS_FILE namespace APP { enum { - BSP_DISPLAY = QP::QS_USER, - CMD, + BSP_DISPLAY = QP::QS_USER0, +}; +enum { + CMD = QP::QS_USER1, }; void BSP_display(char const *msg) { @@ -76,7 +78,9 @@ void QS::onCommand(std::uint8_t cmdId, std::uint32_t param1, //PRINTF_S(" Command id=%d param=%d\n", (int)cmdId, (int)param); switch (cmdId) { case 0U: { + QP::QStateHandler state = APP::the_sm->getStateHandler(); QS_BEGIN_ID(APP::CMD, 0U) // app-specific record + QS_FUN(state); QS_END() break; } diff --git a/qutest/qmsmtst/src/qmsmtst.cpp b/qutest/qmsmtst/src/qmsmtst.cpp deleted file mode 100644 index 6af3edc..0000000 --- a/qutest/qmsmtst/src/qmsmtst.cpp +++ /dev/null @@ -1,772 +0,0 @@ -//$file${.::qmsmtst.cpp} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv -// -// Model: qmsmtst.qm -// File: ${.::qmsmtst.cpp} -// -// This code has been generated by QM 5.3.0 . -// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. -// -// SPDX-License-Identifier: GPL-3.0-or-later -// -// This generated code is open source software: you can redistribute it under -// the terms of the GNU General Public License as published by the Free -// Software Foundation. -// -// This code is distributed in the hope that it will be useful, but WITHOUT -// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -// more details. -// -// NOTE: -// Alternatively, this generated code may be distributed under the terms -// of Quantum Leaps commercial licenses, which expressly supersede the GNU -// General Public License and are specifically designed for licensees -// interested in retaining the proprietary status of their code. -// -// Contact information: -// -// -// -//$endhead${.::qmsmtst.cpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -#include "qpcpp.hpp" -#include "qmsmtst.hpp" - -namespace { -Q_DEFINE_THIS_FILE -} - -namespace APP { - -//$declare${SMs::QMsmTst} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv - -//${SMs::QMsmTst} ............................................................ -class QMsmTst : public QP::QMsm { -private: - bool m_foo; - -public: - friend bool QMsmTst_isIn(std::uint32_t const state_num); - -public: - QMsmTst() - : QMsm(&initial) - {} - -protected: - QM_STATE_DECL( initial); - QM_STATE_DECL( s); - QM_ACTION_DECL(s_e); - QM_ACTION_DECL(s_x); - QM_ACTION_DECL(s_i); - QM_STATE_DECL( s1); - QM_ACTION_DECL(s1_e); - QM_ACTION_DECL(s1_x); - QM_ACTION_DECL(s1_i); - QM_STATE_DECL( s11); - QM_ACTION_DECL(s11_e); - QM_ACTION_DECL(s11_x); - QM_STATE_DECL( s2); - QM_ACTION_DECL(s2_e); - QM_ACTION_DECL(s2_x); - QM_ACTION_DECL(s2_i); - QM_STATE_DECL( s21); - QM_ACTION_DECL(s21_e); - QM_ACTION_DECL(s21_x); - QM_ACTION_DECL(s21_i); - QM_STATE_DECL( s211); - QM_ACTION_DECL(s211_e); - QM_ACTION_DECL(s211_x); -}; // class QMsmTst -//$enddecl${SMs::QMsmTst} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -static QMsmTst l_msmtst; // the only instance of the QMsmTst class - -// global-scope definitions ----------------------------------------- -QP::QAsm * const the_sm = &l_msmtst; // the opaque pointer - -//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv -// Check for the minimum required QP version -#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) -#error qpcpp version 7.3.0 or higher required -#endif -//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -//$define${SMs::QMsmTst} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv - -//${SMs::QMsmTst} ............................................................ - -//${SMs::QMsmTst::SM} ........................................................ -QM_STATE_DEF(QMsmTst, initial) { - //${SMs::QMsmTst::SM::initial} - Q_UNUSED_PAR(e); - - m_foo = 0U; - BSP_display("top-INIT;"); - - QS_SIG_DICTIONARY(A_SIG, nullptr); - QS_SIG_DICTIONARY(B_SIG, nullptr); - QS_SIG_DICTIONARY(C_SIG, nullptr); - QS_SIG_DICTIONARY(D_SIG, nullptr); - QS_SIG_DICTIONARY(E_SIG, nullptr); - QS_SIG_DICTIONARY(F_SIG, nullptr); - QS_SIG_DICTIONARY(G_SIG, nullptr); - QS_SIG_DICTIONARY(H_SIG, nullptr); - QS_SIG_DICTIONARY(I_SIG, nullptr); - QS_SIG_DICTIONARY(TERMINATE_SIG, nullptr); - QS_SIG_DICTIONARY(IGNORE_SIG, nullptr); - - QS_FUN_DICTIONARY(&QMsmTst::s); - QS_FUN_DICTIONARY(&QMsmTst::s1); - QS_FUN_DICTIONARY(&QMsmTst::s11); - QS_FUN_DICTIONARY(&QMsmTst::s2); - QS_FUN_DICTIONARY(&QMsmTst::s21); - QS_FUN_DICTIONARY(&QMsmTst::s211); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[4]; - } const tatbl_ = { // tran-action table - &s2_s, // target state - { - &s_e, // entry - &s2_e, // entry - &s2_i, // initial tran. - Q_ACTION_NULL // zero terminator - } - }; - return qm_tran_init(&tatbl_); -} - -//${SMs::QMsmTst::SM::s} ..................................................... -QP::QMState const QMsmTst::s_s = { - QM_STATE_NULL, // superstate (top) - &QMsmTst::s, - &QMsmTst::s_e, - &QMsmTst::s_x, - &QMsmTst::s_i -}; -//${SMs::QMsmTst::SM::s} -QM_ACTION_DEF(QMsmTst, s_e) { - BSP_display("s-ENTRY;"); - return qm_entry(&s_s); -} -//${SMs::QMsmTst::SM::s} -QM_ACTION_DEF(QMsmTst, s_x) { - BSP_display("s-EXIT;"); - return qm_exit(&s_s); -} -//${SMs::QMsmTst::SM::s::initial} -QM_ACTION_DEF(QMsmTst, s_i) { - //${SMs::QMsmTst::SM::s::initial} - BSP_display("s-INIT;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[3]; - } const tatbl_ = { // tran-action table - &s11_s, // target state - { - &s1_e, // entry - &s11_e, // entry - Q_ACTION_NULL // zero terminator - } - }; - return qm_tran_init(&tatbl_); -} -//${SMs::QMsmTst::SM::s} -QM_STATE_DEF(QMsmTst, s) { - QP::QState status_; - switch (e->sig) { - //${SMs::QMsmTst::SM::s::I} - case I_SIG: { - //${SMs::QMsmTst::SM::s::I::[m_foo]} - if (m_foo) { - m_foo = 0U; - BSP_display("s-I;"); - status_ = Q_RET_HANDLED; - } - else { - status_ = Q_RET_UNHANDLED; - } - break; - } - //${SMs::QMsmTst::SM::s::E} - case E_SIG: { - BSP_display("s-E;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[3]; - } const tatbl_ = { // tran-action table - &s11_s, // target state - { - &s1_e, // entry - &s11_e, // entry - Q_ACTION_NULL // zero terminator - } - }; - status_ = qm_tran(&tatbl_); - break; - } - //${SMs::QMsmTst::SM::s::TERMINATE} - case TERMINATE_SIG: { - BSP_terminate(0); - status_ = Q_RET_HANDLED; - break; - } - default: { - status_ = Q_RET_SUPER; - break; - } - } - return status_; -} - -//${SMs::QMsmTst::SM::s::s1} ................................................. -QP::QMState const QMsmTst::s1_s = { - &QMsmTst::s_s, // superstate - &QMsmTst::s1, - &QMsmTst::s1_e, - &QMsmTst::s1_x, - &QMsmTst::s1_i -}; -//${SMs::QMsmTst::SM::s::s1} -QM_ACTION_DEF(QMsmTst, s1_e) { - BSP_display("s1-ENTRY;"); - return qm_entry(&s1_s); -} -//${SMs::QMsmTst::SM::s::s1} -QM_ACTION_DEF(QMsmTst, s1_x) { - BSP_display("s1-EXIT;"); - return qm_exit(&s1_s); -} -//${SMs::QMsmTst::SM::s::s1::initial} -QM_ACTION_DEF(QMsmTst, s1_i) { - //${SMs::QMsmTst::SM::s::s1::initial} - BSP_display("s1-INIT;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[2]; - } const tatbl_ = { // tran-action table - &s11_s, // target state - { - &s11_e, // entry - Q_ACTION_NULL // zero terminator - } - }; - return qm_tran_init(&tatbl_); -} -//${SMs::QMsmTst::SM::s::s1} -QM_STATE_DEF(QMsmTst, s1) { - QP::QState status_; - switch (e->sig) { - //${SMs::QMsmTst::SM::s::s1::I} - case I_SIG: { - BSP_display("s1-I;"); - status_ = Q_RET_HANDLED; - break; - } - //${SMs::QMsmTst::SM::s::s1::D} - case D_SIG: { - //${SMs::QMsmTst::SM::s::s1::D::[!m_foo]} - if (!m_foo) { - m_foo = true; - BSP_display("s1-D;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[3]; - } const tatbl_ = { // tran-action table - &s_s, // target state - { - &s1_x, // exit - &s_i, // initial tran. - Q_ACTION_NULL // zero terminator - } - }; - status_ = qm_tran(&tatbl_); - } - else { - status_ = Q_RET_UNHANDLED; - } - break; - } - //${SMs::QMsmTst::SM::s::s1::A} - case A_SIG: { - BSP_display("s1-A;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[4]; - } const tatbl_ = { // tran-action table - &s1_s, // target state - { - &s1_x, // exit - &s1_e, // entry - &s1_i, // initial tran. - Q_ACTION_NULL // zero terminator - } - }; - status_ = qm_tran(&tatbl_); - break; - } - //${SMs::QMsmTst::SM::s::s1::B} - case B_SIG: { - BSP_display("s1-B;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[2]; - } const tatbl_ = { // tran-action table - &s11_s, // target state - { - &s11_e, // entry - Q_ACTION_NULL // zero terminator - } - }; - status_ = qm_tran(&tatbl_); - break; - } - //${SMs::QMsmTst::SM::s::s1::F} - case F_SIG: { - BSP_display("s1-F;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[5]; - } const tatbl_ = { // tran-action table - &s211_s, // target state - { - &s1_x, // exit - &s2_e, // entry - &s21_e, // entry - &s211_e, // entry - Q_ACTION_NULL // zero terminator - } - }; - status_ = qm_tran(&tatbl_); - break; - } - //${SMs::QMsmTst::SM::s::s1::C} - case C_SIG: { - BSP_display("s1-C;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[4]; - } const tatbl_ = { // tran-action table - &s2_s, // target state - { - &s1_x, // exit - &s2_e, // entry - &s2_i, // initial tran. - Q_ACTION_NULL // zero terminator - } - }; - status_ = qm_tran(&tatbl_); - break; - } - default: { - status_ = Q_RET_SUPER; - break; - } - } - return status_; -} - -//${SMs::QMsmTst::SM::s::s1::s11} ............................................ -QP::QMState const QMsmTst::s11_s = { - &QMsmTst::s1_s, // superstate - &QMsmTst::s11, - &QMsmTst::s11_e, - &QMsmTst::s11_x, - Q_ACTION_NULL // no initial tran. -}; -//${SMs::QMsmTst::SM::s::s1::s11} -QM_ACTION_DEF(QMsmTst, s11_e) { - BSP_display("s11-ENTRY;"); - return qm_entry(&s11_s); -} -//${SMs::QMsmTst::SM::s::s1::s11} -QM_ACTION_DEF(QMsmTst, s11_x) { - BSP_display("s11-EXIT;"); - return qm_exit(&s11_s); -} -//${SMs::QMsmTst::SM::s::s1::s11} -QM_STATE_DEF(QMsmTst, s11) { - QP::QState status_; - switch (e->sig) { - //${SMs::QMsmTst::SM::s::s1::s11::H} - case H_SIG: { - BSP_display("s11-H;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[4]; - } const tatbl_ = { // tran-action table - &s_s, // target state - { - &s11_x, // exit - &s1_x, // exit - &s_i, // initial tran. - Q_ACTION_NULL // zero terminator - } - }; - status_ = qm_tran(&tatbl_); - break; - } - //${SMs::QMsmTst::SM::s::s1::s11::D} - case D_SIG: { - //${SMs::QMsmTst::SM::s::s1::s11::D::[m_foo]} - if (m_foo) { - m_foo = false; - BSP_display("s11-D;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[3]; - } const tatbl_ = { // tran-action table - &s1_s, // target state - { - &s11_x, // exit - &s1_i, // initial tran. - Q_ACTION_NULL // zero terminator - } - }; - status_ = qm_tran(&tatbl_); - } - else { - status_ = Q_RET_UNHANDLED; - } - break; - } - //${SMs::QMsmTst::SM::s::s1::s11::G} - case G_SIG: { - BSP_display("s11-G;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[6]; - } const tatbl_ = { // tran-action table - &s211_s, // target state - { - &s11_x, // exit - &s1_x, // exit - &s2_e, // entry - &s21_e, // entry - &s211_e, // entry - Q_ACTION_NULL // zero terminator - } - }; - status_ = qm_tran(&tatbl_); - break; - } - default: { - status_ = Q_RET_SUPER; - break; - } - } - return status_; -} - -//${SMs::QMsmTst::SM::s::s2} ................................................. -QP::QMState const QMsmTst::s2_s = { - &QMsmTst::s_s, // superstate - &QMsmTst::s2, - &QMsmTst::s2_e, - &QMsmTst::s2_x, - &QMsmTst::s2_i -}; -//${SMs::QMsmTst::SM::s::s2} -QM_ACTION_DEF(QMsmTst, s2_e) { - BSP_display("s2-ENTRY;"); - return qm_entry(&s2_s); -} -//${SMs::QMsmTst::SM::s::s2} -QM_ACTION_DEF(QMsmTst, s2_x) { - BSP_display("s2-EXIT;"); - return qm_exit(&s2_s); -} -//${SMs::QMsmTst::SM::s::s2::initial} -QM_ACTION_DEF(QMsmTst, s2_i) { - //${SMs::QMsmTst::SM::s::s2::initial} - BSP_display("s2-INIT;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[3]; - } const tatbl_ = { // tran-action table - &s211_s, // target state - { - &s21_e, // entry - &s211_e, // entry - Q_ACTION_NULL // zero terminator - } - }; - return qm_tran_init(&tatbl_); -} -//${SMs::QMsmTst::SM::s::s2} -QM_STATE_DEF(QMsmTst, s2) { - QP::QState status_; - switch (e->sig) { - //${SMs::QMsmTst::SM::s::s2::I} - case I_SIG: { - //${SMs::QMsmTst::SM::s::s2::I::[!m_foo]} - if (!m_foo) { - m_foo = true; - BSP_display("s2-I;"); - status_ = Q_RET_HANDLED; - } - else { - status_ = Q_RET_UNHANDLED; - } - break; - } - //${SMs::QMsmTst::SM::s::s2::F} - case F_SIG: { - BSP_display("s2-F;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[4]; - } const tatbl_ = { // tran-action table - &s11_s, // target state - { - &s2_x, // exit - &s1_e, // entry - &s11_e, // entry - Q_ACTION_NULL // zero terminator - } - }; - status_ = qm_tran(&tatbl_); - break; - } - //${SMs::QMsmTst::SM::s::s2::C} - case C_SIG: { - BSP_display("s2-C;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[4]; - } const tatbl_ = { // tran-action table - &s1_s, // target state - { - &s2_x, // exit - &s1_e, // entry - &s1_i, // initial tran. - Q_ACTION_NULL // zero terminator - } - }; - status_ = qm_tran(&tatbl_); - break; - } - default: { - status_ = Q_RET_SUPER; - break; - } - } - return status_; -} - -//${SMs::QMsmTst::SM::s::s2::s21} ............................................ -QP::QMState const QMsmTst::s21_s = { - &QMsmTst::s2_s, // superstate - &QMsmTst::s21, - &QMsmTst::s21_e, - &QMsmTst::s21_x, - &QMsmTst::s21_i -}; -//${SMs::QMsmTst::SM::s::s2::s21} -QM_ACTION_DEF(QMsmTst, s21_e) { - BSP_display("s21-ENTRY;"); - return qm_entry(&s21_s); -} -//${SMs::QMsmTst::SM::s::s2::s21} -QM_ACTION_DEF(QMsmTst, s21_x) { - BSP_display("s21-EXIT;"); - return qm_exit(&s21_s); -} -//${SMs::QMsmTst::SM::s::s2::s21::initial} -QM_ACTION_DEF(QMsmTst, s21_i) { - //${SMs::QMsmTst::SM::s::s2::s21::initial} - BSP_display("s21-INIT;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[2]; - } const tatbl_ = { // tran-action table - &s211_s, // target state - { - &s211_e, // entry - Q_ACTION_NULL // zero terminator - } - }; - return qm_tran_init(&tatbl_); -} -//${SMs::QMsmTst::SM::s::s2::s21} -QM_STATE_DEF(QMsmTst, s21) { - QP::QState status_; - switch (e->sig) { - //${SMs::QMsmTst::SM::s::s2::s21::G} - case G_SIG: { - BSP_display("s21-G;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[5]; - } const tatbl_ = { // tran-action table - &s1_s, // target state - { - &s21_x, // exit - &s2_x, // exit - &s1_e, // entry - &s1_i, // initial tran. - Q_ACTION_NULL // zero terminator - } - }; - status_ = qm_tran(&tatbl_); - break; - } - //${SMs::QMsmTst::SM::s::s2::s21::A} - case A_SIG: { - BSP_display("s21-A;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[4]; - } const tatbl_ = { // tran-action table - &s21_s, // target state - { - &s21_x, // exit - &s21_e, // entry - &s21_i, // initial tran. - Q_ACTION_NULL // zero terminator - } - }; - status_ = qm_tran(&tatbl_); - break; - } - //${SMs::QMsmTst::SM::s::s2::s21::B} - case B_SIG: { - BSP_display("s21-B;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[2]; - } const tatbl_ = { // tran-action table - &s211_s, // target state - { - &s211_e, // entry - Q_ACTION_NULL // zero terminator - } - }; - status_ = qm_tran(&tatbl_); - break; - } - default: { - status_ = Q_RET_SUPER; - break; - } - } - return status_; -} - -//${SMs::QMsmTst::SM::s::s2::s21::s211} ...................................... -QP::QMState const QMsmTst::s211_s = { - &QMsmTst::s21_s, // superstate - &QMsmTst::s211, - &QMsmTst::s211_e, - &QMsmTst::s211_x, - Q_ACTION_NULL // no initial tran. -}; -//${SMs::QMsmTst::SM::s::s2::s21::s211} -QM_ACTION_DEF(QMsmTst, s211_e) { - BSP_display("s211-ENTRY;"); - return qm_entry(&s211_s); -} -//${SMs::QMsmTst::SM::s::s2::s21::s211} -QM_ACTION_DEF(QMsmTst, s211_x) { - BSP_display("s211-EXIT;"); - return qm_exit(&s211_s); -} -//${SMs::QMsmTst::SM::s::s2::s21::s211} -QM_STATE_DEF(QMsmTst, s211) { - QP::QState status_; - switch (e->sig) { - //${SMs::QMsmTst::SM::s::s2::s21::s211::H} - case H_SIG: { - BSP_display("s211-H;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[5]; - } const tatbl_ = { // tran-action table - &s_s, // target state - { - &s211_x, // exit - &s21_x, // exit - &s2_x, // exit - &s_i, // initial tran. - Q_ACTION_NULL // zero terminator - } - }; - status_ = qm_tran(&tatbl_); - break; - } - //${SMs::QMsmTst::SM::s::s2::s21::s211::D} - case D_SIG: { - BSP_display("s211-D;"); - - static struct { - QP::QMState const *target; - QP::QActionHandler act[3]; - } const tatbl_ = { // tran-action table - &s21_s, // target state - { - &s211_x, // exit - &s21_i, // initial tran. - Q_ACTION_NULL // zero terminator - } - }; - status_ = qm_tran(&tatbl_); - break; - } - default: { - status_ = Q_RET_SUPER; - break; - } - } - return status_; -} -//$enddef${SMs::QMsmTst} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -bool QMsmTst_isIn(std::uint32_t const state_num) { - QP::QMsm * const me = &l_msmtst; - bool stat = false; - switch (state_num) { - case 0: - stat = me->isIn(Q_STATE_CAST(&QMsmTst::s)); - break; - case 1: - stat = me->isIn(Q_STATE_CAST(&QMsmTst::s1)); - break; - case 11: - stat = me->isIn(Q_STATE_CAST(&QMsmTst::s11)); - break; - case 2: - stat = me->isIn(Q_STATE_CAST(&QMsmTst::s2)); - break; - case 21: - stat = me->isIn(Q_STATE_CAST(&QMsmTst::s21)); - break; - case 211: - stat = me->isIn(Q_STATE_CAST(&QMsmTst::s211)); - break; - default: - Q_ERROR(); - } - return stat; -} - -} // namespace APP diff --git a/qutest/qmsmtst/src/qmsmtst.qm b/qutest/qmsmtst/src/qmsmtst.qm deleted file mode 100644 index 33bcebe..0000000 --- a/qutest/qmsmtst/src/qmsmtst.qm +++ /dev/null @@ -1,388 +0,0 @@ - - - QMsmTst is a contrived state machine from Chapter 2 of the PSiCC2 book for testing all possible transition topologies with up to 4-levels of state nesting. - - - - - - - Test State Machine - - - - - - - : QMsm(&initial) - - - - - - Q_UNUSED_PAR(e); - -m_foo = 0U; -BSP_display("top-INIT;"); - -QS_SIG_DICTIONARY(A_SIG, nullptr); -QS_SIG_DICTIONARY(B_SIG, nullptr); -QS_SIG_DICTIONARY(C_SIG, nullptr); -QS_SIG_DICTIONARY(D_SIG, nullptr); -QS_SIG_DICTIONARY(E_SIG, nullptr); -QS_SIG_DICTIONARY(F_SIG, nullptr); -QS_SIG_DICTIONARY(G_SIG, nullptr); -QS_SIG_DICTIONARY(H_SIG, nullptr); -QS_SIG_DICTIONARY(I_SIG, nullptr); -QS_SIG_DICTIONARY(TERMINATE_SIG, nullptr); -QS_SIG_DICTIONARY(IGNORE_SIG, nullptr); - - - - - - - BSP_display("s-ENTRY;"); - BSP_display("s-EXIT;"); - - - BSP_display("s-INIT;"); - - - - - - - - - m_foo - m_foo = 0U; -BSP_display("s-I;"); - - - - - - - - - - - BSP_display("s-E;"); - - - - - - - BSP_terminate(0); - - - - - - - BSP_display("s1-ENTRY;"); - BSP_display("s1-EXIT;"); - - - BSP_display("s1-INIT;"); - - - - - - - BSP_display("s1-I;"); - - - - - - - - - !m_foo - m_foo = true; -BSP_display("s1-D;"); - - - - - - - - - - - BSP_display("s1-A;"); - - - - - - - BSP_display("s1-B;"); - - - - - - - BSP_display("s1-F;"); - - - - - - - BSP_display("s1-C;"); - - - - - - - BSP_display("s11-ENTRY;"); - BSP_display("s11-EXIT;"); - - - BSP_display("s11-H;"); - - - - - - - - - m_foo - m_foo = false; -BSP_display("s11-D;"); - - - - - - - - - - - BSP_display("s11-G;"); - - - - - - - - - - - - - - - - - BSP_display("s2-ENTRY;"); - BSP_display("s2-EXIT;"); - - - BSP_display("s2-INIT;"); - - - - - - - - - !m_foo - m_foo = true; -BSP_display("s2-I;"); - - - - - - - - - - - BSP_display("s2-F;"); - - - - - - - BSP_display("s2-C;"); - - - - - - - BSP_display("s21-ENTRY;"); - BSP_display("s21-EXIT;"); - - - BSP_display("s21-INIT;"); - - - - - - - BSP_display("s21-G;"); - - - - - - - BSP_display("s21-A;"); - - - - - - - BSP_display("s21-B;"); - - - - - - - BSP_display("s211-ENTRY;"); - BSP_display("s211-EXIT;"); - - - BSP_display("s211-H;"); - - - - - - - BSP_display("s211-D;"); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #ifndef QMSMTST_HPP_ -#define QMSMTST_HPP_ - -namespace APP { - -enum QMsmTstSignals { - A_SIG = QP::Q_USER_SIG, - B_SIG, - C_SIG, - D_SIG, - E_SIG, - F_SIG, - G_SIG, - H_SIG, - I_SIG, - TERMINATE_SIG, - IGNORE_SIG, - MAX_SIG -}; - -extern QP::QAsm * const the_sm; // opaque pointer to the test SM - -bool QMsmTst_isIn(std::uint32_t const state_num); - -// BSP functions to display a message and exit -void BSP_display(char const *msg); -void BSP_terminate(int16_t const result); - -} // namespace APP - -#endif // QMSMTST_HPP_ - - - - #include "qpcpp.hpp" -#include "qmsmtst.hpp" - -namespace { -Q_DEFINE_THIS_FILE -} - -namespace APP { - -$declare ${SMs::QMsmTst} - -static QMsmTst l_msmtst; // the only instance of the QMsmTst class - -// global-scope definitions ----------------------------------------- -QP::QAsm * const the_sm = &l_msmtst; // the opaque pointer - -$define ${SMs::QMsmTst} - -bool QMsmTst_isIn(std::uint32_t const state_num) { - QP::QMsm * const me = &l_msmtst; - bool stat = false; - switch (state_num) { - case 0: - stat = me->isIn(Q_STATE_CAST(&QMsmTst::s)); - break; - case 1: - stat = me->isIn(Q_STATE_CAST(&QMsmTst::s1)); - break; - case 11: - stat = me->isIn(Q_STATE_CAST(&QMsmTst::s11)); - break; - case 2: - stat = me->isIn(Q_STATE_CAST(&QMsmTst::s2)); - break; - case 21: - stat = me->isIn(Q_STATE_CAST(&QMsmTst::s21)); - break; - case 211: - stat = me->isIn(Q_STATE_CAST(&QMsmTst::s211)); - break; - default: - Q_ERROR(); - } - return stat; -} - -} // namespace APP - - - diff --git a/qutest/qmsmtst/test/test_qmsm-funct.py b/qutest/qmsmtst/test/test_qmsm-funct.py deleted file mode 100644 index f755c02..0000000 --- a/qutest/qmsmtst/test/test_qmsm-funct.py +++ /dev/null @@ -1,200 +0,0 @@ -# test-script for QUTest unit testing harness -# see https://www.state-machine.com/qtools/qutest.html - -# preamble... -def on_reset(): - expect_run() - glb_filter(GRP_UA) - current_obj(OBJ_SM, "the_sm") - -# tests... -test("QMsmTst_init") -init() -expect("@timestamp BSP_DISPLAY top-INIT;") -expect("@timestamp BSP_DISPLAY s-ENTRY;") -expect("@timestamp BSP_DISPLAY s2-ENTRY;") -expect("@timestamp BSP_DISPLAY s2-INIT;") -expect("@timestamp BSP_DISPLAY s21-ENTRY;") -expect("@timestamp BSP_DISPLAY s211-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -test("QMsmTst isIn", NORESET) -command(1, 1) # is in state s1 -expect("@timestamp CMD 0 1"); # NOT in s1 -expect("@timestamp Trg-Done QS_RX_COMMAND") -command(1, 21) # is in state s21 -expect("@timestamp CMD 1 21"); # YES, in s21 -expect("@timestamp Trg-Done QS_RX_COMMAND") -command(1, 211) # is in state s211 -expect("@timestamp CMD 1 211"); # YES, in s211 -expect("@timestamp Trg-Done QS_RX_COMMAND") - -test("QMsmTst dispatch", NORESET) -dispatch("A_SIG") -expect("@timestamp BSP_DISPLAY s21-A;") -expect("@timestamp BSP_DISPLAY s211-EXIT;") -expect("@timestamp BSP_DISPLAY s21-EXIT;") -expect("@timestamp BSP_DISPLAY s21-ENTRY;") -expect("@timestamp BSP_DISPLAY s21-INIT;") -expect("@timestamp BSP_DISPLAY s211-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("B_SIG") -expect("@timestamp BSP_DISPLAY s21-B;") -expect("@timestamp BSP_DISPLAY s211-EXIT;") -expect("@timestamp BSP_DISPLAY s211-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("D_SIG") -expect("@timestamp BSP_DISPLAY s211-D;") -expect("@timestamp BSP_DISPLAY s211-EXIT;") -expect("@timestamp BSP_DISPLAY s21-INIT;") -expect("@timestamp BSP_DISPLAY s211-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("E_SIG") -expect("@timestamp BSP_DISPLAY s-E;") -expect("@timestamp BSP_DISPLAY s211-EXIT;") -expect("@timestamp BSP_DISPLAY s21-EXIT;") -expect("@timestamp BSP_DISPLAY s2-EXIT;") -expect("@timestamp BSP_DISPLAY s1-ENTRY;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("I_SIG") -expect("@timestamp BSP_DISPLAY s1-I;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("F_SIG") -expect("@timestamp BSP_DISPLAY s1-F;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s1-EXIT;") -expect("@timestamp BSP_DISPLAY s2-ENTRY;") -expect("@timestamp BSP_DISPLAY s21-ENTRY;") -expect("@timestamp BSP_DISPLAY s211-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("I_SIG") -expect("@timestamp BSP_DISPLAY s2-I;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("I_SIG") -expect("@timestamp BSP_DISPLAY s-I;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("F_SIG") -expect("@timestamp BSP_DISPLAY s2-F;") -expect("@timestamp BSP_DISPLAY s211-EXIT;") -expect("@timestamp BSP_DISPLAY s21-EXIT;") -expect("@timestamp BSP_DISPLAY s2-EXIT;") -expect("@timestamp BSP_DISPLAY s1-ENTRY;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("A_SIG") -expect("@timestamp BSP_DISPLAY s1-A;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s1-EXIT;") -expect("@timestamp BSP_DISPLAY s1-ENTRY;") -expect("@timestamp BSP_DISPLAY s1-INIT;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("B_SIG") -expect("@timestamp BSP_DISPLAY s1-B;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("D_SIG") -expect("@timestamp BSP_DISPLAY s1-D;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s1-EXIT;") -expect("@timestamp BSP_DISPLAY s-INIT;") -expect("@timestamp BSP_DISPLAY s1-ENTRY;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("D_SIG") -expect("@timestamp BSP_DISPLAY s11-D;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s1-INIT;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("E_SIG") -expect("@timestamp BSP_DISPLAY s-E;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s1-EXIT;") -expect("@timestamp BSP_DISPLAY s1-ENTRY;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("G_SIG") -expect("@timestamp BSP_DISPLAY s11-G;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s1-EXIT;") -expect("@timestamp BSP_DISPLAY s2-ENTRY;") -expect("@timestamp BSP_DISPLAY s21-ENTRY;") -expect("@timestamp BSP_DISPLAY s211-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("H_SIG") -expect("@timestamp BSP_DISPLAY s211-H;") -expect("@timestamp BSP_DISPLAY s211-EXIT;") -expect("@timestamp BSP_DISPLAY s21-EXIT;") -expect("@timestamp BSP_DISPLAY s2-EXIT;") -expect("@timestamp BSP_DISPLAY s-INIT;") -expect("@timestamp BSP_DISPLAY s1-ENTRY;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("H_SIG") -expect("@timestamp BSP_DISPLAY s11-H;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s1-EXIT;") -expect("@timestamp BSP_DISPLAY s-INIT;") -expect("@timestamp BSP_DISPLAY s1-ENTRY;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("C_SIG") -expect("@timestamp BSP_DISPLAY s1-C;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s1-EXIT;") -expect("@timestamp BSP_DISPLAY s2-ENTRY;") -expect("@timestamp BSP_DISPLAY s2-INIT;") -expect("@timestamp BSP_DISPLAY s21-ENTRY;") -expect("@timestamp BSP_DISPLAY s211-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("G_SIG") -expect("@timestamp BSP_DISPLAY s21-G;") -expect("@timestamp BSP_DISPLAY s211-EXIT;") -expect("@timestamp BSP_DISPLAY s21-EXIT;") -expect("@timestamp BSP_DISPLAY s2-EXIT;") -expect("@timestamp BSP_DISPLAY s1-ENTRY;") -expect("@timestamp BSP_DISPLAY s1-INIT;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("C_SIG") -expect("@timestamp BSP_DISPLAY s1-C;") -expect("@timestamp BSP_DISPLAY s11-EXIT;") -expect("@timestamp BSP_DISPLAY s1-EXIT;") -expect("@timestamp BSP_DISPLAY s2-ENTRY;") -expect("@timestamp BSP_DISPLAY s2-INIT;") -expect("@timestamp BSP_DISPLAY s21-ENTRY;") -expect("@timestamp BSP_DISPLAY s211-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("C_SIG") -expect("@timestamp BSP_DISPLAY s2-C;") -expect("@timestamp BSP_DISPLAY s211-EXIT;") -expect("@timestamp BSP_DISPLAY s21-EXIT;") -expect("@timestamp BSP_DISPLAY s2-EXIT;") -expect("@timestamp BSP_DISPLAY s1-ENTRY;") -expect("@timestamp BSP_DISPLAY s1-INIT;") -expect("@timestamp BSP_DISPLAY s11-ENTRY;") -expect("@timestamp Trg-Done QS_RX_EVENT") - diff --git a/qutest/qmsmtst/test/test_qmsm-struct.py b/qutest/qmsmtst/test/test_qmsm-struct.py deleted file mode 100644 index fc89a31..0000000 --- a/qutest/qmsmtst/test/test_qmsm-struct.py +++ /dev/null @@ -1,213 +0,0 @@ -# test-script for QUTest unit testing harness -# see https://www.state-machine.com/qtools/qutest.html - -# preamble... -def on_reset(): - expect_run() - glb_filter(GRP_SM) - current_obj(OBJ_SM, "the_sm") - -# tests... -test("QMsmTst init") -init() -expect("===RTC===> St-Init Obj=the_sm,State=NULL->QMsmTst::s2") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s2") -expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::s2->QMsmTst::s211") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s21") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s211") -expect("@timestamp Init===> Obj=the_sm,State=QMsmTst::s211") -expect("@timestamp Trg-Done QS_RX_EVENT") - -test("QMsmTst dispatch", NORESET) -dispatch("A_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=A_SIG,State=QMsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s21") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s21") -expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::s21->QMsmTst::s211") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s211") -expect("@timestamp ===>Tran Obj=the_sm,Sig=A_SIG,State=QMsmTst::s21->QMsmTst::s211") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("B_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=B_SIG,State=QMsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s211") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s211") -expect("@timestamp ===>Tran Obj=the_sm,Sig=B_SIG,State=QMsmTst::s21->QMsmTst::s211") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("D_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=D_SIG,State=QMsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s211") -expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::s21->QMsmTst::s211") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s211") -expect("@timestamp ===>Tran Obj=the_sm,Sig=D_SIG,State=QMsmTst::s211->QMsmTst::s211") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("E_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=E_SIG,State=QMsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s21") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s2") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=E_SIG,State=QMsmTst::s->QMsmTst::s11") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("I_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=I_SIG,State=QMsmTst::s11") -expect("@timestamp =>Intern Obj=the_sm,Sig=I_SIG,State=QMsmTst::s1") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("F_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=F_SIG,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s2") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s21") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s211") -expect("@timestamp ===>Tran Obj=the_sm,Sig=F_SIG,State=QMsmTst::s1->QMsmTst::s211") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("I_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=I_SIG,State=QMsmTst::s211") -expect("@timestamp =>Intern Obj=the_sm,Sig=I_SIG,State=QMsmTst::s2") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("I_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=I_SIG,State=QMsmTst::s211") -expect("===RTC===> St-Unhnd Obj=the_sm,Sig=I_SIG,State=QMsmTst::s2") -expect("@timestamp =>Intern Obj=the_sm,Sig=I_SIG,State=QMsmTst::s") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("F_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=F_SIG,State=QMsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s21") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s2") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=F_SIG,State=QMsmTst::s2->QMsmTst::s11") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("A_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=A_SIG,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::s1->QMsmTst::s11") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=A_SIG,State=QMsmTst::s1->QMsmTst::s11") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("B_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=B_SIG,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s11") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=B_SIG,State=QMsmTst::s1->QMsmTst::s11") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("D_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=D_SIG,State=QMsmTst::s11") -expect("===RTC===> St-Unhnd Obj=the_sm,Sig=D_SIG,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::s->QMsmTst::s11") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=D_SIG,State=QMsmTst::s1->QMsmTst::s11") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("D_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=D_SIG,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s11") -expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::s1->QMsmTst::s11") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=D_SIG,State=QMsmTst::s11->QMsmTst::s11") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("E_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=E_SIG,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=E_SIG,State=QMsmTst::s->QMsmTst::s11") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("G_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=G_SIG,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s2") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s21") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s211") -expect("@timestamp ===>Tran Obj=the_sm,Sig=G_SIG,State=QMsmTst::s11->QMsmTst::s211") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("H_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=H_SIG,State=QMsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s21") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s2") -expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::s->QMsmTst::s11") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=H_SIG,State=QMsmTst::s211->QMsmTst::s11") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("H_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=H_SIG,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::s->QMsmTst::s11") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=H_SIG,State=QMsmTst::s11->QMsmTst::s11") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("C_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=C_SIG,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s2") -expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::s2->QMsmTst::s211") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s21") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s211") -expect("@timestamp ===>Tran Obj=the_sm,Sig=C_SIG,State=QMsmTst::s1->QMsmTst::s211") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("G_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=G_SIG,State=QMsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s21") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s2") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::s1->QMsmTst::s11") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=G_SIG,State=QMsmTst::s21->QMsmTst::s11") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("C_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=C_SIG,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s11") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s2") -expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::s2->QMsmTst::s211") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s21") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s211") -expect("@timestamp ===>Tran Obj=the_sm,Sig=C_SIG,State=QMsmTst::s1->QMsmTst::s211") -expect("@timestamp Trg-Done QS_RX_EVENT") - -dispatch("C_SIG") -expect("@timestamp Disp===> Obj=the_sm,Sig=C_SIG,State=QMsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s211") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s21") -expect("===RTC===> St-Exit Obj=the_sm,State=QMsmTst::s2") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s1") -expect("===RTC===> St-Init Obj=the_sm,State=QMsmTst::s1->QMsmTst::s11") -expect("===RTC===> St-Entry Obj=the_sm,State=QMsmTst::s11") -expect("@timestamp ===>Tran Obj=the_sm,Sig=C_SIG,State=QMsmTst::s2->QMsmTst::s11") -expect("@timestamp Trg-Done QS_RX_EVENT") - diff --git a/uc-os2/arm-cm/dpp_ek-tm4c123gxl/README.txt b/uc-os2/arm-cm/dpp_ek-tm4c123gxl/README.md similarity index 82% rename from uc-os2/arm-cm/dpp_ek-tm4c123gxl/README.txt rename to uc-os2/arm-cm/dpp_ek-tm4c123gxl/README.md index 732c961..a704e25 100644 --- a/uc-os2/arm-cm/dpp_ek-tm4c123gxl/README.txt +++ b/uc-os2/arm-cm/dpp_ek-tm4c123gxl/README.md @@ -1,10 +1,18 @@ -About this Example -================== +# About this Example This directory contains the "Dining Philosophers Problem" (DPP) example for uC/OS-II application running on the EK-TM4C123GXL board, a.k.a. TivaC LauchPad (ARM Cortex-M4F). This directory contains portable code that should compile with any C compiler for ARM Cortex-M. +

+ +

+ +

+
+EK-TM4C123GXL (TivaC LaunchPad) +

+ The sub-directories contain code and project files, which are specific to the particular ARM toolchains, such as ARM (MDK-ARM) and IAR. @@ -12,15 +20,13 @@ Please refer to the README files in the sub-directories for specific instructions how to use and customize the example to your needs. -Support Code for EK-TM4C123GXL Board -==================================== +# Support Code for EK-TM4C123GXL Board The directory qpc\3rd_party\ek-tm4c123gxl contains the CMSIS-compliant device code for the TM4C123GH6PM MCU (ARM Cortex-M4F). Please see the README.txt file in this folder for more details. -QS Software Tracing Instrumentation -=================================== +# QS Software Tracing Instrumentation This example provides the "Spy" build configuration, which outputs the QS (Quantum Spy) software tracing data through UART0, which is connected to the virtual COM port of the TI Stellaris debugger. @@ -30,7 +36,9 @@ The output is generated at 115200 baud rate. Here is an example invocation of the QSPY host application to receive the QS data from EK-TM4C123GXL: +``` qspy -cCOM1 +``` The actual COM port number might be different on your Windows machine. Please check the Device Manager to find the COM port number. diff --git a/uc-os2/arm-cm/dpp_ek-tm4c123gxl/ek-tm4c123gxl.webp b/uc-os2/arm-cm/dpp_ek-tm4c123gxl/ek-tm4c123gxl.webp new file mode 100644 index 0000000000000000000000000000000000000000..320870b8dc4b5fb35851c97c64650bdc8708f6d7 GIT binary patch literal 29976 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⪻045f0%ZXuw7?j%Uw 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 + +

+# Overview Blinks an on-board LED once per second. The blinking is performed by an Active Object (Blinky) with a state machine. # Building and Running (Linux) -Open a terminal in the directory of this example (`qpcpp/examples/zephry/blinky`). +Open a terminal in the directory of this example (`qpc/examples/zephry/blinky`). Depending on your Zephyr installation, you might need to shell the script to configure Zephyr environment: @@ -37,7 +40,7 @@ west flash # Sample Output The application also produces ASCII output to the serial terminal -(if supported by the board): +(if suppoted by the board): ``` *** Booting Zephyr OS build v2.6.0-rc2-88-g3d39f72a88b3 *** diff --git a/zephyr/blinky/qp-zephyr.webp b/zephyr/blinky/qp-zephyr.webp new file mode 100644 index 0000000000000000000000000000000000000000..a6d63f25c029578bae25a04c824a6bffd8144724 GIT binary patch literal 7106 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 + +

+ + # Overview Dining Philosophers Problem (DPP) example with multiple active objects. - # Building and Running (Linux) -Open a terminal in the directory of this example (`qpcpp/examples/zephry/dpp`). +Open a terminal in the directory of this example (`qpc/examples/zephry/dpp`). Depending on your Zephyr installation, you might need to shell the script to configure Zephyr environment: diff --git a/zephyr/dpp/qp-zephyr.webp b/zephyr/dpp/qp-zephyr.webp new file mode 100644 index 0000000000000000000000000000000000000000..a6d63f25c029578bae25a04c824a6bffd8144724 GIT binary patch literal 7106 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

5IoT*WP_S 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

5IoT*WP_S zey1ab4z}nwFOV{opA)jqj267@$r|Rtx;ZW*_J-u2^GAY{+G5;nAB0J_kp?4TZz$)7 z>Uh=t%n5pKS5Le4A`1fKcpg&E2xDe6$3dhBAn82?J>9BQ7kYHdTZ1te8Je&c`>5f3 zNZqYo_pkCHXbJY^hRcj58C!GQ(OEXI-)d zuwv+E*)%HN2GI-R-zNT+1J6{D-uLY*tt|WT{Hd6a@`GD)<-%jBu9s`93y(VRwYXR^ z6>)=+CZ$%Vh?Xe4giA5HL|yeKo|zjyOolM}f4h3;k+T}MTA=q5(aU#!{j2;sh%_45 zXx@&fF{t9kUb(4aaVk4zl1koq2~y0-jP!mp#=JTp*Sn=N+MmGGYZs6eIEssNS_&8Cd^ zPE7r8ChgeV5%}XT1OrX`TP7-nl5}p8F0c6nutmmXapL;D_)2ODzH&z^TH1P{4%&czW^D}2 zhdj%?iCxW~izK0OscasRL8oBLa|-l@e_n;I>a0K4M2nm5Om0Nk=;sSyOYuDn^QBn& zlSF?lHA>EycofwCN_7%cy@lXtqZHRX_KN8x#3gK6)N&<|kTJ0C$#gO>3!zB*Ta zFhaTGml9s?p@cXvLplQkzwP{x1zLPVPLhLOsM5}|0reD3DReiiy%!|(f>;@t&t&xG zh}MttiB>1KXMz_^w%*x&-(eJ`^g!qxF9Y1fe@B_pClMIed@?lnnnsGdXQ63j)5Z5h zfna>*(|3+`!S&U)>F@F%oE?#B!qz6JemGczH1vg(Zdqm-kCFfQhy7dq3Q4!LG)&LX zLnWTiNIs)EXoMT)}RKIM{Y{o9XUJ7Da+NMjXusN!L8*P|F5$$ETXtA5EjK!CBuZHPE_qTExLDq~@mTC#Fbw2o)W`r}-Js*TJ(}3JcBU&U$r&;Z@ zFx(e0|B98nMHk7!+LtgGD!BYq>9}yfQcaB6)+VH*$;kI>U*6$Oy8#h(5S=5GMf5By zQqH@f+%-Pc1scc8T2{&|`s~~5WVj2;zc-femE&Liynneng-5;nb~Er& zU-in1y_(l`m>G^UN;=%ThBicm&z=LSt%qeoW{S??Ug%wmiWdSi`v$o3iM#IG6le=!%Q4W(!++jF0f<4dt-XC0-#$53UH7m6H&dDihdJm2DMZRznX=f2fihBq>_ zA7OcPig${g09HypDc$ ziPkk#*1ux_rT(j3^;{c|nK?fV0bzT6RA|0Oz>ov;{Er8wPsB;Eqh>=U0OX7F-oqpN ztAdg6K|zDbT5r}jaRY@flr_2TwZ2W^cx!cZ#jH=`kH@F2pcMHCESZ=MjV>`PG198( z;v+SzB`zO=bm2J}oaGnw&Ly9t_VO4%w2*X3%6tq_0TxTN6_M0E(AfgAzoV;r*%DNf zx!k|q^eE4h8)t!Mb3a7l*}F{yqiIUIa%m$=AKF}JgZHyTe{c$*A;88;{;2C8-&Y+_ z)J~uOxg)VBYrS*djz$ZJv*)WU%bOfx#JySGDv}4%!G&baV91R%XGR<1*!vO=as9Gc&vwZ9UD(PenAMS4`RJKjG;RelaRWrz<;F|# z8qe)eJgzP)j^7=3c}hp|fJq7!`FlZNpBY;0@?ZOR4{4G31mea)Si}ROBzYWW@Y+^M~O!1pj zy`zN&e&MFat;Fh9(K6w_+VjT$8iQ~_xNO!+;Yb_#ss#rA7q*#s!?}z^IL6qp2Z zYlA=rz8tAR{aE{s;Evvwkg)8r5zv|Smk0MUC^u_J{C#34wfYk>k@_)5t;S919(QcS ztWBWELeJBXd`K958?VQ*v_q^fJ%~0y8W&YFeDphNTptq@0FOH>m*IsikkLxs~)qgr06q?+4azXJ_Yd%w+j=lTmHSjlT?184m3GTVlmXb z0GKISEL^ZWrO|TgDAi?X#d%Re@#)Apm&;RUo%~?kK?%<%Nu(Hu##t8%Vq>4`=ch6+ zwwhe#yu(B@S@jt7zjd`yIT?XpiZWyFda{$IjaOUJqt(kY`NNr1&Pr&O&-Q#S4cF0M z{8kI{%Ln=kI3=#Lo3-wpM}A$65_CxTNh#vUGO_98xx1{P25gM{GV%FMGJ`Fdc=TUX zma5uDHYP6@@vT1@2*!?hCFI*ZJBT6_nPto z9D1ZByjLwyh6;jcZ_8O1WJ0KxM!9H}N*thi%`Ycz+JDLdOSLrlm$UKmuVr)GO&LK+ z*u9G`9ReeNSC@avYbariBJCJf!_U!z^bG&u z$3lNr7Ib>)TC`5W1F-qtf+wNe1!ftWuYA>$N1pE))3w}Ixg^hCz7Kxv$Yj*8TTm-| zk6-+`0403n^|;Fvb)g9#T<#3n5jMlZVmPZQq`qC)VlAw**sTJx;JKDa23K|VyY=s# zw(I_t1<)tY&&d*Oi|qdz`0wS~U+(}fIPRXy=2zGiKv;BsBR%e?z|->eMP^0QXW1NE zv}s?uo2_1-t6`sPL@n7)$TvX`_1e28q#FI29cazf!RqeK)M_HG5%#r5HvU1TB%EQM z3=O_XETBH72wEjFQ+iThAp%QOlysq#DtdUD0Wn3GXoE?0PUW@DzIs0gM`>rw+=J6m zwglNAcI|N*Pg3r1{hiY2^B2=)nL0#A{!nuFz z;hzKhM&K&K(ii0)>#bMOAuXM3EEi@0))uWS-_pVFmlKxy?DGYdHZtO_k!i%mkT!1o zeT(;Fu_JLTaZ@y&rGmbQI!j^nF+btg23?X(Q{7EpncM$cZrSUIRA;k}G4u>p!bZ&qWfWw;m1H~TQ| z`@N)WAAB68nVM4sE zZDwahm(QhZH;b;QJ(M%bJ1$`&ay+AByGH5RX0~oKLa$P6SaRtT*NQz{*q?8d$%Cha zL-1j$CR!anX&osyy1RyF-HgL~`sr%$ks*e-zo-_m6ZupZc-)yc5D@*PG;6?3ha^8) z9FTqE#!B=xR;B_9t}-GJJCVNeXw!xD-Mt=INp8A$H?*|LuZiBkG^J`ugX#@$_1w3g!wYeO&W0Zc-&?rm@JzXieR^*%mY-p>Z3$u~(xa2sGT4+fx_oR?sOl#SGVn5~nldSxksVsY5)My!e$z6Ew zPjbvc@jJrJQbIA)=2q!BqP%tcIuqECd|DsQYSs5n@z;%Qy*Z=95Pgr~i)Gl7`Df2y zwWUw!T4NJ+>_n%-VcL=8bCLL4T0+^5Sd@O28MqQc%N@H`Jr7f_0zhtM`fgage`xTh zm`ZK)c!m0TWBtVXWrY0>3kV9iS-;`i98ru4KMnS~NqKlhh``L6q)CD^#NmUriU zy)K-$f8qThQN@Atk-6&y?Ko^n%D%4ODm6(QId7-lxOL9E?)$dtxP@?lv!$oMEcOER z#n$NaheA81ZhGv|K1=8aa$UiF-nRNmPqj4PxUKCx$*yJXWBvABeM93(2fQF#{`8P& zif~Aw@5N4k=ATmS7}}&y{8DfOdnbjSq4khBGrvz*=e%ml%3*du)msMLZvlx49g zmp-LPgmgu{nB)sT!lUuwvA%^+e7Zip%NQbR1i26Q;NOt;{m<{Y%pJR8FN57<9Qs(| zaR+%(RhmrQl zUQL6a7M#Jn;Um;i&O7`N%!&Fy^7$+~gyx@zeo9pU(*Ut9b4#=x6tY-NQ|{ADMCCu3 z2qZeLj*)#Cj;4FNe%XKZzcUe%U?zfx*Qw|i9<3biNCk)_NASG$cdj&E^u~^6Cp0tGw#bqhm80=nr-3Gv;cZ;3$7DL76->NZNnv?!Dw+T6 zEHE()K9tXOyTC2)<7<0WK_T_BqMv5v*lr?&6jIi0I0e_-f*PKsXU+V+n1@JVvwqTs%jh6gZz+DeMxdJ_%@L*QYaF(Iz5Q3C!LVr zNfjWfokyIMxMQ-GQ6FyESy2Cj&3DtDMzmtfYc({Q~cY{mfg7o-{e$b>dlU8Z+d7owX2Y!d_h5R$TKy z_{Ai{m~)O;dLgn`!jVyo^MiScLfC<<^*o<_r_IlcBuCP?-W(*Hb}j_pX;tYWTCU8Ob03v+q(`xS^jziyJAf^VUB*3s z=oJr<Vi%9oH0QWLzvG5c9fzVTalU-PcQo_!ze((z*1I*W}^Eq zvc{P)3i@SfnC9&UYm$X*9sFwdc83zeMU#li0}?KV1rHLykFUwW9f)L(Ys8lXFJB$c(D2MkcBP9`m541SLs^6wj@bv#;PW} ze)#5x%+iSMSR?(w@jJ^0r06mTP*dKDqfe$mNRA2k zNEFA{2M3t~H?ZT9 zWdITjiRi~>DCCmd#v1&PNa$Xa# zWpfEEOxf#=(@jG8jISwC8akZG+mw745H_}~oPBy4%mCpys|SK&6V%3b$WaaY?Q@hD z5fl8w?`1c*lu}Ey@UCPls4Vk96u>Z@%n@pVMx}=2(~t&dTxtTR{jk_tLn@%=V(DBr zXUlYjSzNnedo}hjuix-S^ZTTABcxZIAF9ewM8}z0*{Q{k)*16e<`Je+rC^S>)u6Y2 zEIIPkR&bp@Lz0=pmj$cK02DAN*}vw^`k2Q;Et&8w@Vup@fYetmlf*FnUZT|xLd4

5IoT*WP_S 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

5IoT*WP_S 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

5IoT*WP_S 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