From ba409985e5bd9291a2eb85ce89410749576f024e Mon Sep 17 00:00:00 2001 From: Andrew Lalis Date: Sun, 8 May 2022 18:17:51 +0200 Subject: [PATCH] Added modals, icon, and better formatting. --- railsignal-app/index.html | 2 +- railsignal-app/package-lock.json | 61 ++++----- railsignal-app/package.json | 2 + .../public/android-chrome-192x192.png | Bin 0 -> 9827 bytes .../public/android-chrome-512x512.png | Bin 0 -> 36805 bytes railsignal-app/public/apple-touch-icon.png | Bin 0 -> 8729 bytes railsignal-app/public/favicon-16x16.png | Bin 0 -> 422 bytes railsignal-app/public/favicon-32x32.png | Bin 0 -> 840 bytes railsignal-app/public/favicon.ico | Bin 4286 -> 15406 bytes railsignal-app/public/site.webmanifest | 1 + railsignal-app/src/App.vue | 14 +- railsignal-app/src/assets/icon.png | Bin 0 -> 6886 bytes railsignal-app/src/assets/icon.svg | 90 +++++++++++++ railsignal-app/src/components/AppNavbar.vue | 91 +++++++++++++ .../src/components/ConfirmModal.vue | 77 +++++++++++ railsignal-app/src/components/RailSystem.vue | 25 ++-- .../src/components/RailSystemsManager.vue | 62 --------- .../railsystem/AddRailSystemModal.vue | 77 +++++++++++ .../src/components/railsystem/AddSegment.vue | 33 ----- .../components/railsystem/AddSegmentModal.vue | 86 ++++++++++++ .../src/components/railsystem/MapView.vue | 23 +++- .../railsystem/RailSystemPropertiesView.vue | 73 +++++++++++ .../components/railsystem/SegmentsView.vue | 18 +-- .../component/AddSegmentBoundary.vue | 76 ----------- .../component/AddSegmentBoundaryModal.vue | 112 ++++++++++++++++ .../railsystem/component/AddSignal.vue | 62 --------- .../railsystem/component/AddSignalModal.vue | 98 ++++++++++++++ .../railsystem/component/AddSwitchModal.vue | 122 ++++++++++++++++++ .../railsystem/component/ComponentView.vue | 59 ++++++--- .../component/PathNodeComponentView.vue | 39 ++++-- .../SegmentBoundaryNodeComponentView.vue | 19 ++- .../component/SignalComponentView.vue | 12 +- .../src/components/railsystem/drawing.js | 75 ++++++++--- .../src/components/railsystem/mapRenderer.js | 46 +++++++ railsignal-app/src/main.js | 4 +- railsignal-app/src/stores/railSystemsStore.js | 29 +++-- .../railsignalapi/dao/LabelRepository.java | 13 ++ .../nl/andrewl/railsignalapi/model/Label.java | 31 +++++ .../model/component/Component.java | 5 +- .../service/ComponentService.java | 8 +- 40 files changed, 1173 insertions(+), 372 deletions(-) create mode 100644 railsignal-app/public/android-chrome-192x192.png create mode 100644 railsignal-app/public/android-chrome-512x512.png create mode 100644 railsignal-app/public/apple-touch-icon.png create mode 100644 railsignal-app/public/favicon-16x16.png create mode 100644 railsignal-app/public/favicon-32x32.png create mode 100644 railsignal-app/public/site.webmanifest create mode 100644 railsignal-app/src/assets/icon.png create mode 100644 railsignal-app/src/assets/icon.svg create mode 100644 railsignal-app/src/components/AppNavbar.vue create mode 100644 railsignal-app/src/components/ConfirmModal.vue delete mode 100644 railsignal-app/src/components/RailSystemsManager.vue create mode 100644 railsignal-app/src/components/railsystem/AddRailSystemModal.vue delete mode 100644 railsignal-app/src/components/railsystem/AddSegment.vue create mode 100644 railsignal-app/src/components/railsystem/AddSegmentModal.vue create mode 100644 railsignal-app/src/components/railsystem/RailSystemPropertiesView.vue delete mode 100644 railsignal-app/src/components/railsystem/component/AddSegmentBoundary.vue create mode 100644 railsignal-app/src/components/railsystem/component/AddSegmentBoundaryModal.vue delete mode 100644 railsignal-app/src/components/railsystem/component/AddSignal.vue create mode 100644 railsignal-app/src/components/railsystem/component/AddSignalModal.vue create mode 100644 railsignal-app/src/components/railsystem/component/AddSwitchModal.vue create mode 100644 src/main/java/nl/andrewl/railsignalapi/dao/LabelRepository.java create mode 100644 src/main/java/nl/andrewl/railsignalapi/model/Label.java diff --git a/railsignal-app/index.html b/railsignal-app/index.html index e6c5ec9..ecca371 100644 --- a/railsignal-app/index.html +++ b/railsignal-app/index.html @@ -4,7 +4,7 @@ - RailSignal + Rail Signal
diff --git a/railsignal-app/package-lock.json b/railsignal-app/package-lock.json index 2f97e8a..6e6691a 100644 --- a/railsignal-app/package-lock.json +++ b/railsignal-app/package-lock.json @@ -8,8 +8,9 @@ "name": "railsignal-app", "version": "0.0.0", "dependencies": { + "@popperjs/core": "^2.11.5", "axios": "^0.27.2", - "bootstrap": "^4.6.1", + "bootstrap": "^5.1.3", "pinia": "^2.0.14", "three": "^0.140.0", "vue": "^3.2.33", @@ -73,6 +74,15 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@popperjs/core": { + "version": "2.11.5", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz", + "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@vitejs/plugin-vue": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.2.tgz", @@ -287,16 +297,15 @@ "dev": true }, "node_modules/bootstrap": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.1.tgz", - "integrity": "sha512-0dj+VgI9Ecom+rvvpNZ4MUZJz8dcX7WCX+eTID9+/8HgOkv3dsRzi8BGeZJCQU6flWQVYxwTQnEZFrmJSEO7og==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", "funding": { "type": "opencollective", "url": "https://opencollective.com/bootstrap" }, "peerDependencies": { - "jquery": "1.9.1 - 3", - "popper.js": "^1.16.1" + "@popperjs/core": "^2.10.2" } }, "node_modules/brace-expansion": { @@ -1262,12 +1271,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "node_modules/jquery": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", - "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==", - "peer": true - }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -1520,17 +1523,6 @@ } } }, - "node_modules/popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, "node_modules/postcss": { "version": "8.4.13", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz", @@ -1978,6 +1970,11 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@popperjs/core": { + "version": "2.11.5", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz", + "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==" + }, "@vitejs/plugin-vue": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.2.tgz", @@ -2162,9 +2159,9 @@ "dev": true }, "bootstrap": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.1.tgz", - "integrity": "sha512-0dj+VgI9Ecom+rvvpNZ4MUZJz8dcX7WCX+eTID9+/8HgOkv3dsRzi8BGeZJCQU6flWQVYxwTQnEZFrmJSEO7og==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", "requires": {} }, "brace-expansion": { @@ -2781,12 +2778,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "jquery": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", - "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==", - "peer": true - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2967,12 +2958,6 @@ } } }, - "popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "peer": true - }, "postcss": { "version": "8.4.13", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz", diff --git a/railsignal-app/package.json b/railsignal-app/package.json index 0e3ecc6..61184a9 100644 --- a/railsignal-app/package.json +++ b/railsignal-app/package.json @@ -8,7 +8,9 @@ "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore" }, "dependencies": { + "@popperjs/core": "^2.11.5", "axios": "^0.27.2", + "bootstrap": "^5.1.3", "pinia": "^2.0.14", "three": "^0.140.0", "vue": "^3.2.33", diff --git a/railsignal-app/public/android-chrome-192x192.png b/railsignal-app/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..8805d9ec016b9eb28735d83967681708437bfa86 GIT binary patch literal 9827 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 Ku}0o1`2PTPQ?Pgd literal 0 HcmV?d00001 diff --git a/railsignal-app/public/android-chrome-512x512.png b/railsignal-app/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..cdaaf8f6a3b6fed42ae49653d20410001dbce1aa GIT binary patch literal 36805 zcmeFZ`9G9z^ap(1x4{fyjID?n%UB|zMP-?>?^#1p6p}U)CEJWGDn*u3Vn&FfQmHJ( zkUrv55h__S6GQn4&-WjAe)+!cAL`{bb6wYcu5;e!ocB3r&O7b05)qOW z0sx5ESev^503-i}0a^h0XEvg12>=4HF*k9G*gyUP(=Pqt`uu=)3YAKTuPv=A_;&8X za#`l9obxvJ_Nlr*-}vjH0C%f68V3a9c0SqEwji zw^D>J(&L4c4A3z5flp_$VMEeH>__96yt}!v1J@>EYaUF@^nI%Sl!p^jp4xzZKHFi( znf2i#nh}*%qP8Ae-0?bp>8x1GL`J{L`sSyUdHtvCx-x&6mUjaE=(Taz6e}z!pS3=# zd{+NVIIGw@y?pWWz+$g#i%`p>UxU@-XP#;jf1d6MQoB5(18*|(Rr7Q4K@~C2a@7Yd z1B}S^g|9!~Vmpr~5YvIb^~nm@@1m0EBMFK1Nyjf;S-2+`=V8tya-KNDioSAO zuB{4m5ZH9@cbdgghly>r`Bw}#?zxHin6Om|V4*ZwC12PnAz9lZ4RIGu_HsxeuH7h+QVD+hfsw)n@!w#KZVa{E9-QE+C=tNiLspU~(y<}NDQ zR|Fj&FQ$z`gR5~#8O_8Q6;Jfli=d+3stKI~%x6R7qL>J0p&W_mF7 zJV~9Gl0J10IZ`?wbP(go@xvTe0ghv5v;@-mzM)OEpygm`U55NuaR^og;)YEj!Xm~o zlFJ3xE52F%e%zCc-ckb^g=l25n6fWwEQ$PjJNco6dWtXzz#kMKz@Dh|MO;c_q&PSz zYN$kJpy-Wax--8dQj$OC`x?Drqh{m@2a541ig7EAW0*=6*MT1-feFYO+^1GwpH4<; zWu)(a%`4V8mmwps>C}I%1x2rE(-wya+tZ|sgkq1WS_PtjDS2tX^?N^`2eX>&=P{#} zbThQ?I>Kf`6DBdtOb<y&L$qiP-&71YeK+zr26A4jFHv(}}r2r9zRD|_c+~dQs zq4VdNB=^Q6ybz2u)u||XH>oaWxYuLk^ODOYL@L-L*mMVKMoBkT2tOpI7-1gjGe4sz z4zvUnq*mmSjCYa#;3%X}7bQt5<0R-6Q*J&jpU2FtW^$hoZRMe~Eta^p$^>r%B?JlSyY-Zk>FFUfQ zX6AeMo&HSx9R6wFGfe$sO4?;I+H+1qg+=$TN%VyJP+9Bu|MG445*4WmUM$!2csypf8SJ+Eu!`)arCc@Y`@=+N66gGn;`t+$=%W9b)B zIq_4JbQC&1Sv*Awk~C_Ke%625ZfWl4GY8phBc8r5gX-T-H)%;%H0#*-=MVU&g7^g0mkb#%=gJys%GrM;?vD9@1~k`(UIR+p(mxOjBx@bll++$~7>K zcR7@O`PP?;17>&IKP$0CEZ$w9ZRE*hkx*3Hrw2Z~8z{p1V7UEv^G~sH0*nP&F@@8^ z!O{$uFLXT2=EZ*FI7zlla+w@10> z6|H?WTh9Kt9+*M2yIMrr3+)U0q%1-Q{q|1tv5He#(aJhaHoT^G+N>cPxYN@Bes!v(Myy#RLFXFD62LZG5oiR zz{EFz6vAX&6Q{md_+qebN2tFo=oZBr8}aWO6mDLHs(r2Q{10tdL786+n~W_*_C2;i>U9Rf60f9%_EsxT8wZoO2+!Nq~~xQ zoEKAq+;z&C+id5l!8w}NI+_M$=ls^CrQRiP0zgBN<>St?Ge6$i{b-}n47sfDqXV)r zi|R2dteIaWlT5qsX?pMuar8O?PjtL60VQ#3_N2^sJ&%j=XI8uvwG-Vjm_A5P5Vid- zV7lJ)UD}3Pxz8|*KS(LD(dzei(JGH=8H`2Zw(F>@q-U&?$9HdewMp%rvTV)#ft~@! z_%xansf-eP`!uE3a_U!Mlk-x8PueElosxXpw;aTRNF<4_z|FC}3dxSgP&+S>(c1oV zX?CDk3_`1bqmT;0Q!qp$ECt)XJN*sthN@7dc(S0WH$N5{Mm<|}(1i|fX56eRIEsH8 zxqs7vxwJ(ZlTp&>|dS1zxk#{ zQ_1{T!Xc^_R1W(!Uv}WfQIn`t6EwVze_UdN%+t}QrZr5hJf1WrAh8AKxuKwz-g&+U z^&CUar4Ch!^e;QHf?Lr*lY)jcsK+t$!VNL3>6b@%1<4AwZuhkr z;0Zh9ZZ%!lk|2xn9P(RI^8y~=MBMkw2HKaTn85}A0DtQHbLG$&ge4$>f*s(XSl1sl zp4iZJPX8^6E<(3eEF9c3md`57tkBbiI$}b+I6(#LLvM1fSk9RV zgg{t!^MwJ2Gd)v`7+Ym522KZhg0E#6O5|`8G{Z(MFDq3}U;D|Lbcgoa1QUCXC!cAc z$s@iB6jr6mJTW2ORAHkz;)IiYZN&@wT7Ii_&~6!g?;A z163CWD3qGwl(fP{FBUasgR+w{D&B(H)$l!yWGrRPK!kn+m*8}=Ld4-hyd5>8;hAme zI&w64!T<3hx(aJ^@r#)RRT^puG6#o$oT4Uve1TfN@3apMnP*ebvYRFS5CTRi;tW~xX$B;?KD|aj)jlVEeR!91P&D`$FP-MJ$+!5O z-Ckx)M(*QZu1a8w#Ps2nSZyPC*f30??@F%b*|#j>#+IMG8N}Oj+$LUD)*pUd^z9%S*6cp=;>Psx)7wam~fi0NCs7j{%@$(0dG=#fNONt;l!}52Pa<@4ubhY^x`-a4!%w&z@|faA%&PDbbt* z9|oF^vz(ByHi4Caa`4u2)04$&+H!DiNLAQcX_CSdG>i+csyoIB%k0c2N zlz`&lyNy1jBUV`?lbEpKmu-|bqXm_sMRB&({`%hE($R;%tfYufm9e(MuKLWuOvhcj zb_`{0**-P(Qp_;NGS~lxS|C&B#=; zCVe!FBxx{>tZ-Y1hv?QW51uDPKwPrV+o-39@@nPsEz-T<1 zB8(=Nu1y)mpJ5E9qNg7BqGck!sRDjR#&o|~?WA%+<3KI(JJI3HobUzO>E~{f!v{^`Wm7gI<7xf;ZMHs;5U#4OBeg2}y|H%1{N@tIxD{r)>b2C)Prw{>6U6BM=g1EuS&4H*NR{()kP z#Jz4hhZ9avF8SY1EC-MHezf4IQH+-;dY?f%c2<9HAmI~!hC)jmuuH3$F1a}1>S&aG zpA}rU_+tw*&6bkGG5V7j>MBwvX@@^SkZJ)y#O|j&r6P#}u)V0`11EYq&^(axBC!WgdW? z#^te4x1H5`4aJekybM2LaRS#=2(L-WGIHjA@}a~Wfg&cVhg}}muP%NF6(Z=gJ|&0x ztZwdJ&|Sh4KJ?mSdInTF+1>H6$|su&lwtWPW0}qQZ~JmLf(P;Y-6v#*C|3r(F|iaE zVE2h7cAGN26#QcDX z*}wFlhyWOC&vRR<^^6~_uP<`Tq>+L8kipsM!LT96;`+szVYQ#19z1KS-!%|f=Ygn< z3(C|UghQ{_FmNI7b_^GV^W6yJXA00afsF|iWko{B<#(fXqrESpRDlT9{}9EVUBu4Y zq&SAhks*2qAJNedzk$v9okp?0?MTbN&E4oTp_Sc1Um_!G-y-`W2xMO?=%PNdG5D-q zDEoJFNpYgtBvti9Xu)NoDDYsIWA;E^=j~W-*5TQc9vVLI2VUllX*P3K9=M1m=ut3M~r+LK=J;Q?ogJElZD6$lSxp{C1|(K_5Zla$t8=D`@(~ z{8wbzwQ*Hg29I>2uc}Lm{EFNol&K3$)OUpNr^D7e2@e4_?v)Y{twChHsG0p?No^>t zlxK{2!aa$}+OSt%h~xBi@>4xG+;j>*6my=n@W=4i#?>p44}l4w$M@y;#Ne;IA#_!;KQB1c4v~d2IwzntSJ^lmPG;{C)u1ICQYz+ zBTFR>V#L^eBPD~ga|aNab_qa2{LXqg$Eass{M;905B9+R0!2Qp22x9Vch!H}thjM1 z5cdfFQM1R%gkR>Tocb$=o`IiwFu9Y)_b>7Sye^hnzgQ=avoJur${CuBBQ#wooc#As zaG?dON8E*66mlYvj6`OC#DSj8bpIHD2FgYJySmz*{qz>T@#5oMyibnpZq7Nm2lWNL z_<-0=nat(nHOGo?@C%l)r8M1(VtF(kdpIb{M~Qm}AhG%%%v%&EY)zktL-ExO8%^41 z3Vc&w>~sosLZ^_m;vtG+gHpwvcm43sT_9w`m8CQ1290=R%i120Bv*NuF!usJ}bJ-tDUIP+*6q%E2*%eun3_k4S7SJ zPzZnGZIko_oI`@C7K2kGJqBZiE66Bci_b^PmQIGN0l~o5dfiD{;9j(h5Enb=c#2kb zzh=Wm*39_hww_s^xzAsJ>LWVv6U`K&TVorjcosv@#e>`ene_^hnwb*HYiThB6-EP z?5r1Se?9HZFqo)Pe!J*X6;hB*X}Lc7^3N^xDgzANj?l_Ohz$n>ou4Oa#}k`{cZxpd z%5Hp{h4V=#9s zA^{0>;(g@W_lLF+gYtkLY&$E2CdN;G4Ch@#*)bj~fhTsK?rK77iv^8$b*P=q9aP77 zN;dkdnRF298+st&BgkEYpy5~|c|_KF4P)q}^47bpX&_I250km%^buYY+qJAL#id|Nb~GkG+tF5bleqXE7fNCGv2boPHBawdK6rM=?R zbN4AFqZ+)6iLDejj-1or9l-&T6fYK0@7vl4Yw&}zLO&ySaTpI50hcu?o>VbJ_k)_r z2ceO*o*`374&me))P9ZY+Mhj3TB+g6zkJWDpj+i)ImY@+=Z8gP_n6>&ss#|fZ zRi7PCpk5TNL~n0p|@xMc{pfhVQlNaBR`jLCHJMD+X84VTpK-9~8TYghs$>6O@)tH+< z9fQZfZ z@>T(i^BIfbch`98!{iFQ2_+`ulO2ICsTtuZGQ26AISq)wpMIC3U`f|R>m)opaHab~ z1zJg6wxGj;H_qeJIIJRwg#|9GPx_*+9`(`E&9T|ZmOtG8Qlh^`B2VnehnmnCZu?GU zY9nd1DANTdI}sA;g9K5gW5)T6ASK|KZRj{8S|$fEMHGKMaBLi_#|HFO2Du&?D;bkH?GnNvEvWSmC>KX$|Z#Lswp-Z8niyaI0_Rh}^_KX7OLJ`l|Xvj-qgKV zYWY0rr@|W^Ez4=SKBU(ti}zBDbn^z6GFRq96f>H2+PEJ#;Gc|TiUfo^mTo9psJM&2 zOG}sztTloduv1lXfW(4i3M@_aPy%jylTqavOyk3njb#Ke~U z{ON}72N7O(&@2bcuXz0r1^VQDXz)|9ZkIEgmO)0vD{fghYW|u~@I0ThP0ooiH30Mt>&#*G_Z8H2Ga01Ogvd3{%65=nV(|i zJK?BbPdq|bhzk_6!)}wqMU>6i5|@y6IcgYUHhX6U)Ki^I$WaH+XoRdOL4kRj!@Q_t zSA=_?pFK4;Of!y&oX(q!R=d6>$i-CHm(4>2r315mICGVWg9R17J3Qm3oBPBReP5*o z;TvLiSGihzEj!W=Dc+_=Kv@PKsp&Rkv8RD5!YY#c^VH&0D)2vb#FU+|&^K^S44?mz zkHu;x<=;e#pa_K{j}jK$0C7$AoTp3CsLSQ0R>-v-z0*mI!9{{pjcGUMS@mcnyY@x6 z8VyCp1|%duokI5f?bnD@EeCaf&bTXRV^CDO@w|q2`>|w?b~ytwn)xRBo_0DJSTpvj zC|(8EAa}m`lT*IIhL453`7h*Knv~FDBW)1|aE0~fLkVBr(Zf5`V%`!a4!*qka{?ir zDds(|#FjPo*68X+ud8qJ4D`2hd``XHdPkGdO45)1az%+LS7c>O8?*`vbPNQ;|{@3_|tWt1t(WKoi&+1>wX;+yMP*wcWwyc_B6HU^0X+qPv?GQS_6(bz)Ro^dWFkUej zFRX2iVI*QCGWf)_`UbN{B-KaETQ-@4TaGh#g(1Soq+fFBz+^Ptwp2;ikO^iQ)~Rgr>Kq zwjYqwV-gzN3-SGnrE9Ehe9?dyZ|5eEc;aAMJcxEgG4n^rJrn1UoMR7{B;eV>HCArm zCr3#6yf9dwvv_6Q=0hqZR)d%eToLj6TjC+InRkUg0IR(K3V%p5SCVRs&@6q*nfv-Z zt~BtCD)*4j`SvJk_}UA2SjWp$Nbw`}9~Six>EC9nWCl_;$mA2v0epG~g6B&UD-S8V<7OTj9cYL2_S zxHZ#0VFU8_sujm=&8Huam9%g1if!(4d~4$khwuMAi5~J5XAHLOP4zYT2BnBpk$SaT z>TaD0)8z|>gN|XLlx-y9X_(=m ztG2)>XmteD?@O=xGV+@q=B`G zc2uTr%sRNdnE)pqG6ALSyDA7p)G7$(Hq?W>Yv~P#i zB3^07#;7vSxy&({TgykqT;u@yGwjc=mHsBf{u)!7u^SsRG{4PP_N#_fnnK<@iVCn| zAyW-mpS8AB=yEI(3`<9YVDBvD(=eGBF2tL)`J$pIY_LG!q-B$IfhU|Fb9Ie)T8|R; z7Tadh?5p2&GVp~69YrBuANDAH?z`lwk-l|ZLmU>=-8Z{UE>-I8Q)7(?DU){+)`2GA zjbtqW9niy#{p#1%tG!TQ*mY$qoxP6t98H(-Ua@UPD?IaHGl~2A=?7kGb~nN3$VGC> zwA#J2Xx!8895g7}Pnq!j-lNogLrzUK_d{%{l64IsrmuUa9ewLs50+NcM0Fs-wj~!y zQy1!aoS@^>c)r{Y8c~9niNM5G&Of_=DTZlmWUU2xqE2r&<&xe~>NvlGON_t>d-w;* zAW{3B{M3R(yVZ6LTbeb_ool`*b7F(Mn)$x!vi7Fz4Nh%{ zEV@>QP+&%orl!S=`vsk%$Ik(Ei=^Wim~7*F%;C?yVfL`N%PLLq-~|E2Hp5ij!sGzyxX|qNwrJJ#k z@maGrXnvyG(c}b|`jr^k7TkY6-8%RsYSH~Sa&X1-lCtMpXjm5)wt&C2xlz=H*-A5A z!W-@^j_wY$p_{W`7_6}9mB$=BAyV)j_y!(xWV)}|VNVw_Es2)Z@6tOTCh z{JBM+0etpsfX_g+I$<<+B}2zBRuZCg(Gg@9_4VhbtwuX7;u$2abO-xZ{#L2jcMUjf z2TJ$buB(gz8S9%(u3wYA*d5K6<#V6UXc$xr6c?k3dFs_JD8gQe zkS?EqN8siyLDuNwC_wYig`Qtgzb-am$sq9l0CbQB)9Jrq9KLy zajS-5F|2dj)s*}&0-Pn3e+6@Nd!$f1iSZc{HyZb-&qjh*!|JIaP=sS4J0!*}?^&UEXF%PtJCO5Bx&?0-zu+o3Lxt`e<@%_@B>1JF-#L3De`soylji>2U zv7wlj8LP#|W5aJ1=h}>UV|B2iD#1V8@AWHrgt5yLuu+^%k%rvaU4Q|HH1Nx)c%ni@ zZ(46pMRWuU5sLnJ1;Wwg$Lk~L!w5KkLZX4ukX_e(|$Y33bzkR@_E0?U(0F`b+2I@3;NOnrTs zsq6R83ar&FywF(pddF*-IECq_Y`i!SasnUeFAHF? z*84yjTAbXFIc*g{+G}xONo|RiLdoTRKg(>8!uDXk3svngy$X&R$*@v~_vrVnG~OWb zm7xw1;JH)DodPC1tVXs$5bFXORIB_k0~>Fj*J$#@)_$b5AuoENcEAC{K$=)Go*aFs z7-^miOeo9NDJ;rkl(6DuCF?k=XmsM~MihU?&r53{J^oVZ5pj7qK|sXT@{(*e4hX?l zFzKg!WlU9V>r`MJjp38oy&I8O#$iA{);e-7=#R zNVm*&IGxO77iSczXBOXIxGPw_3U*pT@qH6wRM~A-OdG+{HQJGO7#DczykoS|jybob zh9TL8LtC7qD9$MAF{-+iJepBI+A=3~HnQ`!gWdhAZx_1Yii58%RO+T%nWM2ntz$GP zo*Yp!Rh7>-#C&1I>ufm6^SA4dq#jU(RO?uB6Cmv{wmW8_Ut%wx88BXKaa5I1P496% zY~S^TcL;VuKmPK0j|sJ$&2#AR7`%IXSKf{2Uq^lHFpL{pk9O>$Du^qRn@INxLNL>Z zrZy|y+QzY(P51fku8uNKkul;sag8aIqjs`9*sYBwN^OG3U_{6oaWF{jh2U%SBx(;# zmSaAMoh!Q|?Au=xj`Wn& zMm?d|%oNZjv4hL?`w(_oa|6IY??YJ+z6kV`cT115xAi(K{@}8O@G)6nAd$mG(hF z7bd;_mi0dmNzWAm9NifrxOjNqhV7RF|E>ITcGw@mK?h+dhC4%Ze77UHNXH^!GRt5V zX+CHTHd_Z%A6fmT{J!X8|ID4cJC^Th?L5L%>gbeFU|#6(IizhMI6xDgiqYe9TJnTS zS-akQ*a}9O#{m@pPbF=NR_wop6#ckMhflc{Y^W2lz%Y;u3YW;N-xM=ycZbM8n%$w>#jpU=?onjLfUr_tt=bvVN!Qyu3r0pyp}x%nLbK z3m&ElBf?5UW9hd^_ZZIX9B$ebC*FWFPu#Fix)0`$SD!OUqYl_r2(+)cx)w@nRi=*O zWsss^6;iO}E?FOk4oAE|T18OI0Ul?-0c;@6J(eRcO0beg>m5U_we){1AJ%|pg$Nt5 z9t<H_9k zj9`^4;nP~=p#cdAAVIA&41S0qD`ah`6szMo<7(J19O5TwdW`CgRH+&dpCdD9?5x#$ z$2YwC>~!f7PwJ18zoysOgO#Vo5K}w-JL;!v!X(d-b8LX(pokw8X60TiQD#$_zsP^W={g19@CVa>{7N2=8j_U|@*mB+uuFLXUDB$n84 z_lKHG3{Mx#SumaZcP7P!An|y4`6kKTb*B&^A!6Fl#=P}u*Y$zl>!2L^MiGRZB|D?? zyP!(UIlvT+s2RaLr)(muys0nTF1-1n>nCO-DbIB0L|cJQyWcvf%A&XWQW3LVkM7=^Y7nw*^#G#wmG>zq zlUSs2hP_~n*+`LRf0}D{`7DfXKwMnS-bQH`#(>d=1S)3bAqU((Dj`#oe7WDFv6c4= z*TXv~{<@#@_+`1y3GY?Z{>gpA1^uVr#I>e)0ZQ*~0s+1K+cx{vdy{4&gW4v}a&UY-+J5?ysB; z4!J+Ld8$;~zcO*Q{+adV@oeFlaPuVaHtxi0G{f|G|N2r~+Nb}q@Wj3EXpjhQZrV{a zcs4pmJYpm2$4^pl8ycw|+lhEc{U^9a`;AeT3YPIG>I6mbs?n9S&G3UbYAv7p^xR+l z9qf90_Pt4_;4i*Z1Wz-u?a+`Xh)C12wHwW|tjYyTlb#^wu2 z3SeLrVtNhua|S22peE3!(rinGneS)*TJtP>%kgjU9rl9bI*7dJ%HNK#%d&AY;ilFA z#aza1;EVj9$F{4kRp;Ss*;hB7p^|v?#|=e3{Q#m;MO2z$ev4J1*8r_AzsYWh5fUO4u6#QM!uy{ zM0|gkLzF*?nb4Epo$zVI?t&Q93h}Jt`Kdj?Uoc`;>%WULFv_jcdBZbPkp#Cy8NVHF z{+lct_Z;2#K%SBzPTk#e;&l{#;itggkN4-C{l&EpePR4S~`z%=eG~yWjEIW8WH=M!T^nmLg}Iz))q(7F3H9&{N6lAkVUU3E-63 zr%UpyLa5Q5>ET>2f<)7OA(qwoPSAU)s!a@Du(jrEf|*+w`4qLka*e%lwTdhRT@gY< zbS%~gLNK~kJVcRxTDh-dCil-hRfgHly>2O8#M?s2`+-qtP+e+@I9*cb1*ia3k|AxR z!>h`gPrFUrlpYJVKuey7Fd>`i8RVr3c_p$kp_RK02e?1pcmDS-vy#WBzY)L|zD6mk z1>+Yr7uA(quY`2)$@N0tg{DT%{zan5*c;nU#-VuPDCBtCz~>dH`+&y&s^1kq$`iyr zf(#=Sp#OJw2XBHD&_JOex*p;B>PO2zVQ7eYwN=Jce84kjp78zs^yxR{`*#d`?t5*p z8Lmisnh-VA7%lItSh4raUHVdU zju9F&9gQJUgR|a@_GGgXg#UwF-$u6+pUlEuJ;-dA98quil3mN^6C#E6ymj&BMnwVU z>6Y)is}B1V{&gM$e1c;?-eq9<$UB%Zesy~Wygp$WY?87vaD5W<=%~jxF>UH!*o?!t zR_}9W`NO`@b~9LUY6W7Mn7pZXsep{i51JEXMgKwuH~zR9`ORe>?{=8VgjS-2k%<+v zzwf8xc;?hmOQ7(6zPfZmyC-+mp`@IS{Q1v0YtdFT!|REWUhST{aOB#!L*nQUT&Jb_ zf6?FvWiJ%pxofmTDBt3za;eV$UtA93 zAKz3U#}p*0*_8^s9zcpIkI_zWL}B7K2I;C3oHMXk`@bO4zu1w(`%WxSBAkG%5~XDD$0agc@(7Zk#(`7|oF1o~o{d;ltjoKqwPV(n z#k%v*TOrYrj&PRWcT;K#F9>G~zVj$M@AqEhoLIG{gS4T(fsmH3*QY6kPyNP1I_sLB zDwE&xa#gCp58Dw8(|O%r#on-aUv5>q$K4W zKaeJ<;TDdAoZ9n$H9$Ymx5PNgBL=$_8WALK14D6w*4CI=9oRxVLf3V^h$qfLy46xa z2~W!6QQ7jU`G$oHot}DWgYh5YX(N=YC#qsi#M-!9=<@eSuedeuB|MehbcbT$Jidg? zu&q4%Xy@dggGbN^20$TEOi>vB*{YfoEGgFYN4E$U?%bSFoqr#zhJ@DJ8fG!RRa-)K zfunU^o=g?TjD8XoBh@I z(9Wmlg;js0rGj|qAxM`_@$yYmeK%_MGXZGET;Qb7TP^$C1t&6)aNK#ve|MmN+$*G^ zFkCd>@IKX#ShzQ27fmS^H8s~cCD_T6#~p+WH(dNH`GAsO37K613}ro-*-CW)dmfwJ znO{)D6jScNtmwBBq({A5{{&|#$6SVMBCndRx3;0)*7m1A|6t{ZX zrE=j69t7&Ki`2?W3y3T^gK9pHD`}y6?-p$NnZN3m!AQe*>SH zYmEIhiwOV9SGV7^n4DFQA?FQTsQ+Ss0+>2p`&?TcPyLJ7s>Z9|4sFRrKLlGak!6XV zpbu0D8m59nv2S?hT%>EBN4r|z#24ZAAM&<3epfv~XoAzl5tV!h3W-tMPVU0Xioxp3 zi@0dsGwT#~vgGzj(uKg)vnhHPR)ml*VhtG=kF(y0>0 zDICLFPz`VW4V(!#M*EsB`OcRZ=}3bOC>IT^KD86h1y352as6$!l&h#tk~Dy!PwuSz z=+RAob%Nou#>-<#o&9hfL`7Gbhr|r5VRPI3FYpA8=grFu)viW)*r6`%ldkDV!LAB^ zEkvH*bW#ED5`)U`*y!|2tP>dt*~$HiLkGous5cvk`x|FYc{KQl(_NV+NMn|@u!=

g;Ui^Yd~lOZZMw9_*vGW4~!M!}olyz*gwkH8Bx~SofbhrR@&cdM=W* zz6SgAMVP1kHN8LIYwAnWq;81w7r3di!%A=Ga;+V|K6FAxj95bZz=K=-F`5(?Ug>=D z=)eHG$@b|d0CyAbo-i=L_N*UgW70^Ygo}@RP&I2jO>F>xl&+SY1dJelauN*h*rtF|)Z!1-1BAgc(Ju zTdOMX)H^!Rbjc4x(7~Qzh$FPXdCYdtZy5~^p!b{Ep1H?06w~-Nnh+%&?B#qDoocOr zMfLa@wtCVJHy*zTe^TJD^AH5uRiINdoD6^+wG&l4^W5|XUNhQd`H-FG;^Uz+TCl>C z|MG`KZd8AsiX|k zY{X)3t*VXKt~agwaIN`Q8>;vSNTtqt-C(dPoELR7XEtd3vA1a$GBsd8teh+Uu!%Q( z0HyaA+}YvnhH%c3hMb|B=^fvA*zsR9qz!cl8ug@+(eq|szt5=kr}>hykPGx+9p!B< zZCCrtiX3j7XBP`x1N`y-*s05!Tbac3%k^Sv_mht*1eA`;^ep1~7OE13C`HTS?7&RQ z(TdAcTC2hl-!*=}A9q3iC}@b2M9Xee)CNjqGsT1aedeX%X==#4L3i^Jd?sm;BdiiO z`%;NkkM|Qq6MXZMBkjmNT_PfdKJ%!D@ohx)FarO z@}<$0IffsUyPQ3v*Iqugw7UK$O7A+{c!urnjEtWg97^+|5*j2_lKlq>S=b3y(rz|i z%U5Iq&iA-Z;cy}QVO-8d2b}U`uZ!mo`^HuHEIMB*`U11BrYA?VG8Uo69 zkeQ6_-lk8<*6R{gx`|V*gyh+}lDPra;+-G*`pS@ctTz-kb1I7>u_=fny6Qkn2cA!I z<;`Hx3?`2Lm~a(3$X6l2)T6FRcXs+@8-L)HV;HG5Z#Oa@$B&C=BTe&P)20!2kNB4e zQ{Qnm+EW6VI%n`4j}Sh?U83|zf<{6*d_<5b?OVU|a>X~KEr6fozRX%&X+I*MeyR-4 zN3D&^KtjXkJ42iUH`F6PEHFIw5h1p(4flUWT5lc&b>8;>)^xt5p0`}DhV&b}JC(Db z3qQC79dU4dq9L;E8QB&i9dT&KEgQoIc|r9bo?Ny_OUo=p(k zHrLFO4rAxrgZ=WM5>$a>2-{+;|8pkp&6Y>}PO~{Y=cO!hRaa03dY!D%O4#q{h8W4| zJp{#4q)=Ti@gc4J3KLf`o%UN~q}6EU;%A4>&e(%#`e4irOQ6TtfWHV%LWP@Q>P3Pl zDny=8seEp`n}$0fY*g7-Ou~3H`k0wNX>Qq>E38s9cYr@ck#^fhlg7;cE54~`X2FVB zq;dFcIgECPkfD7jUeHFd$$`uU=JX8@;haThmfPq{8m}nP*VuiDwX6tNf$rpu%e8dJ z;1@LUeV10v)?8v|kC&n*GBp^_#|IIz(|5vEA_U>_PW5ycC2SHh^5ox#GFe-CnQejD zX}(Xz;tw|0r#%W*0a?>SlM^3herfhy)IYSUofkKEewuxTPTUErvn*x6J^>qzCLCBt zwzRE~W?E9$Z`q6PaR8nV{XUABM4OKn_F=x5At2P+OvAt7rNff-wR4O2CUyRTt$cnM zw@O-xyau7g1Mq0jO9mCPOjGK1UlGE0(69k}P|%dGu)PTVNIV7BTw*2!vv;tj_xzH` zPMa3J6Lra%-75j6=bgDL-Mi##e+4%(tuouJj~Ib$(&bPJQ3g;FRD8Em)lrx`Nd=0| z1c9&K1wj0QvHBUwXsqP+E6eIpl94GLfxGchf=4j zBZcFf0)Z0MfPkg`qZMyiMoy9I&Ij~2FOT5)FK39UvgvHI8w$Kh#)~hJV$oY4AU`MZ z=c!-+&5}?gz3u+=%8xP(*1ymMZcc*_1_ipm@ME?3(ovecs)3S}iFd0p{VmKdFJv&1 zfgZG2ji?Ee$9~8D>G@CjFDN-|y6pa^tN85S6TUX^dQST@prZ5_b(LB+#A2G|tzU$jV3tqgv((wdzv^Y<^$AHP~&2O(cmGX1;x{~hQ5q=TT^|LG3l z|1Znhf0^-aNundTMCJ3=-icekw3qVkZR_<9-b3kC`dm&r_Ho|g zxPE{a_cFpOZ1^u2PP#sJR4WNwz!%roRxbH+^vv}LyUEiloH`e zi1U~=%ZtL{ktLCdsLvAxJUo5la>01Q^uQrS#u@;nn~G^hOHyosiUyQ^)kh+W@^oKG z{qc5Q@M~+>%NpvPdL}c+Q$^p45{$k*{g)TYqLGXr{fnme?fEcC+-R(q5{oaOEws9` z%jXpZdfi#-Z2RB(H`t02Bb=~Yaq6|AD(8{qNYL z?JD;*x=%k(e~7k+uOv82J&3S@mg?j5zD3xA58lBvVqbGWa~1j{H8# z_{BZ-5`6zpTW1~))f@KlGYiH(WGykakSvvw!VD>U*6cznZA7IKa}<&mlC8o_$yUme ziWW1p5QQu$ijjTEzRq^uXVUMw-s`>I{M(%6InQ!G_w&6!-(%I=1#J`$(aO!hek!|l zvOyVjhcDp73*vj!<4Zc2taCQp>;F=NFijlfL8Xvv=RuZDVd6JuuK%a#o{D!7XK6S5O5otOp4YRu=UXNB%I$(E3Vs*+kPqwlw|NI zGQ2;o?ywfNxm`1uJ(n>F@JF7#lN!0?_d;$I5&Bq}jv6}sGDz9+>Ogsae=i1L91P?wBPMq)jMikEEs4s=LC$ShwMi&MH3Rz|M0H#c)$#te6DN-%S6>UF?3Rm0uQF=i6W8G( z&XB1yS8B8{A(+-Ko>Fe^#?oX1ju6?xdq0161DgNT+T+LP1y~oK|62m7ZZ1_U!v>Y8 zj1*H-Zcgrat+fYd*3gapa3Wx|I2l}}KvElody=G5<)0X=n5iy0gjUXdCmFRauz4Ew zWH-%pX!FW(VbjIQ&aAD>=8LFq)&}y-L-1jAzCppT@_z1t|udSj#Q5* zf66JtCE4HvVKuym6`guTqVB&8Soe?L8~`$yS@Il7bWb+rkwXgN7^YU{dmk*@Vw`5^ z{t~$AOKlPaQ|KlA?fR{xL1-i9p&Upgzxg+~`m=Ppi}lg>UGg zY-bxMsFIY>Zd}bM9DV$=`c#pvsI0)VkCrQ2vbH5*YSzn}TgVTk*xx^YCL32pX+`-! zr~99Mq8T#}iu%vg&NbCjUZEDRVi}4AQ}`}=D}PGuOI^#AgQm7aFTxq7J2$TlWm@;; z#5Y-Q!r+GmB78P%=IJx(&MKNhmT~( z|E%pvtR!CoFr=tZmR7IrEv3%MO?HsiEL^jmavXJ3z*r|83c8Gs4pKoM6v7*lgb(~x z5d0fT`vO;^q<}QqdAV+cxZ4J~{_7<_>sG77My13BRg#2q5eh5Ny=e!Bt0L7fOE<{Sp9w!eFAhXYviVk(fAj_5K)Rw5YoIvI?~7 zlwhFkJLNKvBm6J+6adOtj8fgaSlT*6&kCupQx;Tu(Llq`zgFSk2Bxeu5A*q2bajrC-WE6a=T z4@6qqWPdQ#=H_}nB5Xu$J|sxJKDFK(ec`v!nK6}>QTS>LYyDDX5nFI6Ck?skI^X&T zFcYF){+|3LAS6Mp#M@Bj=n-n~`KERZTs|QPNL3w;+A9Mla7g6Z_)piVcjFFG$e6(K zd5%jJ^OtrVQ9d`7>%j?m#O4frnj;rPX(-bFLJc0A0QbS#A~a)MjxDdxl=U$V|}Yo6&oX8Ok$_XOg`p)$xy@Qr&K zyr$#C4N(vEKgBmJMgL941=SXMVb_Mwe&)I^?Xb6F-0)hSeKyN(p#Hd58}p(j@#uV_ zHn_7iMo_BUkZMTr)Gn@H$+)F%UY{IxpS^KfNh_9o-;IlhH!{x`7u8VQxu=YWlN93- zN?CO)sK&q==TT1aff;u?)9;V&%D4WV-IqI|o3iwwA9-Qs-O63vwVbxSP<+%AJ1h>5 zP^k2=j+18u9ktnwEQpv~mq`$i7IJ&s)4qML&fD*_H?Medggp7|~ zp&t!mw* z30UCa5?KcgNu1jq1HY(Ioc`Af@l6+XBQ*?`tNX#;`~IgyTTWVBd5eJadb!)=z|}F@ zkR+oBwjq8?_x*Qj=M(m-`4`9)RYwIk3UL)wXo$WgN493;w=7D>BXTwy(L{*rwHXq8 z0{i7d&iX4j{9M_w-mLT))iqBiKHzTTxJ+FUBj04|@f|rW(7WiT>Hkii*ve~)1Jv!h%Qgobq5KV$kIz>XAxCqz(#?fd~ zUrjjvB9g(@`*q;h9Af2(DL@0w!V62t5K@Eh0+HpgJi`MXrD?2m#db<<>?Dw%IqdC6 zBKldx>L7CL#-di#L%tS$P&4XR^kcP@m4I0-+LfjAZ&g@O&^x0boK zS)T>k`B9xfVqXf8Kkfhf8vnNQ)K{}F=Teo{_aI|?$B@&WPzc5mTlWq(j*HG8VATqd zd|_{CVNxFzcqhSNy-3M`+K_vUFqDgzQbUBXx5Qy_5q71;Me|c?od#B5vJ>*vLRF=n<)k`q=0h z^Y1RKm89ofTgvgt56!*7#?@pMC^Gr0826YS<5rf*@G_qe|C_9{)yeWInA2i&1&aUT z(Dr*TbBoVicSBs+IV0kaky~P1?Hh-(#2>Ds7j2N6a;O)|81tvwREe#8m(ufLbiP|#c)H*A0wD#t8H zSDh*VMfj96f)8z|uYocQXvBD(rr=wq&Y9-|ft86fwTn#)q>E_qCf3;Oq%Y)zO{lzj zaQUuXjr@Uj3@U>#i#T$kuR}mqvjIJ}3v#o$T%YZvJcK&pu=I`S_8< zviy-IqWF)y{8rO6Um&lXG2YK={?anHMjgo1w9xv#U80_Gq~nXL`#38N_I}&5XA$Ph z;;ji3I&lM}(IRT~j!FD|rMuc&Seqm7X#(v>mEas#(Q_96OYL#adohJJE+(cmQP@cM zqh)avybj9kor~^L#?P^j-{A&{i=YUb0XH$R`@d;paVTg+`=>XS;c*vs^IM9e@m6$iKOczZWmKo$;OIY#2+i{<&>U`RIPzbhd4ZgrR%N~(+LyK$ z`ssl6FVTk5K7z|{M?aRDyRrrnrt7t>4M`Iusqd3rIcEmywouvg4?c7I5sI!b9qijs z>!1O6&Z+n+eY*re*`{E*w{Ub$C{S#f{_8Vui4L}Yy;>@ek_#Wn2g0~=@+sO->dK8= zF)>*7E*Ti{NmW|}0@vSX{&oEKt~%kjR!OlJKi&6kg+`z^&jd+EgvhpIDkN)$J;1B> zNTI0zr=i-U_y4J#LxMbkhKsZ~c@RWlwn}rIxHoD84u6z3K<-69U!BpRc9V~-1R>!4 zWva~QjJ2ce5Q-#^~C?^C6;^T!&q^U0{B`cpgxaq62d+jKhfF&hR2y~Y+T{w5o;N|P2 zJ=g;NrL{OX9$Jg?#p`Q?_;!9-`GB^!i?ft$TWKa`Tj_}LxnuJFf8}b!n5nm)(IvYZ z$my6s!{1-BdRG2>rBT~$%f*gSiW|KG;yPg&2Uo$_7x$Fkhd2e^TEGKd-#X{ zXsjILH+O}Vx3&M#MU#4!${108YmO`ZCM(km$K7@pYH^2ibPz8`^{g>zM&Z6WN zZ@@$Q!5NXpT_^>7v_VTCP2af}{T_^fB&C-p|EwICH$VB&@v-RxU&)cn!gLt`F#O{Z zywm@lFv)^&1_k7Ft-)7Tn#IB4YpARxo^XR)0$qG>1`m+toMI)cE`vi5@YV2CZM1A$ zNshqE&_8{;{>_Ox>o> zff67iP|X0Z?f$jW!0&E9bx{%!#Jz=niWImMbj*eY^2d~Ea3;r8Kn-DqNXR5jcx58} z+sTy^5SOC@pJiUcU8wYxaq7K^Of-S2?jI(d6!5vx@o%864tw6Vw*>>sftjm7wB#}P z?=@cq-fl(fB|!K&0Thr3o=k^|-fJKDU(<|(t0^HDKE>xK3nH=rtk(^wo>D`!KoG|u zc+m(cZpXhIxVZ8(C+>K?J=M~eB7UxNJ<1$fxFrtroBb8y6{XGi6(x}`A{_;ijLQ?~ zwxjV~p{6VS`-R<;?rkGqRiH_^id5*jn-^Ul%~Ka%lQ_4po?KPKRfamA*d|+o9rX2( zh&?M3@8;~v_EksLs^*fFv80XAfdR4aU0A9{w(W7*QVT3Y`3~nQs=^cNuWJM=n*1ja zXmV(sk*#|~b9hV!^Z7Ms-0~D}1=)|4vF&x?mqY72xxul3JGi^TB>&$Iuj%LL)n^mM z(nt^zBj+a*02Q-N=<<`b?T7zbo|Qtynf@}2H$=w3HX#3$i{W+ z6RgE@ta$?Njp(pl5Ld007z-<=X!~D%3_X|YUC3NHR-u}NJ=SQn8ST06HQ$G>@F;~W zTi5Y~xpL7zoS7X@egPDh&mbcG|2&+SV>hzT)0-i_e(jWnCmJ-|V~Glf1f(S;|{stA&W8OTm0j(Dg6}2Q#bYWr&A7h^c^cy)21)!SFR0_Xy_`J=Hv;5Wg>os|7IA+LM`u!{o=_r`C`xy zDF2gC2t0;L!L(R%M9~gq%=Bd?G=0H(2yq`3{Ws48Wqf#PL_;j#H znVlUjb3?NA$Q8&~=NNspC9-$)%fAr(@9j1$3E2FgtVd5NAHpPwRlJVsX~$9(s9T6f zZ%diTLk|&7$o#h%+SuIdozSEC{r|$YV~uH5UT*B#V*^OkAxtKiMF|YT5lqU*XN>|+ z+h-7?WtQhMV(}FL$&HeE+J)ell?iWt@WhC=srgCR@U|$`pPrK`>bSc0m6FvQ@@@t} zc0~g`n(<&RS=~?Y-x|B;SEy{(S%J1uB{X9K9?+k2^6uj7dBCDzXOaDui2Ka*e=pPD zrW5}4q?oIiq0;=EN*q<@^%+po^7gzpGvVrTm%R|hpT4NM zcFLdMe?Ua&nlkv}3nLKct59slf%KE`LEW_axHZ}FcF>V~d4ASH4x zz-{%pqB?rFuBZ>Ts&nGn3`IRRaReEhx8BrLO-_xHU0IRWo5VKwvaOylYn|jBWne=Q ztK@e+@+AsMTXr0Ms)9Iy{aifVd5F80Df+Js=A?APr!V*OQ?&`D;00qu7^}a30Af7U zYH;k$-8g?>2FV3VF{p&U==mhA#i4tpU0Pf!ettMGtwBg4&>N>YYcCWkMn$0n|`< zcU0T3P)-ZR{KgA9ev;p1#6^Cyi1t}aL;(HLCCGIXL5QKB@(jPo}iL(*uW93hYe<6>v5{KHi z4P}NU^Dv^;etv#sV^3eN+cBBhC9us&lidZFtEVlE1KEGFEI86jfL)T+fJy0J2PHu` zdV1Ad?!lIa)}^M4UccPq`L?;a!Pin`tTxc2Z6p-#vLdK%A?*`~-2-zSe)wHPXtJmb z9a}gOnSR4RlpS$$hF6*vaBapAwKVo@3n&9?+9fC1e{;u#Rn^i5y*%%z#du8g<@eZO z(U4bINm3KEjlRdJ>C(1r-yIW|3hm>1T%5TU>^>IFrI757 zRt5~eERV~8H?5Nm}MLcBZTjw2Ii%^+cq4(44=f*np9$b*=b+$`Ke$zoKaQWFgO=>)j z%U9O_y8OMZI+ec@v;j8+RG}Vx$FCy+l~yzA=4(uCIWfp0H&<*+mdi%)LhOdt^Ca7#oed)mGQ9N zRmj2{ziza6y988YN~B0YGU1imYnn1PsxEUEX%tB~Kl{RZo+m-KY%Oaq4kf2t&kg(l z0ao2H0_xJcIi}WGI>_AUue5 z#w*B_-7Bu4k#*X+TYDgtx(bVBXsbY9(_(HgwfA5d8%*d;)*-06@Avu>7NY=&CYgsM zP=~^X8tv2c{IVB6Oh-xYge3Ky%R`EIhi@HPnjzPt;4k2ZC=nxb{F}rqQPxhTR$bsBT~|@#(>? zYiBPeEf#D5)hr;qUcGcq3voH5{otU!*`=UDMt!&ETRmfoP>Fuat39vPu!xSNe8~ur z8-4&F934~mpngqw!Mld<@YGE>^1)l==0W(_kBuu96bJ;=SBWf@b9Mg-Xp|3$p<5=u-yP@5IkI^MN z6pNNTLHG+G;|5G}&av`2G<} z8EoYtxd)4vW92JzxOBG>RRjkB~qB%ks8f9J2nGWoHigfeECOgNLrkB0BpP{ z$=}e~ZP{e*^1<#m=YvG(4rFF400V;~7D6QDE+Fy=61IfA!EP!kj%xC?e`Fdm|2d1F zg0wm>Y<@UbI9EH0oZ{^1Q!;;TGJ2UlU8_WSgK#Dtbf7B=p;lhf`a>SMoNQ2Jvj}e8 z@bA`{RE?SH>ySdxpX~G5`144U@vPlZRK-la_U(wt8)?vBbj}M_^JYd!DGH5ga&#n^ zU|KSuFRMEQhqF2^8IwP5KQX=R(nlFI-JHwz?W2WfyW|&RpAq@s637uBm}n9z4_DgF zRDn8Z#(D|(PFB^zp2&UUSjINgdC%RDSjX97W4beo-2P}U7-Gy0T6Xgq(nO5$l?#-3 zJmE-+D``K3!#(tw8Y$z)t0twTUca#5I%KwKOX&o$FxAwEy9kERBPH7FkK{Ai2egY_ zZFZdC&W<>cw?BtO6pgo?5X}rT&gUrJ#$!TmG;Yye`P{|&S|=olJ<7`b&?f!$O{*So z^wvT_!glWTPq#JlX~Es&cLUB(T{}UkzN?-Djbi6MNrqg1AtkPIj9|Zt2alO(6-gl9 zz(Knr58IA7wA3pNATcS3P1r(rQ~o`<6A{dHxWF zU&Lym^H_1)98#JXxxwg9d22GTr17*cS+w|oI7|?+jKgaUi?ceqzJv|!et1vTbK%)8 zXo{7?zI+^}{nZnNjpbXqp%qkq8wt-?t zH@Oi94uIi6;c5#`sydqVTLZW@0KENgC^XSh@w{3kmpSHwhU5t*%{f&#f6`Ci&4=|k zBnA2@73fF;PT{@|z!q0inJR5}cI4B=gQ60xr(Jp{%}xZ(%x0z_!Y3zM?_6nqM=_@> z-2jz7vc9LCLi=x7%DnYrBjgm&DL_8__XCZBdT!||NRpWN1qYQv2d)`sI7;AUNhN40 zqi)v6t0b#c#&&A(IJ6%l*52fS!L1%wnlBpd-h8Ot!LdhD>%t6kdfq`Al`-T`n=naH zWFK@xZb(DorgA$&?oTHzaBl#LsIml{8+-Fq3&{<*#g4!Q?+XW-zrsm;k85sYrerj%>x>|1{K9iw*$h}RSN4cmZ93|EU&-l zQM!MZxe~;CSCAmPP9njdcFF+1jH7)1f-u%`S5kd+1-3+Hn^nor9f0Tcp-Ol2^6hVn zNhzk7hFRcKuDjtd;(tN#x{QRJxnOU> z5l@!lT-@h=2T>#!sl zk@rj8`+Gn><+~zkJ(fS6{;3S>Xq41u_DH}SPe4CiGc`IXdY+?sS_)bJh-v*bXIv?@ zqREEI(nFfgC_@j? zRT`?0W#Ennb@!%$W5GI?{5=48qx14-@@EQ>R@dA8G7m>(Xvx}<2v30%(?P+cEpUW? z@Fna#a^^X%d>uVTuOl)Ig>CZ zR66Pe8{5LMn!l^LoQs1-V5h`ac-UDz`rYk(k*S}RVJ@=tEge3$y-*>dKrd&Ei$R+w z!5f{~mhm`++&|HsVjV#9;&=#OL$4~`DlY`?y1kuQlRz$&GWBIyjYU{I=H}-vbsXs@ zh*x#j;_z%sR!@T-&G-yT;ll9!U7ZL&L}?ShkDa3I*G2gl3PY|T=7&+|a$evs{k#nP zB_M~p23pIF;Z?T}W8N(NzP1ikDN(d|QyCviARQGDX+IldU;@k};9U$n=gmv*M^g{J z{R(Y=EK6G}t}r;TwU>Q=xe556+~tR46vU4rlp|QiMhW;3Ut;mk3D7qz zxRbXf;KZX5Hn%i(ZG~nSm&Ml+k>#dV57;Pd@ZnmX4V@FPnIRk$!Q{mg{|?!NZA^gTh+iC>?0v+yjoZ6SV z^`VC^AtwR)It8-3vq}9tus2Cin25YVf2=~cQ1ef6HA^ww6%!(%K(JmT8X%g)P=U9V zoE#HSzw;E?NRKQw|9tU`~&zCiVfmtlb(>>5Il4N zY8Iw47<=;~41&n+R&|J<1{xn}Ir0h*O{@ay2;^b^@lXDOspzo8T-)?K4oG^@*aLdE zuP7#%S{WE_?Jhl!J!j@LuE{jJ(^9*MG)mZrQGLGlgIi4+dgr_HSOx#_@swCt+En{& zit#OG(}=9pj$5qb)6;riE;5T|fPN`c?>&^vFy;>SNK<-?aS9RRr6cvA@NTpxULrR6 z&9+-!HtLTzeL(C_2x5Oqg>lKGVi_#qXVC_f#>fyEFzW)PjUU!oc)dP*Vg`V~b03q1 zFuwrWDM$g<#>kj`Wex5kR0t6;9w?loLTav59+tGphqhC)1nWQ8xkXqd#t!?^>@Fxm zi6dlgelB-Vw&tjU;Nf#_OYF~O@fX-5Gny_x@0B0&l-fR9TAwc(?8rUt#C4tCIo(xG zSqzGxJ-{)Bl=S^cp*%PnG9`{AWuE!wSvaEv(h*->p0uGd!Zvac#{{Gb1OlU6z`!<$ zi}KzL?P*S{fPZ3k(STV>`6j}bXabrC-77mRIA%`pl8OL0^)JEWRTJMkFNa7?0_ z#Y3o=`^|W=ur3CN?kA}8|Jdpwa;Zsipm8))M<}~}`z4ipA;0y^%2RtCZq5Dig?hu| zFWYmTkTouTe1hWztUq{eY9Ekj@rwi_Kz6>(OKe2TNhw@=j$FSE{Uo5LJgWP&Uq}4n zO<@%%rdn{4g4^JyUVa|(IQb#!D^l%jo$K6!kJ?zXH;KLUR zj0W>~AP{Gff|yBi*3;zuL`|-?dbkf^{z17H{bh6t!w0bg`6 zFbX)~i&h4hh`+FRa6LzE274pN@8a}_PhTySd>7t1a#IihF5I0!v4NkjKBEr3N4){S z04$%P>tJCYe+BqX&ghVLqK4aKs3P&8*?E2g5b7cl969CgJzR%ea%#(6+qe11G%fDO<|$Orr1Q*FmuO}}eO zoTNM@^CBA09&&tmq=$RB?{4VuRj92o#@ii@zkmU02G!*0WV~h;>xO74wE0M*9bl*V z<(fq&61nHf_U}4z$tvu?z}g!y_&Q$*`XGna&-2Wi{&a8sh5-Q z@AQ0@y1Hqkz!KPOkyY=g|M0oeiFD=cwMFAej$7%~fO90nF#e?c1Cg%bbEg9r&f9>X zs_{gaTn|W{j^7e^^>yTaA?|gBR zj-~Q0*)`?>Jj%CPCmM>WhwuA)O?3S#J7nvH4FqmppLijY9S9!ofF-*Oc$obhn!35t zt)@b;V%r#S|6Hqs!xyAD;@4QqHYfoVAP?@+q`e;TO_hLSfj1iF(Llit6jc*{BHAGx zFH-j+U@EFm!ts$lzCQaL)PmxHT3VV$n(Uo@6l*|T&}2U=+>?sDsD1Jc zOMsQ#p(>=q8rZ)`;Ds>KHI_rxNgy~-GyHYhWmG6*3>z7KEqy1tG9rfRL zQw0ek$JSi0J`4M!v5r(0&fs%(8WdvGlX~C z>@bu&e(~zFl6y>rSDA-1O7mYkIQZq=bREsko@gDq*mS3GvUt>cuQN8v-CNlaCxwos zx8P!So-}9g=16h{ImFq|o3nJhUz}#&oUa@p?z=(WhGYcuITj30@L$=@jbS{FT~gR0YtHh{>h@`!Z0 z7hEKyziHbV?1-qN=%u{h!4JgBz$HJ%(?J5UqY}7z+}%UgdoyL;IuTB4CuhgLB3F{< zx#TtL7Rl>zkUjlTcLH?L77DeYrXqfEU(v?}Uk4<;R(*^Hj-)^BL{fy#&9}SnU@cA- z8_)^xwFN|j^_25=^mmytP7{`GwumnO`TH^*Zc z_X5I=wJCbMhlj+K$%mr7FrfYi8z^r)m526^imLMD(AYB#_UR;F3=OnU^rENIhQALl zgQrgP00Rokx5%?5)2;#}7hS}?@>A@?P%NjAYoaK^YCk%@Oq05~3oL(m-ZEBLEAc7W zfcMcV7)&m@%($6O2!hLjb(!mVMiRMqej2oR#vW`6%V|-2x{n>p6=gc1{MS%_>P6$3 z8s#m+LzEf|$n;4WZL&uLTvG%3p|W&;>A5RBL%&z^bZx(bjv&1?3#fG<_6PJeu2e-@W z`UJk>`{wp{jBZe+KAZ%f{P=FBGyB-wEO44N2!b$CaURPTappV;Q;W`;MxhHTGl<$K%`ny8~gI z41BD%Xmdf9yXq>WxyY&(mkJP-X1=^6$#ow>_Gi38Ow6FqP{9caYy#wS7qa3jfE>k^ z%rji!P1W}w0b8Eud~TxPE+B6=auL{ciE0&$M9+tNfp>ToPkOPGJ7L({6yF05yk3n= zPljWzFZ$wc`;6+g6|071*s@J zO5b=G*f#}R!IJ+*RE9b>h575^>=*m1O0{}yUi`azn#f3^#7-$B$i{Gd{Qhuv~#FUTa&#!f{L0`zu2=<1n^uS(sJq z{qkuTSTVLHkd4SX{}4AL|7jP_jsN^|(0{}kb}CW9}q zh``g@{uh$;E^>w)&nhC?U@?C;LWaQNx%b0`vf~K`9Bc9+&ip-&T}+bSTvd zTD9OVItAjrGvK7)tE(VhD2jXjst2pWZvGo@q(Rt|6}@qJ6k;j@Xwluk^)O=fJZ(FY z7Rnv!GkET@cgSIG@#OdE?~6YKw{Z%$#Q+(yPu|I3=od68#G2L5LYw%l89ei#I{Kv= znu(4_6Cms*CO-jHkA0RB!q6)e2X8`B)>px9JF9c?`QlsPM!OwMfguOnkh|RS{w4cm zmx=rzO|=1TTtxE4j`4d(=U=n0d1L*TJ+@4aCqtFUj+#IeKKew!1567F6a029=8ItS z`Xyl0IQ(X@JHoz@>Q+-Pa1ARWaw@Wfw{pcmL%QV-XjliMy6NL0#)d=E(f+b9M#ihY} z!CT*=?PQG4jJoCsQ`Zzc0rwD!KBYpcvm9|~%m3*2-R}nN4FZtLzseU+1kH*k3bGnl zE-de57lfko)eq4GA4logbu@1Io;ZOIhKxHRO{bcvu~%w7jR}T;l^_mhB{2T866kgp zC-TezZ)T-4%W0rHnW0<-nhy~SlH$Rhv8bMwb>qeT!S3H_aU9F<+4_ZW@v-?HV*M_N zSv&q)Lq&?bmrcShMFgmz-be5Dd?L8!++ljn&fmjEY?FwE)7^m7eeD$xv{jE#5l9NVAJ6Y7ACOIJewoF1QKuCo%xF=u1a8|0vGoC!XJ~#bl}NTY9OljUYlhB;B&OaTUY60Ef8v z3a%ORQ||C#c(>U{oGRa8etLy;=Cd%uMg}-5?+V1Eh>R*xZ3sE2T+zVZ2j6tT*ktU$ z)y)q*qRjSGoI23@!=aACaPams;dl>^hfn(*GcKJWuFb1OA_79WMB&GwG?|GeHw72r z+Kuh6<6Ys@DvORdT|uhg(rx`3`uzq>MEq`5wu@L`d+y|Y!BG#{FE)IQmn;KFBq=p=3OCED76Hf|=;TY_9| zCVz2InsEctZ8i9;``Ri#A~1vBZJ_BJ z!euW%k_wz=etRku-5v*BX)F~UTQxs2dL&s1U2>!zFH%yr& zO5XJAK{~xiR2)f|FsOS8^7u0*R5#MIcDK}0et-cAdpWA7GfxAGrWRh(aL684Fg{mu zM}xG6Zh;FFSg+o^y8n5Oxqmw$Ntt|xGs8aK_2R@0#^lE}!N)t<2|_s5%QsG}$Mfm4 zWS#574rKB{#zj0tD}KTU7MgPCca1Mr!pa^ljJAmO;_q3#(B&)Hd{m8aMJPzM$imTv z^oaoa9YKd04wb|Jjm^!Oe{l^RIkEIUkUdG}1M^{a~21D!-W^3$-+_pKX>Rd6C2L2#0 z2jc;{uO02orvhfe8}Oo=g@25p*`HVV3`cC)nPLTE?a2=gzrc|^;9zgTlB)cID2Gi| zaq}9RjM|&po?QmLq&OyMeuq-6=h~*-r^TgFauOwH*WBD&;Me7^eo29dCP>0~D*=%$ zyFvBHu$Cg^F(}+ z=d(O(!FaI}i4#Wc4%t2RN+=R`PaG#0509QVRbgC%uH(LU|BBnW8y&+XYh2fKq(L$C zz<{@Cud&q1?;{5-7)#TA_J(FbC<{p0DiU^jAEd6}6MgSN)dReT8MbI)er)KoQDi;G zXWC^!70RS30E57WdA4nq*8QG4B{>0DvI6ldMT%ZI`iIC|1A?pJjT2dGsS1vl3DRgX zKF=pfm-;+N{#w?a-B@Q;0^32#N+V=xs&}_Gl>&XG4p~JPkoJlf(Z4wPIRXE#Xpwp0 z*~dR<^WVJJ1SsVUyLYEQj{HsRxl6@2VQU(=>dLMQ6t2!zaF@X35?kL094Aqj2#}EFd8#hXE4k@9s z__j#b*FnxC{dl=%!2-ppyLF@>er9Foe7Cv(03QEhXiD_=t&SsZ>`-Rsg3zC9XadFx zbz6)icU;wRUeEaaexeQeX7;NBL4DZ1_HZ`LYEID?@{#1VMTEBxiq6UxdNMTCxhGFb%ujcDv(z zR-@>S6ON6?-Aj#FzyC-PE4d}*ZyMez`pJ457g&o-22?m11p-n~bjM8zR4bLrX~ zX`y+&H0>EijLtJ1MCk<3NL4w#1_hh`tIXsIiFkL4WlZD&-`AR))l;zIIe%H_~TA@H~Vf@ntFSnVBEoE1G(khE70)Vg|HY1@u|Yr{Fckj@*~d*3eF52w|b zXfvM$)U*1Ti?LeMIdeU0&z4z4-9E#o(GqPZW1&qpFoWts2M`I=O~0dH(!WL6L=A?I z8Q$t}@bD`qsPg}C@h?pxSGhf?PNg-CuBp9D3LYkxPLa?4YOsoyHdzy(Q56tPf-;m% z-Ih~0ZzI`SY+Ays4EUm#@EKMDo6MH3&pW=_8JmQP#JCDs3C0U$YzX`a{esJ@EiADg zh4x3D2b;d~8>FX8R~L(xV&{yIcL5Ra3Rq;xh1rtTzgxF5btZ~&q-*{!-abCr1l15D zG21R`lMj+EfWGknAfu&gX0H=_Zi!xv@?~UbX zEUpH^&!5L;->Qz~@drX%W3FOFOQmso`m)?jy2QgQb=;Sk>Y0Ax^ zx1&)5k)fPAdb;!|CEGg>N1yX~oTW~WG0lhVuDuH8; z!r(cAuw_LK8Gf89X_`K*#dJT>g@s3tz6GV zV78qR+h;*)2Zo|(k_KTDL&9uo$F0jNA!>yb+Nj79qa;RgT5OnfnQNH5_x*~3s|h02 zW4jB=Tl%eIJV(G<^Cv-#L_z2V?23{ksL+#8Ut%xre)Zov)gPiba6Z%Y%F`3U-=>@9 zw;{)W?`+pIckB`&IAZ5uSG!=(2g?V;JbnM89~PT!*Up7VTDW8_|}|JkPl$wwsL({23Z zd&On(&_l?mt{ydcdrw_0@Sgc5kA2LLY}b-O=aArYdhW}ak#~QZ_OZjB_t--HOxrKS z1no@$tPN=W0NI05S6bVJ@TkyndFdqdROW1lB_yA;P9MfO`9BhQGt?E`%L{tx2Fldq z4uO7ETo1VqrbD{vdbHqFhqn%l^v4$y>&yz5^G9sN&lT;0_^~HtOuyyG)y`CS@y&=)pz$a<%Vue-py_<3eW;=ZxS^0M@6 zL;bBX+~XhgV)RnL18+m5=CTS;y~(LaX)SF6ed1Ks?$8vIyQoH=)BXWMa9_SMUY&$B zSW_Rjb2;pVYNPW`)~Gt}fq=D4vYM++fSP;x+3f?khwqw7OlqGh1mC~iBx%yX9{d&xm{i8FyzW4FFNm($(b5vd=boboA&uv|sydEz-l`(ka zA?Xpp8p>}9#3czO{ zGSg7msDqLXji(QNs{!&&!B^{-5n z=1#x6^eGn{LKaLi_;&a; zOfgLXIpJcTex+@JqHUu;I^f-ZCzMi$ZL6bDC8{7^rW0W+g!p0h0_pxxSz0M8s8LD# z7w(y<$LzCS|0_R-o_m|;*U1j-#%_AJ`_{`^6}hTzIY3igDm07*7YX>>Or&n}`p~w% z^%3;FVtkf4UQ0IZgpjzTz<_Q(Ym@bTlaM#sGT8L>sg@jDPmEiZxa6aqvi}q^X*z&o zB=z1cUdR*4(pEKb0zbp|X!3p}zr{JuM{S#2)9Oi5{IcHSq; zpZJ~E9X`|;+09q!Th3P-+I*-sAQIiEw~So+;b?gNE|8(-(e*?)sTCZKSz<95(`#96 z(5w=MhNUu|&8K>@+#I&2Tls+xozg=?@>+qHsuuhGFyriCYi*h<@ zWw1bHd1Vk8es=Y7qN+He1|m!IfMM*0KQif+(=+u<1Ljongy+~k)=?+*;4c1LwLu7d z?>0hHqFE@nTM)~^Lt^p;Ds;POsrvWV*YOba28oT*Svd=5f)|!m<}p^)&kE&u!k=RL zQM_Y=D|+SXdcJ_4y`LX$cH;%sxh5rEJF@sbr|Z{SgfF$amoCJ+@12YLNdhxCP1k2@ zO*fjH)|Q(bSLSm)=k-IfLnk_MqOr=8S_A$8B~I}AaYF5P7w zgE9mE%TdPN)Alodkj(^d4!`3iT|(4AxaS+6sp?6wJ0p-;4}$yC#c)m-j(7_fAIfLI z?Gd7aLqIx~RTaAzxO6ry)+56kAc6mnT{#gMc(&9y%x2oPs`5>IO(m17SJIxY!MRuf z8SXAfp3*bzV70Zebtgr6ELon4w2Vf7TA25OeNG{WQDtVs(zxX#MjjA!IN0B(xMXGB zN_~p{-rp<&i=4QOMB!6+Ijb1Z#+1}F~LdG_ZMXIeg8$b17^T$R;XP zqa=rFn{!GwtJl* zX`7|<(WT8^@jYw+Y6t%s$ECu)yqw~lKS4pIwehHy{SjEZ(Tw?AwDJkOzth>T+8X>s zIku2mW>f;AGm*jyNpohG-N z_>|b?bLq(#E}8tuzl-hhC_LJ+!?{Y@PW=rZUXTXd;h9RkT7)Fw-+2i|3>05g|GY0) zryG*81&dt(pEEg~F?+|HHoC;>ELOc%98GxS`!DP z&31qD9Bio$wDIZGIw#sIB;y$r$u`?EJZakImfM@zkV`xV5K zL1ze~DsM-mal{B^&Oa#}aG9GGtOsf9kPk3ntQjENc*nMK1W@W=U0c7s8nFGB9t6@T zRw4p<>}$+4e_o(wpevNJza*)}x0c7tBEf)a*ON)}?jMCWv10gv%=1rHe&U42cc62< zj!>*?#uBq5bt6sr>VLoqO{c=;+SXqvE(Bh0k)5X^Ih|6U;$Gq(j+P)2P!eNrTzaEL z6`!uP|0EUtQdh21u2pgva{AQf(hP81BQwi`F_YZ+kZ~z~9dvP;^mH--Vzu-dQgk|PfD*cDLYsY-t*f^Vv+jX$v`dc} z6Aq11$16Xb&A!RiPT0z9iqT&aLlwK4=L@JkXyZ@mLr@laSfkqNUAFpq&LsS99X^L~ z&LwCReJr#@iDBc#I}g+HKtzg65%P-wv6|Oajj$-Soo|zW=m}o^@b|;PIH7fi>-JDq ziE55@B_&~#kUC^{%AiqcKkcNoT8^ZGyjLKlVI&9j z)l4Z4*(swLVF~46COof^q?7Cm8jHFyo1BG8M|xa3+Q)FYnosAMYoFAq+NQUEbE(9A zf&ud|#M@pTj>c2f#j}jsL7;F0*L0Vz;NJisNfbF7Mh-}vV5k&tLVCP_BwQb<*aW{K zCaLtx(x;3pcm+ny;w1I5BjhUJJZs3R`IG~*jT;d0#tZFQddp$bvDjoc!@#vf-vAY- zj`jnTmPQ#JyAjiOSOVf2-zkdm%br6jXspt@FMqM_W?CkUu2U4qdpDQMuQ2c$0+Esx z>M_a4du;N37yt%RT8uU3rBEfnMX2EUoxT}OK|7`{UK}_Tm5yIx*4(o#isN&;Vdz)6 zL@Gy)?x#!YA=<)c)yeiK7^|c43_tV&^F@lffy34cx=FMXfu9l5x6s(=QXfp)Em`%w znx3iPn+riSo8-?xl^$@)_lRXF{GRiz{xBX4()f*Ul`^(Uar$;YFal!a!llDiPQPnD z{jI31!EE?JFq27SB+aBIK~iV^F|Qnd3}ry>r<_tE32Ys|NKYHv{Bmcs#K~Ai>Oihe zixKZ39)D~^T*AULs|k_L=G-nscwDOAXrWx2@#=QPd4h(!33({zzyi6X&q&Ot4glxQR+~n7=S-D z0z71Ha*rF^+6m|WJaf}0jpTKV!rKvnQcP10S|$@aV*+pgtebWq$ese*{?L+=o|6nx zlJO;~Ky@|K!{jI<4QJ;r8nPajyU?V$ROwu8m3!`xr}7ziy3Ek=R~C?4mx2U}-?93y zggJt>Cw&ZJuzOMA2}_KdUFB3tZr$<*rE1>+t$H$HupOtGLcxZIZz*5U*#n!4-BP&8ga;&%uwyOdM zV_)-FE=2mxRANxfSY2k*BH6QTm6a&1P@eq28DF;EJW}U$=RlMpXS0&cfz7tU1N1K> z=9!!O9|j48vx{GyYFk22i4vlYLh+0vg&zdoILpokC9L^^_XI-*9|RB3*H9A}AJp*1 zEp9d^a-ymkY`xPqH@)CDV^?gx&~WCl%xTI`$_7a6Pka<^!?fxXoEL=_n&7Iqzax#r zn^mOAodW);n#X>*OE8{K0jl`gZ47}(To1{A$t^W2XR&F(mMn9c?5eOgN zY)ZDSK+rTznRZ{6a2q%!6TQlO!1A5%tQ=@ZM`T7zibL!@5!&5k?cO) zTQt1cdjn2&j~a$S8_?m>@X2baPo2PWSDN6&nSl6Pd|?|*=I`B-!QC@kg>-6WwW_{v zvtjG#IUTFcN~dXL#y*K&??L#Sj{R2e6k^y?QuP6e=KwQ-c9` z7&`=$DE7SwHc%F623f1yid=pC!l{EpPm<`?azC41+*Rh>=BW+0pccK@CCRE3iR>+2)%@UO0JkXA{agR@og|TF1+DqP zcYw=uF|Qh-mfGk`2?9LM)BlSzO34QnY`|=yKQ*sUcqd9ljnEFg74!d~=SX|>5GBRC zcfjP)Cx+>X-Uo_&m@6(>;+DF$u+51e$Ga^)rZ;l_cc!T5pWVNJkBU zfQJ?T9Dh!31uHP4PNr&<((3RreG%7mfi-Ml7-vIvmvbk@Gt}G-pU5hYC7mst8$GXzI2rR{zAG%?~8O+AMKk-YICfB0?%2J>MXk-?fBB%Wc*Q*<+K98PvAWIU+`H#l2&<-;h+OUnC9|7lA8m3i?1 z$UT!imS6qkt;rl!@Yvqd3PCw%lo=n%b>oC8gL|07k;}_#WDp4Ck13f4T9cH)E7tI{&=cr=fj{v2j{W4wB&;aKd7{33oB9@;9FgqkO1%)on9K@Gil}Lr5iJYJz)0 z!u&hf+HIJr>(E%TJwT3_hgImMDS^0(7-RS^=r8$Jjz~t28qm9iJsM6;-!G)|uZ%0B{|M#4a9e(N5BGR9#~jBB&ib=R&mmsc%ukXI|6%d^*8zecG;7~8K|TpnbD*qqIN(7uj>2(tjCPH6WeuQv zhT1z5c9IE!i^{h0BoXE`E;x9aiFn%T=>T#0Vg20i_QhXs$fjGXG)kiI&Hc1@)|f4v zXRhvnx2z&@S(QBKu{Zv)Cdy{2Lts64a%h63m$m7_gP>QvhEZc!MV4tK@Rq}yzRDfF zmF7%MtVWB5jPCZTqU8DqmB3%cPHc7CVL<#cOrz?gj72f2HNga+7R*W${ia=PMAfyp z`N1YaK}?grH~m29#x7-56iTVz`8~VlC1fBYc5GO&xlH5jSKz{y^l>f9Y~m;j`E6C5 z$*X!r&n;x)D;}{pP8Lpv&P%+KZ!;0JQn7iHZ$--|XqpVkIYs=kq39;8LMEn3t-$F7 z!!abO)gweWq-IrFSI+SB%&;{l2hb*w+%7&)Ox~-D8+ao!ErIU^3>R4W3m!6(c#{Qp z?^&m{JBvTCSaJ8<1gsUr#IsRqk?3sSpGl|Xhmpt1s{GGKC&qd@)w!CZy-)yfBHc_Y-X)U zrke%>tDIznCKW}?4{TTpo}!#52ysre5;qmTk}56(k??8J@i|@VPnV+~vZYTF)G1#> zIP7)VU-KG|{6?}}^Y}w_lgARuNFN)69f*>Lf2lo}1=~#hg%{ZELx}HHf3t^uj!ptH z1*7|}oNKvGLe9J*s;kkrTS!7OEK&)$QBF%Yk-UD~P*Kn6Zt~ri3C$|$`d|*bk}4m@ zjhFo{?zd;pWc4xtpJuNOzC??l)q6qCl3_Gw|1eAXza?Y`{)t6bLCVo;WLY5H#HD5G z+tkDQK27Em3`%4u_e^tgwredQ!1i4eMZafZ%K%yQZcedR2lY+AtePKKzWz`@z%7m1 zy6rcihYkk~d2e4yxJqWZmJr(SxMA1G8b0;?C_R*yKQdY0LG7bliZP!G>+J63ATKIf zZNJF`^4RlXcmxLPj_%{osCw> zCG>}~1KG0IQRae=?sZ;4t`G%{lC` z$muCc7};kwJqq^R%fy#@| z#X4&=7{(ZS=2Xp&Jm8J;_$`!S2XDANsa3K3Vcjz&=bJjZg;AU&hIgj1usfE*Pffsc zBY2~NSA#}zTEjK<0^~i=y`Keq@Kt~?Kn5N;zbNfOUG;Mosy9xn1Jb1BCXAOMunHHLj3=X zoKpLc00nx?i8i`9B164Y5SJh{!o5N=%U z5Hs-7rL{{vZJ6uZGSCO`_)GgA&KdJqfd1X-+KODKD68#n`o<}Njm+WqL95rtOEbr- ze=^zzvSU7ihku@;G37B&iX zd(fA5{%}Z2+pH**)&vVIxXhB6bX`d|yTxQL%p~5w#Ex7n@hbaOiSo^lEBv-H)TRq> z7JAi+!YGl0nfs*r%km0=AFtD5o?*?G_{(UPvHQ}8jjdAl@&e_Qiirn3FHf0BDW|EU z6ZMkqW<;V;OKRQ>Y7XBb{z!ScRsXxJBG7z%cYE`lT5SQNhYF;oWSmCUI*@*HD+J?) z>@?XUpQH2Md-~gg&=1nL8B+wp4B&oqrC_Xu-MaLS2u09VJ*g4n*(O5reeE=#5vIZ~ zqrML6rsHYrKLgPvhCiKlD{BP>=EjFK9g&NbO=*tqdog|?M2?Bj<&}<%2V|&t=1_i} zsPb)f`#T0FeN^DFrRSaIZhtW5KDl{4_>pPOM<%#Zj|BbZd&um5(!7xExI*!UV~hyl3CoVK>P!tZ%F z8w?}o-xrwLia2yFM@n}}7dI9_tU#a6y6P+cBQYn{?tZJKSFSY}M+zG9*oVm|y!cnlv6$70W_-7*WW21%u#pY3MH`UYF zeu@wr1*Yu=)`>j9OqGhqI#{&$laZc|H=eZAZ1+%o7=yf2J9@MUB&u z_E0W@{$vOFNwCf|*=d99rs-yi6jR5%t7n612%$Dh{~70067sAl$U(80&G#7z-2LxQ z?Ehr#&rqm_peNHN8*4~VgKR3s(ySN?AGMQ(X!?Xc);3Oxuc+jUE>ZaIL$i+V%3o#_ zA%Xq#1z3AgKks1SnYwL536ToXxJ&f@M=MEQh!5-swudLE< zfx=PI>mB-)$=`>5c1A?`Cl`6hSNGSurEb$Cer^P0ZJpw`Hoq2OQA12wBXqCcPHO#*PW?}MW zKRQKH0_UdRXyB1B-m-yGts}Vc_Bp&4sn9;TnsnxR*Ad=)+D32e`WRQ#^|4!CwJ6NR zmzb|anWecu)x4ga6Lyy;Nt+;E0_-mAb(dAuemG0|7lKa3rDx*v2^X9_b>3u5E6NBq zeC#ry_fP`9FPA@#k*DndGk2QxBEe}$J^0I!YoQ+T+gXNZJIW3i@vU+!BlS8e5|3H! zf^39R&FSB}!!FSRtz#9R$F5m7U@`{BAJ;+?_4(V@^RM<(1+tqOLianVpkk1AosOWM zm5GCUULiHF)0t*pZTK~|+0lHp^}q8i>%}_r-J{y-=f1_Kb zJpbaW=#EE&(0&|=Rne<4P>Ijg?rsnA3{gPRL>c)S#EyRsYY5JedQ`-3Zux%E>Y<`s z#mJEco}RYuU=MR49|OCjnuy_+X=sU=Uf|~1mkg?NTAij zg!171G?|k9F+rM6p&d^)D)@A$to433hrsz_M4e?fP)|_Hsr%V$rcfS7yURaB+9Ap8 z8^%9o>uA_Ky+Im8E~ra+pUp+jE*2d-J;$kSR3(R>y_P?!Rh#BstPam%zAkdUV(q(0vo(f8$Wj@5lnh! z)I`SP$OR^FjfY=B)77v%?m4`zSDa2NMF(9gh*~-2WqFoV9~M~SjN`_aI?HA(6ED+4 z{CW0ao%;S*VUrT~%6~7<8!cbTf}dw(Y|RX{Cs#zKR^A#fDhlOP<-+e5`7Z!C5MG!)bM zS^lQy5HVRkk&1E?&i_YUngnd%jUycBmL)Ej26dL3bo&0#Mdqobs%X{Cqz21pzq}WM zYHJykms$tIlof&kxK|JrROPtHqdkv2YHFRMvk>V(#Te%Ru)}N|n{F5ZLC`lXKHy|p z0(?-VB{07o(1!}fEh4TVOCbYFz{h4%K!gvtCRgKYq`^&)@RTX_wXedShsVl1jVrG? zunlY6*B5JgH8>0M!ns8gGSI+VF0B}^rn(gNc-Fn~AB`6M+r>2_&`Umo{Bgf95xa;- z>JiGwCCyW4ExC(|gch>&V94g$UymnDUrgi48bTLLfTH4qIwV>A+UmZC7U2WD`r%Md z{OIVd8}z+XYCWCZFuOMloxCH2Flp3YiVIrDB)h98v%46IZb|PEGmA2)mAl2im8qhb z_uyxiF(j*I_NI7%nA7B#lB@U$wePL>tfo9_xCMYq8l1|SS-( z8sQkjaT|hi(oRt^GBt)jYwYGKzP4_LzCi+84oU{CqbDbiwKUgr;}Dp{8S+GeH0|Lc z$!@mkptX`Eg6jiFy4ljvab%&85|{BR{l+o(Nih<-4dCDvvpF?c3~{aAAFiaX0W;i0 z#AJ2BEfj6|zAxFyB*TKPOAOINwea3u9>Zf>A9=m1(fTiHanO9pp1ZGo=17fqdG+D* zxcmv97i##i*bLnjds5NH4U7r?YzoarkZ6Y;yN$gIAPhUp6$YD@(O&py)ef1@QNx&*e4hW5??ru5(w?8Rp9<3&6L7klkj z*c?Grv@BA}B_R4}uF}SSp@vci1ZLU(D?PWE$cw!rjj8a7g$i#z*u%th*~;2w0#`U} zQQ?Rcg(ox-cTqB8o6W5Qm!tqWKk}dW#-)FN^SkE=s<%lnQcs?kwv(ihkL*l!;L)GM zGJpQc25?PulPD$$qNhsPHyG6gnqffMz}kqO=4k_U#EL=yyA zc_J>q6~Q*RIjXdO2Q{RY-;@IAu!{)L0wo7x9zW3VOlNY9;Gnq4yqbR0&(7&8VCc02 z+u-GVXJ7;7;s+n)rgYM6UkW>URMBST4_j0+%c^SSKZ~jO{qi4ZM6aVIs2r0^H1m&o ziaCeY331$ca$MyB;OfZx3cS7te*Y|hn?M*yr*Tghs*MneMSq52&$`PaGwM C-l8S| literal 0 HcmV?d00001 diff --git a/railsignal-app/public/favicon-16x16.png b/railsignal-app/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..04cca1208cfe387b9a5b0fb65da90fac0407379d GIT binary patch literal 422 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 diff --git a/railsignal-app/public/site.webmanifest b/railsignal-app/public/site.webmanifest new file mode 100644 index 0000000..45dc8a2 --- /dev/null +++ b/railsignal-app/public/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/railsignal-app/src/App.vue b/railsignal-app/src/App.vue index c2becb2..bce83e1 100644 --- a/railsignal-app/src/App.vue +++ b/railsignal-app/src/App.vue @@ -1,21 +1,17 @@ + + \ No newline at end of file diff --git a/railsignal-app/src/components/ConfirmModal.vue b/railsignal-app/src/components/ConfirmModal.vue new file mode 100644 index 0000000..9df94b8 --- /dev/null +++ b/railsignal-app/src/components/ConfirmModal.vue @@ -0,0 +1,77 @@ + + + + + \ No newline at end of file diff --git a/railsignal-app/src/components/RailSystem.vue b/railsignal-app/src/components/RailSystem.vue index 11a5da4..a7870e8 100644 --- a/railsignal-app/src/components/RailSystem.vue +++ b/railsignal-app/src/components/RailSystem.vue @@ -1,26 +1,25 @@ - - \ No newline at end of file diff --git a/railsignal-app/src/components/railsystem/AddRailSystemModal.vue b/railsignal-app/src/components/railsystem/AddRailSystemModal.vue new file mode 100644 index 0000000..d5e93fc --- /dev/null +++ b/railsignal-app/src/components/railsystem/AddRailSystemModal.vue @@ -0,0 +1,77 @@ + + + + + \ No newline at end of file diff --git a/railsignal-app/src/components/railsystem/AddSegment.vue b/railsignal-app/src/components/railsystem/AddSegment.vue deleted file mode 100644 index f3c3aa1..0000000 --- a/railsignal-app/src/components/railsystem/AddSegment.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - - - \ No newline at end of file diff --git a/railsignal-app/src/components/railsystem/AddSegmentModal.vue b/railsignal-app/src/components/railsystem/AddSegmentModal.vue new file mode 100644 index 0000000..2133137 --- /dev/null +++ b/railsignal-app/src/components/railsystem/AddSegmentModal.vue @@ -0,0 +1,86 @@ + + + + + \ No newline at end of file diff --git a/railsignal-app/src/components/railsystem/MapView.vue b/railsignal-app/src/components/railsystem/MapView.vue index 8a61c5c..3ce9e1a 100644 --- a/railsignal-app/src/components/railsystem/MapView.vue +++ b/railsignal-app/src/components/railsystem/MapView.vue @@ -1,5 +1,5 @@ \ No newline at end of file diff --git a/railsignal-app/src/components/railsystem/RailSystemPropertiesView.vue b/railsignal-app/src/components/railsystem/RailSystemPropertiesView.vue new file mode 100644 index 0000000..29c1edd --- /dev/null +++ b/railsignal-app/src/components/railsystem/RailSystemPropertiesView.vue @@ -0,0 +1,73 @@ + + + + + \ No newline at end of file diff --git a/railsignal-app/src/components/railsystem/SegmentsView.vue b/railsignal-app/src/components/railsystem/SegmentsView.vue index 65e5673..e8237c9 100644 --- a/railsignal-app/src/components/railsystem/SegmentsView.vue +++ b/railsignal-app/src/components/railsystem/SegmentsView.vue @@ -1,22 +1,22 @@ - - \ No newline at end of file diff --git a/railsignal-app/src/components/railsystem/component/AddSegmentBoundaryModal.vue b/railsignal-app/src/components/railsystem/component/AddSegmentBoundaryModal.vue new file mode 100644 index 0000000..7b1add1 --- /dev/null +++ b/railsignal-app/src/components/railsystem/component/AddSegmentBoundaryModal.vue @@ -0,0 +1,112 @@ + + + + + \ No newline at end of file diff --git a/railsignal-app/src/components/railsystem/component/AddSignal.vue b/railsignal-app/src/components/railsystem/component/AddSignal.vue deleted file mode 100644 index 6313c47..0000000 --- a/railsignal-app/src/components/railsystem/component/AddSignal.vue +++ /dev/null @@ -1,62 +0,0 @@ - - - - - \ No newline at end of file diff --git a/railsignal-app/src/components/railsystem/component/AddSignalModal.vue b/railsignal-app/src/components/railsystem/component/AddSignalModal.vue new file mode 100644 index 0000000..dcfe659 --- /dev/null +++ b/railsignal-app/src/components/railsystem/component/AddSignalModal.vue @@ -0,0 +1,98 @@ + + + + + \ No newline at end of file diff --git a/railsignal-app/src/components/railsystem/component/AddSwitchModal.vue b/railsignal-app/src/components/railsystem/component/AddSwitchModal.vue new file mode 100644 index 0000000..0a95194 --- /dev/null +++ b/railsignal-app/src/components/railsystem/component/AddSwitchModal.vue @@ -0,0 +1,122 @@ + + + + + \ No newline at end of file diff --git a/railsignal-app/src/components/railsystem/component/ComponentView.vue b/railsignal-app/src/components/railsystem/component/ComponentView.vue index d6fc2ed..d830c21 100644 --- a/railsignal-app/src/components/railsystem/component/ComponentView.vue +++ b/railsignal-app/src/components/railsystem/component/ComponentView.vue @@ -1,23 +1,42 @@ \ No newline at end of file diff --git a/railsignal-app/src/components/railsystem/component/PathNodeComponentView.vue b/railsignal-app/src/components/railsystem/component/PathNodeComponentView.vue index 7fa0f01..6be36af 100644 --- a/railsignal-app/src/components/railsystem/component/PathNodeComponentView.vue +++ b/railsignal-app/src/components/railsystem/component/PathNodeComponentView.vue @@ -1,22 +1,39 @@ diff --git a/railsignal-app/src/components/railsystem/component/SegmentBoundaryNodeComponentView.vue b/railsignal-app/src/components/railsystem/component/SegmentBoundaryNodeComponentView.vue index b2f3ba9..18a2dfa 100644 --- a/railsignal-app/src/components/railsystem/component/SegmentBoundaryNodeComponentView.vue +++ b/railsignal-app/src/components/railsystem/component/SegmentBoundaryNodeComponentView.vue @@ -1,10 +1,17 @@